diff --git a/.github/workflows/contracts-build.yml b/.github/workflows/contracts-build.yml index 157e3655..0883e227 100644 --- a/.github/workflows/contracts-build.yml +++ b/.github/workflows/contracts-build.yml @@ -31,13 +31,13 @@ jobs: - name: Run Unit Test run: | - yarn workspace @quadratic-funding/contracts run typechain - yarn workspace @quadratic-funding/contracts run test:unit + yarn workspace @qfi/contracts run typechain + yarn workspace @qfi/contracts run test:unit - name: Lint run: | - yarn workspace @quadratic-funding/contracts run lint:solidity - yarn workspace @quadratic-funding/contracts run lint:js + yarn workspace @qfi/contracts run lint:solidity + yarn workspace @qfi/contracts run lint:js qv-test: runs-on: ubuntu-20.04 @@ -55,8 +55,8 @@ jobs: - name: Run QV Test run: | - yarn workspace @quadratic-funding/contracts run typechain - yarn workspace @quadratic-funding/contracts test:qv + yarn workspace @qfi/contracts run typechain + yarn workspace @qfi/contracts test:qv qf-test: runs-on: ubuntu-20.04 @@ -74,5 +74,5 @@ jobs: - name: Run QF Test run: | - yarn workspace @quadratic-funding/contracts run typechain - yarn workspace @quadratic-funding/contracts run test:qf + yarn workspace @qfi/contracts run typechain + yarn workspace @qfi/contracts run test:qf diff --git a/.github/workflows/contracts-coverage.yml b/.github/workflows/contracts-coverage.yml index 8a1103c4..8b4e2bdb 100644 --- a/.github/workflows/contracts-coverage.yml +++ b/.github/workflows/contracts-coverage.yml @@ -29,13 +29,13 @@ jobs: - name: Lint run: | - yarn workspace @quadratic-funding/contracts run lint:solidity - yarn workspace @quadratic-funding/contracts run lint:js + yarn workspace @qfi/contracts run lint:solidity + yarn workspace @qfi/contracts run lint:js - name: Test Contract run: | - yarn workspace @quadratic-funding/contracts run generate:abi - yarn workspace @quadratic-funding/contracts run test:coverage + yarn workspace @qfi/contracts run generate:abi + yarn workspace @qfi/contracts run test:coverage - name: Upload coverage report uses: codecov/codecov-action@v2 diff --git a/.github/workflows/subgraph-build.yml b/.github/workflows/subgraph-build.yml index 1fefce1e..b12fcd76 100644 --- a/.github/workflows/subgraph-build.yml +++ b/.github/workflows/subgraph-build.yml @@ -29,5 +29,5 @@ jobs: - name: Build run: | - CI=false yarn workspace @quadratic-funding/subgraph codegen - CI=false yarn workspace @quadratic-funding/subgraph build + CI=false yarn workspace @qfi/subgraph codegen + CI=false yarn workspace @qfi/subgraph build diff --git a/.gitignore b/.gitignore index cbbee59e..67f2bf96 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ /node_modules /.pnp .pnp.js +.vscode # testing /coverage @@ -28,3 +29,4 @@ notes/ npm-debug.log* yarn-debug.log* yarn-error.log* +lerna-debug.log* diff --git a/.husky/pre-commit b/.husky/pre-commit index 3bf8d3ff..16ce1359 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,5 +1,6 @@ #!/bin/sh +BASE_DIR="$( cd "$( dirname "$0" )" && pwd )" # Return `true` if files under `packages/contracts/contracts/` directory has been changed or added. Otherwise, return `false` is_contracts_changed() @@ -32,6 +33,6 @@ npx lint-staged RETURN_CODE=$(is_contracts_changed) if [ $RETURN_CODE = "true" ]; then # Run contract tests - npx yarn workspace @quadratic-funding/contracts typechain - npx yarn workspace @quadratic-funding/contracts test:unit -fi + npx yarn workspace @qfi/contracts typechain + npx yarn workspace @qfi/contracts test:unit +fi \ No newline at end of file diff --git a/.husky/scripts/_pre-commit b/.husky/scripts/_pre-commit new file mode 100755 index 00000000..a6fb9a99 --- /dev/null +++ b/.husky/scripts/_pre-commit @@ -0,0 +1,32 @@ +#!/bin/bash + +# Return `true` if files under `packages/contracts/contracts/` directory has been changed or added. Otherwise, return `false` +is_contracts_changed() +{ + result="false" + git_changes=$(git diff --cached --name-status) + + while read -r line; do + changed_file_path=$(echo "$line" | awk '/packages/ {print $2}') + file_status=$(echo "$line" | cut -c 1) + + if [ "$file_status" = 'A' ] || [ "$file_status" = 'M' ] + then + case $changed_file_path in packages/contracts/contracts/*) + result="true" + esac + fi + done <<< "$git_changes" + + echo "$result" +} + +# Check lint for all subpackage +npx lint-staged + +RETURN_CODE=$(is_contracts_changed) +if [ $RETURN_CODE = "true" ]; then + # Run contract tests + npx yarn workspace @quadratic-funding/contracts typechain + npx yarn workspace @quadratic-funding/contracts test:unit +fi diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..50124887 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,375 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [3.7.2](https://github.com/compare/v3.7.0...v3.7.2) (2022-11-07) + +**Note:** Version bump only for package @qfi/qfi + + + + + +# [3.7.0](https://github.com/compare/v3.5.5...v3.7.0) (2022-11-07) + + +### Features + +* delete the keys of stateIndexByPubKey and userSignUps which are over 258 ([809a565](https://github.com/commit/809a5651764e322318922596f8102ec7353680f2)) +* modify the projects data and the provider network setting ([e5dc704](https://github.com/commit/e5dc704ce3c4d2eb7b1d661935f5729c6a3b3988)) + + + + + +## [3.5.5](https://github.com/compare/v3.5.4...v3.5.5) (2022-10-26) + +**Note:** Version bump only for package @qfi/qfi + + + + + +## [3.5.4](https://github.com/compare/v3.5.3...v3.5.4) (2022-10-19) + +**Note:** Version bump only for package @qfi/qfi + + + + + +## [3.5.3](https://github.com/compare/v3.5.1...v3.5.3) (2022-09-27) + +**Note:** Version bump only for package @qfi/qfi + + + + + +## [3.5.1](https://github.com/compare/v3.4.5...v3.5.1) (2022-09-27) + +**Note:** Version bump only for package @qfi/qfi + + + + + +## [3.4.5](https://github.com/compare/v3.4.2...v3.4.5) (2022-09-27) + +**Note:** Version bump only for package @qfi/qfi + + + + + +## [3.4.2](https://github.com/compare/v3.1.0...v3.4.2) (2022-09-27) + + +### Bug Fixes + +* fix commNode images ([e15d941](https://github.com/commit/e15d941295a9e0da289d7c198db725cd70d456fa)) +* fix projects mobile ([f6d00a6](https://github.com/commit/f6d00a61ae7adb8d9ee0b3851d44cc5581c0d655)) + + +### Features + +* add expediente crypto ([85f80dd](https://github.com/commit/85f80dde31892411b7695047528e41c21e71654a)) +* update Expediente Crypto logo picture ([2eb6d8a](https://github.com/commit/2eb6d8af6bc0aa241a8705c8ff30a9dd8ece1611)) + + + + + +# [2.1.0](https://github.com/compare/v2.0.1...v2.1.0) (2022-07-08) + + +### Features + +* **all:** ethBarcelona changes ([5e59b1a](https://github.com/commit/5e59b1add68fe141269e8d42a08e605af3c916cb)) +* **ethbarcelona: cli easy setup:** change max projects ([9a88f84](https://github.com/commit/9a88f843f621ac6e83ded42dc64a7059b51ecc7b)) + + + + + +## [2.0.1](https://github.com/compare/v2.0.0...v2.0.1) (2022-06-29) + +**Note:** Version bump only for package @qfi/qfi + + + + + +# [2.0.0](https://github.com/compare/v1.5.0...v2.0.0) (2022-06-29) + + +### Features + +* **ethbarcelona cli:** configure cli for eth barcelona: polygon support ([5c87081](https://github.com/commit/5c8708192f0ab5615d8a2c909917e4a9a73d4df9)) +* **polygon support:** gas price tweaks, eject csv of public keys on key gen ([0ff3ab0](https://github.com/commit/0ff3ab0526069b21e808d73239c0d1c19d706826)) + + + + + +# [1.6.0](https://github.com/compare/v1.5.0...v1.6.0) (2022-06-29) + + +### Features + +* **ethbarcelona cli:** configure cli for eth barcelona: polygon support ([5c87081](https://github.com/commit/5c8708192f0ab5615d8a2c909917e4a9a73d4df9)) +* **polygon support:** gas price tweaks, eject csv of public keys on key gen ([0ff3ab0](https://github.com/commit/0ff3ab0526069b21e808d73239c0d1c19d706826)) + + + + + +# [1.5.0](https://github.com/compare/v1.4.1...v1.5.0) (2022-06-11) + + +### Features + +* **app:** graceful error handling on MACI key input ([f1b11db](https://github.com/commit/f1b11dbb1f999d1a5cf21cf23492bdace15cd26e)) + + + + + +## [1.4.1](https://github.com/compare/v1.4.0...v1.4.1) (2022-06-11) + +**Note:** Version bump only for package @qfi/qfi + + + + + +# [1.4.0](https://github.com/compare/v1.3.0...v1.4.0) (2022-06-11) + + +### Features + +* **cli:** command to fund user wallets for ethPrague ([aec08b6](https://github.com/commit/aec08b6c608fb535c3e21832a58edcc9253a8b38)) + + + + + +# [1.3.0](https://github.com/compare/v1.2.0...v1.3.0) (2022-06-10) + + +### Bug Fixes + +* **cli:** patch prague deploy ([c4eb8dd](https://github.com/commit/c4eb8ddab9594772e5e72f5a5640b3a24f960320)) + + + + + +# [1.2.0](https://github.com/compare/v1.1.0...v1.2.0) (2022-06-10) + +**Note:** Version bump only for package @qfi/qfi + + + + + +# [1.1.0](https://github.com/compare/v1.0.1...v1.1.0) (2022-06-10) + + +### Features + +* **cli:** dothething command to batch all the other commands ([0254747](https://github.com/commit/0254747fdc6da224300986d476a855ab289f65b1)) + + + +# [0.4.0](https://github.com/compare/v0.3.3...v0.4.0) (2022-06-09) + + +### Bug Fixes + +* build error due to missing data source ([aa8d6d7](https://github.com/commit/aa8d6d771924ca44b255611694bb730cbbbc3c09)) +* missing SimpleHackathon source on subgraph.yaml ([44eaeea](https://github.com/commit/44eaeeaca442fc3409e5ad050bf346d0ce594064)) + + +### Features + +* add basic signup command; minors and code lint ([1a3bab8](https://github.com/commit/1a3bab8b065ae64b5c3c47590e633745e77abce4)) +* track SimpleHackathon contract as a recipient registry in the subgraph ([abe27c5](https://github.com/commit/abe27c5a9be033192eaa47af3ee5c02824bcaad1)) + + + + + + +## [1.0.1](https://github.com/compare/v1.0.0...v1.0.1) (2022-06-09) + + +### Reverts + +* npm revert to 0.3.3 ([68e6766](https://github.com/commit/68e676698356c95e7e456622138407993150e943)) + + + +## [0.3.3](https://github.com/compare/v0.3.2...v0.3.3) (2022-06-09) + + +### Bug Fixes + +* numeric overflow when passing initial supply of ERC20 token to contract ([375b63c](https://github.com/commit/375b63cfe144d36c0ccd97f34f34f8b2e0d020ec)) + + + + + +## [0.3.1](https://github.com/compare/v0.2.2...v0.3.1) (2022-06-09) + + +### Bug Fixes + +* add missing converter for request type ([9766979](https://github.com/commit/9766979ba5257132deaacf43332c5b956cd21156)) +* **app:** fixed babel error that converts ** to .pow causing build failure with Bigint error ([ac2d7d5](https://github.com/commit/ac2d7d54ceb31f7c02d4d6bd110caf3c019cdf11)) +* change from a new creation of a QFI scheme to its loading for the same id ([b7af432](https://github.com/commit/b7af432ef46b441fa2eafd664bced4ec40182e3b)) +* converters and qfi initialization ([969c1b4](https://github.com/commit/969c1b4c1d0468c2031cd3084e8300ce78d67e97)) +* missing abis for different data sources ([0cf3a3d](https://github.com/commit/0cf3a3d30633bcc30861b34f979f900035bd7a2d)) +* removed non-nullable property for wrong variables when deploying QFI ([d5cf5c9](https://github.com/commit/d5cf5c90c1ea77775d24fa9807dcbe8ea83eacfa)) +* wrong controller parameter value passed to SimpleRecipientRegistry constructor ([26c8c11](https://github.com/commit/26c8c119245ed5298c59c58eadd6d682d1e9f32d)) +* wrong deploy script name in package.json; code lint and fix ([2d241b2](https://github.com/commit/2d241b2a8c3b1ea8b420ba937702153d2ba1ef8f)) + + +### Features + +* add MACI/QFI smart contracts initialization command ([24491cf](https://github.com/commit/24491cf61615f74674c1c0161bc2d366792adbea)) +* add missing grant round factory entity for managing pre-QFI Recipient Registry change ([0495196](https://github.com/commit/0495196d92189189616f460e6fa272068fc8be88)) +* **cli:** crate prague erc20, mint with 18 decimals ([dc40032](https://github.com/commit/dc40032fba08832b35bb5ce4862bd77952908e00)) + + + + + +# [0.3.0](https://github.com/compare/v0.2.2...v0.3.0) (2022-06-08) + + +### Bug Fixes + +* add missing converter for request type ([9766979](https://github.com/commit/9766979ba5257132deaacf43332c5b956cd21156)) +* change from a new creation of a QFI scheme to its loading for the same id ([b7af432](https://github.com/commit/b7af432ef46b441fa2eafd664bced4ec40182e3b)) +* converters and qfi initialization ([969c1b4](https://github.com/commit/969c1b4c1d0468c2031cd3084e8300ce78d67e97)) +* missing abis for different data sources ([0cf3a3d](https://github.com/commit/0cf3a3d30633bcc30861b34f979f900035bd7a2d)) +* removed non-nullable property for wrong variables when deploying QFI ([d5cf5c9](https://github.com/commit/d5cf5c90c1ea77775d24fa9807dcbe8ea83eacfa)) + + +### Features + +* add missing grant round factory entity for managing pre-QFI Recipient Registry change ([0495196](https://github.com/commit/0495196d92189189616f460e6fa272068fc8be88)) + + + + + +## [0.2.2](https://github.com/compare/v0.2.1...v0.2.2) (2022-06-08) + + +### Bug Fixes + +* **app:** connect button on mobile ([7799767](https://github.com/commit/77997672b6065782bdb4f65211dda1767a57369e)) + + + + + +## [0.2.1](https://github.com/compare/v0.2.0...v0.2.1) (2022-06-08) + + +### Features + +* **app:** add project to ballots via search params and enforce voting rules ([a139415](https://github.com/commit/a13941580e11d80a4324d2c7f1df727f1f716e8d)) +* **contracts:** emergency fund distribution on round cancel ([1c55859](https://github.com/commit/1c55859b96815f032161b9d20bbee42163a56e2b)) + + + + + +# [0.2.0](https://github.com/compare/v0.1.0...v0.2.0) (2022-06-03) + + +### Features + +* **contracts:** simple hackathon contracts, 99% code coverage ([aed7974](https://github.com/commit/aed79744022e4c2f1f72bcb2ce0b342914576cca)) +* implement Capital Constaint for QF, fix failing tests ([30efe04](https://github.com/commit/30efe04634afb461da7d88e7cc818a6f0707421e)) + + +### BREAKING CHANGES + +* **contracts:** fixed maci decorators to verify tally results, disabled contribution payouts since +sign ups will not require contribution +* changes the finalization step on QF rounds + + + + + +# [0.1.0](https://github.com/compare/v0.0.4...v0.1.0) (2022-06-02) + + +### Bug Fixes + +* **all:** make lerna commands play nice with yarn workspaces ([5717344](https://github.com/commit/57173443e138d89320e8316f93375ab139fb8d9c)) +* change packages order when running build from root to avoid broken links among them ([09e5b32](https://github.com/commit/09e5b32ae619d21f08cb8ffe84c0a193dd1a1ebe)) + + +### Features + +* add command to authenticate via a wallet mnemonic phrase ([d15f1d2](https://github.com/commit/d15f1d2212845372e3c520bf539c5c7f3d0125c7)) + + + + + +## [0.0.4](https://github.com/compare/v0.0.3...v0.0.4) (2022-06-01) + +**Note:** Version bump only for package @qfi/qfi + + + + + +## [0.0.3](https://github.com/compare/v0.0.2...v0.0.3) (2022-06-01) + + +### Bug Fixes + +* **all:** fix circular dependencies, changes to hoisting in monorepo, fix failing build ([1421c97](https://github.com/commit/1421c971a8dd5a85d96fbf67baf5a0dac6a7b062)) +* **ci:** build failing ([e85b744](https://github.com/commit/e85b74426f45a3b75148e82cfaf85cee62da0701)) + + + + + +## 0.0.2 (2022-06-01) + + +### Bug Fixes + +* add missing initialization to start indexing Grant Round templates ([ab1e435](https://github.com/commit/ab1e435ea8dadfe107038c7e547f51c8579a33c0)) +* match eslint version of subgraph and cli packages to app to avoid build errors ([bbe6141](https://github.com/commit/bbe61411060b8143809f8e6a66e94aee0ad8f3fc)) +* solve build errors ([f36722a](https://github.com/commit/f36722afeeadb2a7e5d560ae0db94a4ff2e60755)) +* typo when retrieving an event param ([03f036a](https://github.com/commit/03f036ae3df56c3fbeff6b060ea23f4145d04970)) +* update abi imports from build to typechain folder ([26917de](https://github.com/commit/26917de487116c38c66259304371ea242982e6a3)) +* wrong workaround address ([8bddfb4](https://github.com/commit/8bddfb467a9c17cf457ac3f60f0cae0afe4b069f)) + + +### Features + +* add cli boilerplate ([55299af](https://github.com/commit/55299af20bf7c2bd12be7a55f31c520271be2ecd)) +* add deploy MACI/QFI smart contracts command ([4af03d8](https://github.com/commit/4af03d8f8f69d3041ddc7ca6451955d42c38a560)) +* add first complete draft of all necessary mappings ([ef93b3d](https://github.com/commit/ef93b3d7b6829bbeb712b84c0abae16e753bc781)) +* add genkeys command ([d900757](https://github.com/commit/d9007573a51577df551240bdaf259f589b07a3e1)) +* add QR code scan for Admin page ([d948b08](https://github.com/commit/d948b08001904412c11b02dba988fcf874bed2a1)) +* add register recipients command ([3feff1d](https://github.com/commit/3feff1d82f11e7b63f51cba131743228d3aeb7f5)) +* add relationship between Contributor and PublicKey entities ([6316bb3](https://github.com/commit/6316bb31bc64db24ada6c8699baf6c422eeccf2d)) +* add sender and tx hash tracking for message entity ([54f627b](https://github.com/commit/54f627b30611d7f31abad12437398d68148b836a)) +* add subgraph yaml; add empty mapping files for graph codegen ([03c2eaa](https://github.com/commit/03c2eaa435f8a3a8f4962ce2676aa0f40d136358)) +* add tracking of contributions and lifetime amount for PublicKey ([55da83c](https://github.com/commit/55da83ccd61507ce589369feb2cd9bc43878a1f4)) +* add unit test for QFI deploy and initialization ([4151380](https://github.com/commit/41513804565cf86485ca4890f748369c3e9d395d)) +* store tx hash when creating a new Contributor ([ae8459e](https://github.com/commit/ae8459e08d0d156cf889e69168e7c12de2273e55)) diff --git a/lerna.json b/lerna.json index 427ac247..99693771 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,8 @@ { - "packages": ["packages/*"], - "version": "0.0.0", + "packages": [ + "packages/*" + ], + "version": "3.7.2", "npmClient": "yarn", "useWorkspaces": true } diff --git a/package.json b/package.json index 0ba27913..bd8b3989 100644 --- a/package.json +++ b/package.json @@ -8,32 +8,39 @@ }, "private": true, "devDependencies": { + "commitizen": "^4.2.4", + "cz-conventional-changelog": "^3.3.0", "husky": "^7.0.0", "lerna": "^4.0.0", "lint-staged": "^12.3.7" }, - "resolutions": { - "qaci-cli/circomlib": "https://github.com/weijiekoh/circomlib.git#24ed08eee0bb613b8c0135d66c1013bd9f78d50a", - "qaci-crypto/circomlib": "https://github.com/weijiekoh/circomlib.git#24ed08eee0bb613b8c0135d66c1013bd9f78d50a" - }, "workspaces": { "packages": [ - "packages/*" - ], + "packages/macisdk", + "packages/contracts", + "packages/cli", + "packages/subgraph", + "packages/hooks", + "packages/ui", + "packages/app" + ], "nohoist": [ - "**/@nomiclabs/**", "**/gitbook-cli/**", "**/fs-extra/**" ] }, "scripts": { + "cz": "cz", + "release": "lerna version --conventional-commits", + "canary": "lerna publish --canary --preid", + "publish": "lerna publish", "build": "yarn workspaces run build", "build:contracts": "yarn workspace @qfi/contracts run build", "build:subgraph": "yarn workspace @qfi/subgraph run build", "build:hooks": "yarn workspace @qfi/hooks run build", - "test": "yarn workspaces run test", + "test": "lerna run test:unit --scope=@qfi/contracts --stream", "test:contracts": "yarn workspace @qfi/contracts run test", - "deploy:subgraph":"yarn workspace @qfi/subgraph run deploy", + "deploy:subgraph": "yarn workspace @qfi/subgraph run deploy", "prepare": "husky install" }, "keywords": [ @@ -43,5 +50,10 @@ "bugs": { "url": "https://github.com/" }, - "homepage": "https://github.com/" -} + "homepage": "https://github.com/", + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + } +} \ No newline at end of file diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md new file mode 100644 index 00000000..b4f9faf8 --- /dev/null +++ b/packages/app/CHANGELOG.md @@ -0,0 +1,159 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [2.1.0](https://github.com/quadratic-funding/qfi/compare/v2.0.1...v2.1.0) (2022-07-08) + + +### Features + +* **all:** ethBarcelona changes ([5e59b1a](https://github.com/quadratic-funding/qfi/commit/5e59b1add68fe141269e8d42a08e605af3c916cb)) + + + + + +# [2.0.0](https://github.com/quadratic-funding/qfi/compare/v1.5.0...v2.0.0) (2022-06-29) + +**Note:** Version bump only for package @qfi/app + + + + + +# [1.6.0](https://github.com/quadratic-funding/qfi/compare/v1.5.0...v1.6.0) (2022-06-29) + +**Note:** Version bump only for package @qfi/app + + + + + +# [1.5.0](https://github.com/quadratic-funding/qfi/compare/v1.4.1...v1.5.0) (2022-06-11) + + +### Features + +* **app:** graceful error handling on MACI key input ([f1b11db](https://github.com/quadratic-funding/qfi/commit/f1b11dbb1f999d1a5cf21cf23492bdace15cd26e)) + + + + + +# [1.4.0](https://github.com/quadratic-funding/qfi/compare/v1.3.0...v1.4.0) (2022-06-11) + +**Note:** Version bump only for package @qfi/app + + + + + +# [1.1.0](https://github.com/quadratic-funding/qfi/compare/v1.0.1...v1.1.0) (2022-06-10) + + + +# [0.4.0](https://github.com/quadratic-funding/qfi/compare/v0.3.3...v0.4.0) (2022-06-09) + +**Note:** Version bump only for package @qfi/app + + + + + + +# [1.0.0](https://github.com/quadratic-funding/qfi/compare/v0.3.3...v1.0.0) (2022-06-09) + +**Note:** Version bump only for package @qfi/app + + + + + +## [0.3.3](https://github.com/quadratic-funding/qfi/compare/v0.3.2...v0.3.3) (2022-06-09) + +**Note:** Version bump only for package @qfi/app + + + + + +## [0.3.1](https://github.com/quadratic-funding/qfi/compare/v0.2.2...v0.3.1) (2022-06-09) + + +### Bug Fixes + +* **app:** fixed babel error that converts ** to .pow causing build failure with Bigint error ([ac2d7d5](https://github.com/quadratic-funding/qfi/commit/ac2d7d54ceb31f7c02d4d6bd110caf3c019cdf11)) + + + + + +# [0.3.0](https://github.com/quadratic-funding/qfi/compare/v0.2.2...v0.3.0) (2022-06-08) + +**Note:** Version bump only for package @qfi/app + + + + + +## [0.2.2](https://github.com/quadratic-funding/qfi/compare/v0.2.1...v0.2.2) (2022-06-08) + +**Note:** Version bump only for package @qfi/app + + + + + +## [0.2.1](https://github.com/quadratic-funding/qfi/compare/v0.2.0...v0.2.1) (2022-06-08) + + +### Features + +* **app:** add project to ballots via search params and enforce voting rules ([a139415](https://github.com/quadratic-funding/qfi/commit/a13941580e11d80a4324d2c7f1df727f1f716e8d)) + + + + + +# [0.2.0](https://github.com/quadratic-funding/qfi/compare/v0.1.0...v0.2.0) (2022-06-03) + +**Note:** Version bump only for package @qfi/app + + + + + +# [0.1.0](https://github.com/quadratic-funding/qfi/compare/v0.0.4...v0.1.0) (2022-06-02) + +**Note:** Version bump only for package @qfi/app + + + + + +## [0.0.4](https://github.com/quadratic-funding/qfi/compare/v0.0.3...v0.0.4) (2022-06-01) + +**Note:** Version bump only for package @qfi/app + + + + + +## [0.0.3](https://github.com/quadratic-funding/qfi/compare/v0.0.2...v0.0.3) (2022-06-01) + + +### Bug Fixes + +* **ci:** build failing ([e85b744](https://github.com/quadratic-funding/qfi/commit/e85b74426f45a3b75148e82cfaf85cee62da0701)) + + + + + +## 0.0.2 (2022-06-01) + + +### Features + +* add QR code scan for Admin page ([d948b08](https://github.com/quadratic-funding/qfi/commit/d948b08001904412c11b02dba988fcf874bed2a1)) diff --git a/packages/app/craco.config.js b/packages/app/craco.config.js index c2715a50..a0c3e773 100644 --- a/packages/app/craco.config.js +++ b/packages/app/craco.config.js @@ -1,24 +1,39 @@ const path = require("path"); -const { getLoader, loaderByName } = require("@craco/craco"); +const { getLoader, loaderByName, addAfterLoader } = require("@craco/craco"); +// const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin; const packages = []; +const libs = []; packages.push(path.join(__dirname, "../ui")); packages.push(path.join(__dirname, "../hooks")); - +libs.push(path.join(__dirname, "../macisdk")); module.exports = { webpack: { + // plugins: [new BundleAnalyzerPlugin({ analyzerMode: "server" })], configure: (webpackConfig, arg) => { const { isFound, match } = getLoader(webpackConfig, loaderByName("babel-loader")); if (isFound) { - const include = Array.isArray(match.loader.include) - ? match.loader.include - : [match.loader.include]; + const include = Array.isArray(match.loader.include) ? match.loader.include : [match.loader.include]; match.loader.include = include.concat(packages); } + // //NOTE: configure ts loader + // const tsLoader = { + // test: /\.tsx?$/, + // loader: 'ts-loader', + // include: libs, + // options: { transpileOnly: true }, + // }; + // const { isAdded: tsLoaderIsAdded } = addAfterLoader( + // webpackConfig, + // loaderByName("ts-loader"), + // tsLoader // babel-loader + // ); + // console.log("tsLoaderIsAdded", tsLoaderIsAdded); + return webpackConfig; }, }, -}; \ No newline at end of file +}; diff --git a/packages/app/package.json b/packages/app/package.json index 346b9dc1..5b7c50a1 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,39 +1,43 @@ { "name": "@qfi/app", - "version": "0.1.0", + "version": "3.0.0", "private": true, + "homepage": ".", "dependencies": { "@chakra-ui/react": "^1.8.6", "@coinbase/wallet-sdk": "^3.0.4", "@emotion/react": "^11.0.0", "@emotion/styled": "^11.0.0", + "@fontsource/archivo": "^4.5.7", "@fontsource/tinos": "^4.5.4", "@gnosis.pm/safe-apps-web3modal": "^12.0.0", - "@qfi/hooks": "^0.1.0", - "@qfi/ui": "^0.1.0", - "@testing-library/jest-dom": "^5.9.0", - "@testing-library/react": "^10.2.1", - "@testing-library/user-event": "^12.0.2", - "@types/jest": "^25.0.0", - "@types/node": "^12.0.0", - "@types/react": "^16.9.0", - "@types/react-dom": "^16.9.0", + "@qfi/hooks": "^3.0.0", + "@qfi/ui": "^3.0.0", "@walletconnect/web3-provider": "^1.7.5", + "base64url": "^3.0.1", + "blake-hash": "^1.1.0", "chakra-ui-steps": "^1.6.2", + "circomlibjs": "0.0.8", "ethers": "^5.6.1", + "ffjavascript": "^0.2.57", "framer-motion": "^4.0.0", + "i18next": "^21.8.16", "react": "^17.0.2", "react-dom": "^17.0.2", + "react-i18next": "^11.18.3", "react-icons": "^3.0.0", "react-pose": "^4.0.10", "react-pose-text": "^3.1.0", + "react-qr-reader": "^3.0.0-beta-1", "react-router-dom": "^6.0.2", - "react-scripts": "4.0.3", "react-spinners": "^0.11.0", - "typescript": "^4.3.5", "web-vitals": "^0.2.2", "web3modal": "^1.9.5" }, + "resolutions": {}, + "nohoist": [ + "**/ethers" + ], "scripts": { "start": "craco start", "build": "craco build", @@ -45,9 +49,11 @@ }, "browserslist": { "production": [ - ">0.2%", - "not dead", - "not op_mini all" + "chrome >= 67", + "edge >= 79", + "firefox >= 68", + "opera >= 54", + "safari >= 14" ], "development": [ "last 1 chrome version", @@ -56,6 +62,18 @@ ] }, "devDependencies": { - "@craco/craco": "^6.4.1" + "@craco/craco": "^6.4.1", + "@testing-library/jest-dom": "^5.9.0", + "@testing-library/react": "^10.2.1", + "@testing-library/user-event": "^12.0.2", + "@types/jest": "^25.0.0", + "@types/node": "^12.0.0", + "@types/react": "^16.9.0", + "@types/react-dom": "^16.9.0", + "@types/react-qr-reader": "^2.1.4", + "react-scripts": "4.0.3", + "ts-loader": "^9.4.2", + "typescript": "^4.3.5", + "webpack-bundle-analyzer": "^4.5.0" } } diff --git a/packages/app/public/android-chrome-192x192.png b/packages/app/public/android-chrome-192x192.png new file mode 100644 index 00000000..ce86fb39 Binary files /dev/null and b/packages/app/public/android-chrome-192x192.png differ diff --git a/packages/app/public/android-chrome-512x512.png b/packages/app/public/android-chrome-512x512.png new file mode 100644 index 00000000..841463db Binary files /dev/null and b/packages/app/public/android-chrome-512x512.png differ diff --git a/packages/app/public/apple-touch-icon.png b/packages/app/public/apple-touch-icon.png new file mode 100644 index 00000000..68ab24a3 Binary files /dev/null and b/packages/app/public/apple-touch-icon.png differ diff --git a/packages/app/public/chevron_down.svg b/packages/app/public/chevron_down.svg new file mode 100644 index 00000000..fd72132b --- /dev/null +++ b/packages/app/public/chevron_down.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/app/public/chevron_up.svg b/packages/app/public/chevron_up.svg new file mode 100644 index 00000000..cd4dda28 --- /dev/null +++ b/packages/app/public/chevron_up.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/app/public/favicon-16x16.png b/packages/app/public/favicon-16x16.png new file mode 100644 index 00000000..f34bc0af Binary files /dev/null and b/packages/app/public/favicon-16x16.png differ diff --git a/packages/app/public/favicon-32x32.png b/packages/app/public/favicon-32x32.png new file mode 100644 index 00000000..2f1dac5b Binary files /dev/null and b/packages/app/public/favicon-32x32.png differ diff --git a/packages/app/public/favicon.ico b/packages/app/public/favicon.ico index a11777cc..91a859cf 100644 Binary files a/packages/app/public/favicon.ico and b/packages/app/public/favicon.ico differ diff --git a/packages/app/public/favicon_io/site.webmanifest b/packages/app/public/favicon_io/site.webmanifest new file mode 100644 index 00000000..45dc8a20 --- /dev/null +++ b/packages/app/public/favicon_io/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/packages/app/public/fonts/NeuePixelGrotesk.ttf b/packages/app/public/fonts/NeuePixelGrotesk.ttf new file mode 100644 index 00000000..904ae282 Binary files /dev/null and b/packages/app/public/fonts/NeuePixelGrotesk.ttf differ diff --git a/packages/app/public/hero.svg b/packages/app/public/hero.svg deleted file mode 100644 index fbe44457..00000000 --- a/packages/app/public/hero.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/packages/app/public/index.html b/packages/app/public/index.html index aa069f27..fe9149b5 100644 --- a/packages/app/public/index.html +++ b/packages/app/public/index.html @@ -2,19 +2,22 @@ - + - + - + + - React App + Transformers QF diff --git a/packages/app/public/logo.png b/packages/app/public/logo.png new file mode 100644 index 00000000..859abaa5 Binary files /dev/null and b/packages/app/public/logo.png differ diff --git a/packages/app/public/logo.svg b/packages/app/public/logo.svg index b06df6d3..84def835 100644 --- a/packages/app/public/logo.svg +++ b/packages/app/public/logo.svg @@ -1,19 +1,7 @@ - - - - - - - - - - - - - - - - - - + + + + + + diff --git a/packages/app/public/logo192.png b/packages/app/public/logo192.png deleted file mode 100644 index fc44b0a3..00000000 Binary files a/packages/app/public/logo192.png and /dev/null differ diff --git a/packages/app/public/logo512.png b/packages/app/public/logo512.png deleted file mode 100644 index a4e47a65..00000000 Binary files a/packages/app/public/logo512.png and /dev/null differ diff --git a/packages/app/public/manifest.json b/packages/app/public/manifest.json index 080d6c77..0663cec5 100644 --- a/packages/app/public/manifest.json +++ b/packages/app/public/manifest.json @@ -1,25 +1,11 @@ { - "short_name": "React App", - "name": "Create React App Sample", + "name": "Transformers QF", + "short_name": "QF@Porto", "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" - } + { "src": "/android-chrome-192x192.png", "sizes": "192x192", "type": "image/png" }, + { "src": "/android-chrome-512x512.png", "sizes": "512x512", "type": "image/png" } ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} \ No newline at end of file diff --git a/packages/app/public/project_submission_EN.svg b/packages/app/public/project_submission_EN.svg new file mode 100644 index 00000000..e06138b8 --- /dev/null +++ b/packages/app/public/project_submission_EN.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/public/project_submission_ES.svg b/packages/app/public/project_submission_ES.svg new file mode 100644 index 00000000..4a7b4fc9 --- /dev/null +++ b/packages/app/public/project_submission_ES.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/public/title.svg b/packages/app/public/title.svg new file mode 100644 index 00000000..75e0f1d1 --- /dev/null +++ b/packages/app/public/title.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/packages/app/public/your_ballot_EN.svg b/packages/app/public/your_ballot_EN.svg new file mode 100644 index 00000000..b7ffa658 --- /dev/null +++ b/packages/app/public/your_ballot_EN.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/public/your_ballot_ES.svg b/packages/app/public/your_ballot_ES.svg new file mode 100644 index 00000000..9b387b3d --- /dev/null +++ b/packages/app/public/your_ballot_ES.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/app/src/App.tsx b/packages/app/src/App.tsx index ad283fa5..fbf4a30a 100644 --- a/packages/app/src/App.tsx +++ b/packages/app/src/App.tsx @@ -1,37 +1,53 @@ -import React, { Suspense } from "react"; -import "@fontsource/tinos"; -import { ChakraProvider, VStack, Container, Stack, HStack } from "@chakra-ui/react"; -import { Logo, theme } from "@qfi/ui"; +import React from "react"; +import { ChakraProvider, Text, useDisclosure } from "@chakra-ui/react"; +import { theme, Fonts } from "@qfi/ui"; +import { Route, Routes } from "react-router-dom"; + +import { About } from "./pages/About"; +import { Admin } from "./pages/Admin"; +import { Project } from "./pages/Project"; +import { Projects } from "./pages/Projects"; +import { Ballot } from "./pages/Ballot"; +import { Home } from "./pages/Home"; +import { Layout } from "./pages/Layout"; +import { Apply } from "./pages/Apply"; -const Nav = React.lazy(() => import("./components/Nav")); -const LandingPage = React.lazy(() => import("./LandingPage")); -const LoadingComponent = () => { - return ( - - - - - - ); -}; export const App = () => { + const { + isOpen: isGuideOpen, + onOpen: onGuideOpen, + onClose: onGuideClose, + } = useDisclosure(); + return ( - - - }> - - - - - + + + + } + > + {/* } /> */} + } /> + } /> + } /> + } + > + } /> + } /> + 404 } /> + + ); }; diff --git a/packages/app/src/LandingPage.tsx b/packages/app/src/LandingPage.tsx deleted file mode 100644 index 312bbe07..00000000 --- a/packages/app/src/LandingPage.tsx +++ /dev/null @@ -1,116 +0,0 @@ -import * as React from "react"; -import { Text, Box, VStack, Stack, Button } from "@chakra-ui/react"; -import { animateText, MagikText, GlitchText, EaseInBottom } from "@qfi/ui"; - -import { Hero } from "./components/Hero"; - -export const LandingPage = () => { - return ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ); -}; - -export default LandingPage; diff --git a/packages/app/src/components/Hero.tsx b/packages/app/src/components/Hero.tsx index 44c6d683..8d0f97d8 100644 --- a/packages/app/src/components/Hero.tsx +++ b/packages/app/src/components/Hero.tsx @@ -5,28 +5,25 @@ import { forwardRef, usePrefersReducedMotion, useColorModeValue, + AspectRatio, } from "@chakra-ui/react"; -import logo2 from "./assets/logo2.svg"; -import logo3 from "./assets/logo3.svg"; -import logo5 from "./assets/logo5.svg"; -import logo6 from "./assets/logo6.svg"; -import logo7 from "./assets/logo7.svg"; -import logo8 from "./assets/logo8.svg"; -import logo9 from "./assets/logo9.svg"; +import logo from "./assets/logo.png"; +import hero from "./assets/Hero.png"; +import hero4 from "./assets/hero4.gif"; const spin = keyframes` - from { transform: rotate(0deg); } - to { transform: rotate(360deg); } + from { transform: rotate(360deg); } + to { transform: rotate(0deg); } `; export const Logo = forwardRef((props, ref) => { const prefersReducedMotion = usePrefersReducedMotion(); - const SwitchIcon = useColorModeValue(logo2, logo9); - const animation = prefersReducedMotion ? undefined : `${spin} infinite 20s linear`; + const SwitchIcon = useColorModeValue("https://res.cloudinary.com/pse-qf-maci/image/upload/v1678967923/transformersAnimated_lilhwd.gif", "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678967923/transformersAnimated_lilhwd.gif"); + // const animation = prefersReducedMotion ? undefined : `${spin} infinite 60s linear`; - return ; + return ; }); export const Hero = forwardRef((props, ref) => { @@ -36,36 +33,38 @@ export const Hero = forwardRef((props, ref) => { const rand = Math.floor(Math.random() * 6) + 2; switch (rand) { case 2: - return logo2; + return "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678968535/transformersAnimated_nokpma.gif"; case 3: - return logo3; + return "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678968535/transformersAnimated_nokpma.gif"; case 6: - return logo6; + return "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678968535/transformersAnimated_nokpma.gif"; case 7: - return logo7; + return "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678968535/transformersAnimated_nokpma.gif"; default: - return logo2; + return "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678968535/transformersAnimated_nokpma.gif"; } }; const RandomHeroDark = () => { const rand = Math.floor(Math.random() * 6) + 2; switch (rand) { case 2: - return logo7; + return hero; case 3: - return logo8; + return hero; case 6: - return logo9; + return hero; case 7: - return logo5; + return hero; default: - return logo8; + return hero; } }; const SwitchIcon = useColorModeValue(RandomHeroLight(), RandomHeroDark()); - const animation = prefersReducedMotion ? undefined : `${spin} infinite 200000000s linear`; + // const animation = prefersReducedMotion ? undefined : `${spin} infinite 200000000s linear`; - const light = ; - return light; + + return ( + + ); }); diff --git a/packages/app/src/components/Nav.tsx b/packages/app/src/components/Nav.tsx index 8ac6a3a8..33d21f31 100644 --- a/packages/app/src/components/Nav.tsx +++ b/packages/app/src/components/Nav.tsx @@ -11,14 +11,14 @@ export const Nav = () => { alignItems={{ base: "center", md: "center" }} w="full"> - + - QFI + diff --git a/packages/app/src/components/assets/Hero.png b/packages/app/src/components/assets/Hero.png new file mode 100644 index 00000000..7404a021 Binary files /dev/null and b/packages/app/src/components/assets/Hero.png differ diff --git a/packages/app/src/components/assets/logo.svg b/packages/app/src/components/assets/logo.svg deleted file mode 100644 index f73982e6..00000000 --- a/packages/app/src/components/assets/logo.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/packages/app/src/components/assets/logo2.svg b/packages/app/src/components/assets/logo2.svg deleted file mode 100644 index 5350bbd6..00000000 --- a/packages/app/src/components/assets/logo2.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/packages/app/src/components/assets/logo3.svg b/packages/app/src/components/assets/logo3.svg deleted file mode 100644 index 1cc81a8d..00000000 --- a/packages/app/src/components/assets/logo3.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/packages/app/src/components/assets/logo4.svg b/packages/app/src/components/assets/logo4.svg deleted file mode 100644 index f6b2f2a2..00000000 --- a/packages/app/src/components/assets/logo4.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/packages/app/src/components/assets/logo5.svg b/packages/app/src/components/assets/logo5.svg deleted file mode 100644 index 4369620f..00000000 --- a/packages/app/src/components/assets/logo5.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/packages/app/src/components/assets/logo6.svg b/packages/app/src/components/assets/logo6.svg deleted file mode 100644 index 029ed188..00000000 --- a/packages/app/src/components/assets/logo6.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/app/src/components/assets/logo7.svg b/packages/app/src/components/assets/logo7.svg deleted file mode 100644 index 4b939a38..00000000 --- a/packages/app/src/components/assets/logo7.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/app/src/components/assets/logo8.svg b/packages/app/src/components/assets/logo8.svg deleted file mode 100644 index 949ac3d3..00000000 --- a/packages/app/src/components/assets/logo8.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/packages/app/src/components/assets/logo9.svg b/packages/app/src/components/assets/logo9.svg deleted file mode 100644 index e48715d8..00000000 --- a/packages/app/src/components/assets/logo9.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/packages/app/src/components/assets/separator-primary-1.svg b/packages/app/src/components/assets/separator-primary-1.svg new file mode 100644 index 00000000..8c3b11fd --- /dev/null +++ b/packages/app/src/components/assets/separator-primary-1.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/packages/app/src/components/assets/voteIcon.svg b/packages/app/src/components/assets/voteIcon.svg new file mode 100644 index 00000000..f928d26a --- /dev/null +++ b/packages/app/src/components/assets/voteIcon.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/packages/app/src/components/prague/BallotExplainer.tsx b/packages/app/src/components/prague/BallotExplainer.tsx new file mode 100644 index 00000000..63b003d5 --- /dev/null +++ b/packages/app/src/components/prague/BallotExplainer.tsx @@ -0,0 +1,74 @@ +import React from "react"; +import { + VStack, + Text, + UnorderedList, + ListItem, + Image, + Accordion, + AccordionButton, + AccordionItem, + AccordionPanel, +} from "@chakra-ui/react"; + +import { Trans, useTranslation } from "react-i18next"; + +export const BallotExplainer = () => { + const { t } = useTranslation(); + + return ( + + + {({ isExpanded }) => ( + <> + + + + + {isExpanded ? ( + + ) : ( + + )} + + + + + + + + + + + + + + + + + + + + + + + + + + + + )} + + + ); +}; diff --git a/packages/app/src/components/prague/BallotOption.tsx b/packages/app/src/components/prague/BallotOption.tsx new file mode 100644 index 00000000..b3009ca3 --- /dev/null +++ b/packages/app/src/components/prague/BallotOption.tsx @@ -0,0 +1,218 @@ +import React, { useCallback } from "react"; +import { + VStack, + Stack, + HStack, + Tooltip, + Text, + Heading, + IconButton, + Icon, + Center, + Button, +} from "@chakra-ui/react"; +import { + createSearchParams, + Link, + useNavigate, + useSearchParams, +} from "react-router-dom"; +import { BallotOptionProps } from "../../propTypes"; +import { FaWindowClose } from "react-icons/fa"; +import { useTranslation } from "react-i18next"; +import { useMediaQuery } from "@chakra-ui/react"; + +export const BallotOption = ({ + ballotOption, + to, + votes, + lastOption, + onClick +}: BallotOptionProps) => { + const { t } = useTranslation(); + const [isViewportMd] = useMediaQuery("(min-width: 768px)"); + let [searchParams] = useSearchParams(); + let navigate = useNavigate(); + const isInBallot = useCallback( + (projectId: string) => { + return searchParams.getAll("option").includes(projectId ?? "notfound"); + }, + [searchParams] + ); + const handleRemoveFromBallot = useCallback( + (projectId: string) => { + return () => { + if (projectId && isInBallot(projectId)) { + let filtered = searchParams + .getAll("option") + .filter((id) => id !== projectId); + let newSearchParams = createSearchParams({ + option: filtered, + }); + + navigate("/ballot?" + newSearchParams.toString()); + } + }; + }, + [searchParams, isInBallot, navigate] + ); + return ( + + + + {votes ?? 0} + + + {t("CREDITS")} + + + + + + {ballotOption?.projectName} + + + {/* + {ballotOption?.website} + */} + + + {ballotOption?.tagline} + + {/* + {ballotOption?.website} + */} + + + + } + aria-label={`remove ${ballotOption?.projectName} from ballot`} + /> + +
+ + + +
+ + + ); +}; diff --git a/packages/app/src/components/prague/GuideDrawer.tsx b/packages/app/src/components/prague/GuideDrawer.tsx new file mode 100644 index 00000000..80e8bb8b --- /dev/null +++ b/packages/app/src/components/prague/GuideDrawer.tsx @@ -0,0 +1,319 @@ +import { + VStack, + Container, + Text, + Heading, + Drawer, + DrawerOverlay, + DrawerContent, + DrawerCloseButton, + ListItem, + Accordion, + AccordionButton, + AccordionIcon, + AccordionItem, + AccordionPanel, + UnorderedList, +} from "@chakra-ui/react"; + +import { useTranslation, Trans } from "react-i18next"; + +const Guide = () => { + const { t } = useTranslation(); + + return ( + + + + {t("Voter Guide")} + + + {t("Ballot Passphrase (MACI)")} + + + {t("What is the MACI key?")} + + {t( + "The MACI (Minimum Anti-Collision Infrastructure) uses zero-knowledge proofs as a protection against censorship and collisions in blockchain voting (read more about MACI on this page)." + )} + + + {t( + "Each voter gets a pseudo-random MACI key, which is used to encrypt and validate your votes. This is the only way to vote in the round, and it can be used to change your vote at any time while the round is active, so keep it safe and don't share it." + )} + + + {t("'Not your MACI, not your vote'.")} + + + {t( + "Keep it safe! Anyone who logs in with your MACI key will be able to vote on your behalf - and even invalidate your previous votes. Thanks to your vote, community projects can access funds to continue building. Your vote matters, make it count." + )} + + + + + + {t("Registration")} + + + + + + + {t("Step 1: Get your unique MACI key")} + + + + + + + {t( + "Porto team will send your MACI key the email address you used to register for the event." + )} + + + + + + + + + + {t("Step 2: Connect your wallet and enter your MACI key")} + + + + + + + + + {t( + "Click on ‘START’ and it’ll direct you to the voting website." + )} + + + {t( + "Tap 'Connect' and follow the instructions to successfully connect your Wallet, (WalletConnect is also available)." + )} + + + {t( + "Once your wallet is connected, enter your MACI key in the field below and press 'Save'." + )} + + + + + + + + + + + {t("Congratulations! You have just successfully registered.")} + + + + {t("Vote")} + + + + + + + + {t("Meet the projects")} + + + + + + + {t( + "Web3 and social impact initiatives that contribute to the Porto ecosystem can register to receive funding. Within the 'Project List' page of the website you can learn about them and visit their websites and social networks to learn more." + )} + + + {t( + "If you want to vote for a project, press the purple button with the vote icon on the ballot process, once the vote is confirmed a pop-up will appear notifying the successful registration of the vote. Look at all the projects and choose the ones you want to support (up to 8 in total)." + )} + + + {t( + "Disclaimer: These projects will not be presented during the event, it will be up to you to read and choose which projects you want to vote for to receive the funds made available by the generous donors." + )} + + + {t( + "You can choose up to 8 projects to vote for, or fewer, as you prefer. With your MACI password you can change your vote before voting closes." + )} + + + + + + + + + + {t("Define your priorities")} + + + + + + + + + + + + + + + + + + + {" "} + {" "} + + + + + + + + + + + + + + + + + {t("Register your vote")} + + + + + + + {t( + "Once you’re satisfied with your votes, register them by pressing the 'Submit' button on the website." + )} + + + {t( + "Then, you’ll receive a transaction confirmation request in your wallet, accept it." + )} + + + {t( + "Remember that as long as voting is open, anyone who has your MACI password can register a new vote and invalidate the previous one." + )} + + + {t( + "You can register multiple votes during the voting period. Only your last recorded vote will be considered in the vote count." + )} + + + {t( + "The vote count will be given at the end of the voting period, and the prizes will be distributed among the projects based on the number of votes received during the event (via quadratic funding)." + )} + + + + + + + + + + + + ); +}; +type GuideDrawerProps = { + isOpen: boolean; + onClose: () => void; +}; +export const GuideDrawer = ({ isOpen, onClose }: GuideDrawerProps) => { + return ( + + + + + + + + + ); +}; diff --git a/packages/app/src/components/prague/SideNav.tsx b/packages/app/src/components/prague/SideNav.tsx new file mode 100644 index 00000000..dbc692b9 --- /dev/null +++ b/packages/app/src/components/prague/SideNav.tsx @@ -0,0 +1,121 @@ +import React, { useState } from "react"; +import { HStack, IconButton, Icon, Link as ExternalLink, Select, Tooltip, useColorModeValue, VStack, Text, Button } from "@chakra-ui/react"; + +import { MdDashboard } from "react-icons/md"; +import { HiCollection, HiQuestionMarkCircle } from "react-icons/hi"; +import { Link, useSearchParams } from "react-router-dom"; +import { SideNavProps } from "../../propTypes"; +import { useTranslation } from "react-i18next"; +import { Logo } from "../Hero"; +import { ColorModeSwitcher } from "../ColorModeSwitcher"; + +export const SideNav = () => { + const backgroundColor = useColorModeValue("gray.100", "#0D1429"); + let [searchParams] = useSearchParams(); + + return ( + + + } aria-label="Home" /> +{/* + + } aria-label="Ballot" /> + */} + {/* + } aria-label="Projects" /> + */} + {/* */} + } aria-label="About" /> + {/* */} + + + {/* + } + aria-label="How it Works" + /> + + + } + aria-label="Admin" + /> + */} + + + + + ); +}; + +export const Navbar = () => { + const backgroundColor = useColorModeValue("gray.100", "#0D1429"); + const color = useColorModeValue("gray.800", "#FDFDFD"); + + let [searchParams] = useSearchParams(); + const { i18n, t } = useTranslation(); + const [selectedLang, setSelectedLang] = useState(i18n.language); + + const handleLangChange = (langVal: string) => { + i18n.changeLanguage(langVal); + setSelectedLang(langVal); + }; + + return ( + + + {/* } + aria-label="Home" + /> */} + + {/* + + } + aria-label="Admin" + /> + */} + + + + {/* */} + + {/* */} + + + + ); +}; diff --git a/packages/app/src/context/DappContext.tsx b/packages/app/src/context/DappContext.tsx index f6277968..84116bde 100644 --- a/packages/app/src/context/DappContext.tsx +++ b/packages/app/src/context/DappContext.tsx @@ -10,9 +10,27 @@ import { useLayoutEffect, useContext, } from "react"; -import { WalletProvider, web3modalOptions, SUPPORTED_NETWORKS, nameToChainId } from "@qfi/hooks"; +import { WalletProvider, web3modalOptions, SUPPORTED_NETWORKS } from "@qfi/hooks"; import { DappContextType, DappStateType, SetValue, Props } from "./types"; +const nameToChainId = (name: string): string | undefined => { + switch (name) { + case "xdai": + return "0x64"; + case "polygon": + return "0x89"; + case "Mainnet": + return "0x1"; + case "Hardhat": + return "0x539"; + case "Polygon": + return "0x89"; + case "Mumbai Testnet": + return "0x13881"; + default: + return undefined; + } +}; const initialDappState: DappStateType = { address: "0x0000000000000000000000000000000000000000", }; @@ -20,21 +38,26 @@ const initialDappState: DappStateType = { const DappContext = createContext({ state: {} as DappStateType, setState: () => {}, + maciKey: "", + setMaciKey: () => {}, }); export const DappProvider: React.FC = ({ children }) => { const [state, setState] = useLocalStorage("data", initialDappState); + const [maciKey, setMaciKey] = useLocalStorage("maciKey", ""); const contextValue = useMemo( () => ({ state, setState, + maciKey, + setMaciKey, }), - [state, setState] + [state, setState, maciKey, setMaciKey] ); useEffect(() => { - // set initial state if need asynch calls + // set initial state if need async calls // setState({}); }, []); @@ -43,7 +66,7 @@ export const DappProvider: React.FC = ({ children }) => { { console.log("Accounts changed"); }} diff --git a/packages/app/src/context/types.tsx b/packages/app/src/context/types.tsx index 8f16c8b9..4876e9ae 100644 --- a/packages/app/src/context/types.tsx +++ b/packages/app/src/context/types.tsx @@ -8,6 +8,8 @@ export type DappStateType = { export type DappContextType = { state: DappStateType; setState: SetValue; + maciKey: string; + setMaciKey: SetValue; }; export type Props = PropsWithChildren<{}>; diff --git a/packages/app/src/data.tsx b/packages/app/src/data.tsx new file mode 100644 index 00000000..798855b4 --- /dev/null +++ b/packages/app/src/data.tsx @@ -0,0 +1,231 @@ +import "@fontsource/archivo"; +let projects = [ + { + projectName: "Impact Tinder", + tagline: "Web portal for Transformers volunteers to connect with each other and generate impact around social causes", + description: + "Our experience as Movimento Transformers volunteers has changed our way of seeing and understanding the world and has impacted, in previous years, career changes (or beginnings) to the Social Entrepreneurship field. If this happens organically, imagine if we actively pursued it! Our proposal is to make use of the online Transformers community with over 450 members, start with a major list of skills, experience and social causes of each member, and create a landing page with all that information. From there, each person interested in learning more about a given field could send a message to someone else (or create a buddy group) and suggest dates with Impact.", + ethereumAddress: "0x989b540aC3406B7Aa3A4985B32f15dc5BDFB4e7b", + website: "A experiência como mentores do Movimento Transformers tem mudado a nossa forma de perceber o mundo e tem tido impacto, em gerações anteriores, na transição de carreira (ou início de carreira) para a área do empreendedorismo social. Se isto acontece informalmente imaginem se o colocássemos na agenda! A nossa proposta é aproveitar a comunidade online dos Transformers onde estão mais do que 400 pessoas e fazer, em primeiro lugar, um levantamento das skills, experiência e causas dos membros, criando uma landing page com todas essas informações. A partir daí cada pessoa com interesse em aprender mais sobre determinada área poderia entrar em contacto com uma dessas pessoas (ou várias, criando grupos de buddies) e sugerir dates de impacto.", + thumbnailImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995346/1_idea_uodlqu.png", + logoCdnUrl: + "https://www.movimentotransformers.org/assets/images/logo-animated.gif", + bannerImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995633/portobanner5_q56ooz.jpg", + recipientId: 1, + id: "1", + }, + + { + projectName: "Gender Equality in Sports", + tagline: + "In-person summit on Gender Equality in Sports for local sencondary school, with the participation of several female athletes, round table discussions and Q&A moments. The closing of the event would be a mix-class and all-gender tournament.", + description: + "The class (7th grade), along with their two volunteer mentor, identified a problem in their school community - girls and boys are treated differently in school sports, in class, as well as in the playground. Since many girls in class like sports, and want to promote an environment of equal participation, they want to implement two ideas: - An in-person summit on the topic, with the participation of several female athletes, round table discussions and Q&A moments. The closing of the event would be a mix-class and all-gender tournament. - Digital activism - to create an online presence, using social media, to bring awareness and sensitization on the issue, in a creative way adapted to younger generations and school community.", + ethereumAddress: "0x989b540aC3406B7Aa3A4985B32f15dc5BDFB4e7b", + website: "Sentimos que na nossa comunidade escolar há uma diferença de tratamento de rapazes e raparigas em relação a desportos coletivos, seja nos intervalos ou até durante as aulas. Todos e todas nós gostamos de desporto, e queremos promover um ambiente de participação igual. Temos duas ideias que queremos desenvolver: - Conferência presencial sobre o tema, organizado na escola, com atletas convidadas e momentos de mesa redonda e entrevista. O encerramento seria um torneio inter-turmas misto. - Ativismo digital - criar uma plataforma online, através das redes sociais, para consciencializar e sensibilizar para o tema, de uma forma criativa e adaptada às gerações mais novas e à comunidade escolar.", + thumbnailImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995346/2_ideia_uza8bb.png", + logoCdnUrl: + "https://www.movimentotransformers.org/assets/images/logo-animated.gif", + bannerImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995633/portobanner5_q56ooz.jpg", + recipientId: 2, + id: "2", + }, + { + projectName: "Transforming Youth Participation", + tagline: + "Bootcamp to capacitate and empower young people for an active participation in society", + description: + "We identified a problem - young people participate very little. They attend few protests, do not sign petitions, volunteer very little, and are often not interested in voting. They feel that no one listens to them or takes them seriously, and that the world of civic participation is complicated. We want to solve this issue. Our group wants to study the participation of young people throughout the country, using online forms. After this, we want to develop a Bootcamp and travel the country with it, to capacitate and empower young people for an active participation in society", + ethereumAddress: "0x989b540aC3406B7Aa3A4985B32f15dc5BDFB4e7b", + website: "Identificamos um problema - os jovens participam pouco. Não vão a manifestações, não assinam petições, não fazem voluntariado, muitas vezes não têm interesse em votar. Sentem que ninguém os ouve ou leva a sério, e que o mundo da participação é complicado. Queremos resolver este problema. O nosso grupo quer fazer uma auscultação nacional da participação jovem através de inquéritos online, e desenvolver um mega bootcamp itinerante que vai percorrer o país e capacitar e empoderar os jovens para participarem ativamente na sociedade.", + thumbnailImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995346/3_idea_fypoui.png", + logoCdnUrl: + "https://www.movimentotransformers.org/assets/images/logo-animated.gif", + bannerImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995633/portobanner2_zryfmp.jpg", + recipientId: 3, + id: "3", + }, + { + projectName: "Toddlers Trip - From IDGs to SDGs", + tagline: + "Work with children of today that are going to be the leaders of tomorrow: develop a program to teach young leaders skills to address Sustainable Development Goals (SDGs)", + description: + "In 2015, the Sustainable Development Goals gave us a comprehensive plan for a sustainable world by 2030. The 17 goals cover a wide range of issues that involve people with different needs, values, and convictions. There is a vision of what needs to happen, but progress along this vision has so far been disappointing. We lack the inner capacity to deal with our increasingly complex environment and challenges. Fortunately, modern research shows that the inner abilities we now all need can be developed and the 'Inner Development Goals' initiative identified 5 dimensions and 23 skills and qualities which are especially crucial for leaders who address SDGs, but fundamentally for all of us. This is our payback idea - to work with children of today that are going to be the leaders of tomorrow: develop a program to work on these 23 skills from early on. The main objective of this programme is not just develop these skills with the group of toddlers but also co-create with them an interactive book to be used with the next group and so on.", + ethereumAddress: "0x989b540aC3406B7Aa3A4985B32f15dc5BDFB4e7b", + website: "Em 2015, os Objetivos para o Desenvolvimento Sustentável (ODS) deram-nos um extenso plano de ação por um mundo mais sustentável até 2030. Os 17 objetivos incluem uma grande variedade de temas que envolvem pessoas com diferentes necessidades, valores, e convicções. Há uma visão do que tem de acontecer, mas o progresso tem sido desapontante. Falta-nos a capacidade interna de lidar com os desafios cada vez mais complexos que nos surgem. Felizmente, estudos modernos mostram que as skills internas de que precisamos podem ser desenvolvidas e trabalhadas e os Objetivos para o Desenvolvimento Interior (ODI) identificam 5 dimensões e 23 capacidades ou qualidades que são especialmente importantes e essenciais. Esta é a nossa ideia de payback - trabalhar com as crianças de hoje para que sejam os líderes de amanhã, através de um programa que permita trabalhar estas 23 skills desde cedo. O maior objetivo é não só desenvolver estas skills com um grupo de crianças, mas também criar com o grupo um livro interativo que possa ser usado em iniciativas futuras.", + thumbnailImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995346/4_idea_lpe56y.png", + logoCdnUrl: "https://www.movimentotransformers.org/assets/images/logo-animated.gif", + bannerImageLink: "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995633/portobanner5_q56ooz.jpg", + recipientId: 4, + id: "4", + }, + { + projectName: "One week to… discover your talent!", + tagline: + "Creative Residence (with arts, sports, STEM, and personal development workshops for the Transformers community to explore what talents, dreams and passions they have", + description: + "Many of us don’t know who we want to be or what we want to do in the future - and many people have told us that our options are limited. In Transformers, talents are shared to transform communities - we want to the same for eachother. Out idea is to implement a Creative Residence (with arts, sports, STEM, and much more) which will be an immersive experience, allowing young people to try many things, have personal development workshops and non-formal education moments, and learn what talents, dreams and passions they have.", + ethereumAddress: "0x989b540aC3406B7Aa3A4985B32f15dc5BDFB4e7b", + website: "Muitos de nós não sabem o que querem ser ou fazer no futuro - e já demasiadas pessoas nos disseram que as opções são limitadas. Nos Transformers, os talentos são partilhados para transformar a comunidade - queremos fazer o mesmo uns pelos outros. A nossa ideia é uma residência criativa (artística, desportiva, de STEM, e não só) que vai ser uma experiência imersiva, permitindo aos jovens experimentar muita coisa, ter workshops de desenvolvimento pessoal e educação não formal, e perceber que talentos, sonhos e paixões têm!", + thumbnailImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995346/5_idea_ruvcps.png", + logoCdnUrl: + "https://www.movimentotransformers.org/assets/images/logo-animated.gif", + bannerImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995633/portobanner5_q56ooz.jpg", + recipientId: 5, + id: "5", + }, + { + projectName: "To be a Volunteer - an interactive manual", + tagline: + "Interactive volunteering manual that will allow anyone and everyone to grow as a volunteer, an activist, and an overall active participant.", + description: + "Being a mentor with Movimento Transformers taught me how to be a volunteer, and how to use my talents to impact a class of young apprentices. After some time of doing this, I feel that our methodology and day-to-day experience could be very useful to people that want to volunteer and participate more in their communities. I want to, in collaboration with other Transformers volunteers, develop an interactive volunteering manual which will allow anyone and everyone to grow as a volunteer, an activist, and an overall active participant.", + ethereumAddress: "0x989b540aC3406B7Aa3A4985B32f15dc5BDFB4e7b", + website: + "Ser Mentora do Movimento Transformers ensinou-me a ser voluntária, e a usar os meus talentos para impactar uma turma de jovens aprendizes. Depois de algum tempo a fazer isto, sinto que a metodologia e a nossa experiência de terreno no dia a dia poderia ser muito útil para muitas pessoas que querem fazer voluntariado e ser mais ativas e transformadoras nas suas comunidades. Quero, em conjunto com outros mentores e mentoras voluntários/as, desenvolver um manual de voluntariado interativo, que permita crescimento de cada pessoa enquanto voluntária, ativista, e participante ativa na sua comunidade.", + thumbnailImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995346/6_idea_cyj8du.png", + logoCdnUrl: + "https://www.movimentotransformers.org/assets/images/logo-animated.gif", + bannerImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995633/portobanner2_zryfmp.jpg", + recipientId: 6, + id: "6", + }, + { + projectName: "Saving the world… with CREATIVITY", + tagline: + "Fashion show totally produced by the Transformers community, to empahsize sustainability and creativity in Porto.", + description: + "We really love fashion, and our mentors tell us we are much more creative than we think. So, we came up with this idea - to workout creativity mixing fashion, that we love,with sustainability, something we all need more of. We want to put on a fashion show totally produced by us, with used clothes, fabric no one wants, recycled materials, and many other things. We want to host our own Fashion Week, but filled with transformation and community!", + ethereumAddress: "0x989b540aC3406B7Aa3A4985B32f15dc5BDFB4e7b", + website: "Gostamos muito de roupa, e as nossas mentoras dizem-nos que somos mais criativas do que sabemos. Então, tivemos uma ideia em conjunto - trabalhar a nossa criatividade misturando moda, que adoramos, com sustentabilidade, algo que todos precisamos. Queremos fazer um desfile de moda totalmente produzido por nós, a partir de roupas usadas, excedentes de tecido, materiais reciclados, entre outras coisas. Vamos fazer a nossa própria Semana da Moda, mas com transformação e comunidade!", + thumbnailImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995347/7_idea_pbtc72.png", + logoCdnUrl: + "https://www.movimentotransformers.org/assets/images/logo-animated.gif", + bannerImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995633/portobanner1_ndcn0s.jpg", + recipientId: 7, + id: "7", + }, + { + projectName: "We are… A Play About Us", + tagline: + "A theater play about, written, and produced by “youth at risk of social exclusion” in What we feel, dream, think, and want to do. What makes us angry,", + description: + "They tell us we are “youth at risk of social exclusion”. Many words to say we are invisible and often ignored by a large slice of society. Everyday we feel that we accumulate and lock all our feelings and thoughts inside, with no way to express them, especially because no one seems to care. We are learning the talents of theater and hip-hop, and want to use them as a way to say everything we normally can’t - we will write and produce a theater play about US. What we feel, dream, think, and want to do. What makes us angry, but also happy - EVERYTHING. And we will do everything, as well- write the screenplay, make the scenery and clothing, all of it. We want to present this to our community so they finally listen to us, and stop ignoring us.", + ethereumAddress: "0x989b540aC3406B7Aa3A4985B32f15dc5BDFB4e7b", + website: "Dizem que somos “jovens em risco de exclusão social”. Palavras a mais para dizer que somos invisíveis e ignorados por grande parte da sociedade. Cada vez mais sentimos que acumulamos tudo o que pensamos e sentimos cá dentro, sem forma de nos expressar, até porque ninguém quer ouvir. Estamos a aprender os talentos do teatro e do hip-hop, e queremos usá-los como forma de dizer tudo aquilo que normalmente não conseguimos. Vamos escrever e produzir uma peça de teatro sobre NÓS.O que sentimos, sonhamos, pensamos, queremos fazer. O que nos revolta mas também o que nos faz felizes - TUDO. E vamos ser nós a fazer tudo, também. Escrever o texto, ensaiar, fazer o cenário, a roupa. Queremos apresentar isto na nossa comunidade para que nos ouçam, e deixem de nos ignorar.", + thumbnailImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995347/8_idea_ptl8hi.png", + logoCdnUrl: + "https://www.movimentotransformers.org/assets/images/logo-animated.gif", + bannerImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995633/portobanner1_ndcn0s.jpg", + recipientId: 8, + id: "8", + }, + { + projectName: "Transforming our Public Spaces", + tagline: + "Rebuilding abandoned and destroyed football and futsal fields, paint dilapidated walls, rethink and rebuild abandoned gardens", + description: + "We feel that our neighborhood does not represent us, and the potential of several public spaces is absolutely wasted. Our streets deserve renovation and transformation, to represent us better. This is what we want to do - for our community to be the public space that reflects how we feel and who we are. With due permission, we want to rebuild abandoned and destroyed football and futsal fields, paint old walls that are badly painted, rethink and rebuild abandoned gardens, among many other spaces. We feel that the sadness of our neighborhoods affects how we feel, and we want to change this, so that the world around us can bring us more happiness and color.", + ethereumAddress: "0x989b540aC3406B7Aa3A4985B32f15dc5BDFB4e7b", + website: "Sentimos que o nosso bairro não nos representa - e que muitos espaços estão sub-aproveitados e merecem ser renovados e transformados. É isto que queremos fazer: que as nossas ruas e o espaço público reflita a forma como nos sentimos. Com a devida autorização, queremos remodelar campos de futebol e futsal velhos e inutilizados, pintar paredes velhas e/ou mal pintadas, repensar e refazer jardins abandonados, entre muitos outros espaços. Achamos que a tristeza das nossas cidades afeta a forma como nos sentimos, e queremos mudar isto - que o mundo à nossa volta nos traga mais alegria e cor.", + thumbnailImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995347/9_idea_dojkul.png", + logoCdnUrl: + "https://www.movimentotransformers.org/assets/images/logo-animated.gif", + bannerImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995633/portobanner1_ndcn0s.jpg", + recipientId: 9, + id: "9", + }, + { + projectName: "A Community Vegetable Garden to Include Everyone", + tagline: + "A community vegetable and fruit garden in one of the Center for Migrant and Refugee People and Families in our city.", + description: + "In the last months we have developed and built a community vegetable and fruit garden in one of the Center for Migrant and Refugee People and Families in our city. Our group is mostly made up of young refugees and migrants, but also several families, children, adults, and even elders. They come from many different countries and backgrounds. The process of developing this garden has been very interesting and gratifying, but we want to make this truly for the entire community - we are thinking of a way to scale up the idea, in a public place, so we can integrate many different people and communities, and have a true sharing space for everyone that wants to participate. We don’t speak the same language, but the ground is the same everywhere - this is what moves us weekly, and we really want to contaminate the rest of the community with this idea and feeling.", + ethereumAddress: "0x989b540aC3406B7Aa3A4985B32f15dc5BDFB4e7b", + website: "Nos últimos meses temos desenvolvido uma horta comunitária num dos Centros de Acolhimento e Integração de Famílias e Pessoas Refugiadas da nossa cidade. O nosso grupo de aprendizes são muitos jovens migrantes e refugiados, mas não só. O processo de desenvolvimento da horta tem sido muito gratificante, mas queremos muito que esta seja verdadeiramente para toda a comunidade - pensamos numa forma de fazer isto em grande escala, num local público, de forma a podermos integrar muitas outras pessoas e comunidades, e termos um verdadeiro espaço de partilha para todas e quaisquer pessoas que tenham interesse em comunicar. Não falamos a mesma língua, mas a terra é igual em todo o lado - é isto que nos move semanalmente, e queremos muito contagiar o resto da comunidade com esta ideia.", + thumbnailImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995348/10_idea_v4mhow.png", + logoCdnUrl: + "https://www.movimentotransformers.org/assets/images/logo-animated.gif", + bannerImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995633/portobanner2_zryfmp.jpg", + recipientId: 10, + id: "10", + }, + { + projectName: "Transformation through Animation", + tagline: + "Creating animated short movies about things like racism, bullying, domestic violence, different treatment of men and women, poverty,", + description: + "We have two major goals - we want to learn video animation and how to create short animated movies (one of the talents our mentors share with us), and also bring awareness to many issues we feel every day. Things like racism, bullying, domestic violence, different treatment of men and women, poverty, among many others. We want to learn how to work this animation software, write several scripts, and create many animated short movies on the topic, so they can be posted in social media but also presented in schools and foster care centers like ours, so these topics are more talked about and better understood.", + ethereumAddress: "0x989b540aC3406B7Aa3A4985B32f15dc5BDFB4e7b", + website: "Com esta ideia temos dois objetivos - queremos aprender a animar vídeos e desenvolver curtas metragens (um dos talentos que os nossos mentores partilham connosco), e consciencializar para muitos problemas que sentimos todos os dias. Enfrentamos muitas vezes situações de racismo, bullying, violência doméstica, tratamento diferente de homens e mulheres, pobreza, entre muitos outros. Queremos aprender a trabalhar com o software de animação, escrever vários guiões e produzir muitas curtas-metragens animadas sobre estes temas, para serem divulgadas nas redes sociais, mas também apresentadas em escolas e em centros de acolhimento como os nosso, para que se saiba e fale mais sobre os temas.", + thumbnailImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995347/11_idea_b2ggcp.png", + logoCdnUrl: + "https://www.movimentotransformers.org/assets/images/logo-animated.gif", + bannerImageLink: + "https://res.cloudinary.com/pse-qf-maci/image/upload/v1678995633/portobanner1_ndcn0s.jpg", + recipientId: 11, + id: "11", + } +]; + +export function getProjects() { + return projects; +} + +export function getRecipientIdbyId(id) { + console.log(id); + const p = projects.find((p) => p.id === id); + + return p.recipientId; +} + +export function getProject(id: string) { + return ( + projects.find((p) => p.id === id) ?? { + projectName: "404 Project not found", + tagline: "404 Tagline not found", + description: "404 Description not found", + ethereumAddress: "404 Address not found", + website: "404 URL not found", + thumbnailImageLink: "https://source.unsplash.com/random", + logoCdnUrl: "https://source.unsplash.com/random", + bannerImageLink: "https://source.unsplash.com/random", + recipientId: 0, + id: "0", + } + ); +} + +function shuffleFisherYates(array: any) { + let i = array.length; + while (i--) { + const ri = Math.floor(Math.random() * i); + [array[i], array[ri]] = [array[ri], array[i]]; + } + return array; +} + +//return shuffled version of allprojects array +export function getShuffledProjects() { + return shuffleFisherYates(getProjects()); +} diff --git a/packages/app/src/hooks/test.tsx b/packages/app/src/hooks/test.tsx new file mode 100644 index 00000000..695d0a7b --- /dev/null +++ b/packages/app/src/hooks/test.tsx @@ -0,0 +1,32 @@ +import { genRandomSalt } from 'qaci-crypto' +import { Keypair, PubKey, Command, Message } from 'qaci-domainobjs' + + + +export function createMessage( + userStateIndex: number, + userKeypair: Keypair, + newUserKeypair: Keypair | null, + coordinatorPubKey: PubKey, + voteOptionIndex: number | null, + voteWeight: number | null, + nonce: number +): [Message, PubKey] { + const encKeypair = new Keypair(); + + const salt = genRandomSalt(); + + const quadraticVoteWeight = voteWeight?? 0; + const pubkey = userKeypair.pubKey; + const command = new Command( + BigInt(userStateIndex), + pubkey, + BigInt(voteOptionIndex || 0), + BigInt(quadraticVoteWeight.toString()), + BigInt(nonce), + salt + ); + const signature = command.sign(userKeypair.privKey); + const message = command.encrypt(signature, Keypair.genEcdhSharedKey(encKeypair.privKey, coordinatorPubKey)); + return [message, encKeypair.pubKey]; +} \ No newline at end of file diff --git a/packages/app/src/i18next.tsx b/packages/app/src/i18next.tsx new file mode 100644 index 00000000..278ad232 --- /dev/null +++ b/packages/app/src/i18next.tsx @@ -0,0 +1,29 @@ +import i18n from "i18next"; +import { initReactI18next } from "react-i18next"; + +import translationEN from './locales/en/translation.json'; +import translationES from './locales/es/translation.json'; + + +// the translations +// (tip move them in a JSON file and import them, +// or even better, manage them separated from your code: https://react.i18next.com/guides/multiple-translation-files) +const resources = { + en: { translation: translationEN }, + es: { translation: translationES }, +}; + +i18n + .use(initReactI18next) // passes i18n down to react-i18next + .init({ + resources, + lng: "es", // language to use, more information here: https://www.i18next.com/overview/configuration-options#languages-namespaces-resources + // you can use the i18n.changeLanguage function to change the language manually: https://www.i18next.com/overview/api#changelanguage + // if you're using a language detector, do not define the lng option + + interpolation: { + escapeValue: false // react already safes from xss + } + }); + +export default i18n; \ No newline at end of file diff --git a/packages/app/src/index.tsx b/packages/app/src/index.tsx index ddd28f27..59f5bb4a 100644 --- a/packages/app/src/index.tsx +++ b/packages/app/src/index.tsx @@ -6,12 +6,19 @@ import * as serviceWorker from "./serviceWorker"; import { HashRouter } from "react-router-dom"; import { CSSReset } from "@chakra-ui/react"; -import { WalletProvider, web3modalOptions, SUPPORTED_NETWORKS, nameToChainId } from "@qfi/hooks"; +import { nameToChainId } from "@qfi/hooks"; import { App } from "./App"; import { DappProvider } from "./context/DappContext"; -const DEFAULT_CHAIN_ID = nameToChainId("Mainnet"); // Used to switch to if the user is on an unsupported network + + +import "./i18next"; + +const DEFAULT_CHAIN_ID = nameToChainId("xdai"); // Used to switch to if the user is on an unsupported network +console.log(DEFAULT_CHAIN_ID); + + declare global { interface WindowEventMap { @@ -24,7 +31,7 @@ ReactDOM.render( - + , diff --git a/packages/app/src/jubjublib/core/MaciState.ts b/packages/app/src/jubjublib/core/MaciState.ts new file mode 100644 index 00000000..927d5c82 --- /dev/null +++ b/packages/app/src/jubjublib/core/MaciState.ts @@ -0,0 +1,1236 @@ +import assert from "assert"; +import { PubKey, VerifyingKey, Command, PCommand, TCommand, Message, Keypair, StateLeaf, Ballot } from "../domainobjs/domainobjs"; +import { AccQueue, IncrementalQuinTree, genRandomSalt, SNARK_FIELD_SIZE, NOTHING_UP_MY_SLEEVE, hashLeftRight, hash3, hash5, sha256Hash, stringifyBigInts, Signature } from "../crypto"; + +interface TreeDepths { + intStateTreeDepth: number; + messageTreeDepth: number; + messageTreeSubDepth: number; + voteOptionTreeDepth: number; +} + +interface BatchSizes { + tallyBatchSize: number; + subsidyBatchSize: number; + messageBatchSize: number; +} + +interface MaxValues { + maxUsers: number; + maxMessages: number; + maxVoteOptions: number; +} + +const STATE_TREE_DEPTH = 6; + +// Also see: Polls.sol +class Poll { + public duration: number; + // Note that we only store the PubKey on-chain while this class stores the + // Keypair for the sake of convenience + public coordinatorKeypair: Keypair; + public treeDepths: TreeDepths; + public batchSizes: BatchSizes; + public maxValues: MaxValues; + + public numSignUps: number; + + public pollEndTimestamp: BigInt; + + public ballots: Ballot[] = []; + public ballotTree: IncrementalQuinTree; + + public messages: Message[] = []; + public messageAq: AccQueue; + public messageTree: IncrementalQuinTree; + public commands: Command[] = []; + + public encPubKeys: PubKey[] = []; + public STATE_TREE_ARITY = 5; + public MESSAGE_TREE_ARITY = 5; + public VOTE_OPTION_TREE_ARITY = 5; + + public stateCopied = false; + public stateLeaves: StateLeaf[] = [blankStateLeaf]; + public stateTree = new IncrementalQuinTree(STATE_TREE_DEPTH, blankStateLeafHash, this.STATE_TREE_ARITY, hash5); + + // For message processing + public numBatchesProcessed = 0; + public currentMessageBatchIndex; + public maciStateRef: MaciState; + public pollId: number; + + public sbSalts: { [key: number]: BigInt } = {}; + public resultRootSalts: { [key: number]: BigInt } = {}; + public preVOSpentVoiceCreditsRootSalts: { [key: number]: BigInt } = {}; + public spentVoiceCreditSubtotalSalts: { [key: number]: BigInt } = {}; + + // For vote tallying + public results: BigInt[] = []; + public perVOSpentVoiceCredits: BigInt[] = []; + public numBatchesTallied = 0; + + public totalSpentVoiceCredits: BigInt = BigInt(0); + + // For coefficient and subsidy calculation + public subsidy: BigInt[] = []; // size: M, M is number of vote options + public subsidySalts: { [key: number]: BigInt } = {}; + public rbi = 0; // row batch index + public cbi = 0; // column batch index + public MM = 50; // adjustable parameter + public WW = 4; // number of digits for float representation + + constructor(_duration: number, _pollEndTimestamp: BigInt, _coordinatorKeypair: Keypair, _treeDepths: TreeDepths, _batchSizes: BatchSizes, _maxValues: MaxValues, _maciStateRef: MaciState) { + this.duration = _duration; + this.pollEndTimestamp = _pollEndTimestamp; + this.coordinatorKeypair = _coordinatorKeypair; + this.treeDepths = _treeDepths; + this.batchSizes = _batchSizes; + this.maxValues = _maxValues; + this.maciStateRef = _maciStateRef; + this.pollId = _maciStateRef.polls.length; + this.numSignUps = Number(_maciStateRef.numSignUps.toString()); + + this.messageTree = new IncrementalQuinTree(this.treeDepths.messageTreeDepth, NOTHING_UP_MY_SLEEVE, this.MESSAGE_TREE_ARITY, hash5); + this.messageAq = new AccQueue(this.treeDepths.messageTreeSubDepth, this.MESSAGE_TREE_ARITY, NOTHING_UP_MY_SLEEVE); + + for (let i = 0; i < this.maxValues.maxVoteOptions; i++) { + this.results.push(BigInt(0)); + this.perVOSpentVoiceCredits.push(BigInt(0)); + this.subsidy.push(BigInt(0)); + } + + const blankBallot = Ballot.genBlankBallot(this.maxValues.maxVoteOptions, _treeDepths.voteOptionTreeDepth); + this.ballots.push(blankBallot); + } + + private copyStateFromMaci = () => { + // Copy the state tree, ballot tree, state leaves, and ballot leaves + assert(this.maciStateRef.stateLeaves.length === this.maciStateRef.stateTree.nextIndex); + + this.stateLeaves = this.maciStateRef.stateLeaves.map((x) => x.copy()); + this.stateTree = this.maciStateRef.stateTree.copy(); + + // Create as many ballots as state leaves + const emptyBallot = new Ballot(this.maxValues.maxVoteOptions, this.treeDepths.voteOptionTreeDepth); + const emptyBallotHash = emptyBallot.hash(); + this.ballotTree = new IncrementalQuinTree(STATE_TREE_DEPTH, emptyBallot.hash(), this.STATE_TREE_ARITY, hash5); + this.ballotTree.insert(emptyBallotHash); + + while (this.ballots.length < this.stateLeaves.length) { + this.ballotTree.insert(emptyBallotHash); + this.ballots.push(emptyBallot); + } + + this.numSignUps = Number(this.maciStateRef.numSignUps.toString()); + + this.stateCopied = true; + }; + + // Insert topup message into commands + public topupMessage = (_message: Message) => { + assert(_message.msgType == BigInt(2)); + for (const d of _message.data) { + assert(d < SNARK_FIELD_SIZE); + } + this.messages.push(_message); + let padKey = new PubKey([BigInt("10457101036533406547632367118273992217979173478358440826365724437999023779287"), BigInt("19824078218392094440610104313265183977899662750282163392862422243483260492317")]); + + this.encPubKeys.push(padKey); + const messageLeaf = _message.hash(padKey); + this.messageAq.enqueue(messageLeaf); + this.messageTree.insert(messageLeaf); + + const command = new TCommand(_message.data[0], _message.data[1]); + this.commands.push(command); + }; + + /* + * Inserts a Message and the corresponding public key used to generate the + * ECDH shared key which was used to encrypt said message. + */ + public publishMessage = (_message: Message, _encPubKey: PubKey) => { + assert(_message.msgType == BigInt(1)); + assert(_encPubKey.rawPubKey[0] < SNARK_FIELD_SIZE && _encPubKey.rawPubKey[1] < SNARK_FIELD_SIZE); + for (const d of _message.data) { + assert(d < SNARK_FIELD_SIZE); + } + + this.encPubKeys.push(_encPubKey); + this.messages.push(_message); + + const messageLeaf = _message.hash(_encPubKey); + this.messageAq.enqueue(messageLeaf); + this.messageTree.insert(messageLeaf); + + // Decrypt the message and store the Command + const sharedKey = Keypair.genEcdhSharedKey(this.coordinatorKeypair.privKey, _encPubKey); + try { + let { command, signature } = PCommand.decrypt(_message, sharedKey); + this.commands.push(command); + } catch (e) { + //console.log(`error cannot decrypt: ${e.message}`) + let keyPair = new Keypair(); + let command = new PCommand(BigInt(0), keyPair.pubKey, BigInt(0), BigInt(0), BigInt(0), BigInt(0), BigInt(0)); + this.commands.push(command); + } + }; + + /* + * Merge all enqueued messages into a tree. + */ + public mergeAllMessages = () => { + this.messageAq.mergeSubRoots(0); + this.messageAq.merge(this.treeDepths.messageTreeDepth); + assert(this.isMessageAqMerged()); + + // TODO: Validate that a tree from this.messages matches the messageAq + // main root + }; + + public hasUnprocessedMessages = (): boolean => { + const batchSize = this.batchSizes.messageBatchSize; + + let totalBatches = this.messages.length <= batchSize ? 1 : Math.floor(this.messages.length / batchSize); + + if (this.messages.length > batchSize && this.messages.length % batchSize > 0) { + totalBatches++; + } + + return this.numBatchesProcessed < totalBatches; + }; + + /* + * Process _batchSize messages starting from the saved index. This + * function will process messages even if the number of messages is not an + * exact multiple of _batchSize. e.g. if there are 10 messages, _index is + * 8, and _batchSize is 4, this function will only process the last two + * messages in this.messages, and finally update the zeroth state leaf. + * Note that this function will only process as many state leaves as there + * are ballots to prevent accidental inclusion of a new user after this + * poll has concluded. + * @param _pollId The ID of the poll associated with the messages to + * process + */ + public processMessages = (_pollId: number) => { + assert(this.hasUnprocessedMessages(), "No more messages to process"); + + // Require that the message queue has been merged + assert(this.isMessageAqMerged()); + assert(this.messageAq.hasRoot(this.treeDepths.messageTreeDepth)); + + const batchSize = this.batchSizes.messageBatchSize; + + if (this.numBatchesProcessed === 0) { + // The starting index of the batch of messages to process. + // Note that we process messages in reverse order. + // e.g if there are 8 messages and the batch size is 5, then + // the starting index should be 5. + assert(this.currentMessageBatchIndex == undefined); + } + + if (this.numBatchesProcessed === 0) { + // Prevent other polls from being processed until this poll has + // been fully processed + this.maciStateRef.pollBeingProcessed = true; + this.maciStateRef.currentPollBeingProcessed = _pollId; + } + + // Only allow one poll to be processed at a time + if (this.maciStateRef.pollBeingProcessed) { + assert(this.maciStateRef.currentPollBeingProcessed === _pollId); + } + + if (this.numBatchesProcessed === 0) { + const r = this.messages.length % batchSize; + + if (r === 0) { + this.currentMessageBatchIndex = Math.floor(this.messages.length / batchSize) * batchSize; + } else { + this.currentMessageBatchIndex = this.messages.length; + } + + if (this.currentMessageBatchIndex > 0) { + if (r === 0) { + this.currentMessageBatchIndex -= batchSize; + } else { + this.currentMessageBatchIndex -= r; + } + } + + this.sbSalts[this.currentMessageBatchIndex] = BigInt(0); + } + + // The starting index must be valid + assert(this.currentMessageBatchIndex >= 0); + assert(this.currentMessageBatchIndex % batchSize === 0); + + if (!this.stateCopied) { + this.copyStateFromMaci(); + } + + // Generate circuit inputs + const circuitInputs = stringifyBigInts(this.genProcessMessagesCircuitInputsPartial(this.currentMessageBatchIndex)); + + const currentStateLeaves: StateLeaf[] = []; + const currentStateLeavesPathElements: any[] = []; + + const currentBallots: Ballot[] = []; + const currentBallotsPathElements: any[] = []; + + const currentVoteWeights: BigInt[] = []; + const currentVoteWeightsPathElements: any[] = []; + + for (let i = 0; i < batchSize; i++) { + const idx = this.currentMessageBatchIndex + batchSize - i - 1; + assert(idx >= 0); + let message; + if (idx >= this.messages.length) { + message = new Message(BigInt(1), Array(10).fill(BigInt(0))); // when idx large than actual size, just use something to pass to switch + } else { + message = this.messages[idx]; + } + switch (message.msgType) { + case BigInt(1): + try { + // If the command is valid + const r = this.processMessage(idx); + // console.log(messageIndex, r ? 'valid' : 'invalid') + // console.log("r:"+r.newStateLeaf ) + // DONE: replace with try/catch after implementing error + // handling + const index = r.stateLeafIndex; + if (index) { + currentStateLeaves.unshift(r.originalStateLeaf); + currentBallots.unshift(r.originalBallot); + currentVoteWeights.unshift(r.originalVoteWeight); + currentVoteWeightsPathElements.unshift(r.originalVoteWeightsPathElements); + + currentStateLeavesPathElements.unshift(r.originalStateLeafPathElements); + currentBallotsPathElements.unshift(r.originalBallotPathElements); + + this.stateLeaves[index] = r.newStateLeaf.copy(); + this.stateTree.update(index, r.newStateLeaf.hash()); + + this.ballots[index] = r.newBallot; + this.ballotTree.update(index, r.newBallot.hash()); + } else { + throw Error("no-op"); + } + } catch (e) { + if (e.message === "no-op") { + // Since the command is invalid, use a blank state leaf + currentStateLeaves.unshift(this.stateLeaves[0].copy()); + currentStateLeavesPathElements.unshift(this.stateTree.genMerklePath(0).pathElements); + + currentBallots.unshift(this.ballots[0].copy()); + currentBallotsPathElements.unshift(this.ballotTree.genMerklePath(0).pathElements); + + // Since the command is invalid, use vote option index 0 + currentVoteWeights.unshift(this.ballots[0].votes[0]); + + // No need to iterate through the entire votes array if the + // remaining elements are 0 + let lastIndexToInsert = this.ballots[0].votes.length - 1; + while (lastIndexToInsert > 0) { + if (this.ballots[0].votes[lastIndexToInsert] === BigInt(0)) { + lastIndexToInsert--; + } else { + break; + } + } + + const vt = new IncrementalQuinTree(this.treeDepths.voteOptionTreeDepth, BigInt(0), 5, hash5); + for (let i = 0; i <= lastIndexToInsert; i++) { + vt.insert(this.ballots[0].votes[i]); + } + currentVoteWeightsPathElements.unshift(vt.genMerklePath(0).pathElements); + } else { + throw e; + } + } + break; + case BigInt(2): + try { + // -------------------------------------- + // generate topup circuit inputs + let stateIndex = BigInt(message.data[0]); + let amount = BigInt(message.data[1]); + + if (stateIndex >= BigInt(this.ballots.length)) { + stateIndex = BigInt(0); + amount = BigInt(0); + } + + currentStateLeaves.unshift(this.stateLeaves[Number(stateIndex)].copy()); + currentStateLeavesPathElements.unshift(this.stateTree.genMerklePath(Number(stateIndex)).pathElements); + + const newStateLeaf = this.stateLeaves[Number(stateIndex)].copy(); + newStateLeaf.voiceCreditBalance = BigInt(newStateLeaf.voiceCreditBalance.valueOf()) + BigInt(amount); + this.stateLeaves[Number(stateIndex)] = newStateLeaf; + this.stateTree.update(Number(stateIndex), newStateLeaf.hash()); + + // we still need them as placeholder for vote command + let currentBallot = this.ballots[Number(stateIndex)].copy(); + currentBallots.unshift(currentBallot); + currentBallotsPathElements.unshift(this.ballotTree.genMerklePath(Number(stateIndex)).pathElements); + currentVoteWeights.unshift(currentBallot.votes[0]); + + const vt = new IncrementalQuinTree(this.treeDepths.voteOptionTreeDepth, BigInt(0), 5, hash5); + for (let i = 0; i < this.ballots[0].votes.length; i++) { + vt.insert(currentBallot.votes[i]); + } + + currentVoteWeightsPathElements.unshift(vt.genMerklePath(0).pathElements); + } catch (e) { + throw e; + } + break; + default: + break; + } // end msgType switch + } + + // loop for batch + circuitInputs.currentStateLeaves = currentStateLeaves.map((x) => x.asCircuitInputs()); + circuitInputs.currentStateLeavesPathElements = currentStateLeavesPathElements; + circuitInputs.currentBallots = currentBallots.map((x) => x.asCircuitInputs()); + circuitInputs.currentBallotsPathElements = currentBallotsPathElements; + circuitInputs.currentVoteWeights = currentVoteWeights; + circuitInputs.currentVoteWeightsPathElements = currentVoteWeightsPathElements; + + this.numBatchesProcessed++; + + if (this.currentMessageBatchIndex > 0) { + this.currentMessageBatchIndex -= batchSize; + } + + // TODO: ensure newSbSalt differs from currentSbSalt + const newSbSalt = genRandomSalt(); + this.sbSalts[this.currentMessageBatchIndex] = newSbSalt; + + circuitInputs.newSbSalt = newSbSalt; + const newStateRoot = this.stateTree.root; + const newBallotRoot = this.ballotTree.root; + circuitInputs.newSbCommitment = hash3([newStateRoot, newBallotRoot, newSbSalt]); + + const coordPubKeyHash = this.coordinatorKeypair.pubKey.hash(); + circuitInputs.inputHash = sha256Hash([circuitInputs.packedVals, coordPubKeyHash, circuitInputs.msgRoot, circuitInputs.currentSbCommitment, circuitInputs.newSbCommitment, this.pollEndTimestamp]); + + // If this is the last batch, release the lock + if (this.numBatchesProcessed * batchSize >= this.messages.length) { + this.maciStateRef.pollBeingProcessed = false; + } + return stringifyBigInts(circuitInputs); + }; + + /* + * Generates inputs for the ProcessMessages circuit. + */ + public genProcessMessagesCircuitInputsPartial = (_index: number) => { + const messageBatchSize = this.batchSizes.messageBatchSize; + + assert(_index <= this.messages.length); + assert(_index % messageBatchSize === 0); + + let msgs = this.messages.map((x) => x.asCircuitInputs()); + while (msgs.length % messageBatchSize > 0) { + msgs.push(msgs[msgs.length - 1]); + } + + msgs = msgs.slice(_index, _index + messageBatchSize); + + let commands = this.commands.map((x) => x.copy()); + while (commands.length % messageBatchSize > 0) { + commands.push(commands[commands.length - 1]); + } + commands = commands.slice(_index, _index + messageBatchSize); + + while (this.messageTree.nextIndex < _index + messageBatchSize) { + this.messageTree.insert(this.messageTree.zeroValue); + } + + const messageSubrootPath = this.messageTree.genMerkleSubrootPath(_index, _index + messageBatchSize); + + assert(IncrementalQuinTree.verifyMerklePath(messageSubrootPath, this.messageTree.hashFunc) === true); + + let batchEndIndex = _index + messageBatchSize; + if (batchEndIndex > this.messages.length) { + batchEndIndex = this.messages.length; + } + + let encPubKeys = this.encPubKeys.map((x) => x.copy()); + while (encPubKeys.length % messageBatchSize > 0) { + encPubKeys.push(encPubKeys[encPubKeys.length - 1]); + } + encPubKeys = encPubKeys.slice(_index, _index + messageBatchSize); + + const msgRoot = this.messageAq.getRoot(this.treeDepths.messageTreeDepth); + + const currentStateRoot = this.stateTree.root; + const currentBallotRoot = this.ballotTree.root; + const currentSbCommitment = hash3([currentStateRoot, currentBallotRoot, this.sbSalts[this.currentMessageBatchIndex]]); + + // Generate a SHA256 hash of inputs which the contract provides + const packedVals = BigInt(this.maxValues.maxVoteOptions) + (BigInt(this.numSignUps) << BigInt(50)) + (BigInt(_index) << BigInt(100)) + (BigInt(batchEndIndex) << BigInt(150)); + + const coordPubKey = this.coordinatorKeypair.pubKey; + + return stringifyBigInts({ + pollEndTimestamp: this.pollEndTimestamp, + packedVals, + msgRoot, + msgs, + msgSubrootPathElements: messageSubrootPath.pathElements, + coordPrivKey: this.coordinatorKeypair.privKey.asCircuitInputs(), + coordPubKey: coordPubKey.asCircuitInputs(), + encPubKeys: encPubKeys.map((x) => x.asCircuitInputs()), + currentStateRoot, + currentBallotRoot, + currentSbCommitment, + currentSbSalt: this.sbSalts[this.currentMessageBatchIndex], + }); + }; + + /* + * Process all messages. This function does not update the ballots or state + * leaves; rather, it copies and then updates them. This makes it possible + * to test the result of multiple processMessage() invocations. + */ + public processAllMessages = () => { + if (!this.stateCopied) { + this.copyStateFromMaci(); + } + const stateLeaves = this.stateLeaves.map((x) => x.copy()); + const ballots = this.ballots.map((x) => x.copy()); + while (this.hasUnprocessedMessages()) { + this.processMessages(this.pollId); + } + + return { stateLeaves, ballots }; + }; + + /* + * Process one message + */ + private processMessage = (_index: number) => { + //TODO: throw custom errors for no-ops + + try { + // Ensure that the index is valid + assert(_index >= 0); + assert(this.messages.length > _index); + + // Ensure that there is the correct number of ECDH shared keys + assert(this.encPubKeys.length === this.messages.length); + + const message = this.messages[_index]; + const encPubKey = this.encPubKeys[_index]; + + // Decrypt the message + const sharedKey = Keypair.genEcdhSharedKey(this.coordinatorKeypair.privKey, encPubKey); + const { command, signature } = PCommand.decrypt(message, sharedKey); + + const stateLeafIndex = BigInt(`${command.stateIndex}`); + + // If the state tree index in the command is invalid, do nothing + if (stateLeafIndex >= BigInt(this.ballots.length) || stateLeafIndex < BigInt(1)) { + throw Error("no-op"); + // console.log("invalid state tree index") + return {}; + } + + if (stateLeafIndex >= BigInt(this.stateTree.nextIndex)) { + // console.log("invalid state tree index") + //TODO: handle error + return {}; + } + + // The user to update (or not) + const stateLeaf = this.stateLeaves[Number(stateLeafIndex)]; + + // The ballot to update (or not) + const ballot = this.ballots[Number(stateLeafIndex)]; + + // If the signature is invalid, do nothing + if (!command.verifySignature(signature, stateLeaf.pubKey)) { + // console.log('Invalid signature. pubkeyx =', stateLeaf.pubKey.rawPubKey[0], 'sig', signature) + throw Error("no-op"); + return {}; + } + + //console.log('Valid signature. pubkeyx =', stateLeaf.pubKey.rawPubKey[0], 'sig', signature) + + // If the nonce is invalid, do nothing + if (command.nonce !== BigInt(`${ballot.nonce}`) + BigInt(1)) { + // console.log('Invalid nonce. nonce =', ballot.nonce, 'command.nonce =', command.nonce) + throw Error("no-op"); + return {}; + } + + const prevSpentCred = ballot.votes[Number(command.voteOptionIndex)]; + + const voiceCreditsLeft = BigInt(`${stateLeaf.voiceCreditBalance}`) + BigInt(`${prevSpentCred}`) * BigInt(`${prevSpentCred}`) - BigInt(`${command.newVoteWeight}`) * BigInt(`${command.newVoteWeight}`); + + // If the remaining voice credits is insufficient, do nothing + if (voiceCreditsLeft < BigInt(0)) { + // console.log("no op") + throw Error("no-op"); + return {}; + } + + // If the vote option index is invalid, do nothing + if (command.voteOptionIndex < BigInt(0) || command.voteOptionIndex >= BigInt(this.maxValues.maxVoteOptions)) { + // console.log("no op") + throw Error("no-op"); + return {}; + } + + // Deep-copy the state leaf and update its attributes + const newStateLeaf = stateLeaf.copy(); + newStateLeaf.voiceCreditBalance = voiceCreditsLeft; + newStateLeaf.pubKey = command.newPubKey.copy(); + + // Deep-copy the ballot and update its attributes + const newBallot = ballot.copy(); + newBallot.nonce = BigInt(`${newBallot.nonce}`) + BigInt(1); + newBallot.votes[Number(command.voteOptionIndex)] = command.newVoteWeight; + + const originalStateLeafPathElements = this.stateTree.genMerklePath(Number(stateLeafIndex)).pathElements; + + const originalBallotPathElements = this.ballotTree.genMerklePath(Number(stateLeafIndex)).pathElements; + + const voteOptionIndex = Number(command.voteOptionIndex); + + const originalVoteWeight = ballot.votes[voteOptionIndex]; + const vt = new IncrementalQuinTree(this.treeDepths.voteOptionTreeDepth, BigInt(0), 5, hash5); + for (let i = 0; i < this.ballots[0].votes.length; i++) { + vt.insert(ballot.votes[i]); + } + + const originalVoteWeightsPathElements = vt.genMerklePath(voteOptionIndex).pathElements; + + return { + stateLeafIndex: Number(stateLeafIndex), + + newStateLeaf, + originalStateLeaf: stateLeaf.copy(), + originalStateLeafPathElements, + originalVoteWeight, + originalVoteWeightsPathElements, + + newBallot, + originalBallot: ballot.copy(), + originalBallotPathElements, + command, + }; + } catch (e) { + //TODO: throw custom errors for no-ops + switch (e.message) { + default: + throw Error("no-op"); + } + } + }; + + private isMessageAqMerged = (): boolean => { + return this.messageAq.getRoot(this.treeDepths.messageTreeDepth) === this.messageTree.root; + }; + + public hasUntalliedBallots = () => { + const batchSize = this.batchSizes.tallyBatchSize; + return this.numBatchesTallied * batchSize < this.ballots.length; + }; + + public hasUnfinishedSubsidyCalculation = () => { + const batchSize = this.batchSizes.subsidyBatchSize; + return this.rbi * batchSize < this.ballots.length && this.cbi * batchSize < this.ballots.length; + }; + + public subsidyPerBatch = (): BigInt[] => { + const batchSize = this.batchSizes.subsidyBatchSize; + + assert(this.hasUnfinishedSubsidyCalculation(), "No more subsidy batches to calculate"); + + const stateRoot = this.stateTree.root; + const ballotRoot = this.ballotTree.root; + const sbSalt = this.sbSalts[this.currentMessageBatchIndex]; + const sbCommitment = hash3([stateRoot, ballotRoot, sbSalt]); + + const currentSubsidy = this.subsidy.map((x) => BigInt(x.toString())); + let currentSubsidyCommitment = BigInt(0); + let currentSubsidySalt = BigInt(0); + let saltIndex = this.previousSubsidyIndexToString(); + console.log(`prevIdx=${saltIndex}, curIdx=${this.rbi}-${this.cbi}`); + if (this.rbi !== 0 || this.cbi !== 0) { + currentSubsidySalt = BigInt(this.subsidySalts[saltIndex]); + currentSubsidyCommitment = BigInt(genTallyResultCommitment(this.subsidy, currentSubsidySalt, this.treeDepths.voteOptionTreeDepth).valueOf()); + } + + const rowStartIndex = this.rbi * batchSize; + const colStartIndex = this.cbi * batchSize; + const [ballots1, ballots2] = this.subsidyCalculation(rowStartIndex, colStartIndex); + + const ballotSubrootProof1 = this.ballotTree.genMerkleSubrootPath(rowStartIndex, rowStartIndex + batchSize); + const ballotSubrootProof2 = this.ballotTree.genMerkleSubrootPath(colStartIndex, colStartIndex + batchSize); + + const newSubsidySalt = genRandomSalt(); + saltIndex = this.rbi.toString() + "-" + this.cbi.toString(); + this.subsidySalts[saltIndex] = newSubsidySalt; + const newSubsidyCommitment = genTallyResultCommitment(this.subsidy, newSubsidySalt, this.treeDepths.voteOptionTreeDepth); + + const packedVals = MaciState.packSubsidySmallVals(this.rbi, this.cbi, this.numSignUps); + + const inputHash = sha256Hash([packedVals, sbCommitment, currentSubsidyCommitment, newSubsidyCommitment]); + + const circuitInputs = stringifyBigInts({ + stateRoot, + ballotRoot, + + sbSalt, + currentSubsidySalt, + newSubsidySalt, + + sbCommitment, + currentSubsidyCommitment, + newSubsidyCommitment, + currentSubsidy, + + packedVals, + inputHash, + + ballots1: ballots1.map((x) => x.asCircuitInputs()), + ballots2: ballots2.map((x) => x.asCircuitInputs()), + votes1: ballots1.map((x) => x.votes), + votes2: ballots2.map((x) => x.votes), + ballotPathElements1: ballotSubrootProof1.pathElements, + ballotPathElements2: ballotSubrootProof2.pathElements, + }); + + this.increaseSubsidyIndex(); + return circuitInputs; + }; + + public increaseSubsidyIndex = () => { + const batchSize = this.batchSizes.subsidyBatchSize; + if (this.cbi * batchSize + batchSize < this.ballots.length) { + this.cbi++; + } else { + this.rbi++; + this.cbi = this.rbi; + } + return; + }; + + public previousSubsidyIndexToString = (): string => { + const batchSize = this.batchSizes.subsidyBatchSize; + const numBatches = Math.ceil(this.ballots.length / batchSize); + let cbi = this.cbi; + let rbi = this.rbi; + if (this.cbi === 0 && this.rbi === 0) { + return "0-0"; + } + if (this.cbi > this.rbi) { + cbi--; + } else { + rbi--; + cbi = numBatches - 1; + } + return rbi.toString() + "-" + cbi.toString(); + }; + + public coefficientCalculation = (rowBallot: Ballot, colBallot: Ballot): BigInt => { + let sum = BigInt(0); + for (let p = 0; p < this.maxValues.maxVoteOptions; p++) { + sum += BigInt(rowBallot.votes[p].valueOf()) * BigInt(colBallot.votes[p].valueOf()); + } + let res = BigInt(this.MM * 10 ** this.WW) / (BigInt(this.MM) + BigInt(sum)); + return res; + }; + + public subsidyCalculation = (rowStartIndex: number, colStartIndex: number): Ballot[][] => { + const batchSize = this.batchSizes.subsidyBatchSize; + let ballots1: Ballot[] = []; + let ballots2: Ballot[] = []; + const emptyBallot = new Ballot(this.maxValues.maxVoteOptions, this.treeDepths.voteOptionTreeDepth); + for (let i = 0; i < batchSize; i++) { + const row = rowStartIndex + i; + const col = colStartIndex + i; + const rowBallot = row < this.ballots.length ? this.ballots[row] : emptyBallot; + const colBallot = col < this.ballots.length ? this.ballots[col] : emptyBallot; + ballots1.push(rowBallot); + ballots2.push(colBallot); + } + for (let i = 0; i < batchSize; i++) { + for (let j = 0; j < batchSize; j++) { + const row = rowStartIndex + i; + const col = colStartIndex + j; + const rowBallot = row < this.ballots.length ? this.ballots[row] : emptyBallot; + const colBallot = col < this.ballots.length ? this.ballots[col] : emptyBallot; + + const kij = this.coefficientCalculation(rowBallot, colBallot); + for (let p = 0; p < this.maxValues.maxVoteOptions; p++) { + const vip = BigInt(rowBallot.votes[p].valueOf()); + const vjp = BigInt(colBallot.votes[p].valueOf()); + if (rowStartIndex !== colStartIndex || (rowStartIndex === colStartIndex && i < j)) { + this.subsidy[p] = BigInt(this.subsidy[p].valueOf()) + BigInt(2) * BigInt(kij.valueOf()) * vip * vjp; + } + } + } + } + + return [ballots1, ballots2]; + }; + + /* + * Tally a batch of Ballots and update this.results + */ + public tallyVotes = () => { + const batchSize = this.batchSizes.tallyBatchSize; + + assert(this.hasUntalliedBallots(), "No more ballots to tally"); + + const batchStartIndex = this.numBatchesTallied * batchSize; + + const currentResultsRootSalt = batchStartIndex === 0 ? BigInt(0) : this.resultRootSalts[batchStartIndex - batchSize]; + + const currentPerVOSpentVoiceCreditsRootSalt = batchStartIndex === 0 ? BigInt(0) : this.preVOSpentVoiceCreditsRootSalts[batchStartIndex - batchSize]; + + const currentSpentVoiceCreditSubtotalSalt = batchStartIndex === 0 ? BigInt(0) : this.spentVoiceCreditSubtotalSalts[batchStartIndex - batchSize]; + + const currentResultsCommitment = this.genResultsCommitment(currentResultsRootSalt); + + const currentPerVOSpentVoiceCreditsCommitment = this.genPerVOSpentVoiceCreditsCommitment(currentPerVOSpentVoiceCreditsRootSalt, batchStartIndex); + + const currentSpentVoiceCreditsCommitment = this.genSpentVoiceCreditSubtotalCommitment(currentSpentVoiceCreditSubtotalSalt, batchStartIndex); + + const currentTallyCommitment = batchStartIndex === 0 ? BigInt(0) : hash3([currentResultsCommitment, currentSpentVoiceCreditsCommitment, currentPerVOSpentVoiceCreditsCommitment]); + + const ballots: Ballot[] = []; + const currentResults = this.results.map((x) => BigInt(x.toString())); + const currentPerVOSpentVoiceCredits = this.perVOSpentVoiceCredits.map((x) => BigInt(x.toString())); + const currentSpentVoiceCreditSubtotal = BigInt(this.totalSpentVoiceCredits.toString()); + + for (let i = this.numBatchesTallied * batchSize; i < this.numBatchesTallied * batchSize + batchSize; i++) { + if (i >= this.ballots.length) { + break; + } + + ballots.push(this.ballots[i]); + + for (let j = 0; j < this.maxValues.maxVoteOptions; j++) { + const v = BigInt(`${this.ballots[i].votes[j]}`); + + this.results[j] = BigInt(`${this.results[j]}`) + v; + + this.perVOSpentVoiceCredits[j] = BigInt(`${this.perVOSpentVoiceCredits[j]}`) + BigInt(v) * BigInt(v); + + this.totalSpentVoiceCredits = BigInt(`${this.totalSpentVoiceCredits}`) + BigInt(v) * BigInt(v); + } + } + + const emptyBallot = new Ballot(this.maxValues.maxVoteOptions, this.treeDepths.voteOptionTreeDepth); + + while (ballots.length < batchSize) { + ballots.push(emptyBallot); + } + + const newResultsRootSalt = genRandomSalt(); + const newPerVOSpentVoiceCreditsRootSalt = genRandomSalt(); + const newSpentVoiceCreditSubtotalSalt = genRandomSalt(); + + this.resultRootSalts[batchStartIndex] = newResultsRootSalt; + this.preVOSpentVoiceCreditsRootSalts[batchStartIndex] = newPerVOSpentVoiceCreditsRootSalt; + this.spentVoiceCreditSubtotalSalts[batchStartIndex] = newSpentVoiceCreditSubtotalSalt; + + const newResultsCommitment = this.genResultsCommitment(newResultsRootSalt); + + const newSpentVoiceCreditsCommitment = this.genSpentVoiceCreditSubtotalCommitment(newSpentVoiceCreditSubtotalSalt, batchStartIndex + batchSize); + + const newPerVOSpentVoiceCreditsCommitment = this.genPerVOSpentVoiceCreditsCommitment(newPerVOSpentVoiceCreditsRootSalt, batchStartIndex + batchSize); + + const newTallyCommitment = hash3([newResultsCommitment, newSpentVoiceCreditsCommitment, newPerVOSpentVoiceCreditsCommitment]); + + //debugger + + const stateRoot = this.stateTree.root; + const ballotRoot = this.ballotTree.root; + const sbSalt = this.sbSalts[this.currentMessageBatchIndex]; + const sbCommitment = hash3([stateRoot, ballotRoot, sbSalt]); + + const packedVals = MaciState.packTallyVotesSmallVals(batchStartIndex, batchSize, this.numSignUps); + const inputHash = sha256Hash([packedVals, sbCommitment, currentTallyCommitment, newTallyCommitment]); + + const ballotSubrootProof = this.ballotTree.genMerkleSubrootPath(batchStartIndex, batchStartIndex + batchSize); + + const votes = ballots.map((x) => x.votes); + + const circuitInputs = stringifyBigInts({ + stateRoot, + ballotRoot, + sbSalt, + + sbCommitment, + currentTallyCommitment, + newTallyCommitment, + + packedVals, // contains numSignUps and batchStartIndex + inputHash, + + ballots: ballots.map((x) => x.asCircuitInputs()), + ballotPathElements: ballotSubrootProof.pathElements, + votes, + + currentResults, + currentResultsRootSalt, + + currentSpentVoiceCreditSubtotal, + currentSpentVoiceCreditSubtotalSalt, + + currentPerVOSpentVoiceCredits, + currentPerVOSpentVoiceCreditsRootSalt, + + newResultsRootSalt, + newPerVOSpentVoiceCreditsRootSalt, + newSpentVoiceCreditSubtotalSalt, + }); + + this.numBatchesTallied++; + + return circuitInputs; + }; + + public genResultsCommitment = (_salt: BigInt) => { + const resultsTree = new IncrementalQuinTree(this.treeDepths.voteOptionTreeDepth, BigInt(0), this.VOTE_OPTION_TREE_ARITY, hash5); + + for (const r of this.results) { + resultsTree.insert(r); + } + + return hashLeftRight(resultsTree.root, _salt); + }; + + public genSpentVoiceCreditSubtotalCommitment = (_salt: BigInt, _numBallotsToCount: number) => { + let subtotal = BigInt(0); + for (let i = 0; i < _numBallotsToCount; i++) { + if (i >= this.ballots.length) { + break; + } + for (let j = 0; j < this.results.length; j++) { + const v = BigInt(`${this.ballots[i].votes[j]}`); + subtotal = BigInt(subtotal) + v * v; + } + } + return hashLeftRight(subtotal, _salt); + }; + + //public genSpentVoiceCreditSubtotalCommitment = (_salt) => { + //return hashLeftRight(this.totalSpentVoiceCredits, _salt) + //} + + public genPerVOSpentVoiceCreditsCommitment = (_salt: BigInt, _numBallotsToCount: number) => { + const resultsTree = new IncrementalQuinTree(this.treeDepths.voteOptionTreeDepth, BigInt(0), this.VOTE_OPTION_TREE_ARITY, hash5); + + const leaves: BigInt[] = []; + + for (let i = 0; i < this.results.length; i++) { + leaves.push(BigInt(0)); + } + + for (let i = 0; i < _numBallotsToCount; i++) { + if (i >= this.ballots.length) { + break; + } + for (let j = 0; j < this.results.length; j++) { + const v = BigInt(`${this.ballots[i].votes[j]}`); + leaves[j] = BigInt(`${leaves[j]}`) + v * v; + } + } + + for (let i = 0; i < leaves.length; i++) { + resultsTree.insert(leaves[i]); + } + + return hashLeftRight(resultsTree.root, _salt); + }; + + public copy = (): Poll => { + const copied = new Poll( + Number(this.duration.toString()), + BigInt(this.pollEndTimestamp.toString()), + this.coordinatorKeypair.copy(), + { + intStateTreeDepth: Number(this.treeDepths.intStateTreeDepth), + messageTreeDepth: Number(this.treeDepths.messageTreeDepth), + messageTreeSubDepth: Number(this.treeDepths.messageTreeSubDepth), + voteOptionTreeDepth: Number(this.treeDepths.voteOptionTreeDepth), + }, + { + tallyBatchSize: Number(this.batchSizes.tallyBatchSize.toString()), + subsidyBatchSize: Number(this.batchSizes.subsidyBatchSize.toString()), + messageBatchSize: Number(this.batchSizes.messageBatchSize.toString()), + }, + { + maxUsers: Number(this.maxValues.maxUsers.toString()), + maxMessages: Number(this.maxValues.maxMessages.toString()), + maxVoteOptions: Number(this.maxValues.maxVoteOptions.toString()), + }, + this.maciStateRef + ); + + copied.stateLeaves = this.stateLeaves.map((x: StateLeaf) => x.copy()); + copied.messages = this.messages.map((x: Message) => x.copy()); + copied.commands = this.commands.map((x: Command) => x.copy()); + copied.ballots = this.ballots.map((x: Ballot) => x.copy()); + copied.encPubKeys = this.encPubKeys.map((x: PubKey) => x.copy()); + if (this.ballotTree) { + copied.ballotTree = this.ballotTree.copy(); + } + copied.currentMessageBatchIndex = this.currentMessageBatchIndex; + copied.maciStateRef = this.maciStateRef; + copied.messageAq = this.messageAq.copy(); + copied.messageTree = this.messageTree.copy(); + copied.results = this.results.map((x: BigInt) => BigInt(x.toString())); + copied.perVOSpentVoiceCredits = this.perVOSpentVoiceCredits.map((x: BigInt) => BigInt(x.toString())); + + copied.numBatchesProcessed = Number(this.numBatchesProcessed.toString()); + copied.numBatchesTallied = Number(this.numBatchesTallied.toString()); + copied.pollId = Number(this.pollId.toString()); + copied.totalSpentVoiceCredits = BigInt(this.totalSpentVoiceCredits.toString()); + + copied.sbSalts = {}; + copied.resultRootSalts = {}; + copied.preVOSpentVoiceCreditsRootSalts = {}; + copied.spentVoiceCreditSubtotalSalts = {}; + + for (const k of Object.keys(this.sbSalts)) { + copied.sbSalts[k] = BigInt(this.sbSalts[k].toString()); + } + for (const k of Object.keys(this.resultRootSalts)) { + copied.resultRootSalts[k] = BigInt(this.resultRootSalts[k].toString()); + } + for (const k of Object.keys(this.preVOSpentVoiceCreditsRootSalts)) { + copied.preVOSpentVoiceCreditsRootSalts[k] = BigInt(this.preVOSpentVoiceCreditsRootSalts[k].toString()); + } + for (const k of Object.keys(this.spentVoiceCreditSubtotalSalts)) { + copied.spentVoiceCreditSubtotalSalts[k] = BigInt(this.spentVoiceCreditSubtotalSalts[k].toString()); + } + + // subsidy related copy + copied.subsidy = this.subsidy.map((x: BigInt) => BigInt(x.toString())); + copied.rbi = Number(this.rbi.toString()); + copied.cbi = Number(this.cbi.toString()); + copied.MM = Number(this.MM.toString()); + copied.WW = Number(this.WW.toString()); + for (const k of Object.keys(this.subsidySalts)) { + copied.subsidySalts[k] = BigInt(this.subsidySalts[k].toString()); + } + return copied; + }; + + public equals = (p: Poll): boolean => { + const result = + this.duration === p.duration && + this.coordinatorKeypair.equals(p.coordinatorKeypair) && + this.treeDepths.intStateTreeDepth === p.treeDepths.intStateTreeDepth && + this.treeDepths.messageTreeDepth === p.treeDepths.messageTreeDepth && + this.treeDepths.messageTreeSubDepth === p.treeDepths.messageTreeSubDepth && + this.treeDepths.voteOptionTreeDepth === p.treeDepths.voteOptionTreeDepth && + this.batchSizes.tallyBatchSize === p.batchSizes.tallyBatchSize && + this.batchSizes.messageBatchSize === p.batchSizes.messageBatchSize && + this.maxValues.maxUsers === p.maxValues.maxUsers && + this.maxValues.maxMessages === p.maxValues.maxMessages && + this.maxValues.maxVoteOptions === p.maxValues.maxVoteOptions && + this.messages.length === p.messages.length && + this.encPubKeys.length === p.encPubKeys.length; + + if (!result) { + return false; + } + + for (let i = 0; i < this.messages.length; i++) { + if (!this.messages[i].equals(p.messages[i])) { + return false; + } + } + for (let i = 0; i < this.encPubKeys.length; i++) { + if (!this.encPubKeys[i].equals(p.encPubKeys[i])) { + return false; + } + } + return true; + }; +} + +const blankStateLeaf = StateLeaf.genBlankLeaf(); +const blankStateLeafHash = blankStateLeaf.hash(); + +// A representation of the MACI contract +// Also see MACI.sol +class MaciState { + public STATE_TREE_ARITY = 5; + public STATE_TREE_SUBDEPTH = 2; + public MESSAGE_TREE_ARITY = 5; + public VOTE_OPTION_TREE_ARITY = 5; + + public stateTreeDepth = STATE_TREE_DEPTH; + public polls: Poll[] = []; + public stateLeaves: StateLeaf[] = []; + public stateTree = new IncrementalQuinTree(STATE_TREE_DEPTH, blankStateLeafHash, this.STATE_TREE_ARITY, hash5); + public stateAq: AccQueue = new AccQueue(this.STATE_TREE_SUBDEPTH, this.STATE_TREE_ARITY, blankStateLeafHash); + public pollBeingProcessed = true; + public currentPollBeingProcessed; + public numSignUps = 0; + + constructor() { + this.stateLeaves.push(blankStateLeaf); + this.stateTree.insert(blankStateLeafHash); + this.stateAq.enqueue(blankStateLeafHash); + } + + public signUp(_pubKey: PubKey, _initialVoiceCreditBalance: BigInt, _timestamp: BigInt): number { + const stateLeaf = new StateLeaf(_pubKey, _initialVoiceCreditBalance, _timestamp); + const h = stateLeaf.hash(); + const leafIndex = this.stateAq.enqueue(h); + this.stateTree.insert(h); + this.stateLeaves.push(stateLeaf.copy()); + this.numSignUps++; + return leafIndex; + } + + public deployPoll(_duration: number, _pollEndTimestamp: BigInt, _maxValues: MaxValues, _treeDepths: TreeDepths, _messageBatchSize: number, _coordinatorKeypair: Keypair): number { + const poll: Poll = new Poll( + _duration, + _pollEndTimestamp, + _coordinatorKeypair, + _treeDepths, + { + messageBatchSize: _messageBatchSize, + subsidyBatchSize: this.STATE_TREE_ARITY ** _treeDepths.intStateTreeDepth, + tallyBatchSize: this.STATE_TREE_ARITY ** _treeDepths.intStateTreeDepth, + }, + _maxValues, + this + ); + + this.polls.push(poll); + return this.polls.length - 1; + } + + public deployNullPoll() { + // @ts-ignore + this.polls.push(null); + } + + /* + * Deep-copy this object + */ + public copy = (): MaciState => { + const copied = new MaciState(); + + copied.stateLeaves = this.stateLeaves.map((x: StateLeaf) => x.copy()); + copied.polls = this.polls.map((x: Poll) => x.copy()); + + return copied; + }; + + public equals = (m: MaciState): boolean => { + const result = + this.STATE_TREE_ARITY === m.STATE_TREE_ARITY && this.MESSAGE_TREE_ARITY === m.MESSAGE_TREE_ARITY && this.VOTE_OPTION_TREE_ARITY === m.VOTE_OPTION_TREE_ARITY && this.stateTreeDepth === m.stateTreeDepth && this.polls.length === m.polls.length && this.stateLeaves.length === m.stateLeaves.length; + + if (!result) { + return false; + } + + for (let i = 0; i < this.polls.length; i++) { + if (!this.polls[i].equals(m.polls[i])) { + return false; + } + } + for (let i = 0; i < this.stateLeaves.length; i++) { + if (!this.stateLeaves[i].equals(m.stateLeaves[i])) { + return false; + } + } + + return true; + }; + + public static packSubsidySmallVals = (row: number, col: number, numSignUps: number) => { + // Note: the << operator has lower precedence than + + const packedVals = (BigInt(numSignUps) << BigInt(100)) + (BigInt(row) << BigInt(50)) + BigInt(col); + return packedVals; + }; + + public static packTallyVotesSmallVals = (batchStartIndex: number, batchSize: number, numSignUps: number) => { + // Note: the << operator has lower precedence than + + const packedVals = BigInt(batchStartIndex) / BigInt(batchSize) + (BigInt(numSignUps) << BigInt(50)); + + return packedVals; + }; + + public static unpackTallyVotesSmallVals = (packedVals: BigInt) => { + let asBin = packedVals.toString(2); + assert(asBin.length <= 100); + while (asBin.length < 100) { + asBin = "0" + asBin; + } + const numSignUps = BigInt("0b" + asBin.slice(0, 50)); + const batchStartIndex = BigInt("0b" + asBin.slice(50, 100)); + + return { numSignUps, batchStartIndex }; + }; + + public static packProcessMessageSmallVals = (maxVoteOptions: BigInt, numUsers: BigInt, batchStartIndex: number, batchEndIndex: number) => { + return BigInt(`${maxVoteOptions}`) + (BigInt(`${numUsers}`) << BigInt(50)) + (BigInt(batchStartIndex) << BigInt(100)) + (BigInt(batchEndIndex) << BigInt(150)); + }; + + public static unpackProcessMessageSmallVals = (packedVals: BigInt) => { + let asBin = packedVals.toString(2); + assert(asBin.length <= 200); + while (asBin.length < 200) { + asBin = "0" + asBin; + } + const maxVoteOptions = BigInt("0b" + asBin.slice(150, 200)); + const numUsers = BigInt("0b" + asBin.slice(100, 150)); + const batchStartIndex = BigInt("0b" + asBin.slice(50, 100)); + const batchEndIndex = BigInt("0b" + asBin.slice(0, 50)); + + return { + maxVoteOptions, + numUsers, + batchStartIndex, + batchEndIndex, + }; + }; +} + +const genProcessVkSig = (_stateTreeDepth: number, _messageTreeDepth: number, _voteOptionTreeDepth: number, _batchSize: number): BigInt => { + return (BigInt(_batchSize) << BigInt(192)) + (BigInt(_stateTreeDepth) << BigInt(128)) + (BigInt(_messageTreeDepth) << BigInt(64)) + BigInt(_voteOptionTreeDepth); +}; + +const genTallyVkSig = (_stateTreeDepth: number, _intStateTreeDepth: number, _voteOptionTreeDepth: number): BigInt => { + return (BigInt(_stateTreeDepth) << BigInt(128)) + (BigInt(_intStateTreeDepth) << BigInt(64)) + BigInt(_voteOptionTreeDepth); +}; + +const genSubsidyVkSig = (_stateTreeDepth: number, _intStateTreeDepth: number, _voteOptionTreeDepth: number): BigInt => { + return (BigInt(_stateTreeDepth) << BigInt(128)) + (BigInt(_intStateTreeDepth) << BigInt(64)) + BigInt(_voteOptionTreeDepth); +}; + +/* + * A helper function which hashes a list of results with a salt and returns the + * hash. + * + * @param results A list of vote weights + * @parm salt A random salt + * @return The hash of the results and the salt, with the salt last + */ +const genTallyResultCommitment = (results: BigInt[], salt: BigInt, depth: number): BigInt => { + const tree = new IncrementalQuinTree(depth, BigInt(0), 5, hash5); + for (const result of results) { + tree.insert(result); + } + return hashLeftRight(tree.root, salt); +}; + +export { type MaxValues, type TreeDepths, MaciState, Poll, genProcessVkSig, genTallyVkSig, genSubsidyVkSig, genTallyResultCommitment, STATE_TREE_DEPTH }; diff --git a/packages/app/src/jubjublib/core/README.md b/packages/app/src/jubjublib/core/README.md new file mode 100644 index 00000000..dc2dc30b --- /dev/null +++ b/packages/app/src/jubjublib/core/README.md @@ -0,0 +1,106 @@ +# `maci-core` + +[![NPM Package][core-npm-badge]][core-npm-link] +[![Actions Status][core-actions-badge]][core-actions-link] + +This submodule assists with handling key business logic functions and +processes. + +## Overview + +One may conceive of MACI as a state machine with 1) data and 2) functions which +transform said data. This makes it easier to reason about the system, write +tests, and implement functionality. It also allows us to implement the smart +contracts in discrete components which are easy to test. + +To this end, this submodule exposes a `MaciState` class and a `Poll` class. +Developers should instantiate objects from these classes to test MACI. For +instance, [`MACI.test.ts`](`../contracts/ts/__tests__/MACI.test.ts`) creates a +`MaciState` object and every time it interacts with the MACI smart contract, it +mirrors said interaction on the `MaciState` and `Poll`. As such, the developer +can then use their helper functions like `maciState.signUp()`, +`poll.publishMessage`, `poll.processMessages()`, and `poll.tallyVotes()` to +step through the various stages of the MACI flow. + +## `MaciState` + +### Key functions + +#### **`signUp`** + +Accepts a user's public key and creates a new state leaf and ballot leaf. + +In testing, whenever a test suite submits a `signUp()` transaction, it should +call `maciState.signUp()` as well, so that the off-chain representation of MACI +is kept up to date. + +In production, `genMaciStateFromContract()` in +[`genMaciState.ts`](`contracts/ts/genMaciState.ts`) uses this function when it +scans a MACI contract's event log for signups, so as to bring its `MaciState` +instance up to date. + +#### **`deployPoll`** + +Creates a new `Poll`. This should be done whenever the MACI contract's +`deployPoll()` function is called. + +### Helper functions + +#### **`copy`** + +A function that deep-copies an object. + +### Key data structures + +#### **`stateAq`**, **`stateTree`** + +The Merkle tree of state leaves. `stateAq` must be merged (subroots and/or main +root) whenever the MACI contract's `mergeStateAqSubRoots()` and +`mergeStateAq()` are invoked. + +They should contain the same leaves, even if the `stateAq` is not yet merged. +`stateTree` exists for developer convenience. + +## **`Poll`** + +A `Poll` is an off-chain representation of a Poll. In testing, `Poll` instances +should mirror their on-chain counterparts. + +### Key functions + +#### **`publishMessage`** + +Publishes a message by updating the message tree and message accumulation +queue. + +#### **`processMessages`** + +Processes a batch of messages and returns the inputs to the `processMessages` +circuit which can be used to prove correct execution. + +#### **`tallyVotes`** + +Tallies a batch of votes and returns the inputs to the `tallyVotes` +circuit which can be used to prove correct execution. + +### Helper functions + +#### **`copy`** + +Deep-copies and returns this object. + +### Key data structures + +#### **`messageAq`**, **`messageTree`** + +The Merkle tree of message leaves. `messageAq` must be merged (subroots and/or +main root) whenever the MACI contract's `mergeMessageAqSubRoots()` and +`mergeMessageAq()` are invoked. + +They should contain the same leaves, even if the `messageAq` is not yet merged. +`messageTree` exists for developer convenience. + +[core-npm-badge]: https://img.shields.io/npm/v/maci-core.svg +[core-npm-link]: https://www.npmjs.com/package/maci-core +[core-actions-badge]: https://github.com/privacy-scaling-explorations/maci/actions/workflows/core-build.yml/badge.svg +[core-actions-link]: https://github.com/privacy-scaling-explorations/maci/actions?query=workflow%3Acore diff --git a/packages/app/src/jubjublib/core/core.ts b/packages/app/src/jubjublib/core/core.ts new file mode 100644 index 00000000..4dbdb363 --- /dev/null +++ b/packages/app/src/jubjublib/core/core.ts @@ -0,0 +1,24 @@ +import { + //genPerVOSpentVoiceCreditsCommitment, + //genSpentVoiceCreditsCommitment, + genTallyResultCommitment, + MaciState, + STATE_TREE_DEPTH, + Poll, + genProcessVkSig, + genTallyVkSig, + genSubsidyVkSig +} from './MaciState' + +export { + //genPerVOSpentVoiceCreditsCommitment, + //genSpentVoiceCreditsCommitment, + genTallyResultCommitment, + MaciState, + STATE_TREE_DEPTH, + Poll, + genProcessVkSig, + genTallyVkSig, + genSubsidyVkSig +} + diff --git a/packages/app/src/jubjublib/crypto/AccQueue.ts b/packages/app/src/jubjublib/crypto/AccQueue.ts new file mode 100644 index 00000000..35aa49af --- /dev/null +++ b/packages/app/src/jubjublib/crypto/AccQueue.ts @@ -0,0 +1,553 @@ +import { + sha256Hash, + hashLeftRight, + hash5, + stringifyBigInts, + unstringifyBigInts, + IncrementalQuinTree, +} from '.' + +type Leaf = BigInt +type Root = BigInt + +const assert = (condition: boolean) => { + if (!condition) { + console.log('Assertion failed') + } +} + +const deepCopyBigIntArray = (arr: BigInt[]) => { + return arr.map((x) => BigInt(x.toString())) +} + +const calcDepthFromNumLeaves = ( + hashLength: number, + numLeaves: number, +) => { + let depth = 1 + while (true) { + const max = hashLength ** depth + if (BigInt(max) >= numLeaves) { + break + } + depth ++ + } + + return depth +} + +interface Queue { + levels: BigInt[][]; + indices: number[]; +} + +/* + * An Accumulator Queue which conforms to the implementation in AccQueue.sol. + * Each enqueue() operation updates a subtree, and a merge() operation combines + * all subtrees into a main tree. + * It supports 2 or 5 elements per leaf. + */ +export default class AccQueue { + + private MAX_DEPTH = 32 + + // The depth per subtree + public subDepth: number + + // The number of inputs per hash function + public hashLength: number + + // The default value for empty leaves + public zeroValue: BigInt + + // The current subtree index. e.g. the first subtree has index 0, the + // second has 1, and so on + public currentSubtreeIndex = 0 + + // The hash function to use for the subtrees + public subHashFunc: (leaves: Leaf[]) => BigInt + + // The hash function to use for rest of the tree (above the subroots) + public hashFunc: (leaves: Leaf[]) => BigInt + + // The number of leaves across all subtrees + public numLeaves = 0 + + // The current subtree + public leafQueue: Queue = { + levels: [], + indices: [] + } + + // For merging subtrees into the smallest tree + public nextSRindexToQueue = 0 + public smallSRTroot: BigInt = BigInt(0) + public subRootQueue: Queue = { + levels: [], + indices: [] + } + + // The root of each complete subtree + public subRoots: BigInt[] = [] + + // The root of merged subtrees + public mainRoots: BigInt[] = [] + + // The zero value per level. i.e. zeros[0] is zeroValue, + // zeros[1] is the hash of leavesPerNode zeros, and so on. + public zeros: BigInt[] = [] + + // Whether the subtrees have been merged + public subTreesMerged = false + + constructor ( + _subDepth: number, + _hashLength: number, + _zeroValue: BigInt, + ) { + // This class supports either 2 leaves per node, or 5 leaves per node. + // 5 is largest number of inputs which circomlib's Poseidon EVM hash + // function implementation supports. + + assert(_hashLength === 2 || _hashLength === 5) + assert(_subDepth > 0) + + this.hashLength = _hashLength + this.subDepth = _subDepth + this.zeroValue = _zeroValue + + // Set this.hashFunc depending on the number of leaves per node + if (this.hashLength === 2) { + // Uses PoseidonT3 under the hood, which accepts 2 inputs + this.hashFunc = (inputs: BigInt[]) => { + return hashLeftRight(inputs[0], inputs[1]) + } + } else { + // Uses PoseidonT6 under the hood, which accepts up to 5 inputs + this.hashFunc = hash5 + } + + this.subHashFunc = sha256Hash + + let hashed = this.zeroValue + for (let i = 0; i < this.MAX_DEPTH; i ++) { + + this.zeros.push(hashed) + + let e: BigInt[] = [] + if (this.hashLength === 2) { + e = [0].map(BigInt) + hashed = this.hashFunc([hashed, hashed]) + } else { + e = [0, 0, 0, 0].map(BigInt) + hashed = this.hashFunc( + [hashed, hashed, hashed, hashed, hashed ], + ) + } + this.leafQueue.levels.push(e) + this.leafQueue.indices[i] = 0 + this.subRootQueue.levels.push(e) + this.subRootQueue.indices[i] = 0 + } + } + + public getSubRoot(_index: number) { + return this.subRoots[_index] + } + + /* + * Enqueue a leaf into the current subtree + * @param _leaf The leaf to insert. + */ + public enqueue( + _leaf: Leaf, + ): number { + assert(this.numLeaves < this.hashLength ** this.MAX_DEPTH) + + // Ensure that _value is a BigInt + this._enqueue(_leaf, 0) + + const leafIndex = this.numLeaves + + this.numLeaves ++ + this.subTreesMerged = false + this.smallSRTroot = BigInt(0) + + const subTreeCapacity = this.hashLength ** this.subDepth + if (this.numLeaves % subTreeCapacity === 0) { + this.subRoots[this.currentSubtreeIndex] = this.leafQueue.levels[this.subDepth][0] + this.currentSubtreeIndex ++ + this.leafQueue.levels[this.subDepth][0] = BigInt(0) + for (let i = 0; i < this.MAX_DEPTH; i ++) { + this.leafQueue.indices[i] = 0 + } + } + + return leafIndex + } + + private _enqueue( + _leaf: Leaf, + _level: number, + ) { + if (_level > this.subDepth) { + return; + } + const n = this.leafQueue.indices[_level] + + if (n !== this.hashLength - 1) { + // Just store the leaf + this.leafQueue.levels[_level][n] = _leaf + this.leafQueue.indices[_level] ++ + return + } else { + let hashed: BigInt + if (this.hashLength === 2) { + hashed = this.hashFunc([this.leafQueue.levels[_level][0], _leaf]) + this.leafQueue.levels[_level][0] = BigInt(0) + } else { + hashed = this.hashFunc([...this.leafQueue.levels[_level], _leaf]) + for (let i = 0; i < 4; i ++) { + this.leafQueue.levels[_level][i] = BigInt(0) + } + } + + this.leafQueue.indices[_level] = 0 + + // Recurse + this._enqueue(hashed, _level + 1); + } + } + + + /* + * Fill any empty leaves of the last subtree with zeros and store the + * resulting subroot. + */ + public fill() { + // The total capacity of the subtree + const subTreeCapacity = this.hashLength ** this.subDepth + + if (this.numLeaves % subTreeCapacity === 0) { + // If the subtree is completely empty, then the subroot is a + // precalculated zero value + this.subRoots[this.currentSubtreeIndex] = this.zeros[this.subDepth] + + } else { + + this._fill(0) + + // Store the subroot + this.subRoots[this.currentSubtreeIndex] = this.leafQueue.levels[this.subDepth][0] + + // Blank out the subtree data + for (let i = 0; i < this.subDepth + 1; i ++) { + if (this.hashLength === 2) { + this.leafQueue.levels[i][0] = BigInt(0) + } else { + this.leafQueue.levels[i] = [0, 0, 0, 0].map(BigInt) + } + } + } + + // Update the subtree index + this.currentSubtreeIndex ++ + + // Update the number of leaves + this.numLeaves = this.currentSubtreeIndex * subTreeCapacity + + this.subTreesMerged = false + this.smallSRTroot = BigInt(0) + } + + private _fill(_level: number) { + if (_level > this.subDepth) { + return + } + + const n = this.leafQueue.indices[_level] + + if (n !== 0) { + // Fill the subtree level and hash it + let hashed: BigInt + if (this.hashLength === 2) { + hashed = this.hashFunc([ + this.leafQueue.levels[_level][0], + this.zeros[_level], + ]) + } else { + for (let i = n; i < this.hashLength; i ++) { + this.leafQueue.levels[_level][i] = this.zeros[_level] + } + hashed = this.hashFunc(this.leafQueue.levels[_level]) + } + + // Update the subtree from the next level onwards with the new leaf + this._enqueue(hashed, _level + 1) + + // Reset the current level + this.leafQueue.indices[_level] = 0 + } + + // Recurse + this._fill(_level + 1) + } + + public calcSRTdepth() { + // Calculate the SRT depth + let srtDepth = this.subDepth + const subTreeCapacity = this.hashLength ** this.subDepth + while (true) { + if (this.hashLength ** srtDepth >= (this.subRoots.length * subTreeCapacity)) { + break + } + srtDepth ++ + } + + return srtDepth + } + + public insertSubTree(_subRoot: BigInt) { + // If the current subtree is not full, fill it. + const subTreeCapacity = this.hashLength ** this.subDepth + + this.subRoots[this.currentSubtreeIndex] = _subRoot + + // Update the subtree index + this.currentSubtreeIndex ++ + + // Update the number of leaves + this.numLeaves += subTreeCapacity + + // Reset the subroot tree root now that it is obsolete + this.smallSRTroot = BigInt(0) + + this.subTreesMerged = false + } + + /* + * Merge all the subroots into a tree of a specified depth. + * It requires this.mergeSubRoots() to be run first. + */ + public merge(_depth: number) { + assert(this.subTreesMerged === true) + assert(_depth <= this.MAX_DEPTH) + + const srtDepth = this.calcSRTdepth() + + assert(_depth >= srtDepth) + + if (_depth === srtDepth) { + this.mainRoots[_depth] = this.smallSRTroot + } else { + + let root = this.smallSRTroot + + // Calculate the main root + for (let i = srtDepth; i < _depth; i ++) { + const inputs: BigInt[] = [root] + const z = this.zeros[i] + + for (let j = 1; j < this.hashLength; j ++) { + inputs.push(z) + } + + root = this.hashFunc(inputs) + } + + this.mainRoots[_depth] = root + } + } + + /* + * Merge all the subroots into a tree of a specified depth. + * Uses an IncrementalQuinTree instead of the two-step method that + * AccQueue.sol uses. + */ + public mergeDirect(_depth: number) { + // There must be subtrees to merge + assert(this.numLeaves > 0) + + const srtDepth = this.calcSRTdepth() + + // The desired tree must be deep enough + assert(_depth >= srtDepth) + + if (_depth === this.subDepth) { + // If there is only 1 subtree, and the desired depth is the subtree + // depth, the subroot is the result + assert(this.numLeaves === this.hashLength ** this.subDepth) + this.mainRoots[_depth] = this.subRoots[0] + this.subTreesMerged = true + return + } + + // The desired main tree must be deep enough to fit all leaves + assert(BigInt(_depth ** this.hashLength) >= this.numLeaves) + + // Fill any empty leaves in the last subtree with zeros + if (this.numLeaves % (this.hashLength ** this.subDepth) > 0) { + this.fill() + } + + const tree = new IncrementalQuinTree( + _depth - this.subDepth, + this.zeros[this.subDepth], + this.hashLength, + this.hashFunc, + ) + + for (let i = 0; i < this.subRoots.length; i++) { + tree.insert(this.subRoots[i]) + } + + this.mainRoots[_depth] = tree.root + } + + /* + * Merge all subroots into the smallest possible Merkle tree which fits + * them. e.g. if there are 5 subroots and hashLength == 2, the tree depth + * is 3 since 2 ** 3 = 8 which is the next power of 2. + */ + public mergeSubRoots( + _numSrQueueOps = 0, + ) { + // This function can only be called once unless a new subtree is created + assert(this.subTreesMerged === false) + + // There must be subtrees to merge + assert(this.numLeaves > 0) + + // Fill any empty leaves in the last subtree with zeros + if (this.numLeaves % (this.hashLength ** this.subDepth) !== 0) { + this.fill() + } + + // If there is only 1 subtree, use its root + if (this.currentSubtreeIndex === 1) { + this.smallSRTroot = this.getSubRoot(0) + this.subTreesMerged = true + return + } + + // Compute the depth and maximum capacity of the smallMainTreeRoot + const depth = calcDepthFromNumLeaves(this.hashLength, this.currentSubtreeIndex) + + let numQueueOps = 0 + + for (let i = this.nextSRindexToQueue; i < this.currentSubtreeIndex; i ++) { + // Stop if the limit has been reached + if (_numSrQueueOps !== 0 && numQueueOps === _numSrQueueOps) { + return + } + + // Queue the next subroot + const subRoot = this.getSubRoot(this.nextSRindexToQueue) + this.queueSubRoot( + subRoot, + 0, + depth, + ) + + // Increment the next subroot counter + this.nextSRindexToQueue ++ + numQueueOps ++ + } + + // Queue zeros to get the SRT. `m` is the number of leaves in the + // main tree, which already has `this.currentSubtreeIndex` leaves + const m = this.hashLength ** depth + if (this.nextSRindexToQueue === this.currentSubtreeIndex) { + for (let i = this.currentSubtreeIndex; i < m; i ++) { + const z = this.zeros[this.subDepth] + this.queueSubRoot( + z, + 0, + depth, + ) + } + } + + // Store the root + this.smallSRTroot = this.subRootQueue.levels[depth][0] + this.subTreesMerged = true + } + + /* + * Queues the _leaf (a subroot) into queuedSRTlevels + */ + private queueSubRoot( + _leaf: BigInt, + _level: number, + _maxDepth: number, + ) { + if (_level > _maxDepth) { return } + + const n = this.subRootQueue.indices[_level] + + if (n !== this.hashLength - 1) { + // Just store the leaf + this.subRootQueue.levels[_level][n] = _leaf + this.subRootQueue.indices[_level] ++ + } else { + // Hash the elements in this level and queue it in the next level + const inputs: BigInt[] = [] + for (let i = 0; i < this.hashLength - 1; i ++) { + inputs.push(this.subRootQueue.levels[_level][i]) + } + inputs.push(_leaf) + const hashed = this.hashFunc(inputs) + + // Recurse + this.subRootQueue.indices[_level] = 0 + this.queueSubRoot(hashed, _level + 1, _maxDepth) + } + } + + public getRoot(_depth: number) { + return this.mainRoots[_depth] + } + + public hasRoot(_depth: number) { + const root = this.getRoot(_depth) + return !(root == null || root == undefined) + } + + /* + * Deep-copies this object + */ + public copy(): AccQueue { + const newAccQueue = new AccQueue( + this.subDepth, + this.hashLength, + this.zeroValue, + ) + newAccQueue.currentSubtreeIndex = JSON.parse(JSON.stringify(this.currentSubtreeIndex)) + newAccQueue.numLeaves = JSON.parse(JSON.stringify(this.numLeaves)) + newAccQueue.leafQueue.levels = unstringifyBigInts(JSON.parse( + JSON.stringify(stringifyBigInts(this.leafQueue.levels)) + )) + newAccQueue.leafQueue.indices = JSON.parse(JSON.stringify(this.leafQueue.indices)) + newAccQueue.subRoots = deepCopyBigIntArray(this.subRoots) + newAccQueue.mainRoots = deepCopyBigIntArray(this.mainRoots) + newAccQueue.zeros = deepCopyBigIntArray(this.zeros) + newAccQueue.subTreesMerged = this.subTreesMerged ? true : false + newAccQueue.nextSRindexToQueue = Number(this.nextSRindexToQueue.toString()) + newAccQueue.smallSRTroot = BigInt(this.smallSRTroot.toString()) + newAccQueue.subRootQueue.indices = JSON.parse(JSON.stringify(this.subRootQueue.indices)) + newAccQueue.subRootQueue.levels = unstringifyBigInts(JSON.parse( + JSON.stringify(stringifyBigInts(this.subRootQueue.levels)) + )) + + return newAccQueue + } + + public hash(_leaves: BigInt[]): BigInt { + assert(_leaves.length === this.hashLength) + return this.hashFunc(_leaves) + } +} + +export { + AccQueue, +} \ No newline at end of file diff --git a/packages/app/src/jubjublib/crypto/README.md b/packages/app/src/jubjublib/crypto/README.md new file mode 100644 index 00000000..f93bd193 --- /dev/null +++ b/packages/app/src/jubjublib/crypto/README.md @@ -0,0 +1,132 @@ +# maci-crypto + +[![NPM Package][crypto-npm-badge]][crypto-npm-link] +[![Actions Status][crypto-actions-badge]][crypto-actions-link] + +This module implements abstractions over cryptographic functions which MACI +employs. + +## Constants + +**`NOTHING_UP_MY_SLEEVE`**: The Keccak256 hash of the string "Maci", modulo +the BN254 group order. + +## Types and interfaces + +**`PrivKey`**: A private key (a random value modulo the BN254 group order). + +**`PubKey`**: An EdDSA public key. + +**`Keypair`**: A private key and the public key it generates. + +**`EcdhSharedKey`**: An Elliptic-curve Diffie–Hellman shared key. + +**`Plaintext`**: An array of unencrypted values. + +**`Ciphertext`**: Encrypted `Plaintext`. This data structure abstracts over the +initialisation vector and encrypted data. + +**`Signature`**: A signature. This data structure abstracts over the`R8` and +`S` values. + +## Classes + +**`G1Point`**: A point in the group `G_1` as defined in +[EIP-197](https://eips.ethereum.org/EIPS/eip-197). + +**`G2Point`**: A point in the group `G_2` as defined in +[EIP-197](https://eips.ethereum.org/EIPS/eip-197). + +## Functions + +**`genRandomBabyJubValue`**: Returns a cryptographically secure random value +modulo the BN254 group order, and prevents modulo bias. Relies on Node.js's +`crypto.randomBytes(32)` for entropy. + +**`genRandomSalt: BigInt`** + +Returns a secure random salt value. Wraps `genRandomBabyJubValue()`. + +**`genPrivKey: PrivKey`** + +Returns a secure random private key. Wraps `genRandomBabyJubValue()`. + +**`genPubKey = (privKey: PrivKey): PubKey `** + +Generates the public key associated with the given private key. + +**`genKeypair`**: Generates a random private key and its associated public key. + +**`formatPrivKeyForBabyJub = (privKey: PrivKey)`**: Formats a random private +key to be compatible with the BabyJub curve. This is the format which should be +passed into the PubKey and other circuits. + +**`packPubKey = (pubKey: PubKey): Buffer`**: Losslessly reduces the size of the +representation of a public key. + +**`unpackPubKey = (packed: Buffer): PubKey`**: Restores the original PubKey +from its packed representation. + +**`genEcdhSharedKey = (privKey: PrivKey, pubKey: PubKey): EcdhSharedKey`** + +Generates an ECDH shared key. + +**`encrypt = (plaintext: Plaintext, sharedKey: EcdhSharedKey): Ciphertext`** + +Encrypts the plaintext with the given key and returns the +associated ciphertext. + +**`decrypt = (ciphertext: Ciphertext, sharedKey: EcdhSharedKey): Plaintext`** + +Decrypts the ciphertext using the given key. + +**`sign = (privKey: PrivKey, message: Plaintext): Signature`** + +Produces a signature of the given message using the private key. + +**`verifySignature = (message: Plaintext, signature: Signature, publicKey: PubKey): boolean`** + +Checks whether the given signature is valid. + +### Hash functions + +**`sha256Hash = (input: BigInt[]): BigInt`**: a wrapper function over +`ethers.utils.soliditySha256`, where the output is modulo the BN254 group +order. + +**`hashOne = (elements: Plaintext): BigInt`**: the Poseidon hash function for +one input. Equivalent to `hash2([input, 0])`. + +**`hash2 = (elements: Plaintext): BigInt`**: the Poseidon hash function for 2 +inputs. + +**`hashLeftRight = (left: BigInt, right: BigInt): BigInt`**: equivalent to +`hash2([left, right])`. + +**`hash3 = (elements: Plaintext): BigInt`**: the Poseidon hash function for 3 +inputs. + +**`hash4 = (elements: Plaintext): BigInt`**: the Poseidon hash function for 4 +inputs. + +**`hash5 = (elements: Plaintext): BigInt`**: the Poseidon hash function for 5 +inputs. + +**`hash12 = (elements: Plaintext): BigInt`**: the Poseidon hash function for 12 +inputs. Combines other Poseidon hash functions (accepting 5 and 6 inputs) to do +so. Given the following inputs `[i_0, i_1, ... i_11]`, this function hashes +them in the following manner: + +``` +hash4( + hash5([i_0, i_1, i_2, i_3, i_4]), + hash5([i_5, i_6, i_7, i_8, i_9]), + i_10, + i_11, +) +``` + +[crypto-npm-badge]: https://img.shields.io/npm/v/maci-crypto.svg +[crypto-npm-link]: https://www.npmjs.com/package/maci-crypto +[crypto-actions-badge]: https://github.com/privacy-scaling-explorations/maci/actions/workflows/crypto-build.yml/badge.svg +[crypto-actions-link]: https://github.com/privacy-scaling-explorations/maci/actions?query=workflow%3Acrypto diff --git a/packages/app/src/jubjublib/crypto/index.ts b/packages/app/src/jubjublib/crypto/index.ts new file mode 100644 index 00000000..d6a4bd27 --- /dev/null +++ b/packages/app/src/jubjublib/crypto/index.ts @@ -0,0 +1,381 @@ +import crypto from "crypto"; +import { utils } from "ethers"; +import {utils as ffutils, Scalar} from "ffjavascript"; +import createBlakeHash from "blake-hash"; +import { babyJub, poseidon, eddsa } from "circomlib"; +import { OptimisedMT as IncrementalQuinTree } from "../optimisedmt"; + +import { AccQueue } from "./AccQueue"; +import { poseidonEncrypt, poseidonDecrypt } from "../poseidonencryption"; + + +const assert = (condition: boolean) => { + if (!condition) { + console.log('Assertion failed') + } +} +const stringifyBigInts: (obj: object) => any = ffutils.stringifyBigInts; +const unstringifyBigInts: (obj: object) => any = ffutils.unstringifyBigInts; + +type SnarkBigInt = BigInt; +type IPrivKey = BigInt; +type IPubKey = BigInt[]; +type EcdhSharedKey = BigInt[]; +type Plaintext = BigInt[]; +type Ciphertext = BigInt[]; + +class G1Point { + public x: BigInt; + public y: BigInt; + + constructor(_x: BigInt, _y: BigInt) { + // TODO: add range checks + this.x = _x; + this.y = _y; + } + + public equals(pt: G1Point): boolean { + return this.x === pt.x && this.y === pt.y; + } + + public asContractParam() { + return { + x: this.x.toString(), + y: this.y.toString(), + }; + } +} + +class G2Point { + public x: BigInt[]; + public y: BigInt[]; + + constructor(_x: BigInt[], _y: BigInt[]) { + // TODO: add range checks + this.x = _x; + this.y = _y; + } + + public equals(pt: G2Point): boolean { + return this.x[0] === pt.x[0] && this.x[1] === pt.x[1] && this.y[0] === pt.y[0] && this.y[1] === pt.y[1]; + } + + public asContractParam() { + return { + x: this.x.map((n) => n.toString()), + y: this.y.map((n) => n.toString()), + }; + } +} + +/* + * A private key and a public key + */ +interface IKeypair { + privKey: IPrivKey; + pubKey: IPubKey; +} + +// An EdDSA signature. +// R8 is a Baby Jubjub elliptic curve point and S is an element of the finite +// field of order `l` where `l` is the large prime number dividing the order of +// Baby Jubjub: see +// https://iden3-docs.readthedocs.io/en/latest/_downloads/a04267077fb3fdbf2b608e014706e004/Ed-DSA.pdf +interface Signature { + R8: BigInt[]; + S: BigInt; +} + +// The BN254 group order p +const SNARK_FIELD_SIZE = BigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617"); + +// A nothing-up-my-sleeve zero value +// Should be equal to 8370432830353022751713833565135785980866757267633941821328460903436894336785 +const NOTHING_UP_MY_SLEEVE = BigInt(utils.soliditySha256(["bytes"], [utils.toUtf8Bytes("Maci")])) % SNARK_FIELD_SIZE; + +assert(NOTHING_UP_MY_SLEEVE === BigInt("8370432830353022751713833565135785980866757267633941821328460903436894336785")); +/* + * Convert a BigInt to a Buffer + */ +const bigInt2Buffer = (i: BigInt): Buffer => { + return Buffer.from(i.toString(16), "hex"); +}; + +/* + * Hash an array of uint256 values the same way that the EVM does. + */ +const sha256Hash = (input: BigInt[]) => { + const types: string[] = []; + for (let i = 0; i < input.length; i++) { + types.push("uint256"); + } + return ( + BigInt( + utils.soliditySha256( + types, + input.map((x) => x.toString()) + ) + ) % SNARK_FIELD_SIZE + ); +}; + +// Hash up to 2 elements +const poseidonT3 = (inputs: BigInt[]) => { + assert(inputs.length === 2); + return poseidon(inputs); +}; + +// Hash up to 3 elements +const poseidonT4 = (inputs: BigInt[]) => { + assert(inputs.length === 3); + return poseidon(inputs); +}; + +// Hash up to 4 elements +const poseidonT5 = (inputs: BigInt[]) => { + assert(inputs.length === 4); + return poseidon(inputs); +}; + +// Hash up to 5 elements +const poseidonT6 = (inputs: BigInt[]) => { + assert(inputs.length === 5); + return poseidon(inputs); +}; + +const hashN = (numElements: number, elements: Plaintext): BigInt => { + const elementLength = elements.length; + if (elements.length > numElements) { + throw new TypeError(`the length of the elements array should be at most ${numElements}; got ${elements.length}`); + } + const elementsPadded = elements.slice(); + if (elementLength < numElements) { + for (let i = elementLength; i < numElements; i++) { + elementsPadded.push(BigInt(0)); + } + } + + const funcs = { + 2: poseidonT3, + 3: poseidonT4, + 4: poseidonT5, + 5: poseidonT6, + }; + + return funcs[numElements](elements); +}; + +const hash2 = (elements: Plaintext): BigInt => hashN(2, elements); +const hash3 = (elements: Plaintext): BigInt => hashN(3, elements); +const hash4 = (elements: Plaintext): BigInt => hashN(4, elements); +const hash5 = (elements: Plaintext): BigInt => hashN(5, elements); + +/* + * A convenience function for to use Poseidon to hash a Plaintext with + * no more than 13 elements + */ +const hash13 = (elements: Plaintext): BigInt => { + const max = 13; + const elementLength = elements.length; + if (elementLength > max) { + throw new TypeError(`the length of the elements array should be at most 10; got ${elements.length}`); + } + const elementsPadded = elements.slice(); + if (elementLength < max) { + for (let i = elementLength; i < max; i++) { + elementsPadded.push(BigInt(0)); + } + } + return poseidonT6([elementsPadded[0], poseidonT6(elementsPadded.slice(1, 6)), poseidonT6(elementsPadded.slice(6, 11)), elementsPadded[11], elementsPadded[12]]); +}; + +/* + * Hash a single BigInt with the Poseidon hash function + */ +const hashOne = (preImage: BigInt): BigInt => { + return poseidonT3([preImage, BigInt(0)]); +}; + +/* + * Hash two BigInts with the Poseidon hash function + */ +const hashLeftRight = (left: BigInt, right: BigInt): BigInt => { + return poseidonT3([left, right]); +}; + +/* + * Returns a BabyJub-compatible random value. We create it by first generating + * a random value (initially 256 bits large) modulo the snark field size as + * described in EIP197. This results in a key size of roughly 253 bits and no + * more than 254 bits. To prevent modulo bias, we then use this efficient + * algorithm: + * http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/lib/libc/crypt/arc4random_uniform.c + * @return A BabyJub-compatible random value. + */ +const genRandomBabyJubValue = (): BigInt => { + // Prevent modulo bias + //const lim = BigInt('0x10000000000000000000000000000000000000000000000000000000000000000') + //const min = (lim - SNARK_FIELD_SIZE) % SNARK_FIELD_SIZE + const min = BigInt("6350874878119819312338956282401532410528162663560392320966563075034087161851"); + + let rand; + while (true) { + rand = BigInt("0x" + crypto.randomBytes(32).toString("hex")); + + if (rand >= min) { + break; + } + } + + const privKey: IPrivKey = rand % SNARK_FIELD_SIZE; + assert(privKey < SNARK_FIELD_SIZE); + + return privKey; +}; + +/* + * @return A BabyJub-compatible private key. + */ +const genPrivKey = (): IPrivKey => { + return genRandomBabyJubValue(); +}; + +/* + * @return A BabyJub-compatible salt. + */ +const genRandomSalt = (): IPrivKey => { + return genRandomBabyJubValue(); +}; + +/* + * An internal function which formats a random private key to be compatible + * with the BabyJub curve. This is the format which should be passed into the + * PubKey and other circuits. + */ +const formatPrivKeyForBabyJub = (privKey: IPrivKey) => { + const sBuff = eddsa.pruneBuffer(createBlakeHash("blake512").update(bigInt2Buffer(privKey)).digest().slice(0, 32)); + const s = ffutils.leBuff2int(sBuff); + return Scalar.shr(s, 3); +}; + +/* + * Losslessly reduces the size of the representation of a public key + * @param pubKey The public key to pack + * @return A packed public key + */ +const packPubKey = (pubKey: IPubKey): Buffer => { + return babyJub.packPoint(pubKey); +}; + +/* + * Restores the original PubKey from its packed representation + * @param packed The value to unpack + * @return The unpacked public key + */ +const unpackPubKey = (packed: Buffer): IPubKey => { + return babyJub.unpackPoint(packed); +}; + +/* + * @param privKey A private key generated using genPrivKey() + * @return A public key associated with the private key + */ +const genPubKey = (privKey: IPrivKey): IPubKey => { + // Check whether privKey is a field element + privKey = BigInt(privKey.toString()); + assert(privKey < SNARK_FIELD_SIZE); + return eddsa.prv2pub(bigInt2Buffer(privKey)); +}; + +const genKeypair = (): IKeypair => { + const privKey = genPrivKey(); + const pubKey = genPubKey(privKey); + + const Keypair: IKeypair = { privKey, pubKey }; + + return Keypair; +}; + +/* + * Generates an Elliptic-Curve Diffie–Hellman (ECDH) shared key given a private + * key and a public key. + * @return The ECDH shared key. + */ +const genEcdhSharedKey = (privKey: IPrivKey, pubKey: IPubKey): EcdhSharedKey => { + return babyJub.mulPointEscalar(pubKey, formatPrivKeyForBabyJub(privKey)); +}; + +/* + * Encrypts a plaintext using a given key. + * @return The ciphertext. + */ +const encrypt = (plaintext: Plaintext, sharedKey: EcdhSharedKey, nonce = BigInt(0)): Ciphertext => { + const ciphertext = poseidonEncrypt(plaintext, sharedKey, nonce); + return ciphertext; +}; + +/* + * Decrypts a ciphertext using a given key. + * @return The plaintext. + */ +const decrypt = (ciphertext: Ciphertext, sharedKey: EcdhSharedKey, nonce: BigInt, length: number): Plaintext => { + const plaintext = poseidonDecrypt(ciphertext, sharedKey, nonce, length); + return plaintext; +}; + +/* + * Generates a signature given a private key and plaintext. + * @return The signature. + */ +const sign = (privKey: IPrivKey, msg: BigInt): Signature => { + return eddsa.signPoseidon(bigInt2Buffer(privKey), msg); +}; + +/* + * Checks whether the signature of the given plaintext was created using the + * private key associated with the given public key. + * @return True if the signature is valid, and false otherwise. + */ +const verifySignature = (msg: BigInt, signature: Signature, pubKey: IPubKey): boolean => { + return eddsa.verifyPoseidon(msg, signature, pubKey); +}; + +export { + genRandomSalt, + genPrivKey, + genPubKey, + genKeypair, + genEcdhSharedKey, + encrypt, + decrypt, + sign, + sha256Hash, + hashOne, + hash2, + hash3, + hash4, + hash5, + hash13, + hashLeftRight, + verifySignature, + type Signature, + type IPrivKey, + type IPubKey, + G1Point, + G2Point, + type IKeypair, + type EcdhSharedKey, + type Ciphertext, + type Plaintext, + type SnarkBigInt, + stringifyBigInts, + unstringifyBigInts, + formatPrivKeyForBabyJub, + IncrementalQuinTree, + AccQueue, + NOTHING_UP_MY_SLEEVE, + SNARK_FIELD_SIZE, + bigInt2Buffer, + packPubKey, + unpackPubKey, +}; diff --git a/packages/app/src/jubjublib/domainobjs/README.md b/packages/app/src/jubjublib/domainobjs/README.md new file mode 100644 index 00000000..38abb88e --- /dev/null +++ b/packages/app/src/jubjublib/domainobjs/README.md @@ -0,0 +1,68 @@ +# maci-domainobjs + +[![NPM Package][domainobjs-npm-badge]][domainobjs-npm-link] +[![Actions Status][domainobjs-actions-badge]][domainobjs-actions-link] + +This module implements domain objects. A domain object is: + +> a logical container of purely domain information, usually represents a +> logical entity in the problem domain space + +https://wiki.c2.com/?DomainObject + +In effect, domain objects are representations of objects shared between other +modules in this codebase. They also encapsulate helper functions which make it +easy to use them with said modules. + +## `PrivKey` + +A private key. Provides helper functions to do with passing it into a circuit +in the right format, serialisation and deserialisation, and deep copying. + +## `PubKey` + +A public key. Provides helper functions to do with passing it into a contract +function or circuit in the right format, hashing, serialisation and +deserialisation, and deep copying. + +## `Keypair` + +Encapsulates a `PrivKey` and `PubKey`. Also provides `genEcdhSharedKey` which +generates an ECDH shared key from a public key and a private key. + +## `Command` + +The `Command` domain object represents a request by a user to cast a vote +and/or change one's public key. + +## `Message` + +The `Message` domain object is an encrypted `Command` and signature. That is, a +`Message` is a `Ciphertext` (defined in [`maci-crypto`](../crypto/README.md)) +which is the encrypted `Command` and its `Signature` (also defined in +`maci-crypto`). In other terms: + +``` +Message = Encrypt([Command, Signature], Key) +``` + +## `Ballot` +Represents a User's votes in a Poll, as well as their next valid nonce. + +## `StateLeaf` + +Represents a leaf in the state tree, which maps public keys to voice credit +balances, as well as the timestamp at which it was inserted. + +## `VerifyingKey` + +Encapsulates a Groth16 zk-SNARK verifying key. + +## `Proof` + +Encapsulates a Groth16 zk-SNARK proof. + +[domainobjs-npm-badge]: https://img.shields.io/npm/v/maci-domainobjs.svg +[domainobjs-npm-link]: https://www.npmjs.com/package/maci-domainobjs +[domainobjs-actions-badge]: https://github.com/privacy-scaling-explorations/maci/actions/workflows/domainobjs-build.yml/badge.svg +[domainobjs-actions-link]: https://github.com/privacy-scaling-explorations/maci/actions?query=workflow%3Adomainobjs diff --git a/packages/app/src/jubjublib/domainobjs/domainobjs.ts b/packages/app/src/jubjublib/domainobjs/domainobjs.ts new file mode 100644 index 00000000..acfc67cf --- /dev/null +++ b/packages/app/src/jubjublib/domainobjs/domainobjs.ts @@ -0,0 +1,931 @@ +import base64url from "base64url" +import { + Ciphertext, + EcdhSharedKey, + Signature, + IPubKey as RawPubKey, + IPrivKey as RawPrivKey, + G1Point, + G2Point, + encrypt, + decrypt, + sign, + hashLeftRight, + hash13, + hash4, + hash5, + verifySignature, + genRandomSalt, + genKeypair, + genPubKey, + formatPrivKeyForBabyJub, + genEcdhSharedKey, + packPubKey, + unpackPubKey, + IncrementalQuinTree, + SNARK_FIELD_SIZE, +} from '../crypto' + +const assert = (condition: boolean) => { + if (!condition) { + console.log('Assertion failed'); + } +} +const SERIALIZED_PRIV_KEY_PREFIX = 'macisk.' + +class VerifyingKey { + public alpha1: G1Point + public beta2: G2Point + public gamma2: G2Point + public delta2: G2Point + public ic: G1Point[] + + constructor ( + _alpha1: G1Point, + _beta2: G2Point, + _gamma2: G2Point, + _delta2: G2Point, + _ic: G1Point[], + ) { + this.alpha1 = _alpha1 + this.beta2 = _beta2 + this.gamma2 = _gamma2 + this.delta2 = _delta2 + this.ic = _ic + } + + public asContractParam() { + return { + alpha1: this.alpha1.asContractParam(), + beta2: this.beta2.asContractParam(), + gamma2: this.gamma2.asContractParam(), + delta2: this.delta2.asContractParam(), + ic: this.ic.map((x) => x.asContractParam()), + } + } + + public static fromContract(data: any): VerifyingKey { + const convertG2 = (point: any): G2Point => { + return new G2Point( + [ + BigInt(point.x[0]), + BigInt(point.x[1]), + ], + [ + BigInt(point.y[0]), + BigInt(point.y[1]), + ], + ) + } + + return new VerifyingKey( + new G1Point( + BigInt(data.alpha1.x), + BigInt(data.alpha1.y), + ), + convertG2(data.beta2), + convertG2(data.gamma2), + convertG2(data.delta2), + data.ic.map( + (c: any) => new G1Point(BigInt(c.x), BigInt(c.y)) + ), + ) + } + + public equals(vk: VerifyingKey): boolean { + let icEqual = this.ic.length === vk.ic.length + + // Immediately return false if the length doesn't match + if (!icEqual) { + return false + } + + // Each element in ic must match + for (let i = 0; i < this.ic.length; i ++) { + icEqual = icEqual && this.ic[i].equals(vk.ic[i]) + } + + return this.alpha1.equals(vk.alpha1) && + this.beta2.equals(vk.beta2) && + this.gamma2.equals(vk.gamma2) && + this.delta2.equals(vk.delta2) && + icEqual + } + + public copy(): VerifyingKey { + const copyG2 = (point: any): G2Point => { + return new G2Point( + [ + BigInt(point.x[0].toString()), + BigInt(point.x[1].toString()), + ], + [ + BigInt(point.y[0].toString()), + BigInt(point.y[1].toString()), + ], + ) + } + + return new VerifyingKey( + new G1Point( + BigInt(this.alpha1.x.toString()), + BigInt(this.alpha1.y.toString()), + ), + copyG2(this.beta2), + copyG2(this.gamma2), + copyG2(this.delta2), + this.ic.map( + (c: any) => new G1Point(BigInt(c.x.toString()), BigInt(c.y.toString())) + ), + ) + } + + public static fromJSON = (j: string): VerifyingKey => { + const data = JSON.parse(j) + return VerifyingKey.fromObj(data) + } + + public static fromObj = (data: any): VerifyingKey => { + const alpha1 = new G1Point( + BigInt(data.vk_alpha_1[0]), + BigInt(data.vk_alpha_1[1]), + ) + const beta2 = new G2Point( + [ + BigInt(data.vk_beta_2[0][1]), + BigInt(data.vk_beta_2[0][0]), + ], + [ + BigInt(data.vk_beta_2[1][1]), + BigInt(data.vk_beta_2[1][0]), + ], + ) + const gamma2 = new G2Point( + [ + BigInt(data.vk_gamma_2[0][1]), + BigInt(data.vk_gamma_2[0][0]), + ], + [ + BigInt(data.vk_gamma_2[1][1]), + BigInt(data.vk_gamma_2[1][0]), + ], + ) + const delta2 = new G2Point( + [ + BigInt(data.vk_delta_2[0][1]), + BigInt(data.vk_delta_2[0][0]), + ], + [ + BigInt(data.vk_delta_2[1][1]), + BigInt(data.vk_delta_2[1][0]), + ], + ) + const ic = data.IC.map((ic) => new G1Point( + BigInt(ic[0]), + BigInt(ic[1]), + )) + + return new VerifyingKey(alpha1, beta2, gamma2, delta2, ic) + } +} + +interface Proof { + a: G1Point; + b: G2Point; + c: G1Point; +} + +class PrivKey { + public rawPrivKey: RawPrivKey + + constructor (rawPrivKey: RawPrivKey) { + this.rawPrivKey = rawPrivKey + } + + public copy = (): PrivKey => { + return new PrivKey(BigInt(this.rawPrivKey.toString())) + } + + public asCircuitInputs = () => { + return formatPrivKeyForBabyJub(this.rawPrivKey).toString() + } + + public serialize = (): string => { + return SERIALIZED_PRIV_KEY_PREFIX + this.rawPrivKey.toString(16) + } + + public static unserialize = (s: string): PrivKey => { + const x = s.slice(SERIALIZED_PRIV_KEY_PREFIX.length) + return new PrivKey(BigInt('0x' + x)) + } + + public static isValidSerializedPrivKey = (s: string): boolean => { + const correctPrefix = s.startsWith(SERIALIZED_PRIV_KEY_PREFIX) + const x = s.slice(SERIALIZED_PRIV_KEY_PREFIX.length) + + let validValue = false + try { + const value = BigInt('0x' + x) + validValue = value < SNARK_FIELD_SIZE + } catch { + // comment to make linter happy + } + + return correctPrefix && validValue + } +} + +const SERIALIZED_PUB_KEY_PREFIX = 'macipk.' + +class PubKey { + public rawPubKey: RawPubKey + + constructor (rawPubKey: RawPubKey) { + assert(rawPubKey.length === 2) + assert(rawPubKey[0] < SNARK_FIELD_SIZE) + assert(rawPubKey[1] < SNARK_FIELD_SIZE) + this.rawPubKey = rawPubKey + } + + public copy = (): PubKey => { + + return new PubKey([ + BigInt(this.rawPubKey[0].toString()), + BigInt(this.rawPubKey[1].toString()), + ]) + } + + public asContractParam = () => { + return { + x: this.rawPubKey[0].toString(), + y: this.rawPubKey[1].toString(), + } + } + + public asCircuitInputs = () => { + return this.rawPubKey.map((x) => x.toString()) + } + + public asArray = (): BigInt[] => { + return [ + this.rawPubKey[0], + this.rawPubKey[1], + ] + } + + public serialize = (): string => { + // Blank leaves have pubkey [0, 0], which packPubKey does not support + if ( + BigInt(`${this.rawPubKey[0]}`) === BigInt(0) && + BigInt(`${this.rawPubKey[1]}`) === BigInt(0) + ) { + return SERIALIZED_PUB_KEY_PREFIX + 'z' + } + const packed = packPubKey(this.rawPubKey).toString('hex') + return SERIALIZED_PUB_KEY_PREFIX + packed.toString() + } + + public hash = (): BigInt => { + return hashLeftRight(this.rawPubKey[0], this.rawPubKey[1]) + } + + public equals = (p: PubKey): boolean => { + return this.rawPubKey[0] === p.rawPubKey[0] && + this.rawPubKey[1] === p.rawPubKey[1] + } + + public static unserialize = (s: string): PubKey => { + // Blank leaves have pubkey [0, 0], which packPubKey does not support + if (s === SERIALIZED_PUB_KEY_PREFIX + 'z') { + return new PubKey([BigInt(0), BigInt(0)]) + } + + const len = SERIALIZED_PUB_KEY_PREFIX.length + const packed = Buffer.from(s.slice(len), 'hex') + return new PubKey(unpackPubKey(packed)) + } + + public static isValidSerializedPubKey = (s: string): boolean => { + const correctPrefix = s.startsWith(SERIALIZED_PUB_KEY_PREFIX) + + let validValue = false + try { + PubKey.unserialize(s) + validValue = true + } catch { + // comment to make linter happy + } + + return correctPrefix && validValue + } +} + +class Keypair { + public privKey: PrivKey + public pubKey: PubKey + + constructor ( + privKey?: PrivKey, + ) { + if (privKey) { + this.privKey = privKey + this.pubKey = new PubKey(genPubKey(privKey.rawPrivKey)) + } else { + const rawKeyPair = genKeypair() + this.privKey = new PrivKey(rawKeyPair.privKey) + this.pubKey = new PubKey(rawKeyPair.pubKey) + } + } + + public copy = (): Keypair => { + return new Keypair(this.privKey.copy()) + } + + public static genEcdhSharedKey( + privKey: PrivKey, + pubKey: PubKey, + ) { + return genEcdhSharedKey(privKey.rawPrivKey, pubKey.rawPubKey) + } + + public equals( + keypair: Keypair, + ): boolean { + + const equalPrivKey = this.privKey.rawPrivKey === keypair.privKey.rawPrivKey + const equalPubKey = + this.pubKey.rawPubKey[0] === keypair.pubKey.rawPubKey[0] && + this.pubKey.rawPubKey[1] === keypair.pubKey.rawPubKey[1] + + // If this assertion fails, something is very wrong and this function + // should not return anything + // XOR is equivalent to: (x && !y) || (!x && y ) + const x = (equalPrivKey && equalPubKey) + const y = (!equalPrivKey && !equalPubKey) + + assert((x && !y) || (!x && y)) + + return equalPrivKey + } +} + + +interface IStateLeaf { + pubKey: PubKey; + voiceCreditBalance: BigInt; +} + +interface VoteOptionTreeLeaf { + votes: BigInt; +} + +/* + * An encrypted command and signature. + */ +class Message { + public msgType: BigInt + public data: BigInt[] + public static DATA_LENGTH = 10 + + constructor ( + msgType: BigInt, + data: BigInt[], + ) { + assert(data.length === Message.DATA_LENGTH) + this.msgType = msgType + this.data = data + } + + private asArray = (): BigInt[] => { + return [this.msgType].concat(this.data) + } + + public asContractParam = () => { + return { + msgType: this.msgType, + data: this.data.map((x:BigInt) => x.toString()), + } + } + + public asCircuitInputs = (): BigInt[] => { + + return this.asArray() + } + + public hash = ( + _encPubKey: PubKey, + ): BigInt => { + return hash13([ + ...[this.msgType], + ...this.data, + ..._encPubKey.rawPubKey, + ]) + } + + public copy = (): Message => { + + return new Message( + BigInt(this.msgType.toString()), + this.data.map((x: BigInt) => BigInt(x.toString())), + ) + } + + public equals = (m: Message): boolean => { + if (this.data.length !== m.data.length) { + return false + } + if (this.msgType !== m.msgType) { + return false + } + + for (let i = 0; i < this.data.length; i ++) { + if (this.data[i] !== m.data[i]) { + return false + } + } + + return true + } +} + +/* + * A Ballot represents a User's votes in a Poll, as well as their next valid + * nonce. + * @param _voiceCreditBalance The user's voice credit balance + * @param _nonce The number of valid commands which the user has already + * published + */ +class Ballot { + public votes: BigInt[] = [] + public nonce: BigInt = BigInt(0) + public voteOptionTreeDepth: number + + constructor( + _numVoteOptions: number, + _voteOptionTreeDepth: number, + ) { + this.voteOptionTreeDepth = _voteOptionTreeDepth + assert(5 ** _voteOptionTreeDepth >= _numVoteOptions) + assert(_numVoteOptions >= 0) + for (let i = 0; i < _numVoteOptions; i ++) { + this.votes.push(BigInt(0)) + } + } + + public hash = (): BigInt => { + const vals = this.asArray() + return hashLeftRight(vals[0], vals[1]) + } + + public asCircuitInputs = (): BigInt[] => { + return this.asArray() + } + + public asArray = (): BigInt[] => { + let lastIndexToInsert = this.votes.length - 1 + while (lastIndexToInsert > 0) { + if (this.votes[lastIndexToInsert] !== BigInt(0)) { + break + } + lastIndexToInsert -- + } + const voTree = new IncrementalQuinTree( + this.voteOptionTreeDepth, + BigInt(0), + 5, + hash5, + ) + for (let i = 0; i <= lastIndexToInsert; i ++) { + voTree.insert(this.votes[i]) + } + + return [this.nonce, voTree.root] + } + + public copy = (): Ballot => { + const b = new Ballot(this.votes.length, this.voteOptionTreeDepth) + + b.votes = this.votes.map((x) => BigInt(x.toString())) + b.nonce = BigInt(this.nonce.toString()) + + return b + } + + public equals(b: Ballot): boolean { + for (let i = 0; i < this.votes.length; i ++) { + if (b.votes[i] !== this.votes[i]) { + return false + } + } + return b.nonce === this.nonce && + this.votes.length === b.votes.length + } + + + public static genRandomBallot( + _numVoteOptions: number, + _voteOptionTreeDepth: number, + ) { + const ballot = new Ballot( + _numVoteOptions, + _voteOptionTreeDepth, + ) + ballot.nonce = genRandomSalt() + return ballot + } + + public static genBlankBallot( + _numVoteOptions: number, + _voteOptionTreeDepth: number, + ) { + const ballot = new Ballot( + _numVoteOptions, + _voteOptionTreeDepth, + ) + return ballot + } +} + +/* + * A leaf in the state tree, which maps public keys to voice credit balances + */ +class StateLeaf implements IStateLeaf { + public pubKey: PubKey + public voiceCreditBalance: BigInt + public timestamp: BigInt + + constructor ( + pubKey: PubKey, + voiceCreditBalance: BigInt, + timestamp: BigInt, + ) { + this.pubKey = pubKey + this.voiceCreditBalance = voiceCreditBalance + this.timestamp = timestamp + } + + /* + * Deep-copies the object + */ + public copy(): StateLeaf { + return new StateLeaf( + this.pubKey.copy(), + BigInt(this.voiceCreditBalance.toString()), + BigInt(this.timestamp.toString()), + ) + } + + public static genBlankLeaf(): StateLeaf { + // The public key for a blank state leaf is the first Pedersen base + // point from iden3's circomlib implementation of the Pedersen hash. + // Since it is generated using a hash-to-curve function, we are + // confident that no-one knows the private key associated with this + // public key. See: + // https://github.com/iden3/circomlib/blob/d5ed1c3ce4ca137a6b3ca48bec4ac12c1b38957a/src/pedersen_printbases.js + // Its hash should equal + // 6769006970205099520508948723718471724660867171122235270773600567925038008762. + return new StateLeaf( + new PubKey([ + BigInt('10457101036533406547632367118273992217979173478358440826365724437999023779287'), + BigInt('19824078218392094440610104313265183977899662750282163392862422243483260492317'), + ]), + BigInt(0), + BigInt(0), + ) + } + + public static genRandomLeaf() { + const keypair = new Keypair() + return new StateLeaf( + keypair.pubKey, + genRandomSalt(), + BigInt(0), + ) + } + + private asArray = (): BigInt[] => { + + return [ + ...this.pubKey.asArray(), + this.voiceCreditBalance, + this.timestamp, + ] + } + + public asCircuitInputs = (): BigInt[] => { + + return this.asArray() + } + + public hash = (): BigInt => { + + return hash4(this.asArray()) + } + + public asContractParam() { + return { + pubKey: this.pubKey.asContractParam(), + voiceCreditBalance: this.voiceCreditBalance.toString(), + timestamp: this.timestamp.toString(), + } + } + + public equals(s: StateLeaf): boolean { + return this.pubKey.equals(s.pubKey) && + this.voiceCreditBalance === s.voiceCreditBalance && + this.timestamp === s.timestamp + } + + public serialize = (): string => { + const j = [ + this.pubKey.serialize(), + this.voiceCreditBalance.toString(16), + this.timestamp.toString(16), + ] + + return base64url( + Buffer.from(JSON.stringify(j, null, 0), 'utf8') + ) + } + + static unserialize = (serialized: string): StateLeaf => { + const j = JSON.parse(base64url.decode(serialized)) + + return new StateLeaf( + PubKey.unserialize(j[0]), + BigInt('0x' + j[1]), + BigInt('0x' + j[2]), + ) + } +} + +class Command { + constructor() { + } + public copy = (): Command => { + throw new Error("Abstract method!") + } + public equals = (Command): boolean => { + throw new Error("Abstract method!") + } +} + + + +class TCommand extends Command { + public cmdType: BigInt + public stateIndex: BigInt + public amount: BigInt + public pollId: BigInt + + constructor(stateIndex: BigInt, amount: BigInt) { + super() + this.cmdType = BigInt(2) + this.stateIndex = stateIndex + this.amount = amount + } + + public copy = (): TCommand => { + return new TCommand( + BigInt(this.stateIndex.toString()), + BigInt(this.amount.toString()), + ) + } + + public equals = (command: TCommand): boolean => { + return this.stateIndex === command.stateIndex && + this.amount === command.amount + } +} + +/* + * Unencrypted data whose fields include the user's public key, vote etc. + */ +class PCommand extends Command { + public cmdType: BigInt + public stateIndex: BigInt + public newPubKey: PubKey + public voteOptionIndex: BigInt + public newVoteWeight: BigInt + public nonce: BigInt + public pollId: BigInt + public salt: BigInt + + constructor ( + stateIndex: BigInt, + newPubKey: PubKey, + voteOptionIndex: BigInt, + newVoteWeight: BigInt, + nonce: BigInt, + pollId: BigInt, + salt: BigInt = genRandomSalt(), + ) { + super() + const limit50Bits = BigInt(2 ** 50) + assert(limit50Bits >= stateIndex) + assert(limit50Bits >= voteOptionIndex) + assert(limit50Bits >= newVoteWeight) + assert(limit50Bits >= nonce) + assert(limit50Bits >= pollId) + + this.cmdType = BigInt(1) + this.stateIndex = stateIndex + this.newPubKey = newPubKey + this.voteOptionIndex = voteOptionIndex + this.newVoteWeight = newVoteWeight + this.nonce = nonce + this.pollId = pollId + this.salt = salt + } + + public copy = (): PCommand => { + + return new PCommand( + BigInt(this.stateIndex.toString()), + this.newPubKey.copy(), + BigInt(this.voteOptionIndex.toString()), + BigInt(this.newVoteWeight.toString()), + BigInt(this.nonce.toString()), + BigInt(this.pollId.toString()), + BigInt(this.salt.toString()), + ) + } + + /* + * Returns this Command as an array. Note that 5 of the Command's fields + * are packed into a single 250-bit value. This allows Messages to be + * smaller and thereby save gas when the user publishes a message. + */ + public asArray = (): BigInt[] => { + const p = + BigInt(`${this.stateIndex}`) + + (BigInt(`${this.voteOptionIndex}`) << BigInt(50)) + + (BigInt(`${this.newVoteWeight}`) << BigInt(100)) + + (BigInt(`${this.nonce}`) << BigInt(150)) + + (BigInt(`${this.pollId}`) << BigInt(200)) + + const a = [ + p, + ...this.newPubKey.asArray(), + this.salt, + ] + assert(a.length === 4) + return a + } + + public asCircuitInputs = (): BigInt[] => { + + return this.asArray() + } + + /* + * Check whether this command has deep equivalence to another command + */ + public equals = (command: PCommand): boolean => { + return this.stateIndex === command.stateIndex && + this.newPubKey[0] === command.newPubKey[0] && + this.newPubKey[1] === command.newPubKey[1] && + this.voteOptionIndex === command.voteOptionIndex && + this.newVoteWeight === command.newVoteWeight && + this.nonce === command.nonce && + this.pollId === command.pollId && + this.salt === command.salt + } + + public hash = (): BigInt => { + return hash4(this.asArray()) + } + + /* + * Signs this command and returns a Signature. + */ + public sign = ( + privKey: PrivKey, + ): Signature => { + + return sign(privKey.rawPrivKey, this.hash()) + } + + /* + * Returns true if the given signature is a correct signature of this + * command and signed by the private key associated with the given public + * key. + */ + public verifySignature = ( + signature: Signature, + pubKey: PubKey, + ): boolean => { + + return verifySignature( + this.hash(), + signature, + pubKey.rawPubKey, + ) + } + + /* + * Encrypts this command along with a signature to produce a Message. + * To save gas, we can constrain the following values to 50 bits and pack + * them into a 250-bit value: + * 0. state index + * 3. vote option index + * 4. new vote weight + * 5. nonce + * 6. poll ID + */ + public encrypt = ( + signature: Signature, + sharedKey: EcdhSharedKey, + ): Message => { + const plaintext = [ + ...this.asArray(), + signature.R8[0], + signature.R8[1], + signature.S, + ] + + assert(plaintext.length === 7) + + const ciphertext: Ciphertext = encrypt(plaintext, sharedKey, BigInt(0)) + + const message = new Message(BigInt(1), ciphertext) + + return message + } + + /* + * Decrypts a Message to produce a Command. + */ + public static decrypt = ( + message: Message, + sharedKey: EcdhSharedKey, + ) => { + + const decrypted = decrypt(message.data, sharedKey, BigInt(0), 7) + + const p = BigInt(`${decrypted[0]}`) + + // Returns the value of the 50 bits at position `pos` in `val` + // create 50 '1' bits + // shift left by pos + // AND with val + // shift right by pos + const extract = (val: BigInt, pos: number): BigInt => { + return BigInt( + ( + ( + (BigInt(1) << BigInt(50)) - BigInt(1) + ) << BigInt(pos) + ) & BigInt(`${val}`) + ) >> BigInt(pos) + } + + // p is a packed value + // bits 0 - 50: stateIndex + // bits 51 - 100: voteOptionIndex + // bits 101 - 150: newVoteWeight + // bits 151 - 200: nonce + // bits 201 - 250: pollId + const stateIndex = extract(p, 0) + const voteOptionIndex = extract(p, 50) + const newVoteWeight = extract(p, 100) + const nonce = extract(p, 150) + const pollId = extract(p, 200) + + const newPubKey = new PubKey([decrypted[1], decrypted[2]]) + const salt = decrypted[3] + + const command = new PCommand( + stateIndex, + newPubKey, + voteOptionIndex, + newVoteWeight, + nonce, + pollId, + salt, + ) + + const signature = { + R8: [decrypted[4], decrypted[5]], + S: decrypted[6], + } + + return { command, signature } + } +} + + +export { + StateLeaf, + Ballot, + type VoteOptionTreeLeaf, + PCommand, + TCommand, + Command, + Message, + Keypair, + PubKey, + PrivKey, + VerifyingKey, + type Proof, +} diff --git a/packages/app/src/jubjublib/index.ts b/packages/app/src/jubjublib/index.ts new file mode 100644 index 00000000..d4016053 --- /dev/null +++ b/packages/app/src/jubjublib/index.ts @@ -0,0 +1,46 @@ +// Export all the functions and classes from the SDK so that they can be imported from the top level +// e.g. import { genRandomSalt } from '@qfi/maci-sdk' + +export { Keypair, PubKey, PrivKey, TCommand as Command, Message } from "./domainobjs/domainobjs"; +export { poseidonEncrypt, poseidonDecrypt, poseidon, poseidonPerm } from "./poseidonencryption"; +export { + NOTHING_UP_MY_SLEEVE, + SNARK_FIELD_SIZE, + type Signature, + type IPrivKey, + type IPubKey, + type IKeypair, + type EcdhSharedKey, + type Ciphertext, + type Plaintext, + type SnarkBigInt, + G1Point, + G2Point, + genPubKey, + genPrivKey, + genKeypair, + formatPrivKeyForBabyJub, + packPubKey, + unpackPubKey, + genEcdhSharedKey, + encrypt, + decrypt, + sign, + verifySignature, + genRandomSalt, + stringifyBigInts, + unstringifyBigInts, + bigInt2Buffer, + IncrementalQuinTree, + AccQueue, + sha256Hash, + hashOne, + hash2, + hash3, + hash4, + hash5, + hash13, + hashLeftRight, +} from "./crypto"; +export { OptimisedMT, hashArray } from "./optimisedmt"; +export { STATE_TREE_DEPTH, MaciState, Poll, genProcessVkSig, genTallyVkSig, genSubsidyVkSig, genTallyResultCommitment } from "./core/core"; diff --git a/packages/app/src/jubjublib/optimisedmt/OptimisedMT.ts b/packages/app/src/jubjublib/optimisedmt/OptimisedMT.ts new file mode 100644 index 00000000..8b45f1c4 --- /dev/null +++ b/packages/app/src/jubjublib/optimisedmt/OptimisedMT.ts @@ -0,0 +1,1176 @@ +import { poseidon } from "circomlibjs"; +import { utils as ffutils } from "ffjavascript"; + +const assert = (condition: boolean) => { + if (!condition) { + throw new Error("Assertion failed"); + } +}; + +const assertPathElements = (condition: PathElements) => { + if (condition.length === 0) { + throw new Error("Assertion failed"); + } +}; + +const assertPathElement = (condition: BigInt[]) => { + if (condition.length === 0) { + throw new Error("Assertion failed"); + } +}; + +const assertIndices = (condition: Indices) => { + if (condition.length === 0) { + throw new Error("Assertion failed"); + } +}; + +const stringifyBigInts: (obj: object) => any = ffutils.stringifyBigInts; +const unstringifyBigInts: (obj: object) => any = ffutils.unstringifyBigInts; + +type Leaf = BigInt; +type Root = BigInt; +type PathElements = BigInt[][]; +type Indices = number[]; + +interface MerkleProof { + pathElements: PathElements; + indices: Indices; + depth: number; + root: BigInt; + leaf: Leaf; +} + +const deepCopyBigIntArray = (arr: BigInt[]) => { + return arr.map((x) => BigInt(x.toString())); +}; + +const calcInitialVals = (leavesPerNode: number, depth: number, zeroValue: BigInt, hashFunc: (leaves: BigInt[]) => BigInt) => { + const zeros: BigInt[] = []; + + let currentLevelHash = zeroValue; + for (let i = 0; i < depth; i++) { + zeros.push(currentLevelHash); + + const z: BigInt[] = []; + for (let j = 0; j < leavesPerNode; j++) { + z.push(zeros[i]); + } + + currentLevelHash = hashFunc(z); + } + + const root = currentLevelHash; + + return { zeros, root }; +}; + +interface MTNode { + [key: number]: BigInt; +} + +class OptimisedMT { + public depth: number; + public zeroValue: BigInt; + public leavesPerNode: number; + public hashFunc: (leaves: BigInt[]) => BigInt; + + // The the smallest empty leaf index + public nextIndex: number = 0; + + // Contains the zero value per level. i.e. zeros[0] is zeroValue, + // zeros[1] is the hash of leavesPerNode zeros, and so on. + public zeros: BigInt[] = []; + public root: BigInt; + public nodes: MTNode; + public numNodes: number; + public capacity: number; + + constructor(_depth: number, _zeroValue: BigInt, _leavesPerNode: number, _hashFunc: (leaves: BigInt[]) => BigInt) { + this.depth = _depth; + this.zeroValue = _zeroValue; + this.leavesPerNode = _leavesPerNode; + this.hashFunc = _hashFunc; + + const r = calcInitialVals(this.leavesPerNode, this.depth, this.zeroValue, this.hashFunc); + this.zeros = r.zeros; + this.root = r.root; + + let numNodes = 1; + for (let i = 0; i < this.depth; i++) { + numNodes += this.leavesPerNode ** (i + 1); + } + this.numNodes = numNodes; + + const rootIndex = numNodes - 1; + + this.nodes = {}; + this.nodes[rootIndex] = r.root; + this.capacity = this.leavesPerNode ** this.depth; + } + + /* + * Insert a leaf into the Merkle tree + * @param _value The value to insert. This may or may not already be + * hashed. + */ + public insert(_value: Leaf) { + this.update(this.nextIndex, _value); + this.nextIndex++; + } + + public update(_index: number, _value: Leaf) { + // Ensure that _value is a BigInt + _value = _value; + + // Set the leaf value + this.setNode(_index, _value); + + // Set the parent leaf value + // Get the parent indices + const parentIndices = this.getParentIndices(_index); + + for (const parentIndex of parentIndices) { + const childIndices = this.getChildIndices(parentIndex); + const elements: Leaf[] = []; + for (const childIndex of childIndices) { + elements.push(this.getNode(childIndex)); + } + this.nodes[parentIndex] = this.hashFunc(elements); + } + + this.root = this.nodes[this.numNodes - 1]; + } + + /* + * Generates a Merkle proof from a leaf to the root. + */ + public genMerklePath(_index: number): MerkleProof { + if (_index < 0) { + throw new Error("The leaf index must be greater than 0"); + } + if (_index >= this.leavesPerNode ** this.depth) { + throw new Error("The leaf index is too large"); + } + + const pathElements: BigInt[][] = []; + const indices: number[] = [_index % this.leavesPerNode]; + + let r = Math.floor(_index / this.leavesPerNode); + + // Generate indices + for (let i = 0; i < this.depth; i++) { + const p = r % this.leavesPerNode; + if (i < this.depth - 1) { + indices.push(p); + } + r = Math.floor(r / this.leavesPerNode); + } + + // Generate path elements + let leafIndex = _index; + let offset = 0; + + for (let i = 0; i < this.depth; i++) { + const elements: BigInt[] = []; + const index = indices[i]; + const start = leafIndex - (leafIndex % this.leavesPerNode) + offset; + for (let i = 0; i < this.leavesPerNode; i++) { + if (i !== index) { + elements.push(this.getNode(start + i)); + } + } + pathElements.push(elements); + leafIndex = Math.floor(leafIndex / this.leavesPerNode); + offset += this.leavesPerNode ** (this.depth - i); + } + + return { + pathElements, + indices, + depth: this.depth, + root: this.root, + leaf: this.getNode(_index), + }; + } + + /* + * Generates a Merkle proof from a subroot to the root. + */ + public genMerkleSubrootPath( + _startIndex: number, // inclusive + _endIndex: number // exclusive + ): MerkleProof { + // The end index must be greater than the start index + assert(_endIndex > _startIndex); + const numLeaves = _endIndex - _startIndex; + + // The number of leaves must be a multiple of the tree arity + assert(numLeaves % this.leavesPerNode === 0); + + // The number of leaves must be lower than the maximum tree capacity + assert(numLeaves < this.leavesPerNode ** this.depth); + + // The number of leaves must the tree arity raised to some positive integer + let f = false; + let subDepth; + for (let i = 0; i < this.depth; i++) { + if (numLeaves === this.leavesPerNode ** i) { + subDepth = i; + f = true; + break; + } + } + + assert(f); + assert(subDepth < this.depth); + + const subTree = new OptimisedMT(subDepth, this.zeroValue, this.leavesPerNode, this.hashFunc); + for (let i = _startIndex; i < _endIndex; i++) { + subTree.insert(this.getNode(i)); + } + + const fullPath = this.genMerklePath(_startIndex); + fullPath.depth = this.depth - subDepth; + fullPath.indices = fullPath.indices.slice(subDepth, this.depth); + fullPath.pathElements = fullPath.pathElements.slice(subDepth, this.depth); + fullPath.leaf = subTree.root; + + return fullPath; + } + + public static verifyMerklePath = (_proof: MerkleProof, _hashFunc: (leaves: BigInt[]) => BigInt) => { + assertPathElements(_proof.pathElements); + + //TODO: assert flubbed + + const pathElements = _proof.pathElements; + // Validate the proof format + assertIndices(_proof.indices); + for (let i = 0; i < _proof.depth; i++) { + assertPathElement(pathElements[i]); + assert(_proof.indices[i] != undefined); + } + + // Hash the first level + const firstLevel: BigInt[] = pathElements[0]; + firstLevel.splice(Number(_proof.indices[0]), 0, _proof.leaf); + let currentLevelHash: BigInt = _hashFunc(firstLevel); + + // Verify the proof + for (let i = 1; i < pathElements.length; i++) { + const level: BigInt[] = pathElements[i]; + level.splice(Number(_proof.indices[i]), 0, currentLevelHash); + + currentLevelHash = _hashFunc(level); + } + + return currentLevelHash === _proof.root; + }; + + public getLeaf(_index: number) { + assert(_index < this.capacity); + + return this.getNode(_index); + } + + public getNode(_index: number) { + assert(_index <= this.numNodes - 1); + + if (this.nodes[_index] != undefined) { + return this.nodes[_index]; + } else { + let r = 0; + let level = this.depth; + + while (true) { + r += this.leavesPerNode ** level; + if (_index < r) { + break; + } + level--; + } + return this.zeros[this.depth - level]; + } + } + + public setNode(_index: number, _value: BigInt) { + assert(_index <= this.numNodes - 1); + this.nodes[_index] = _value; + } + + private getChildIndices(_index: number) { + return OptimisedMT.calcChildIndices(_index, this.leavesPerNode, this.depth); + } + + public static calcChildIndices(_index: number, _leavesPerNode: number, _depth: number) { + // The node must be a parent + assert(_index >= _leavesPerNode ** _depth); + + // Determine which level the node is at + let level = 0; + let r = _leavesPerNode ** level; + while (true) { + if (_index < r) { + break; + } + level++; + r += _leavesPerNode ** level; + } + + const start = (_index - _leavesPerNode ** level) * _leavesPerNode; + const indices: number[] = [start]; + for (let i = 0; i < _leavesPerNode - 1; i++) { + indices.push(start + i + 1); + } + return indices; + } + + private getParentIndices(_index: number) { + return OptimisedMT.calcParentIndices(_index, this.leavesPerNode, this.depth); + } + + public static calcParentIndices(_index: number, _leavesPerNode: number, _depth: number) { + assert(_depth > 0); + assert(_leavesPerNode > 1); + + // The index must be of a leaf + const treeCapacity = _leavesPerNode ** _depth; + assert(_index < treeCapacity); + + const indices: number[] = []; + + let levelCapacity = 0; + let r = _index; + for (let i = 0; i < _depth; i++) { + levelCapacity += _leavesPerNode ** (_depth - i); + r = Math.floor(r / _leavesPerNode); + const levelIndex = levelCapacity + r; + indices.push(levelIndex); + } + + return indices; + } + + /* + * Deep-copies this object + */ + public copy(): OptimisedMT { + const newTree = new OptimisedMT(this.depth, this.zeroValue, this.leavesPerNode, this.hashFunc); + newTree.nodes = JSON.parse(JSON.stringify(stringifyBigInts(this.nodes))); + newTree.numNodes = this.numNodes; + newTree.nextIndex = this.nextIndex; + newTree.zeros = deepCopyBigIntArray(this.zeros); + newTree.root = this.root; + newTree.nextIndex = this.nextIndex; + return newTree; + } + + public serialize = (): string => { + return JSON.stringify( + stringifyBigInts({ + leavesPerNode: this.leavesPerNode, + depth: this.depth, + zeroValue: this.zeroValue, + root: this.root, + nextIndex: this.nextIndex, + nodes: this.nodes, + numNodes: this.numNodes, + zeros: this.zeros, + }) + ); + }; + + public equals = (o: OptimisedMT): boolean => { + return this.serialize() === o.serialize(); + }; + + public static unserialize = (s: string): OptimisedMT => { + const d = unstringifyBigInts(JSON.parse(s)); + const tree = new OptimisedMT(d.depth, d.zeroValue, d.leavesPerNode, poseidon); + tree.root = d.root; + tree.nextIndex = d.nextIndex; + tree.nodes = d.nodes; + tree.numNodes = d.numNodes; + tree.zeros = d.zeros; + + return tree; + }; +} + +/* + * Calculate a Merkle root given a list of leaves + */ +const calculateRoot = (leaves: BigInt[], arity: number, hashFunc: (leaves: BigInt[]) => BigInt): BigInt => { + if (leaves.length === 1) { + return leaves[0]; + } + + assert(leaves.length % arity === 0); + + const hashes: BigInt[] = []; + for (let i = 0; i < leaves.length / arity; i++) { + const r: BigInt[] = []; + for (let j = 0; j < arity; j++) { + r.push(leaves[i * arity + j]); + } + hashes.push(hashFunc(r)); + } + return calculateRoot(hashes, arity, hashFunc); +}; + +export { OptimisedMT, calculateRoot, calcInitialVals }; + +//const _insert = ( +//depth: number, +//leavesPerNode: number, +//nextIndex: number, +//value: BigInt, +//filledSubtrees: BigInt[][], +//filledPaths: any, +//leaves: BigInt[], +//zeros: BigInt[], +//hashFunc: (leaves: BigInt[]) => BigInt, +//) => { +//let m = nextIndex % leavesPerNode +//filledSubtrees[0][m] = value +//let currentIndex = nextIndex +//for (let i = 1; i < depth; i++) { +//// currentIndex is the leaf or node's absolute index +//currentIndex = Math.floor(currentIndex / leavesPerNode) + +//// m is the leaf's relative position within its node +//m = currentIndex % leavesPerNode + +//if (m === 0) { +//// Zero out the level +//for (let j = 1; j < filledSubtrees[i].length; j ++) { +//filledSubtrees[i][j] = zeros[i] +//} +//} + +//const z = filledSubtrees[i - 1] +//const hashed = hashFunc(z) +//filledSubtrees[i][m] = hashed + +//if (filledPaths[i - 1].length <= currentIndex) { +//filledPaths[i - 1].push(hashed) +//} else { +//filledPaths[i - 1][currentIndex] = hashed +//} +//} +//leaves.push(value) +//} + +//const _genMerklePath = ( +//_index: number, +//leavesPerNode: number, +//depth: number, +//leaves: BigInt[], +//zeros: BigInt[], +//filledPaths: any, +//root: BigInt, +//): MerkleProof => { +//if (_index < 0) { +//throw new Error('The leaf index must be greater than 0') +//} +//if (_index >= leaves.length) { +//throw new Error('The leaf index is too large') +//} + +//const pathElements: BigInt[][] = [] +//const indices: number[] = [_index % leavesPerNode] + +//let r = Math.floor(_index / leavesPerNode) + +//for (let i = 0; i < depth; i ++) { +//const s: BigInt[] = [] +//if (i === 0) { +//// Get a slice of leaves, padded with zeros +//const leafStartIndex = _index - (_index % leavesPerNode) +//const leafEndIndex = leafStartIndex + leavesPerNode +//for (let j = leafStartIndex; j < leafEndIndex; j ++) { +//if (j < leaves.length) { +//s.push(leaves[j]) +//} else { +//s.push(zeros[i]) +//} +//} +//} else { +//for (let j = 0; j < leavesPerNode; j ++) { +//const x = r * leavesPerNode + j +//if (filledPaths[i - 1].length <= x) { +//s.push(zeros[i]) +//} else { +//const e = filledPaths[i - 1][x] +//s.push(e) +//} +//} +//} + +//const p = r % leavesPerNode +//pathElements.push(s) + +//if (i < depth - 1) { +//indices.push(p) +//} + +//r = Math.floor(r /leavesPerNode) +//} + +//// Remove the commitments to elements which are the leaves per level +//const newPe: BigInt[][] = [[]] +//const firstIndex = _index % leavesPerNode + +//for (let i = 0; i < pathElements[0].length; i ++) { +//if (i !== firstIndex) { +//newPe[0].push(pathElements[0][i]) +//} +//} + +//for (let i = 1; i < pathElements.length; i ++) { +//const level: BigInt[] = [] +//for (let j = 0; j < pathElements[i].length; j ++) { +//if (j !== indices[i]) { +//level.push(pathElements[i][j]) +//} +//} +//newPe.push(level) +//} + +//return { +//pathElements: newPe, +//indices, +//depth: depth, +//root, +//leaf: leaves[_index], +//} +//} + +//const _genMerkleSubrootPath = ( +//_startIndex: number, // inclusive +//_endIndex: number, // exclusive +//leavesPerNode: number, +//depth: number, +//zeroValue: BigInt, +//leaves: BigInt[], +//zeros: BigInt[], +//filledSubtrees: BigInt[][], +//filledPaths: any, +//root: BigInt, +//hashFunc: (leaves: BigInt[]) => BigInt, +//): MerkleProof => { +//// The end index must be greater than the start index +//assert(_endIndex > _startIndex) +//const numLeaves = _endIndex - _startIndex + +//// The number of leaves must be a multiple of the tree arity +//assert(numLeaves % leavesPerNode === 0) + +//// The number of leaves must be lower than the maximum tree capacity +//assert(numLeaves < leavesPerNode ** depth) + +//// The number of leaves must the tree arity raised to some positive integer +//let f = false +//let subDepth +//for (let i = 0; i < depth; i ++) { +//if (numLeaves === leavesPerNode ** i) { +//subDepth = i +//f = true +//break +//} +//} + +//assert(f) +//assert(subDepth < depth) + +//const leaf = calculateRoot( +//leaves.slice(_startIndex, _endIndex), +//leavesPerNode, +//hashFunc, +//) + +//const fullPath = _genMerklePath( +//_startIndex, +//leavesPerNode, +//depth, +//leaves, +//zeros, +//filledPaths, +//root, +//) +//fullPath.depth = depth - subDepth +//fullPath.indices = fullPath.indices.slice(subDepth, depth) +//fullPath.pathElements = fullPath.pathElements.slice(subDepth, depth) +//fullPath.leaf = leaf + +//return fullPath +//} + +//const _verifyMerklePath = ( +//_proof: MerkleProof, +//_hashFunc: (leaves: BigInt[]) => BigInt, +//) => { +//assert (_proof.pathElements) + +//const pathElements = _proof.pathElements +//// Validate the proof format +//assert (_proof.indices) +//for (let i = 0; i < _proof.depth; i ++) { +//assert(pathElements[i]) +//assert(_proof.indices[i] != undefined) +//} + +//// Hash the first level +//const firstLevel: BigInt[] = pathElements[0].map(BigInt) +//firstLevel.splice(Number(_proof.indices[0]), 0, _proof.leaf) +//let currentLevelHash: BigInt = _hashFunc(firstLevel) + +//// Verify the proof +//for (let i = 1; i < pathElements.length; i ++) { +//const level: BigInt[] = pathElements[i].map(BigInt) +//level.splice(Number(_proof.indices[i]), 0, currentLevelHash) + +//currentLevelHash = _hashFunc(level) +//} + +//return currentLevelHash === _proof.root +//} + +/* + * An incremental Merkle tree. + */ +//class IncrementalTree { +//// The number of leaves per node +//public leavesPerNode: number + +//// The tree depth +//public depth: number + +//// The default value for empty leaves +//public zeroValue: BigInt + +//// The tree root +//public root: BigInt + +//// The the smallest empty leaf index +//public nextIndex: number + +//// All leaves in the tree +//public leaves: Leaf[] = [] + +//// Contains the zero value per level. i.e. zeros[0] is zeroValue, +//// zeros[1] is the hash of leavesPerNode zeros, and so on. +//public zeros: BigInt[] = [] + +//// Caches values needed for efficient appends. +//public filledSubtrees: BigInt[][] = [] + +//// Caches values needed to compute Merkle paths. +//public filledPaths: any = {} + +//// The hash function to use +//public hashFunc: (leaves: BigInt[]) => BigInt + +//constructor ( +//_depth: number, +//_zeroValue: BigInt | number, +//_leavesPerNode: number, +//_hashFunc: (leaves: BigInt[]) => BigInt +//) { +//this.leavesPerNode = Number(_leavesPerNode) + +//this.depth = Number(_depth) + +//assert(this.depth > 0) + +//this.nextIndex = 0 +//this.zeroValue = BigInt(_zeroValue) + +//this.hashFunc = _hashFunc + +//const r = calcInitialVals( +//this.leavesPerNode, +//this.depth, +//this.zeroValue, +//this.hashFunc, +//) + +//this.filledSubtrees = r.filledSubtrees +//this.filledPaths = r.filledPaths +//this.zeros = r.zeros +//this.root = r.root +//} + +/* + * Insert a leaf into the Merkle tree + * @param _value The value to insert. This may or may not already be + * hashed. + */ +//public insert( +//_value: Leaf, +//) { +//// Ensure that _value is a BigInt +//_value = BigInt(_value) + +//// A node is one level above the leaf +//// m is the leaf's relative position within its node +//let m = this.nextIndex % this.leavesPerNode + +//if (m === 0) { +//// Zero out the level in filledSubtrees +//for (let j = 1; j < this.filledSubtrees[0].length; j ++) { +//this.filledSubtrees[0][j] = this.zeros[0] +//} +//} + +//_insert( +//this.depth, +//this.leavesPerNode, +//this.nextIndex, +//_value, +//this.filledSubtrees, +//this.filledPaths, +//this.leaves, +//this.zeros, +//this.hashFunc, +//) + +//this.nextIndex ++ +//this.root = this.hashFunc( +//this.filledSubtrees[this.filledSubtrees.length - 1], +//) +//} + +/* + * Update the leaf at the specified index with the given value. + */ +//public update( +//_index: number, +//_value: Leaf, +//) { +//if (_index >= this.nextIndex || _index >= this.leaves.length) { +//throw new Error('The leaf index specified is too large') +//} + +//_value = BigInt(_value) + +//const temp = this.leaves +//temp[_index] = _value + +//this.leaves[_index] = _value + +//const newTree = new IncrementalTree( +//this.depth, +//this.zeroValue, +//this.leavesPerNode, +//this.hashFunc, +//) + +//for (let i = 0; i < temp.length; i++) { +//newTree.insert(temp[i]) +//} + +//this.leaves = newTree.leaves +//this.zeros = newTree.zeros +//this.filledSubtrees = newTree.filledSubtrees +//this.filledPaths = newTree.filledPaths +//this.root = newTree.root +//this.nextIndex = newTree.nextIndex +//} + +/* + * Returns the leaf value at the given index + */ +//public getLeaf(_index: number): Leaf { +//return this.leaves[_index] +//} + +/* + * Generates a Merkle proof from a subroot to the root. + */ +//public genMerkleSubrootPath( +//_startIndex: number, // inclusive +//_endIndex: number, // exclusive +//): MerkleProof { +//return _genMerkleSubrootPath( +//_startIndex, +//_endIndex, +//this.leavesPerNode, +//this.depth, +//this.zeroValue, +//this.leaves, +//this.zeros, +//this.filledSubtrees, +//this.filledPaths, +//this.root, +//this.hashFunc, +//) +//} + +/* Generates a Merkle proof from a leaf to the root. + */ +//public genMerklePath(_index: number): MerkleProof { +//return _genMerklePath( +//_index, +//this.leavesPerNode, +//this.depth, +//this.leaves, +//this.zeros, +//this.filledPaths, +//this.root, +//) +//} + +/* + * Return true if the given Merkle path is valid, and false otherwise. + */ +//public static verifyMerklePath( +//_proof: MerkleProof, +//_hashFunc: (leaves: BigInt[]) => BigInt, +//): boolean { + +//return _verifyMerklePath( _proof, _hashFunc) +//} + +/* Deep-copies this object + */ +//public copy(): IncrementalTree { +//const newTree = new IncrementalTree( +//this.depth, +//this.zeroValue, +//this.leavesPerNode, +//this.hashFunc, +//) +//newTree.leaves = deepCopyBigIntArray(this.leaves) +//newTree.zeros = deepCopyBigIntArray(this.zeros) +//newTree.root = this.root +//newTree.nextIndex = this.nextIndex +//newTree.filledSubtrees = this.filledSubtrees.map(deepCopyBigIntArray) +//newTree.filledPaths = unstringifyBigInts(JSON.parse( +//JSON.stringify(stringifyBigInts(this.filledPaths)) +//)) + +//return newTree +//} + +//public equals(t: IncrementalTree): boolean { +//const eq = +//this.depth === t.depth && +//this.zeroValue === t.zeroValue && +//this.leavesPerNode === t.leavesPerNode && +//this.root === t.root && +//this.nextIndex === t.nextIndex && +//this.leaves.length === t.leaves.length && +//this.filledSubtrees.length === t.filledSubtrees.length +//this.filledPaths.length === t.filledPaths.length + +//if (!eq) { return false } + +//for (let i = 0; i < this.leaves.length; i ++) { +//if (this.leaves[i] !== t.leaves[i]) { +//return false +//} +//} + +//return true +//} +//} + +/* + * Multiple incremental Merkle tree. When a tree is full, the next insertion + * goes into a new tree. + */ +//class MultiIncrementalTree { +//// The number of leaves per node +//public leavesPerNode: number + +//// The tree depth +//public depth: number + +//// The default value for empty leaves +//public zeroValue: BigInt + +//public currentTreeNum = 0 + +//// The tree roots +//public roots: BigInt[] + +//// The the smallest empty leaf index +//public nextIndex: number + +//// All leaves in the tree +//public leaves: Leaf[] = [] + +//// Contains the zero value per level. i.e. zeros[0] is zeroValue, +//// zeros[1] is the hash of leavesPerNode zeros, and so on. +//public zeros: BigInt[] = [] + +//// Caches values needed for efficient appends. +//public filledSubtrees: BigInt[][][] = [] + +//// Caches values needed to compute Merkle paths. +//public filledPaths: any[] = [] + +//// The hash function to use +//public hashFunc: (leaves: BigInt[]) => BigInt + +//constructor ( +//_depth: number, +//_zeroValue: BigInt | number, +//_leavesPerNode: number, +//_hashFunc: (leaves: BigInt[]) => BigInt +//) { +//this.leavesPerNode = Number(_leavesPerNode) + +//this.depth = Number(_depth) + +//assert(this.depth > 0) + +//this.nextIndex = 0 +//this.zeroValue = BigInt(_zeroValue) + +//this.hashFunc = _hashFunc + +//const r = calcInitialVals( +//this.leavesPerNode, +//this.depth, +//this.zeroValue, +//this.hashFunc, +//) + +//this.zeros = r.zeros +//this.filledSubtrees = [r.filledSubtrees] +//this.filledPaths = [r.filledPaths] +//this.roots = [r.root] +//} + +/* + * Insert a leaf into the Merkle tree + * @param _value The value to insert. This may or may not already be + * hashed. + */ +//public insert( +//_value: Leaf, +//) { + +//if (this.nextIndex >= this.leavesPerNode ** this.depth) { +//this.nextIndex = 0 +//this.currentTreeNum ++ +//const r = calcInitialVals( +//this.leavesPerNode, +//this.depth, +//this.zeroValue, +//this.hashFunc, +//) + +//this.zeros = r.zeros +//this.filledSubtrees.push(r.filledSubtrees) +//this.filledPaths.push(r.filledPaths) +//this.roots.push(r.root) +//} +//// Ensure that _value is a BigInt +//_value = BigInt(_value) + +//// A node is one level above the leaf +//// m is the leaf's relative position within its node +//let m = this.nextIndex % this.leavesPerNode + +//if (m === 0) { +//// Zero out the level in filledSubtrees +//for (let j = 1; j < this.leavesPerNode; j ++) { +//this.filledSubtrees[this.currentTreeNum][0][j] = this.zeros[0] +//} +//} + +//_insert( +//this.depth, +//this.leavesPerNode, +//this.nextIndex, +//_value, +//this.filledSubtrees[this.currentTreeNum], +//this.filledPaths[this.currentTreeNum], +//this.leaves, +//this.zeros, +//this.hashFunc, +//) + +//this.nextIndex ++ +//this.roots[this.currentTreeNum] = this.hashFunc( +//this.filledSubtrees[this.currentTreeNum][this.filledSubtrees[this.currentTreeNum].length - 1], +//) +//} + +/* + * Update the leaf at the specified index with the given value. + */ +//public update( +//_absoluteIndex: number, +//_value: Leaf, +//) { +//if (_absoluteIndex >= this.leaves.length) { +//throw new Error('The leaf index specified is too large') +//} + +//_value = BigInt(_value) + +//const capacity = this.leavesPerNode ** this.depth +//const treeNum = Math.floor(_absoluteIndex / capacity) + +//const subTree = new IncrementalTree( +//this.depth, +//this.zeroValue, +//this.leavesPerNode, +//this.hashFunc, +//) + +//this.leaves[_absoluteIndex] = _value + +//const s = treeNum * capacity + +//for (let i = s; i < s + capacity; i ++) { +//if (i >= this.leaves.length) { +//break +//} +//subTree.insert(this.leaves[i]) +//} + +//this.filledPaths[treeNum] = subTree.filledPaths +//this.filledSubtrees[treeNum] = subTree.filledSubtrees +//this.roots[treeNum] = subTree.root +//} + +/* + * Returns the leaf value at the given index + */ +//public getLeaf(_index: number): Leaf { +//return this.leaves[_index] +//} + +/* + * Generates a Merkle proof from a subroot to the root. + */ +//public genMerkleSubrootPath( +//_absoluteStartIndex: number, // inclusive +//_absoluteEndIndex: number, // exclusive +//): MerkleProof { +//assert(_absoluteEndIndex > _absoluteStartIndex) + +//const capacity = this.leavesPerNode ** this.depth +//const treeNum = Math.floor(_absoluteStartIndex / capacity) + +//const leaves = this.leaves.slice( +//treeNum * capacity, +//treeNum * capacity + capacity, +//) + +//return _genMerkleSubrootPath( +//_absoluteStartIndex % capacity, +//_absoluteEndIndex % capacity, +//this.leavesPerNode, +//this.depth, +//this.zeroValue, +//leaves, +//this.zeros, +//this.filledSubtrees[treeNum], +//this.filledPaths[treeNum], +//this.roots[treeNum], +//this.hashFunc, +//) +//} + +/* + * Generates a Merkle proof from a leaf to the root. + */ +//public genMerklePath( +//_absoluteIndex: number, +//): MerkleProof { +//const capacity = this.leavesPerNode ** this.depth +//const index = _absoluteIndex % capacity +//const treeNum = Math.floor(_absoluteIndex / capacity) + +//assert(treeNum < this.roots.length) + +//return _genMerklePath( +//index, +//this.leavesPerNode, +//this.depth, +//this.leaves, +//this.zeros, +//this.filledPaths[treeNum], +//this.roots[treeNum], +//) +//} + +/* + * Return true if the given Merkle path is valid, and false otherwise. + */ +//public static verifyMerklePath( +//_proof: MerkleProof, +//_hashFunc: (leaves: BigInt[]) => BigInt, +//): boolean { + +//return _verifyMerklePath( _proof, _hashFunc) +//} + +/* Deep-copies this object + */ +//public copy(): MultiIncrementalTree { +//const newTree = new MultiIncrementalTree( +//this.depth, +//this.zeroValue, +//this.leavesPerNode, +//this.hashFunc, +//) +//newTree.leaves = deepCopyBigIntArray(this.leaves) +//newTree.zeros = deepCopyBigIntArray(this.zeros) +//newTree.roots = deepCopyBigIntArray(this.roots) +//newTree.currentTreeNum = this.currentTreeNum +//newTree.nextIndex = this.nextIndex +//newTree.filledSubtrees = unstringifyBigInts(JSON.parse( +//JSON.stringify(stringifyBigInts(this.filledSubtrees)) +//)) +//newTree.filledPaths = unstringifyBigInts(JSON.parse( +//JSON.stringify(stringifyBigInts(this.filledPaths)) +//)) + +//return newTree +//} + +//public equals(t: MultiIncrementalTree): boolean { +//const eq = +//this.currentTreeNum === t.currentTreeNum && +//this.depth === t.depth && +//this.zeroValue === t.zeroValue && +//this.leavesPerNode === t.leavesPerNode && +//this.nextIndex === t.nextIndex && +//this.roots.length === t.roots.length && +//this.leaves.length === t.leaves.length && +//JSON.stringify(stringifyBigInts(this.filledPaths)) === +//JSON.stringify(stringifyBigInts(t.filledPaths)) && +//JSON.stringify(stringifyBigInts(this.filledSubtrees)) === +//JSON.stringify(stringifyBigInts(t.filledSubtrees)) + +//if (!eq) { return false } + +//for (let i = 0; i < this.roots.length; i ++) { +//if (this.roots[i] !== t.roots[i]) { +//return false +//} +//} + +//for (let i = 0; i < this.leaves.length; i ++) { +//if (this.leaves[i] !== t.leaves[i]) { +//return false +//} +//} + +//return true +//} +//} + +//export { +//IncrementalTree, +//MultiIncrementalTree, +//calculateRoot, +//} diff --git a/packages/app/src/jubjublib/optimisedmt/README.md b/packages/app/src/jubjublib/optimisedmt/README.md new file mode 100644 index 00000000..d177d47a --- /dev/null +++ b/packages/app/src/jubjublib/optimisedmt/README.md @@ -0,0 +1,135 @@ +# Optimised Incremental Merkle Tree + +## The problem + +Ordinary incremental Merkle tree implementations have inefficient update +operations. Every time a leaf is updated, the entire tree is recomputed by +inserting each leaf all over again. + +## The solution + +Trade off storage/memory for speed. + +Represent nodes as a key-value map where the key is the node index and the +value is the node. + +Use a simple key-value map to store data. This may be on disk or in memory. +There should be plenty of mature and fast options like LMDB. + +**Node index** +The node index is the index of a node array which represents the Merkle tree. + +For example, a binary Merkle tree with 2 levels and leaves `a, b, c, d` can be +represented with this node array: + +``` +[a, b, c, d, h(a, b), h(c, d), root] +``` + +where h() is a hash function. + +`a` is at index 0. + +`h(a, b)` is at index 4. + +**Zero values** + +Upon initialisation of the tree, we compute the zero values. This is the empty +node per level. + +`[z, h(z, z), h(h(z, z), h(z, z))]` + +If `c` and `d` are empty leaves, then the nodes can be represented as such: + +``` +{ + 0: a, + 1: b, + 4: h(a, b), + 6: root = h(h(a, b), h(z, z)) +} +``` + +There is no need to store the values of items at indices 2, 3, and 5, since +those are precalculated zero values. + +**Computing Merkle proofs** + +Example 1: there are 4 leaves in a binary MT and all leaves are non-zero. The +nodes array is: + +``` +[a, b, c, d, h(a, b), h(c, d), root] +``` + +The representation of the node array as a key-value map is as such: +``` +{ + 0: a, + 1: b, + 2: c, + 3: d, + 4: h(a, b), + 5: h(c, d), + 6: root = h(h(a, b), h(c, d)) +} +``` + +We want to compute the Merkle proof of leaf 2 (whose value is c). + +First, compute the path indices. + +``` +let r = Math.floor(index / arity) +indices = [] +for i in range(0, levels): + p = r % arity // e.g. p % 2 for a binary tree + indices.push(p) + r = Math.floor(r /leavesPerNode) +``` + +When `index == 2`, `indices == [1, 0]`. + +Next, compute the path elements. + +``` + +pathElements = [] +j = 1 +for i in indices: + e = nodeArray[j * arity + i] + pathElements.push(e) + j ++ +``` + +As such: + +``` +pathElements = [ + nodeArray[1 * 2 + 1 = 3] = d, + nodeArray[2 * 2 + 0 = 4] = h(a, b), +] +``` + +To verify the Merkle path: + +``` +root == h(d, h(a, b)) +``` + +**Updates** + +To perform an update, only `depth - 1` hashes have to be computed. + +Consider again this binary Merkle tree with 4 leaves: + +``` +[a, b, c, d, h(a, b), h(c, d), h(...)] +``` + +To update the leaf at index 2 (whose value is c), only 2 hash operations are +needed: + +``` +[a, b, c*, d, h(a, b), h(c*, d), h(...)*] +``` diff --git a/packages/app/src/jubjublib/optimisedmt/index.ts b/packages/app/src/jubjublib/optimisedmt/index.ts new file mode 100644 index 00000000..18fbbc44 --- /dev/null +++ b/packages/app/src/jubjublib/optimisedmt/index.ts @@ -0,0 +1,25 @@ +import { utils } from "ethers"; +import { OptimisedMT } from "./OptimisedMT"; + + +/* + * Hash an array of uint256 values the same way that the EVM does. + */ +const hashArray = (input: bigint[]): bigint => { + const types: string[] = []; + for (let i = 0; i < input.length; i++) { + types.push("uint256"); + } + return ( + BigInt( + utils.soliditySha256( + types, + input.map((x) => x.toString()) + ) + ) % SNARK_FIELD_SIZE + ); +}; + +const SNARK_FIELD_SIZE = BigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617"); + +export { hashArray, OptimisedMT }; diff --git a/packages/app/src/jubjublib/poseidonencryption/index.ts b/packages/app/src/jubjublib/poseidonencryption/index.ts new file mode 100644 index 00000000..9985ea05 --- /dev/null +++ b/packages/app/src/jubjublib/poseidonencryption/index.ts @@ -0,0 +1,3 @@ +export {encrypt as poseidonEncrypt, decrypt as poseidonDecrypt} from "./poseidonCipher"; +export {poseidon} from "./poseidon"; +export {poseidonPerm} from "./poseidonPerm"; \ No newline at end of file diff --git a/packages/app/src/jubjublib/poseidonencryption/poseidon.ts b/packages/app/src/jubjublib/poseidonencryption/poseidon.ts new file mode 100644 index 00000000..b6e3e2b5 --- /dev/null +++ b/packages/app/src/jubjublib/poseidonencryption/poseidon.ts @@ -0,0 +1,5 @@ +import {poseidonPerm} from "./poseidonPerm"; + +export function poseidon(inputs) { + return poseidonPerm([0, ...inputs])[0]; +} \ No newline at end of file diff --git a/packages/app/src/jubjublib/poseidonencryption/poseidonCipher.ts b/packages/app/src/jubjublib/poseidonencryption/poseidonCipher.ts new file mode 100644 index 00000000..4a7756f7 --- /dev/null +++ b/packages/app/src/jubjublib/poseidonencryption/poseidonCipher.ts @@ -0,0 +1,125 @@ +import {Scalar, ZqField } from "ffjavascript"; +import { poseidonPerm } from "./poseidonPerm"; + + +const assert = (condition: boolean) => { + if (!condition) { + throw new Error('Assertion failed') + } +} +// Prime 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 +const F = new ZqField(Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617")); + +const two128 = F.e("340282366920938463463374607431768211456"); + +function encrypt(msg, key, nonce) { + assert(Array.isArray(msg)); + assert(Array.isArray(key)); + assert(key.length === 2); + msg = msg.map((x) => F.e(x)); + + // The nonce must be less than 2 ^ 128 + assert(nonce < two128); + + const message = [...msg]; + + // Pad the message if needed + while (message.length % 3 > 0) { + message.push(F.zero); + } + + let cipherLength = message.length; + + // Create the initial state + let state = [ + F.zero, + F.e(key[0]), + F.e(key[1]), + F.add( + F.e(nonce), + F.mul(F.e(msg.length), two128), + ), + ]; + + const ciphertext = [] as any; + + for (let i = 0; i < cipherLength / 3; i ++) { + // Iterate Poseidon on the state + state = poseidonPerm(state); + + // Absorb three elements of message + state[1] = F.add(state[1], F.e(message[i * 3])); + state[2] = F.add(state[2], F.e(message[i * 3 + 1])); + state[3] = F.add(state[3], F.e(message[i * 3 + 2])); + + // Release three elements of the ciphertext + ciphertext.push(state[1]); + ciphertext.push(state[2]); + ciphertext.push(state[3]); + } + + // Iterate Poseidon on the state one last time + state = poseidonPerm(state); + + // Release the last ciphertext element + ciphertext.push(state[1]); + + return ciphertext; +} + +function decrypt(ciphertext, key, nonce, length) { + assert(Array.isArray(ciphertext)); + assert(Array.isArray(key)); + assert(key.length === 2); + + // Create the initial state + let state = [ + F.zero, + F.e(key[0]), + F.e(key[1]), + F.add( + F.e(nonce), + F.mul(F.e(length), two128), + ), + ]; + + const message = [] as any; + + let n = Math.floor(ciphertext.length / 3); + + for (let i = 0; i < n; i ++) { + // Iterate Poseidon on the state + state = poseidonPerm(state); + + // Release three elements of the message + message.push(F.sub(ciphertext[i * 3], state[1])); + message.push(F.sub(ciphertext[i * 3 + 1], state[2])); + message.push(F.sub(ciphertext[i * 3 + 2], state[3])); + + // Modify the state + state[1] = ciphertext[i * 3]; + state[2] = ciphertext[i * 3 + 1]; + state[3] = ciphertext[i * 3 + 2]; + } + + // If length > 3, check if the last (3 - (l mod 3)) elements of the message + // are 0 + if (length > 3) { + if (length % 3 === 2) { + assert(F.eq(message[message.length - 1], F.zero)); + } else if (length % 3 === 1) { + assert(F.eq(message[message.length - 1], F.zero)); + assert(F.eq(message[message.length - 2], F.zero)); + } + } + + // Iterate Poseidon on the state one last time + state = poseidonPerm(state); + + // Check the last ciphertext element + assert(F.eq(ciphertext[ciphertext.length - 1], state[1])); + + return message.slice(0, length); +} + +export { encrypt, decrypt }; diff --git a/packages/app/src/jubjublib/poseidonencryption/poseidonPerm.ts b/packages/app/src/jubjublib/poseidonencryption/poseidonPerm.ts new file mode 100644 index 00000000..431670eb --- /dev/null +++ b/packages/app/src/jubjublib/poseidonencryption/poseidonPerm.ts @@ -0,0 +1,51 @@ +import {Scalar, ZqField , utils as ffutils} from "ffjavascript"; +import poseidon_constants from "./poseidon_constants.json"; + +const assert = (condition: boolean) => { + if (!condition) { + throw new Error('Assertion failed') + } +} +// const { } = require("ffjavascript").utils; + +// Prime 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 +const F = new ZqField(Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617")); + +// Parameters are generated by a reference script https://extgit.iaik.tugraz.at/krypto/hadeshash/-/blob/master/code/generate_parameters_grain.sage +// Used like so: sage generate_parameters_grain.sage 1 0 254 2 8 56 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 +const { C, M } = ffutils.unstringifyBigInts(poseidon_constants); + +// Using recommended parameters from whitepaper https://eprint.iacr.org/2019/458.pdf (table 2, table 8) +// Generated by https://extgit.iaik.tugraz.at/krypto/hadeshash/-/blob/master/code/calc_round_numbers.py +// And rounded up to nearest integer that divides by t +const N_ROUNDS_F = 8; +const N_ROUNDS_P = [56, 57, 56, 60, 60, 63, 64, 63]; + +const pow5 = a => F.mul(a, F.square(F.square(a, a))); + +function poseidonPerm(inputs) { + assert(inputs.length > 0); + assert(inputs.length < N_ROUNDS_P.length); + + const t = inputs.length; + const nRoundsF = N_ROUNDS_F; + const nRoundsP = N_ROUNDS_P[t - 2]; + + let state = inputs.map(a => F.e(a)); + for (let r = 0; r < nRoundsF + nRoundsP; r++) { + state = state.map((a, i) => F.add(a, C[t - 2][r * t + i])); + + if (r < nRoundsF / 2 || r >= nRoundsF / 2 + nRoundsP) { + state = state.map(a => pow5(a)); + } else { + state[0] = pow5(state[0]); + } + + state = state.map((_, i) => + state.reduce((acc, a, j) => F.add(acc, F.mul(M[t - 2][i][j], a)), F.zero) + ); + } + return state.map((x) => F.normalize(x)); +} + +export { poseidonPerm }; diff --git a/packages/app/src/jubjublib/poseidonencryption/poseidon_constants.json b/packages/app/src/jubjublib/poseidonencryption/poseidon_constants.json new file mode 100644 index 00000000..d15d818d --- /dev/null +++ b/packages/app/src/jubjublib/poseidonencryption/poseidon_constants.json @@ -0,0 +1,206 @@ +{ + "C": [ + ["0x09c46e9ec68e9bd4fe1faaba294cba38a71aa177534cdd1b6c7dc0dbd0abd7a7", "0x0c0356530896eec42a97ed937f3135cfc5142b3ae405b8343c1d83ffa604cb81", "0x1e28a1d935698ad1142e51182bb54cf4a00ea5aabd6268bd317ea977cc154a30", "0x27af2d831a9d2748080965db30e298e40e5757c3e008db964cf9e2b12b91251f", "0x1e6f11ce60fc8f513a6a3cfe16ae175a41291462f214cd0879aaf43545b74e03", "0x2a67384d3bbd5e438541819cb681f0be04462ed14c3613d8f719206268d142d3", "0x0b66fdf356093a611609f8e12fbfecf0b985e381f025188936408f5d5c9f45d0", "0x012ee3ec1e78d470830c61093c2ade370b26c83cc5cebeeddaa6852dbdb09e21", "0x0252ba5f6760bfbdfd88f67f8175e3fd6cd1c431b099b6bb2d108e7b445bb1b9", "0x179474cceca5ff676c6bec3cef54296354391a8935ff71d6ef5aeaad7ca932f1", "0x2c24261379a51bfa9228ff4a503fd4ed9c1f974a264969b37e1a2589bbed2b91", "0x1cc1d7b62692e63eac2f288bd0695b43c2f63f5001fc0fc553e66c0551801b05", "0x255059301aada98bb2ed55f852979e9600784dbf17fbacd05d9eff5fd9c91b56", "0x28437be3ac1cb2e479e1f5c0eccd32b3aea24234970a8193b11c29ce7e59efd9", "0x28216a442f2e1f711ca4fa6b53766eb118548da8fb4f78d4338762c37f5f2043", "0x2c1f47cd17fa5adf1f39f4e7056dd03feee1efce03094581131f2377323482c9", "0x07abad02b7a5ebc48632bcc9356ceb7dd9dafca276638a63646b8566a621afc9", "0x0230264601ffdf29275b33ffaab51dfe9429f90880a69cd137da0c4d15f96c3c", "0x1bc973054e51d905a0f168656497ca40a864414557ee289e717e5d66899aa0a9", "0x2e1c22f964435008206c3157e86341edd249aff5c2d8421f2a6b22288f0a67fc", "0x1224f38df67c5378121c1d5f461bbc509e8ea1598e46c9f7a70452bc2bba86b8", "0x02e4e69d8ba59e519280b4bd9ed0068fd7bfe8cd9dfeda1969d2989186cde20e", "0x1f1eccc34aaba0137f5df81fc04ff3ee4f19ee364e653f076d47e9735d98018e", "0x1672ad3d709a353974266c3039a9a7311424448032cd1819eacb8a4d4284f582", "0x283e3fdc2c6e420c56f44af5192b4ae9cda6961f284d24991d2ed602df8c8fc7", "0x1c2a3d120c550ecfd0db0957170fa013683751f8fdff59d6614fbd69ff394bcc", "0x216f84877aac6172f7897a7323456efe143a9a43773ea6f296cb6b8177653fbd", "0x2c0d272becf2a75764ba7e8e3e28d12bceaa47ea61ca59a411a1f51552f94788", "0x16e34299865c0e28484ee7a74c454e9f170a5480abe0508fcb4a6c3d89546f43", "0x175ceba599e96f5b375a232a6fb9cc71772047765802290f48cd939755488fc5", "0x0c7594440dc48c16fead9e1758b028066aa410bfbc354f54d8c5ffbb44a1ee32", "0x1a3c29bc39f21bb5c466db7d7eb6fd8f760e20013ccf912c92479882d919fd8d", "0x0ccfdd906f3426e5c0986ea049b253400855d349074f5a6695c8eeabcd22e68f", "0x14f6bc81d9f186f62bdb475ce6c9411866a7a8a3fd065b3ce0e699b67dd9e796", "0x0962b82789fb3d129702ca70b2f6c5aacc099810c9c495c888edeb7386b97052", "0x1a880af7074d18b3bf20c79de25127bc13284ab01ef02575afef0c8f6a31a86d", "0x10cba18419a6a332cd5e77f0211c154b20af2924fc20ff3f4c3012bb7ae9311b", "0x057e62a9a8f89b3ebdc76ba63a9eaca8fa27b7319cae3406756a2849f302f10d", "0x287c971de91dc0abd44adf5384b4988cb961303bbf65cff5afa0413b44280cee", "0x21df3388af1687bbb3bca9da0cca908f1e562bc46d4aba4e6f7f7960e306891d", "0x1be5c887d25bce703e25cc974d0934cd789df8f70b498fd83eff8b560e1682b3", "0x268da36f76e568fb68117175cea2cd0dd2cb5d42fda5acea48d59c2706a0d5c1", "0x0e17ab091f6eae50c609beaf5510ececc5d8bb74135ebd05bd06460cc26a5ed6", "0x04d727e728ffa0a67aee535ab074a43091ef62d8cf83d270040f5caa1f62af40", "0x0ddbd7bf9c29341581b549762bc022ed33702ac10f1bfd862b15417d7e39ca6e", "0x2790eb3351621752768162e82989c6c234f5b0d1d3af9b588a29c49c8789654b", "0x1e457c601a63b73e4471950193d8a570395f3d9ab8b2fd0984b764206142f9e9", "0x21ae64301dca9625638d6ab2bbe7135ffa90ecd0c43ff91fc4c686fc46e091b0", "0x0379f63c8ce3468d4da293166f494928854be9e3432e09555858534eed8d350b", "0x002d56420359d0266a744a080809e054ca0e4921a46686ac8c9f58a324c35049", "0x123158e5965b5d9b1d68b3cd32e10bbeda8d62459e21f4090fc2c5af963515a6", "0x0be29fc40847a941661d14bbf6cbe0420fbb2b6f52836d4e60c80eb49cad9ec1", "0x1ac96991dec2bb0557716142015a453c36db9d859cad5f9a233802f24fdf4c1a", "0x1596443f763dbcc25f4964fc61d23b3e5e12c9fa97f18a9251ca3355bcb0627e", "0x12e0bcd3654bdfa76b2861d4ec3aeae0f1857d9f17e715aed6d049eae3ba3212", "0x0fc92b4f1bbea82b9ea73d4af9af2a50ceabac7f37154b1904e6c76c7cf964ba", "0x1f9c0b1610446442d6f2e592a8013f40b14f7c7722236f4f9c7e965233872762", "0x0ebd74244ae72675f8cde06157a782f4050d914da38b4c058d159f643dbbf4d3", "0x2cb7f0ed39e16e9f69a9fafd4ab951c03b0671e97346ee397a839839dccfc6d1", "0x1a9d6e2ecff022cc5605443ee41bab20ce761d0514ce526690c72bca7352d9bf", "0x2a115439607f335a5ea83c3bc44a9331d0c13326a9a7ba3087da182d648ec72f", "0x23f9b6529b5d040d15b8fa7aee3e3410e738b56305cd44f29535c115c5a4c060", "0x05872c16db0f72a2249ac6ba484bb9c3a3ce97c16d58b68b260eb939f0e6e8a7", "0x1300bdee08bb7824ca20fb80118075f40219b6151d55b5c52b624a7cdeddf6a7", "0x19b9b63d2f108e17e63817863a8f6c288d7ad29916d98cb1072e4e7b7d52b376", "0x015bee1357e3c015b5bda237668522f613d1c88726b5ec4224a20128481b4f7f", "0x2953736e94bb6b9f1b9707a4f1615e4efe1e1ce4bab218cbea92c785b128ffd1", "0x0b069353ba091618862f806180c0385f851b98d372b45f544ce7266ed6608dfc", "0x304f74d461ccc13115e4e0bcfb93817e55aeb7eb9306b64e4f588ac97d81f429", "0x15bbf146ce9bca09e8a33f5e77dfe4f5aad2a164a4617a4cb8ee5415cde913fc", "0x0ab4dfe0c2742cde44901031487964ed9b8f4b850405c10ca9ff23859572c8c6", "0x0e32db320a044e3197f45f7649a19675ef5eedfea546dea9251de39f9639779a", "0x0a1756aa1f378ca4b27635a78b6888e66797733a82774896a3078efa516da016", "0x044c4a33b10f693447fd17177f952ef895e61d328f85efa94254d6a2a25d93ef", "0x2ed3611b725b8a70be655b537f66f700fe0879d79a496891d37b07b5466c4b8b", "0x1f9ba4e8bab7ce42c8ecc3d722aa2e0eadfdeb9cfdd347b5d8339ea7120858aa", "0x1b233043052e8c288f7ee907a84e518aa38e82ac4502066db74056f865c5d3da", "0x2431e1cc164bb8d074031ab72bd55b4c902053bfc0f14db0ca2f97b020875954", "0x082f934c91f5aac330cd6953a0a7db45a13e322097583319a791f273965801fd", "0x2b9a0a223e7538b0a34be074315542a3c77245e2ae7cbe999ad6bb930c48997c", "0x0e1cd91edd2cfa2cceb85483b887a9be8164163e75a8a00eb0b589cc70214e7d", "0x2e1eac0f2bfdfd63c951f61477e3698999774f19854d00f588d324601cebe2f9", "0x0cbfa95f37fb74060c76158e769d6d157345784d8efdb33c23d748115b500b83", "0x08f05b3be923ed44d65ad49d8a61e9a676d991e3a77513d9980c232dfa4a4f84", "0x22719e2a070bcd0852bf8e21984d0443e7284925dc0758a325a2dd510c047ef6", "0x041f596a9ee1cb2bc060f7fcc3a1ab4c7bdbf036119982c0f41f62b2f26830c0", "0x233fd35de1be520a87628eb06f6b1d4c021be1c2d0dc464a19fcdd0986b10f89", "0x0524b46d1aa87a5e4325e0a423ebc810d31e078aa1b4707eefcb453c61c9c267", "0x2c34f424c81e5716ce47fcac894b85824227bb954b0f3199cc4486237c515211", "0x0b5f2a4b63387819207effc2b5541fb72dd2025b5457cc97f33010327de4915e", "0x22207856082ccc54c5b72fe439d2cfd6c17435d2f57af6ceaefac41fe05c659f", "0x24d57a8bf5da63fe4e24159b7f8950b5cdfb210194caf79f27854048ce2c8171", "0x0afab181fdd5e0583b371d75bd693f98374ad7097bb01a8573919bb23b79396e", "0x2dba9b108f208772998a52efac7cbd5676c0057194c16c0bf16290d62b1128ee", "0x26349b66edb8b16f56f881c788f53f83cbb83de0bd592b255aff13e6bce420b3", "0x25af7ce0e5e10357685e95f92339753ad81a56d28ecc193b235288a3e6f137db", "0x25b4ce7bd2294390c094d6a55edd68b970eed7aae88b2bff1f7c0187fe35011f", "0x22c543f10f6c89ec387e53f1908a88e5de9cef28ebdf30b18cb9d54c1e02b631", "0x0236f93e7789c4724fc7908a9f191e1e425e906a919d7a34df668e74882f87a9", "0x29350b401166ca010e7d27e37d05da99652bdae114eb01659cb497af980c4b52", "0x0eed787d65820d3f6bd31bbab547f75a65edb75d844ebb89ee1260916652363f", "0x07cc1170f13b46f2036a753f520b3291fdcd0e99bd94297d1906f656f4de6fad", "0x22b939233b1d7205f49bcf613a3d30b1908786d7f9f5d10c2059435689e8acea", "0x01451762a0aab81c8aad1dc8bc33e870740f083a5aa85438add650ace60ae5a6", "0x23506bb5d8727d4461fabf1025d46d1fe32eaa61dec7da57e704fec0892fce89", "0x2e484c44e838aea0bac06ae3f71bdd092a3709531e1efea97f8bd68907355522", "0x0f4bc7d07ebafd64379e78c50bd2e42baf4a594545cedc2545418da26835b54c", "0x1f4d3c8f6583e9e5fa76637862faaee851582388725df460e620996d50d8e74e", "0x093514e0c70711f82660d07be0e4a988fae02abc7b681d9153eb9bcb48fe7389", "0x1adab0c8e2b3bad346699a2b5f3bc03643ee83ece47228f24a58e0a347e153d8", "0x1672b1726057d99dd14709ebb474641a378c1b94b8072bac1a22dbef9e80dad2", "0x1dfd53d4576af2e38f44f53fdcab468cc5d8e2fae0acc4ee30d47b239b479c14", "0x0c6888a10b75b0f3a70a36263a37e17fe6d77d640f6fc3debc7f207753205c60", "0x1addb933a65be77092b34a7e77d12fe8611a61e00ee6848b85091ecca9d1e508", "0x00d7540dcd268a845c10ae18d1de933cf638ff5425f0afff7935628e299d1791", "0x140c0e42687e9ead01b2827a5664ca9c26fedde4acd99db1d316939d20b82c0e", "0x2f0c3a115d4317d191ba89b8d13d1806c20a0f9b24f8c5edc091e2ae56565984", "0x0c4ee778ff7c14553006ed220cf9c81008a0cff670b22b82d8c538a1dc958c61", "0x1704f2766d46f82c3693f00440ccc3609424ed26c0acc66227c3d7485de74c69", "0x2f2d19cc3ea5d78ea7a02c1b51d244abf0769c9f8544e40239b66fe9009c3cfa", "0x1ae03853b75fcaba5053f112e2a8e8dcdd7ee6cb9cfed9c7d6c766a806fc6629", "0x0971aabf795241df51d131d0fa61aa5f3556921b2d6f014e4e41a86ddaf056d5", "0x1408c316e6014e1a91d4cf6b6e0de73eda624f8380df1c875f5c29f7bfe2f646", "0x1667f3fe2edbe850248abe42b543093b6c89f1f773ef285341691f39822ef5bd", "0x13bf7c5d0d2c4376a48b0a03557cdf915b81718409e5c133424c69576500fe37", "0x07620a6dfb0b6cec3016adf3d3533c24024b95347856b79719bc0ba743a62c2c", "0x1574c7ef0c43545f36a8ca08bdbdd8b075d2959e2f322b731675de3e1982b4d0", "0x269e4b5b7a2eb21afd567970a717ceec5bd4184571c254fdc06e03a7ff8378f0"], + ["0x0ee9a592ba9a9518d05986d656f40c2114c4993c11bb29938d21d47304cd8e6e", "0x00f1445235f2148c5986587169fc1bcd887b08d4d00868df5696fff40956e864", "0x08dff3487e8ac99e1f29a058d0fa80b930c728730b7ab36ce879f3890ecf73f5", "0x2f27be690fdaee46c3ce28f7532b13c856c35342c84bda6e20966310fadc01d0", "0x2b2ae1acf68b7b8d2416bebf3d4f6234b763fe04b8043ee48b8327bebca16cf2", "0x0319d062072bef7ecca5eac06f97d4d55952c175ab6b03eae64b44c7dbf11cfa", "0x28813dcaebaeaa828a376df87af4a63bc8b7bf27ad49c6298ef7b387bf28526d", "0x2727673b2ccbc903f181bf38e1c1d40d2033865200c352bc150928adddf9cb78", "0x234ec45ca27727c2e74abd2b2a1494cd6efbd43e340587d6b8fb9e31e65cc632", "0x15b52534031ae18f7f862cb2cf7cf760ab10a8150a337b1ccd99ff6e8797d428", "0x0dc8fad6d9e4b35f5ed9a3d186b79ce38e0e8a8d1b58b132d701d4eecf68d1f6", "0x1bcd95ffc211fbca600f705fad3fb567ea4eb378f62e1fec97805518a47e4d9c", "0x10520b0ab721cadfe9eff81b016fc34dc76da36c2578937817cb978d069de559", "0x1f6d48149b8e7f7d9b257d8ed5fbbaf42932498075fed0ace88a9eb81f5627f6", "0x1d9655f652309014d29e00ef35a2089bfff8dc1c816f0dc9ca34bdb5460c8705", "0x04df5a56ff95bcafb051f7b1cd43a99ba731ff67e47032058fe3d4185697cc7d", "0x0672d995f8fff640151b3d290cedaf148690a10a8c8424a7f6ec282b6e4be828", "0x099952b414884454b21200d7ffafdd5f0c9a9dcc06f2708e9fc1d8209b5c75b9", "0x052cba2255dfd00c7c483143ba8d469448e43586a9b4cd9183fd0e843a6b9fa6", "0x0b8badee690adb8eb0bd74712b7999af82de55707251ad7716077cb93c464ddc", "0x119b1590f13307af5a1ee651020c07c749c15d60683a8050b963d0a8e4b2bdd1", "0x03150b7cd6d5d17b2529d36be0f67b832c4acfc884ef4ee5ce15be0bfb4a8d09", "0x2cc6182c5e14546e3cf1951f173912355374efb83d80898abe69cb317c9ea565", "0x005032551e6378c450cfe129a404b3764218cadedac14e2b92d2cd73111bf0f9", "0x233237e3289baa34bb147e972ebcb9516469c399fcc069fb88f9da2cc28276b5", "0x05c8f4f4ebd4a6e3c980d31674bfbe6323037f21b34ae5a4e80c2d4c24d60280", "0x0a7b1db13042d396ba05d818a319f25252bcf35ef3aeed91ee1f09b2590fc65b", "0x2a73b71f9b210cf5b14296572c9d32dbf156e2b086ff47dc5df542365a404ec0", "0x1ac9b0417abcc9a1935107e9ffc91dc3ec18f2c4dbe7f22976a760bb5c50c460", "0x12c0339ae08374823fabb076707ef479269f3e4d6cb104349015ee046dc93fc0", "0x0b7475b102a165ad7f5b18db4e1e704f52900aa3253baac68246682e56e9a28e", "0x037c2849e191ca3edb1c5e49f6e8b8917c843e379366f2ea32ab3aa88d7f8448", "0x05a6811f8556f014e92674661e217e9bd5206c5c93a07dc145fdb176a716346f", "0x29a795e7d98028946e947b75d54e9f044076e87a7b2883b47b675ef5f38bd66e", "0x20439a0c84b322eb45a3857afc18f5826e8c7382c8a1585c507be199981fd22f", "0x2e0ba8d94d9ecf4a94ec2050c7371ff1bb50f27799a84b6d4a2a6f2a0982c887", "0x143fd115ce08fb27ca38eb7cce822b4517822cd2109048d2e6d0ddcca17d71c8", "0x0c64cbecb1c734b857968dbbdcf813cdf8611659323dbcbfc84323623be9caf1", "0x028a305847c683f646fca925c163ff5ae74f348d62c2b670f1426cef9403da53", "0x2e4ef510ff0b6fda5fa940ab4c4380f26a6bcb64d89427b824d6755b5db9e30c", "0x0081c95bc43384e663d79270c956ce3b8925b4f6d033b078b96384f50579400e", "0x2ed5f0c91cbd9749187e2fade687e05ee2491b349c039a0bba8a9f4023a0bb38", "0x30509991f88da3504bbf374ed5aae2f03448a22c76234c8c990f01f33a735206", "0x1c3f20fd55409a53221b7c4d49a356b9f0a1119fb2067b41a7529094424ec6ad", "0x10b4e7f3ab5df003049514459b6e18eec46bb2213e8e131e170887b47ddcb96c", "0x2a1982979c3ff7f43ddd543d891c2abddd80f804c077d775039aa3502e43adef", "0x1c74ee64f15e1db6feddbead56d6d55dba431ebc396c9af95cad0f1315bd5c91", "0x07533ec850ba7f98eab9303cace01b4b9e4f2e8b82708cfa9c2fe45a0ae146a0", "0x21576b438e500449a151e4eeaf17b154285c68f42d42c1808a11abf3764c0750", "0x2f17c0559b8fe79608ad5ca193d62f10bce8384c815f0906743d6930836d4a9e", "0x2d477e3862d07708a79e8aae946170bc9775a4201318474ae665b0b1b7e2730e", "0x162f5243967064c390e095577984f291afba2266c38f5abcd89be0f5b2747eab", "0x2b4cb233ede9ba48264ecd2c8ae50d1ad7a8596a87f29f8a7777a70092393311", "0x2c8fbcb2dd8573dc1dbaf8f4622854776db2eece6d85c4cf4254e7c35e03b07a", "0x1d6f347725e4816af2ff453f0cd56b199e1b61e9f601e9ade5e88db870949da9", "0x204b0c397f4ebe71ebc2d8b3df5b913df9e6ac02b68d31324cd49af5c4565529", "0x0c4cb9dc3c4fd8174f1149b3c63c3c2f9ecb827cd7dc25534ff8fb75bc79c502", "0x174ad61a1448c899a25416474f4930301e5c49475279e0639a616ddc45bc7b54", "0x1a96177bcf4d8d89f759df4ec2f3cde2eaaa28c177cc0fa13a9816d49a38d2ef", "0x066d04b24331d71cd0ef8054bc60c4ff05202c126a233c1a8242ace360b8a30a", "0x2a4c4fc6ec0b0cf52195782871c6dd3b381cc65f72e02ad527037a62aa1bd804", "0x13ab2d136ccf37d447e9f2e14a7cedc95e727f8446f6d9d7e55afc01219fd649", "0x1121552fca26061619d24d843dc82769c1b04fcec26f55194c2e3e869acc6a9a", "0x00ef653322b13d6c889bc81715c37d77a6cd267d595c4a8909a5546c7c97cff1", "0x0e25483e45a665208b261d8ba74051e6400c776d652595d9845aca35d8a397d3", "0x29f536dcb9dd7682245264659e15d88e395ac3d4dde92d8c46448db979eeba89", "0x2a56ef9f2c53febadfda33575dbdbd885a124e2780bbea170e456baace0fa5be", "0x1c8361c78eb5cf5decfb7a2d17b5c409f2ae2999a46762e8ee416240a8cb9af1", "0x151aff5f38b20a0fc0473089aaf0206b83e8e68a764507bfd3d0ab4be74319c5", "0x04c6187e41ed881dc1b239c88f7f9d43a9f52fc8c8b6cdd1e76e47615b51f100", "0x13b37bd80f4d27fb10d84331f6fb6d534b81c61ed15776449e801b7ddc9c2967", "0x01a5c536273c2d9df578bfbd32c17b7a2ce3664c2a52032c9321ceb1c4e8a8e4", "0x2ab3561834ca73835ad05f5d7acb950b4a9a2c666b9726da832239065b7c3b02", "0x1d4d8ec291e720db200fe6d686c0d613acaf6af4e95d3bf69f7ed516a597b646", "0x041294d2cc484d228f5784fe7919fd2bb925351240a04b711514c9c80b65af1d", "0x154ac98e01708c611c4fa715991f004898f57939d126e392042971dd90e81fc6", "0x0b339d8acca7d4f83eedd84093aef51050b3684c88f8b0b04524563bc6ea4da4", "0x0955e49e6610c94254a4f84cfbab344598f0e71eaff4a7dd81ed95b50839c82e", "0x06746a6156eba54426b9e22206f15abca9a6f41e6f535c6f3525401ea0654626", "0x0f18f5a0ecd1423c496f3820c549c27838e5790e2bd0a196ac917c7ff32077fb", "0x04f6eeca1751f7308ac59eff5beb261e4bb563583ede7bc92a738223d6f76e13", "0x2b56973364c4c4f5c1a3ec4da3cdce038811eb116fb3e45bc1768d26fc0b3758", "0x123769dd49d5b054dcd76b89804b1bcb8e1392b385716a5d83feb65d437f29ef", "0x2147b424fc48c80a88ee52b91169aacea989f6446471150994257b2fb01c63e9", "0x0fdc1f58548b85701a6c5505ea332a29647e6f34ad4243c2ea54ad897cebe54d", "0x12373a8251fea004df68abcf0f7786d4bceff28c5dbbe0c3944f685cc0a0b1f2", "0x21e4f4ea5f35f85bad7ea52ff742c9e8a642756b6af44203dd8a1f35c1a90035", "0x16243916d69d2ca3dfb4722224d4c462b57366492f45e90d8a81934f1bc3b147", "0x1efbe46dd7a578b4f66f9adbc88b4378abc21566e1a0453ca13a4159cac04ac2", "0x07ea5e8537cf5dd08886020e23a7f387d468d5525be66f853b672cc96a88969a", "0x05a8c4f9968b8aa3b7b478a30f9a5b63650f19a75e7ce11ca9fe16c0b76c00bc", "0x20f057712cc21654fbfe59bd345e8dac3f7818c701b9c7882d9d57b72a32e83f", "0x04a12ededa9dfd689672f8c67fee31636dcd8e88d01d49019bd90b33eb33db69", "0x27e88d8c15f37dcee44f1e5425a51decbd136ce5091a6767e49ec9544ccd101a", "0x2feed17b84285ed9b8a5c8c5e95a41f66e096619a7703223176c41ee433de4d1", "0x1ed7cc76edf45c7c404241420f729cf394e5942911312a0d6972b8bd53aff2b8", "0x15742e99b9bfa323157ff8c586f5660eac6783476144cdcadf2874be45466b1a", "0x1aac285387f65e82c895fc6887ddf40577107454c6ec0317284f033f27d0c785", "0x25851c3c845d4790f9ddadbdb6057357832e2e7a49775f71ec75a96554d67c77", "0x15a5821565cc2ec2ce78457db197edf353b7ebba2c5523370ddccc3d9f146a67", "0x2411d57a4813b9980efa7e31a1db5966dcf64f36044277502f15485f28c71727", "0x002e6f8d6520cd4713e335b8c0b6d2e647e9a98e12f4cd2558828b5ef6cb4c9b", "0x2ff7bc8f4380cde997da00b616b0fcd1af8f0e91e2fe1ed7398834609e0315d2", "0x00b9831b948525595ee02724471bcd182e9521f6b7bb68f1e93be4febb0d3cbe", "0x0a2f53768b8ebf6a86913b0e57c04e011ca408648a4743a87d77adbf0c9c3512", "0x00248156142fd0373a479f91ff239e960f599ff7e94be69b7f2a290305e1198d", "0x171d5620b87bfb1328cf8c02ab3f0c9a397196aa6a542c2350eb512a2b2bcda9", "0x170a4f55536f7dc970087c7c10d6fad760c952172dd54dd99d1045e4ec34a808", "0x29aba33f799fe66c2ef3134aea04336ecc37e38c1cd211ba482eca17e2dbfae1", "0x1e9bc179a4fdd758fdd1bb1945088d47e70d114a03f6a0e8b5ba650369e64973", "0x1dd269799b660fad58f7f4892dfb0b5afeaad869a9c4b44f9c9e1c43bdaf8f09", "0x22cdbc8b70117ad1401181d02e15459e7ccd426fe869c7c95d1dd2cb0f24af38", "0x0ef042e454771c533a9f57a55c503fcefd3150f52ed94a7cd5ba93b9c7dacefd", "0x11609e06ad6c8fe2f287f3036037e8851318e8b08a0359a03b304ffca62e8284", "0x1166d9e554616dba9e753eea427c17b7fecd58c076dfe42708b08f5b783aa9af", "0x2de52989431a859593413026354413db177fbf4cd2ac0b56f855a888357ee466", "0x3006eb4ffc7a85819a6da492f3a8ac1df51aee5b17b8e89d74bf01cf5f71e9ad", "0x2af41fbb61ba8a80fdcf6fff9e3f6f422993fe8f0a4639f962344c8225145086", "0x119e684de476155fe5a6b41a8ebc85db8718ab27889e85e781b214bace4827c3", "0x1835b786e2e8925e188bea59ae363537b51248c23828f047cff784b97b3fd800", "0x28201a34c594dfa34d794996c6433a20d152bac2a7905c926c40e285ab32eeb6", "0x083efd7a27d1751094e80fefaf78b000864c82eb571187724a761f88c22cc4e7", "0x0b6f88a3577199526158e61ceea27be811c16df7774dd8519e079564f61fd13b", "0x0ec868e6d15e51d9644f66e1d6471a94589511ca00d29e1014390e6ee4254f5b", "0x2af33e3f866771271ac0c9b3ed2e1142ecd3e74b939cd40d00d937ab84c98591", "0x0b520211f904b5e7d09b5d961c6ace7734568c547dd6858b364ce5e47951f178", "0x0b2d722d0919a1aad8db58f10062a92ea0c56ac4270e822cca228620188a1d40", "0x1f790d4d7f8cf094d980ceb37c2453e957b54a9991ca38bbe0061d1ed6e562d4", "0x0171eb95dfbf7d1eaea97cd385f780150885c16235a2a6a8da92ceb01e504233", "0x0c2d0e3b5fd57549329bf6885da66b9b790b40defd2c8650762305381b168873", "0x1162fb28689c27154e5a8228b4e72b377cbcafa589e283c35d3803054407a18d", "0x2f1459b65dee441b64ad386a91e8310f282c5a92a89e19921623ef8249711bc0", "0x1e6ff3216b688c3d996d74367d5cd4c1bc489d46754eb712c243f70d1b53cfbb", "0x01ca8be73832b8d0681487d27d157802d741a6f36cdc2a0576881f9326478875", "0x1f7735706ffe9fc586f976d5bdf223dc680286080b10cea00b9b5de315f9650e", "0x2522b60f4ea3307640a0c2dce041fba921ac10a3d5f096ef4745ca838285f019", "0x23f0bee001b1029d5255075ddc957f833418cad4f52b6c3f8ce16c235572575b", "0x2bc1ae8b8ddbb81fcaac2d44555ed5685d142633e9df905f66d9401093082d59", "0x0f9406b8296564a37304507b8dba3ed162371273a07b1fc98011fcd6ad72205f", "0x2360a8eb0cc7defa67b72998de90714e17e75b174a52ee4acb126c8cd995f0a8", "0x15871a5cddead976804c803cbaef255eb4815a5e96df8b006dcbbc2767f88948", "0x193a56766998ee9e0a8652dd2f3b1da0362f4f54f72379544f957ccdeefb420f", "0x2a394a43934f86982f9be56ff4fab1703b2e63c8ad334834e4309805e777ae0f", "0x1859954cfeb8695f3e8b635dcb345192892cd11223443ba7b4166e8876c0d142", "0x04e1181763050e58013444dbcb99f1902b11bc25d90bbdca408d3819f4fed32b", "0x0fdb253dee83869d40c335ea64de8c5bb10eb82db08b5e8b1f5e5552bfd05f23", "0x058cbe8a9a5027bdaa4efb623adead6275f08686f1c08984a9d7c5bae9b4f1c0", "0x1382edce9971e186497eadb1aeb1f52b23b4b83bef023ab0d15228b4cceca59a", "0x03464990f045c6ee0819ca51fd11b0be7f61b8eb99f14b77e1e6634601d9e8b5", "0x23f7bfc8720dc296fff33b41f98ff83c6fcab4605db2eb5aaa5bc137aeb70a58", "0x0a59a158e3eec2117e6e94e7f0e9decf18c3ffd5e1531a9219636158bbaf62f2", "0x06ec54c80381c052b58bf23b312ffd3ce2c4eba065420af8f4c23ed0075fd07b", "0x118872dc832e0eb5476b56648e867ec8b09340f7a7bcb1b4962f0ff9ed1f9d01", "0x13d69fa127d834165ad5c7cba7ad59ed52e0b0f0e42d7fea95e1906b520921b1", "0x169a177f63ea681270b1c6877a73d21bde143942fb71dc55fd8a49f19f10c77b", "0x04ef51591c6ead97ef42f287adce40d93abeb032b922f66ffb7e9a5a7450544d", "0x256e175a1dc079390ecd7ca703fb2e3b19ec61805d4f03ced5f45ee6dd0f69ec", "0x30102d28636abd5fe5f2af412ff6004f75cc360d3205dd2da002813d3e2ceeb2", "0x10998e42dfcd3bbf1c0714bc73eb1bf40443a3fa99bef4a31fd31be182fcc792", "0x193edd8e9fcf3d7625fa7d24b598a1d89f3362eaf4d582efecad76f879e36860", "0x18168afd34f2d915d0368ce80b7b3347d1c7a561ce611425f2664d7aa51f0b5d", "0x29383c01ebd3b6ab0c017656ebe658b6a328ec77bc33626e29e2e95b33ea6111", "0x10646d2f2603de39a1f4ae5e7771a64a702db6e86fb76ab600bf573f9010c711", "0x0beb5e07d1b27145f575f1395a55bf132f90c25b40da7b3864d0242dcb1117fb", "0x16d685252078c133dc0d3ecad62b5c8830f95bb2e54b59abdffbf018d96fa336", "0x0a6abd1d833938f33c74154e0404b4b40a555bbbec21ddfafd672dd62047f01a", "0x1a679f5d36eb7b5c8ea12a4c2dedc8feb12dffeec450317270a6f19b34cf1860", "0x0980fb233bd456c23974d50e0ebfde4726a423eada4e8f6ffbc7592e3f1b93d6", "0x161b42232e61b84cbf1810af93a38fc0cece3d5628c9282003ebacb5c312c72b", "0x0ada10a90c7f0520950f7d47a60d5e6a493f09787f1564e5d09203db47de1a0b", "0x1a730d372310ba82320345a29ac4238ed3f07a8a2b4e121bb50ddb9af407f451", "0x2c8120f268ef054f817064c369dda7ea908377feaba5c4dffbda10ef58e8c556", "0x1c7c8824f758753fa57c00789c684217b930e95313bcb73e6e7b8649a4968f70", "0x2cd9ed31f5f8691c8e39e4077a74faa0f400ad8b491eb3f7b47b27fa3fd1cf77", "0x23ff4f9d46813457cf60d92f57618399a5e022ac321ca550854ae23918a22eea", "0x09945a5d147a4f66ceece6405dddd9d0af5a2c5103529407dff1ea58f180426d", "0x188d9c528025d4c2b67660c6b771b90f7c7da6eaa29d3f268a6dd223ec6fc630", "0x3050e37996596b7f81f68311431d8734dba7d926d3633595e0c0d8ddf4f0f47f", "0x15af1169396830a91600ca8102c35c426ceae5461e3f95d89d829518d30afd78", "0x1da6d09885432ea9a06d9f37f873d985dae933e351466b2904284da3320d8acc", "0x2796ea90d269af29f5f8acf33921124e4e4fad3dbe658945e546ee411ddaa9cb", "0x202d7dd1da0f6b4b0325c8b3307742f01e15612ec8e9304a7cb0319e01d32d60", "0x096d6790d05bb759156a952ba263d672a2d7f9c788f4c831a29dace4c0f8be5f", "0x054efa1f65b0fce283808965275d877b438da23ce5b13e1963798cb1447d25a4", "0x1b162f83d917e93edb3308c29802deb9d8aa690113b2e14864ccf6e18e4165f1", "0x21e5241e12564dd6fd9f1cdd2a0de39eedfefc1466cc568ec5ceb745a0506edc", "0x1cfb5662e8cf5ac9226a80ee17b36abecb73ab5f87e161927b4349e10e4bdf08", "0x0f21177e302a771bbae6d8d1ecb373b62c99af346220ac0129c53f666eb24100", "0x1671522374606992affb0dd7f71b12bec4236aede6290546bcef7e1f515c2320", "0x0fa3ec5b9488259c2eb4cf24501bfad9be2ec9e42c5cc8ccd419d2a692cad870", "0x193c0e04e0bd298357cb266c1506080ed36edce85c648cc085e8c57b1ab54bba", "0x102adf8ef74735a27e9128306dcbc3c99f6f7291cd406578ce14ea2adaba68f8", "0x0fe0af7858e49859e2a54d6f1ad945b1316aa24bfbdd23ae40a6d0cb70c3eab1", "0x216f6717bbc7dedb08536a2220843f4e2da5f1daa9ebdefde8a5ea7344798d22", "0x1da55cc900f0d21f4a3e694391918a1b3c23b2ac773c6b3ef88e2e4228325161"], + ["0x19b849f69450b06848da1d39bd5e4a4302bb86744edc26238b0878e269ed23e5", "0x265ddfe127dd51bd7239347b758f0a1320eb2cc7450acc1dad47f80c8dcf34d6", "0x199750ec472f1809e0f66a545e1e51624108ac845015c2aa3dfc36bab497d8aa", "0x157ff3fe65ac7208110f06a5f74302b14d743ea25067f0ffd032f787c7f1cdf8", "0x2e49c43c4569dd9c5fd35ac45fca33f10b15c590692f8beefe18f4896ac94902", "0x0e35fb89981890520d4aef2b6d6506c3cb2f0b6973c24fa82731345ffa2d1f1e", "0x251ad47cb15c4f1105f109ae5e944f1ba9d9e7806d667ffec6fe723002e0b996", "0x13da07dc64d428369873e97160234641f8beb56fdd05e5f3563fa39d9c22df4e", "0x0c009b84e650e6d23dc00c7dccef7483a553939689d350cd46e7b89055fd4738", "0x011f16b1c63a854f01992e3956f42d8b04eb650c6d535eb0203dec74befdca06", "0x0ed69e5e383a688f209d9a561daa79612f3f78d0467ad45485df07093f367549", "0x04dba94a7b0ce9e221acad41472b6bbe3aec507f5eb3d33f463672264c9f789b", "0x0a3f2637d840f3a16eb094271c9d237b6036757d4bb50bf7ce732ff1d4fa28e8", "0x259a666f129eea198f8a1c502fdb38fa39b1f075569564b6e54a485d1182323f", "0x28bf7459c9b2f4c6d8e7d06a4ee3a47f7745d4271038e5157a32fdf7ede0d6a1", "0x0a1ca941f057037526ea200f489be8d4c37c85bbcce6a2aeec91bd6941432447", "0x0c6f8f958be0e93053d7fd4fc54512855535ed1539f051dcb43a26fd926361cf", "0x123106a93cd17578d426e8128ac9d90aa9e8a00708e296e084dd57e69caaf811", "0x26e1ba52ad9285d97dd3ab52f8e840085e8fa83ff1e8f1877b074867cd2dee75", "0x1cb55cad7bd133de18a64c5c47b9c97cbe4d8b7bf9e095864471537e6a4ae2c5", "0x1dcd73e46acd8f8e0e2c7ce04bde7f6d2a53043d5060a41c7143f08e6e9055d0", "0x011003e32f6d9c66f5852f05474a4def0cda294a0eb4e9b9b12b9bb4512e5574", "0x2b1e809ac1d10ab29ad5f20d03a57dfebadfe5903f58bafed7c508dd2287ae8c", "0x2539de1785b735999fb4dac35ee17ed0ef995d05ab2fc5faeaa69ae87bcec0a5", "0x0c246c5a2ef8ee0126497f222b3e0a0ef4e1c3d41c86d46e43982cb11d77951d", "0x192089c4974f68e95408148f7c0632edbb09e6a6ad1a1c2f3f0305f5d03b527b", "0x1eae0ad8ab68b2f06a0ee36eeb0d0c058529097d91096b756d8fdc2fb5a60d85", "0x179190e5d0e22179e46f8282872abc88db6e2fdc0dee99e69768bd98c5d06bfb", "0x29bb9e2c9076732576e9a81c7ac4b83214528f7db00f31bf6cafe794a9b3cd1c", "0x225d394e42207599403efd0c2464a90d52652645882aac35b10e590e6e691e08", "0x064760623c25c8cf753d238055b444532be13557451c087de09efd454b23fd59", "0x10ba3a0e01df92e87f301c4b716d8a394d67f4bf42a75c10922910a78f6b5b87", "0x0e070bf53f8451b24f9c6e96b0c2a801cb511bc0c242eb9d361b77693f21471c", "0x1b94cd61b051b04dd39755ff93821a73ccd6cb11d2491d8aa7f921014de252fb", "0x1d7cb39bafb8c744e148787a2e70230f9d4e917d5713bb050487b5aa7d74070b", "0x2ec93189bd1ab4f69117d0fe980c80ff8785c2961829f701bb74ac1f303b17db", "0x2db366bfdd36d277a692bb825b86275beac404a19ae07a9082ea46bd83517926", "0x062100eb485db06269655cf186a68532985275428450359adc99cec6960711b8", "0x0761d33c66614aaa570e7f1e8244ca1120243f92fa59e4f900c567bf41f5a59b", "0x20fc411a114d13992c2705aa034e3f315d78608a0f7de4ccf7a72e494855ad0d", "0x25b5c004a4bdfcb5add9ec4e9ab219ba102c67e8b3effb5fc3a30f317250bc5a", "0x23b1822d278ed632a494e58f6df6f5ed038b186d8474155ad87e7dff62b37f4b", "0x22734b4c5c3f9493606c4ba9012499bf0f14d13bfcfcccaa16102a29cc2f69e0", "0x26c0c8fe09eb30b7e27a74dc33492347e5bdff409aa3610254413d3fad795ce5", "0x070dd0ccb6bd7bbae88eac03fa1fbb26196be3083a809829bbd626df348ccad9", "0x12b6595bdb329b6fb043ba78bb28c3bec2c0a6de46d8c5ad6067c4ebfd4250da", "0x248d97d7f76283d63bec30e7a5876c11c06fca9b275c671c5e33d95bb7e8d729", "0x1a306d439d463b0816fc6fd64cc939318b45eb759ddde4aa106d15d9bd9baaaa", "0x28a8f8372e3c38daced7c00421cb4621f4f1b54ddc27821b0d62d3d6ec7c56cf", "0x0094975717f9a8a8bb35152f24d43294071ce320c829f388bc852183e1e2ce7e", "0x04d5ee4c3aa78f7d80fde60d716480d3593f74d4f653ae83f4103246db2e8d65", "0x2a6cf5e9aa03d4336349ad6fb8ed2269c7bef54b8822cc76d08495c12efde187", "0x2304d31eaab960ba9274da43e19ddeb7f792180808fd6e43baae48d7efcba3f3", "0x03fd9ac865a4b2a6d5e7009785817249bff08a7e0726fcb4e1c11d39d199f0b0", "0x00b7258ded52bbda2248404d55ee5044798afc3a209193073f7954d4d63b0b64", "0x159f81ada0771799ec38fca2d4bf65ebb13d3a74f3298db36272c5ca65e92d9a", "0x1ef90e67437fbc8550237a75bc28e3bb9000130ea25f0c5471e144cf4264431f", "0x1e65f838515e5ff0196b49aa41a2d2568df739bc176b08ec95a79ed82932e30d", "0x2b1b045def3a166cec6ce768d079ba74b18c844e570e1f826575c1068c94c33f", "0x0832e5753ceb0ff6402543b1109229c165dc2d73bef715e3f1c6e07c168bb173", "0x02f614e9cedfb3dc6b762ae0a37d41bab1b841c2e8b6451bc5a8e3c390b6ad16", "0x0e2427d38bd46a60dd640b8e362cad967370ebb777bedff40f6a0be27e7ed705", "0x0493630b7c670b6deb7c84d414e7ce79049f0ec098c3c7c50768bbe29214a53a", "0x22ead100e8e482674decdab17066c5a26bb1515355d5461a3dc06cc85327cea9", "0x25b3e56e655b42cdaae2626ed2554d48583f1ae35626d04de5084e0b6d2a6f16", "0x1e32752ada8836ef5837a6cde8ff13dbb599c336349e4c584b4fdc0a0cf6f9d0", "0x2fa2a871c15a387cc50f68f6f3c3455b23c00995f05078f672a9864074d412e5", "0x2f569b8a9a4424c9278e1db7311e889f54ccbf10661bab7fcd18e7c7a7d83505", "0x044cb455110a8fdd531ade530234c518a7df93f7332ffd2144165374b246b43d", "0x227808de93906d5d420246157f2e42b191fe8c90adfe118178ddc723a5319025", "0x02fcca2934e046bc623adead873579865d03781ae090ad4a8579d2e7a6800355", "0x0ef915f0ac120b876abccceb344a1d36bad3f3c5ab91a8ddcbec2e060d8befac", "0x1797130f4b7a3e1777eb757bc6f287f6ab0fb85f6be63b09f3b16ef2b1405d38", "0x0a76225dc04170ae3306c85abab59e608c7f497c20156d4d36c668555decc6e5", "0x1fffb9ec1992d66ba1e77a7b93209af6f8fa76d48acb664796174b5326a31a5c", "0x25721c4fc15a3f2853b57c338fa538d85f8fbba6c6b9c6090611889b797b9c5f", "0x0c817fd42d5f7a41215e3d07ba197216adb4c3790705da95eb63b982bfcaf75a", "0x13abe3f5239915d39f7e13c2c24970b6df8cf86ce00a22002bc15866e52b5a96", "0x2106feea546224ea12ef7f39987a46c85c1bc3dc29bdbd7a92cd60acb4d391ce", "0x21ca859468a746b6aaa79474a37dab49f1ca5a28c748bc7157e1b3345bb0f959", "0x05ccd6255c1e6f0c5cf1f0df934194c62911d14d0321662a8f1a48999e34185b", "0x0f0e34a64b70a626e464d846674c4c8816c4fb267fe44fe6ea28678cb09490a4", "0x0558531a4e25470c6157794ca36d0e9647dbfcfe350d64838f5b1a8a2de0d4bf", "0x09d3dca9173ed2faceea125157683d18924cadad3f655a60b72f5864961f1455", "0x0328cbd54e8c0913493f866ed03d218bf23f92d68aaec48617d4c722e5bd4335", "0x2bf07216e2aff0a223a487b1a7094e07e79e7bcc9798c648ee3347dd5329d34b", "0x1daf345a58006b736499c583cb76c316d6f78ed6a6dffc82111e11a63fe412df", "0x176563472456aaa746b694c60e1823611ef39039b2edc7ff391e6f2293d2c404", "0x2ef1e0fad9f08e87a3bb5e47d7e33538ca964d2b7d1083d4fb0225035bd3f8db", "0x226c9b1af95babcf17b2b1f57c7310179c1803dec5ae8f0a1779ed36c817ae2a", "0x14bce3549cc3db7428126b4c3a15ae0ff8148c89f13fb35d35734eb5d4ad0def", "0x2debff156e276bb5742c3373f2635b48b8e923d301f372f8e550cfd4034212c7", "0x2d4083cf5a87f5b6fc2395b22e356b6441afe1b6b29c47add7d0432d1d4760c7", "0x0c225b7bcd04bf9c34b911262fdc9c1b91bf79a10c0184d89c317c53d7161c29", "0x03152169d4f3d06ec33a79bfac91a02c99aa0200db66d5aa7b835265f9c9c8f3", "0x0b61811a9210be78b05974587486d58bddc8f51bfdfebbb87afe8b7aa7d3199c", "0x203e000cad298daaf7eba6a5c5921878b8ae48acf7048f16046d637a533b6f78", "0x1a44bf0937c722d1376672b69f6c9655ba7ee386fda1112c0757143d1bfa9146", "0x0376b4fae08cb03d3500afec1a1f56acb8e0fde75a2106d7002f59c5611d4daa", "0x00780af2ca1cad6465a2171250fdfc32d6fc241d3214177f3d553ef363182185", "0x10774d9ab80c25bdeb808bedfd72a8d9b75dbe18d5221c87e9d857079bdc31d5", "0x10dc6e9c006ea38b04b1e03b4bd9490c0d03f98929ca1d7fb56821fd19d3b6e8", "0x00544b8338791518b2c7645a50392798b21f75bb60e3596170067d00141cac16", "0x222c01175718386f2e2e82eb122789e352e105a3b8fa852613bc534433ee428c", "0x2840d045e9bc22b259cfb8811b1e0f45b77f7bdb7f7e2b46151a1430f608e3c5", "0x062752f86eebe11a009c937e468c335b04554574c2990196508e01fa5860186b", "0x06041bdac48205ac87adb87c20a478a71c9950c12a80bc0a55a8e83eaaf04746", "0x04a533f236c422d1ff900a368949b0022c7a2ae092f308d82b1dcbbf51f5000d", "0x13e31d7a67232fd811d6a955b3d4f25dfe066d1e7dc33df04bde50a2b2d05b2a", "0x011c2683ae91eb4dfbc13d6357e8599a9279d1648ff2c95d2f79905bb13920f1", "0x0b0d219346b8574525b1a270e0b4cba5d56c928e3e2c2bd0a1ecaed015aaf6ae", "0x14abdec8db9c6dc970291ee638690209b65080781ef9fd13d84c7a726b5f1364", "0x1a0b70b4b26fdc28fcd32aa3d266478801eb12202ef47ced988d0376610be106", "0x278543721f96d1307b6943f9804e7fe56401deb2ef99c4d12704882e7278b607", "0x16eb59494a9776cf57866214dbd1473f3f0738a325638d8ba36535e011d58259", "0x2567a658a81ffb444f240088fa5524c69a9e53eeab6b7f8c41c3479dcf8c644a", "0x29aa1d7c151e9ad0a7ab39f1abd9cf77ab78e0215a5715a6b882ade840bb13d8", "0x15c091233e60efe0d4bbfce2b36415006a4f017f9a85388ce206b91f99f2c984", "0x16bd7d22ff858e5e0882c2c999558d77e7673ad5f1915f9feb679a8115f014cf", "0x02db50480a07be0eb2c2e13ed6ef4074c0182d9b668b8e08ffe6769250042025", "0x05e4a220e6a3bc9f7b6806ec9d6cdba186330ef2bf7adb4c13ba866343b73119", "0x1dda05ebc30170bc98cbf2a5ee3b50e8b5f70bc424d39fa4104d37f1cbcf7a42", "0x0184bef721888187f645b6fee3667f3c91da214414d89ba5cd301f22b0de8990", "0x1498a307e68900065f5e8276f62aef1c37414b84494e1577ad1a6d64341b78ec", "0x25f40f82b31dacc4f4939800b9d2c3eacef737b8fab1f864fe33548ad46bd49d", "0x09d317cc670251943f6f5862a30d2ea9e83056ce4907bfbbcb1ff31ce5bb9650", "0x2f77d77786d979b23ba4ce4a4c1b3bd0a41132cd467a86ab29b913b6cf3149d0", "0x0f53dafd535a9f4473dc266b6fccc6841bbd336963f254c152f89e785f729bbf", "0x25c1fd72e223045265c3a099e17526fa0e6976e1c00baf16de96de85deef2fa2", "0x2a902c8980c17faae368d385d52d16be41af95c84eaea3cf893e65d6ce4a8f62", "0x1ce1580a3452ecf302878c8976b82be96676dd114d1dc8d25527405762f83529", "0x24a6073f91addc33a49a1fa306df008801c5ec569609034d2fc50f7f0f4d0056", "0x25e52dbd6124530d9fc27fe306d71d4583e07ca554b5d1577f256c68b0be2b74", "0x23dffae3c423fa7a93468dbccfb029855974be4d0a7b29946796e5b6cd70f15d", "0x06342da370cc0d8c49b77594f6b027c480615d50be36243a99591bc9924ed6f5", "0x2754114281286546b75f09f115fc751b4778303d0405c1b4cc7df0d8e9f63925", "0x15c19e8534c5c1a8862c2bc1d119eddeabf214153833d7bdb59ee197f8187cf5", "0x265fe062766d08fab4c78d0d9ef3cabe366f3be0a821061679b4b3d2d77d5f3e", "0x13ccf689d67a3ec9f22cb7cd0ac3a327d377ac5cd0146f048debfd098d3ec7be", "0x17662f7456789739f81cd3974827a887d92a5e05bdf3fe6b9fbccca4524aaebd", "0x21b29c76329b31c8ef18631e515f7f2f82ca6a5cca70cee4e809fd624be7ad5d", "0x18137478382aadba441eb97fe27901989c06738165215319939eb17b01fa975c", "0x2bc07ea2bfad68e8dc724f5fef2b37c2d34f761935ffd3b739ceec4668f37e88", "0x2ddb2e376f54d64a563840480df993feb4173203c2bd94ad0e602077aef9a03e", "0x277eb50f2baa706106b41cb24c602609e8a20f8d72f613708adb25373596c3f7", "0x0d4de47e1aba34269d0c620904f01a56b33fc4b450c0db50bb7f87734c9a1fe5", "0x0b8442bfe9e4a1b4428673b6bd3eea6f9f445697058f134aae908d0279a29f0c", "0x11fe5b18fbbea1a86e06930cb89f7d4a26e186a65945e96574247fddb720f8f5", "0x224026f6dfaf71e24d25d8f6d9f90021df5b774dcad4d883170e4ad89c33a0d6", "0x0b2ca6a999fe6887e0704dad58d03465a96bc9e37d1091f61bc9f9c62bbeb824", "0x221b63d66f0b45f9d40c54053a28a06b1d0a4ce41d364797a1a7e0c96529f421", "0x30185c48b7b2f1d53d4120801b047d087493bce64d4d24aedce2f4836bb84ad4", "0x23f5d372a3f0e3cba989e223056227d3533356f0faa48f27f8267318632a61f0", "0x2716683b32c755fd1bf8235ea162b1f388e1e0090d06162e8e6dfbe4328f3e3b", "0x0977545836866fa204ca1d853ec0909e3d140770c80ac67dc930c69748d5d4bc", "0x1444e8f592bdbfd8025d91ab4982dd425f51682d31472b05e81c43c0f9434b31", "0x26e04b65e9ca8270beb74a1c5cb8fee8be3ffbfe583f7012a00f874e7718fbe3", "0x22a5c2fa860d11fe34ee47a5cd9f869800f48f4febe29ad6df69816fb1a914d2", "0x174b54d9907d8f5c6afd672a738f42737ec338f3a0964c629f7474dd44c5c8d7", "0x1db1db8aa45283f31168fa66694cf2808d2189b87c8c8143d56c871907b39b87", "0x1530bf0f46527e889030b8c7b7dfde126f65faf8cce0ab66387341d813d1bfd1", "0x0b73f613993229f59f01c1cec8760e9936ead9edc8f2814889330a2f2bade457", "0x29c25a22fe2164604552aaea377f448d587ab977fc8227787bd2dc0f36bcf41e", "0x2b30d53ed1759bfb8503da66c92cf4077abe82795dc272b377df57d77c875526", "0x12f6d703b5702aab7b7b7e69359d53a2756c08c85ede7227cf5f0a2916787cd2", "0x2520e18300afda3f61a40a0b8837293a55ad01071028d4841ffa9ac706364113", "0x1ec9daea860971ecdda8ed4f346fa967ac9bc59278277393c68f09fa03b8b95f", "0x0a99b3e178db2e2e432f5cd5bef8fe4483bf5cbf70ed407c08aae24b830ad725", "0x07cda9e63db6e39f086b89b601c2bbe407ee0abac3c817a1317abad7c5778492", "0x08c9c65a4f955e8952d571b191bb0adb49bd8290963203b35d48aab38f8fc3a3", "0x2737f8ce1d5a67b349590ddbfbd709ed9af54a2a3f2719d33801c9c17bdd9c9e", "0x1049a6c65ff019f0d28770072798e8b7909432bd0c129813a9f179ba627f7d6a", "0x18b4fe968732c462c0ea5a9beb27cecbde8868944fdf64ee60a5122361daeddb", "0x2ff2b6fd22df49d2440b2eaeeefa8c02a6f478cfcf11f1b2a4f7473483885d19", "0x2ec5f2f1928fe932e56c789b8f6bbcb3e8be4057cbd8dbd18a1b352f5cef42ff", "0x265a5eccd8b92975e33ad9f75bf3426d424a4c6a7794ee3f08c1d100378e545e", "0x2405eaa4c0bde1129d6242bb5ada0e68778e656cfcb366bf20517da1dfd4279c", "0x094c97d8c194c42e88018004cbbf2bc5fdb51955d8b2d66b76dd98a2dbf60417", "0x2c30d5f33bb32c5c22b9979a605bf64d508b705221e6a686330c9625c2afe0b8", "0x01a75666f6241f6825d01cc6dcb1622d4886ea583e87299e6aa2fc716fdb6cf5", "0x0a3290e8398113ea4d12ac091e87be7c6d359ab9a66979fcf47bf2e87d382fcb", "0x154ade9ca36e268dfeb38461425bb0d8c31219d8fa0dfc75ecd21bf69aa0cc74", "0x27aa8d3e25380c0b1b172d79c6f22eee99231ef5dc69d8dc13a4b5095d028772", "0x2cf4051e6cab48301a8b2e3bca6099d756bbdf485afa1f549d395bbcbd806461", "0x301e70f729f3c94b1d3f517ddff9f2015131feab8afa5eebb0843d7f84b23e71", "0x298beb64f812d25d8b4d9620347ab02332dc4cef113ae60d17a8d7a4c91f83bc", "0x1b362e72a5f847f84d03fd291c3c471ed1c14a15b221680acf11a3f02e46aa95", "0x0dc8a2146110c0b375432902999223d5aa1ef6e78e1e5ebcbc1d9ba41dc1c737", "0x0a48663b34ce5e1c05dc93092cb69778cb21729a72ddc03a08afa1eb922ff279", "0x0a87391fb1cd8cdf6096b64a82f9e95f0fe46f143b702d74545bb314881098ee", "0x1b5b2946f7c28975f0512ff8e6ca362f8826edd7ea9c29f382ba8a2a0892fd5d", "0x01001cf512ac241d47ebe2239219bc6a173a8bbcb8a5b987b4eac1f533315b6b", "0x2fd977c70f645db4f704fa7d7693da727ac093d3fb5f5febc72beb17d8358a32", "0x23c0039a3fab4ad3c2d7cc688164f39e761d5355c05444d99be763a97793a9c4", "0x19d43ee0c6081c052c9c0df6161eaac1aec356cf435888e79f27f22ff03fa25d", "0x2d9b10c2f2e7ac1afddccffd94a563028bf29b646d020830919f9d5ca1cefe59", "0x2457ca6c2f2aa30ec47e4aff5a66f5ce2799283e166fc81cdae2f2b9f83e4267", "0x0abc392fe85eda855820592445094022811ee8676ed6f0c3044dfb54a7c10b35", "0x19d2cc5ca549d1d40cebcd37f3ea54f31161ac3993acf3101d2c2bc30eac1eb0", "0x0f97ae3033ffa01608aafb26ae13cd393ee0e4ec041ba644a3d3ab546e98c9c8", "0x16dbc78fd28b7fb8260e404cf1d427a7fa15537ea4e168e88a166496e88cfeca", "0x240faf28f11499b916f085f73bc4f22eef8344e576f8ad3d1827820366d5e07b", "0x0a1bb075aa37ff0cfe6c8531e55e1770eaba808c8fdb6dbf46f8cab58d9ef1af", "0x2e47e15ea4a47ff1a6a853aaf3a644ca38d5b085ac1042fdc4a705a7ce089f4d", "0x166e5bf073378348860ca4a9c09d39e1673ab059935f4df35fb14528375772b6", "0x18b42d7ffdd2ea4faf235902f057a2740cacccd027233001ed10f96538f0916f", "0x089cb1b032238f5e4914788e3e3c7ead4fc368020b3ed38221deab1051c37702", "0x242acd3eb3a2f72baf7c7076dd165adf89f9339c7b971921d9e70863451dd8d1", "0x174fbb104a4ee302bf47f2bd82fce896eac9a068283f326474af860457245c3b", "0x17340e71d96f466d61f3058ce092c67d2891fb2bb318613f780c275fe1116c6b", "0x1e8e40ac853b7d42f00f2e383982d024f098b9f8fd455953a2fd380c4df7f6b2", "0x0529898dc0649907e1d4d5e284b8d1075198c55cad66e8a9bf40f92938e2e961", "0x2162754db0baa030bf7de5bb797364dce8c77aa017ee1d7bf65f21c4d4e5df8f", "0x12c7553698c4bf6f3ceb250ae00c58c2a9f9291efbde4c8421bef44741752ec6", "0x292643e3ba2026affcb8c5279313bd51a733c93353e9d9c79cb723136526508e", "0x00ccf13e0cb6f9d81d52951bea990bd5b6c07c5d98e66ff71db6e74d5b87d158", "0x185d1e20e23b0917dd654128cf2f3aaab6723873cb30fc22b0f86c15ab645b4b", "0x14c61c836d55d3df742bdf11c60efa186778e3de0f024c0f13fe53f8d8764e1f", "0x0f356841b3f556fce5dbe4680457691c2919e2af53008184d03ee1195d72449e", "0x1b8fd9ff39714e075df124f887bf40b383143374fd2080ba0c0a6b6e8fa5b3e8", "0x0e86a8c2009c140ca3f873924e2aaa14fc3c8ae04e9df0b3e9103418796f6024", "0x2e6c5e898f5547770e5462ad932fcdd2373fc43820ca2b16b0861421e79155c8", "0x05d797f1ab3647237c14f9d1df032bc9ff9fe1a0ecd377972ce5fd5a0c014604", "0x29a3110463a5aae76c3d152875981d0c1daf2dcd65519ef5ca8929851da8c008", "0x2974da7bc074322273c3a4b91c05354cdc71640a8bbd1f864b732f8163883314", "0x1ed0fb06699ba249b2a30621c05eb12ca29cb91aa082c8bfcce9c522889b47dc", "0x1c793ef0dcc51123654ff26d8d863feeae29e8c572eca912d80c8ae36e40fe9b", "0x1e6aac1c6d3dd3157956257d3d234ef18c91e82589a78169fbb4a8770977dc2f", "0x1a20ada7576234eee6273dd6fa98b25ed037748080a47d948fcda33256fb6bf5", "0x191033d6d85ceaa6fc7a9a23a6fd9996642d772045ece51335d49306728af96c", "0x006e5979da7e7ef53a825aa6fddc3abfc76f200b3740b8b232ef481f5d06297b", "0x0b0d7e69c651910bbef3e68d417e9fa0fbd57f596c8f29831eff8c0174cdb06d", "0x25caf5b0c1b93bc516435ec084e2ecd44ac46dbbb033c5112c4b20a25c9cdf9d", "0x12c1ea892cc31e0d9af8b796d9645872f7f77442d62fd4c8085b2f150f72472a", "0x16af29695157aba9b8bbe3afeb245feee5a929d9f928b9b81de6dadc78c32aae", "0x0136df457c80588dd687fb2f3be18691705b87ec5a4cfdc168d31084256b67dc", "0x1639a28c5b4c81166aea984fba6e71479e07b1efbc74434db95a285060e7b089", "0x03d62fbf82fd1d4313f8e650f587ec06816c28b700bdc50f7e232bd9b5ca9b76", "0x11aeeb527dc8ce44b4d14aaddca3cfe2f77a1e40fc6da97c249830de1edfde54", "0x13f9b9a41274129479c5e6138c6c8ee36a670e6bc68c7a49642b645807bfc824", "0x0e4772fa3d75179dc8484cd26c7c1f635ddeeed7a939440c506cae8b7ebcd15b", "0x1b39a00cbc81e427de4bdec58febe8d8b5971752067a612b39fc46a68c5d4db4", "0x2bedb66e1ad5a1d571e16e2953f48731f66463c2eb54a245444d1c0a3a25707e", "0x2cf0a09a55ca93af8abd068f06a7287fb08b193b608582a27379ce35da915dec", "0x2d1bd78fa90e77aa88830cabfef2f8d27d1a512050ba7db0753c8fb863efb387", "0x065610c6f4f92491f423d3071eb83539f7c0d49c1387062e630d7fd283dc3394", "0x2d933ff19217a5545013b12873452bebcc5f9969033f15ec642fb464bd607368", "0x1aa9d3fe4c644910f76b92b3e13b30d500dae5354e79508c3c49c8aa99e0258b", "0x027ef04869e482b1c748638c59111c6b27095fa773e1aca078cea1f1c8450bdd", "0x2b7d524c5172cbbb15db4e00668a8c449f67a2605d9ec03802e3fa136ad0b8fb", "0x0c7c382443c6aa787c8718d86747c7f74693ae25b1e55df13f7c3c1dd735db0f", "0x00b4567186bc3f7c62a7b56acf4f76207a1f43c2d30d0fe4a627dcdd9bd79078", "0x1e41fc29b825454fe6d61737fe08b47fb07fe739e4c1e61d0337490883db4fd5", "0x12507cd556b7bbcc72ee6dafc616584421e1af872d8c0e89002ae8d3ba0653b6", "0x13d437083553006bcef312e5e6f52a5d97eb36617ef36fe4d77d3e97f71cb5db", "0x163ec73251f85443687222487dda9a65467d90b22f0b38664686077c6a4486d5"], + ["0x0eb544fee2815dda7f53e29ccac98ed7d889bb4ebd47c3864f3c2bd81a6da891", "0x0554d736315b8662f02fdba7dd737fbca197aeb12ea64713ba733f28475128cb", "0x2f83b9df259b2b68bcd748056307c37754907df0c0fb0035f5087c58d5e8c2d4", "0x2ca70e2e8d7f39a12447ac83052451b461f15f8b41a75ef31915208f5aba9683", "0x1cb5f9319be6a45e91b04d7222271c94994196f12ed22c5d4ec719cb83ecfea9", "0x2eb4f99c69f966ebf8a42192de7ff61621c7bb47b93750c2b9ea08d18446c122", "0x224a28e5a35385a7c5198169e405d9ea0fc7da8b93ee13b6d5f7d099e299520e", "0x0f7411b465e600eed8afdd6afca49c3036f33ecbd9a0f97823796b993bbd82f7", "0x0f9d0d5aad2c9555a2be7150392d8d9819b208ae3370f99a0626f9ff5d90e4e3", "0x1e9a96dc8292bb596f52a59538d329229732b25259cf744b6a12d30702d6fba0", "0x08780514ccd90380887d578c45555e593cfe52eab4b945c6c2cd4d528fb3fe3c", "0x272498fced686c7ac8149fa3f73ef8c2ced64717e3556d5a59f119d629ccb5fc", "0x01ef8f9dd7c93aac4b7cb80930bd06eb45bd350aff585f10e3d0ef8a782ef7df", "0x045b9f59b6595e614dc08f222b469b138e886e64bf3c40aa97ea0ae754934d30", "0x0ac1e91c57d9da919fd6f59d2a40ff8ea3e41e24e247a387adf2584295d61c66", "0x028a1621a94054b0c7f9a421353cd89d0fd67061aee99979d12e68f04e62d134", "0x26b41802c071ea4c9632647ed059236e50c19c3fb3c96d09d02aae2a0dcd9dbc", "0x2fb5dda8072bb72cbaac2f63e468215e05c9de06758db6a94af34384aedb462b", "0x2212d3a0f5fccaf244ff3547fd823249ad8ab8ba2a18d383dd05c56ee894d850", "0x1b041ad5b2f0684258e4dfaeea09be56a3276fdb19f44c015cd0c7eed465e2e3", "0x0a01776bb22f4b6b8eccff33e76fded3144fb7e3ac14e846a91e64afb1500eff", "0x2b7b5674aaecc3cbf34d3f275066d549a4f33ae8c15cf827f7936440810ace43", "0x29d299b80cd4489e4cf75779ed54b48c60b042257b78fc004c1b803381a3bdfd", "0x1c46831d9a74529357641c219d721a74a427110032b5e1dd19dde30424be401e", "0x06d7626c953ccb72f37141dc34d578e036296c0657674f80739ae1d883e91269", "0x28ffddc86f18c136c54002748e0c410edc5c440a3022cd960f108c71cda2930c", "0x2e67f7ee5e4aa295f85deed09e400b17be67f1b7ed2ab6adb8ec0619f6fbc5e9", "0x26ce38fa636c90630e97f25114a79a2dca56859ef759e53ce7abf22c24e80f27", "0x2e6e07c3c95bf7c34dd7a01d00a7ffec42cb3d16a1f72721afacb4c4cfd35db1", "0x2aa74f7597f0c9f45f91d7961c3a54fb8890d276612e1246384b1470da24d8cc", "0x287d681a46a2faae2c7c090f668ab45b8a71313c1509183e2ec0ca639b7f73fe", "0x212bd19df812eaaef4a40600528f3d7da5d3106ff565aa3b11e29f3305e73c04", "0x1154f7cf519186bf1aafb14b350eb860f97fd9740926dab93809c28404713504", "0x1dff6385cb31f1c24637810a4bd1b16fbf5152905be36583da747e79661fc207", "0x0e444582d22b4e76c081d34c44c18e424011a34d5476252863ea3c606b551e5c", "0x0323c9e433ba66c4abab6638328f02f1815773e9c2846323ff72d3aab7e4eff8", "0x12746bbd71791059193bba79cdec448f25b8cf002740112db70f2c6876a9c29d", "0x1173b7d112c2a798fd9b9d3751842c75d466c837cf50d73efd049eb4438a2240", "0x13d51c1090a1ad4876d1e555d7fed13da8e5713b25026ebe5fdb4808703243da", "0x00874c1344a4ad51ff8dcb7cbd2d9743cb72743f0394efe7f4a58ebeb956baa1", "0x22df22131aaab85865ce236b07f244fa0eea48d3546e97d6a32a562074fef08f", "0x0bf964d2dbd25b908708b437a445fc3e984524a59101e6c18bf5eb05a919f155", "0x09b18d9b917a55bca302be1f7f181e0e640b9d73a9ab298c69b435b5fc502f32", "0x094f5534444fae36a4bfc1d5bf3dc05bfbbbc70a6365366dd6745a5067289e43", "0x2999bab1a5f25210519fa6622af53a15a3e240c0da5701cb784fddc0dc23f01f", "0x2f6898c07581f6371ca94db73710e88084301bce8a93d13669575a11b03a3d23", "0x07268eaaba08bc19ec16d7e1318a4740565deb1e8e5742f862174b1a6866fccb", "0x186279b003454db01339ff77113bc9eb62603e078e1c6689a6c9582c41a0529f", "0x18a3f736509197d6e4915bdd04d3e5ddb67e2cc5de9a22750768e5524737172c", "0x0a21fa1988cf38d877cc1e2ed24c808c725e2d4bcb2d3a007b5987b87085671d", "0x15b285cbe26c467f1faf5ef6a64625228328c184a2c43bc00b36a135e785fba2", "0x164b7062c4671cf08c08b8c3f9806d560b7775b7c902f5788cd28de3e779f161", "0x0890ba0819ac0a6f86d9865fe7e50ef361c61d3d43b6e65d7a24f651249baa70", "0x2fbea4d65d7ed425a42712e5a721e4eaa627ac5cb0eb878ccc2ee0aed543e922", "0x0492bf383c36fa55540303a3b536f85e7b70a58e854ab9b9103d7f5f379abaaa", "0x05e91fe944e944104e20251c565142d61d6185a9ce85675f6a969d56292dc24e", "0x12fe5c2029e4b33893d463cb041acad0995b9621e6e49c3b7e380a76e36e6c1c", "0x024154adf0255d47958f7723921474131f2629fadc89496906cd01dc6fa0784e", "0x18824a09e6afaf4a36ed2462a86bd0bad798815644f2bbde8813c13457a45550", "0x0c8b482dba0ad51be9f255de0c3dbddddf84a630af68d50bbb06983e3d5d58a5", "0x17325fd0ab635871363e0a1667d3b67c5a4fa67fcd6aaf86441392878fdb05e6", "0x050ae95f6d2f1519122f5af67b690f31e550773fa8d18bf71cc6d0e911fa402e", "0x0f0d139a0e81e943038cb288d62636764bbb6295f07569885771ec84edc50c40", "0x1c0f8697795689cdf70fd2f2c0f93d1a79b39ebc7a1b1c549dbbca7b8e747cd6", "0x2bd0f940ad936b796d2bc2e048bc979e49be23a4b13598f9fe536a16dc1d81e6", "0x27eb1be27c9c4e934778c09a0053337fa06ebb275e096d167ce54d1e96ee62cb", "0x2e4889d830a67e5a8f96bdd3155a7ca3284fbd307d1f71b0f151be62548e2aea", "0x193fe3db0ab47d3c5d2ec5e9c5bd9983c9891f2cadc165db6064bbe6fcc1e305", "0x2bf3086e96c36c7bce415907ad0c40ed6e9661c009679e4e37cb13027c83e525", "0x12f16e2de6d4ad46a98cdb697c6cad5dd5e7e413f741ccf29ff2ea486e59bb28", "0x2a72147d230119f3a0262e3653ddd19f33f3d5d6ec6c4bf0ad919b0343b92d2f", "0x21be0e2c4bfd64e56dc47f957806dc5f0a2d9bcc26412e2977df79acc10ba974", "0x0e2d7e1dc946d70b2749a3b54367b25a71b84fb911aa57ae137fd4b6c21b444a", "0x2667f7fb5a4fa1246170a745d8a4188cc31adb0eae3325dc9f3f07d4b92b3e2e", "0x2ccc6f431fb7400730a783b66064697a1550c12b08dfeb72830e107da78e3405", "0x08888a94fc5a2ca34f0201462420001fae6dbee9e8ca0c242ec50621e38e6e5d", "0x02977b34eeaa3cb6ad40dd42c9b6fdd7a0d2fbe753af88b36acfcd3ccbc53f2a", "0x120ccce13d28b75cfd6fb6c9ea13a648bfcfe0d7e6ff8e9610b5e9f971e16b9a", "0x09fad2269c4a8e93c81e1b9770ea098c92787a4575b2bd73a0bf2af32f86ff3c", "0x026091fd3d4c44d50a4b310e4ac6f0fa0debdb70775eeb8af630cffb60092d6f", "0x29404aa2ba565b77bb7fba9dfb6fc3212543cc56afad6afcb904fd2bca893994", "0x2749475c399aaf39d4e87c2548695b4ef1ffd86590e0827de7201351b7c883f9", "0x098c842322479f7239912b50424685cba2ebe2dc2e4da70ac7557dab65ffa222", "0x18cef581222b647e31238e57fead7d5c758ace14c93c4da40191d0c053b51936", "0x13177839c68a5080d4e746745e43711d3cbc0ca4a108f98d63b2aa681698de60", "0x020ca696f531e43ec088f56f4b74325626cc4df712c0e5f0a907d88e5f0deffd", "0x27230eede9cccfc9fa805a30fc548db693d13708c646841d16e028387c7ac022", "0x01645911c1198b01d64fde34a342a1786497c05969a015439057d2fe75bb281c", "0x2c323fe16481bf496e439c88341ce25f198971e14487056cfdca4a451a5d8643", "0x0fc082dfe70728e8450bd2074c3e22e1b022c124d3bffe8b5af88ae6db5085c8", "0x2052c174800db209d8cdca568dcc25b3be9642116ac4c77efe8a488b423521ee", "0x28e420e10df2fbb5af96d621d55423190be351ce8129065a8dd9fd05b3ece9c0", "0x25698ca5e24a1b799f783c4462a24db655d6ae1bdacd1cb549d6e0bc3ae5069a", "0x160a9981a5c89a57cf8ffbfa57d51049a297b61074422ac134d9b857d6984d35", "0x21c91a39e145c3bc34d9b694b843f3bf8b7cebf59ddbb0a064642b069997f3d4", "0x1ac8d80dcd5ee876d2b09345ef112345d6eaa029d93f03b6d10975461e41734c", "0x0ab3e6ad0ecf8b8e7c1662a4174c52225d822895e2755544b8dbcea5657ce02c", "0x1c675182512620ae27e3b0b917b3a21ca52ef3ef5909b4e1c5b2237cbdab3377", "0x2cdbc998dfd7affd3d948d0c85bad2e2e37a4a3e07a7d75d0c8a9092ac2bed45", "0x23b584a56e2117b0774bf67cc0dee33324337350309dff833e491a133bb63b2e", "0x1e9e2b310f60ba9f8cb73030a3c9d2a10d133bc6ba4ec1152f3d20de1465e9a5", "0x0e01e365ba5b3031abc3e720140ae746c9ab5dab987520c460bcd4f1fa5b22db", "0x040884cdcfc64bfc7b7127340498d5c443382011b61c9a4b1387d85bc1264e68", "0x190b1ee1205eb9500c74a3998f2bea36353f1724d6067ed0a0a17de311ef9668", "0x1647c72aec6c4388d04f52fc23cd9c08c1dfcf65ce61e165fc28d1f832bd3b2c", "0x2430006346a0145f799880cc4c8736269f5494d89fb48b02842e595b71e4541d", "0x177b9a08343917e1365107a3da3ae7f69d853902bb16bacb3221850252b757af", "0x04a420e642b11ae94e58862a68f5e32609cd53d0ae29423439b11d04666df4f8", "0x25d0e0f739fb39fc105a88fab0afd810de2461858e956ccccdfabeddb6a25c8f", "0x04476d91b7eff2fd85905cbf58651edc320cb15610eaed452c4d4ffa0c740a27", "0x1090c0b68b3d7d7b8bc9ca2419eb8dea1c28f6d5e1250cb5e9780fd9ca286fae", "0x25393ce3b9256d50448a725c5c7cd5ad376f2d435855c10ebf2899cb5c6617be", "0x25931c0c7371f4f1fc862f306e6e5830ed824388d6b9342697d144f0fab46630", "0x2396cb501700bbe6c82aad51b0fb79cf8a4d353185d5808203f73f22afbf62f6", "0x26a363483348b58954ea748a7129a7b0a3dc9068c3cca7b5b3f0ce03b8724884", "0x27ca107ca204f2a18d6f1535b92c5478c99b893334215f6ba7a0e5b45fcd6897", "0x26da28fc097ed77ce4662bde326b2cceac15f7301178581d8d2d02b3b2d91056", "0x056ab351691d8bb3703e3055070ac9cc655774c1bb35d57572971ba56ee0cb89", "0x2638b57f23b754aec76d109a2f481aa3c22547a11ffc50152d729af632376a90", "0x304754bb8c57d60732f492c2605184fdc33e46a532bdec80ea7bc5519ede7cef", "0x00d1727f8457ee03514f155b5806cbf748ec6857fc554010752ac93a9b7619ac", "0x00ee1f3c66fbc05c43ba295a303c72fab5bca86805ec9419c588e50947761fa3", "0x0afafadcf5b4dd4a4a76b5a1d82415fd10a19fbcfc59078c61f9297eb675d972", "0x0b2449f39746085e86ce45e8eed108ee65a234835a0a6a5ea8996d124dd04d0a", "0x206b0ce2f1b2c5b7c9f37b0045227095f6c6f071ec3bdda76a7ddf4823dd5dd6", "0x0feba4fb87834c7cb696e67433628cd6caffc3a4ef20fea852c7e1029459409c", "0x254dbfac74c49b0b8926752e084e02513b06f1315e6d70e18173e972336e55d3", "0x0addb1372cee4e164655168c367559e19606c5bd17910aeb37719edfa0ca8762", "0x26b25b7e257f3e97c799024fb019f65c6ca4d8d81b1ae16221a589d68831d759", "0x090995b79acec240413b8d4c658787e5a4657b9ab00bdb5b1960b1059e113ba3", "0x08dbdc2e21ef11f2c57299687843cea3eb0d8e40e99131f42974178d44f73b7b", "0x09e8aba671481197679faf752a0f78e342fe9c491596ab6758f170939785179f", "0x1deb05180e833e45659052a7ebaf816c7efd12a7f9eec94b7bc7c683f1363d5c", "0x19a70ec6bdfc9098a926efbcc04aa9ee248997e8b2c24af335fd6523e5250879", "0x21d773660adafb8a879986f9aab4890566353a3777d8a3f1eb93abe10bbf1f64", "0x09f1890f72e9dc713e20ba637b89d5d397a6b01fcd667347f6f46617841c3901", "0x05af459361eb454d2a300c61e446998d48fa1f897bf219d608c2145c33b111c3", "0x0fa1a1d6829f0345664a66dc75a657335f336f15f340756cfa12fc850cc8b513", "0x02e47a35bcc0c3a0bda0b1c0307ad543f4280fcf87f636f853655cf97a628bb0", "0x14f773e9834c6bdeb8f90e78bf4c24b7203411460112491036621895204d0f12", "0x102d98cf502ed843255cf19d29bc7d8e642abe7cfd639992ffb091962fc8f7cc", "0x043dd5f4aa5a76dd4c47f6c65da7ca2320d4c73ad3294738cba686a7e91373c2", "0x21833819c3337194a6c0d29a48d4f2676f0e7c79743a306f4cfdb2b26bd11efa", "0x0f281925cf5ee649b474a6819d116ca3eb4eca246c311ecadc53262a3cff2b53", "0x0d3e2477a7b10beb44709c7746d6824edf625dd60504d5dc93ce662f15c238d6", "0x2cd7f641bedbf66956ff8a01be9cde35d80f80ab51e73b49acbfc3eff5aefc44", "0x29e95b492bf2f95f4d09380f98b74e389149d24045811d7a86dd861310463cf8", "0x22da66bc62e8f011266efca86a6c810f9ae4c51af6ffeb57f8b3c50df83cc13e", "0x0fe6d30de7a82d163023491794f4aca3220db79e8129df3643072d841925554a", "0x0050e842a1299909123c46eff185c23ad312d03fef1adfecc7e07ecb298fd67f", "0x2130a3a7b3221222be34cc53a42d7733666f9ddf714ed7c5885cbbdb63108c21", "0x2df9ee294edf99e3d8d5883fe0566c24aa66731f34a93280e1d328e67b33c9fa", "0x1bf7d6e489ad8c0cf26eb68cc21ff54158132396dc250aeba4b6fc5fc3372762", "0x0c602fa155be958761eaf739617ab136cf7b807728bf7fe35d4778d311780e54", "0x2e50e2c5b36aa20532407d86b8d22d7d5154080a24972faeb63faf0121ed7f21", "0x17c2510982a7b5825710d6290ec4f782f674995ee8409b42b459123b180332e1", "0x0b0d52f03c8af7276803ecf2465b885b21337b538eabd2f6b2ab255f376b42a8", "0x0f5633df1972b9455953d88a63f80647a9ac77c6c0f85d4561972dd8fab8bd14", "0x0ebf7ad29ca13804e1422e939681155124780ff43e76e929035498130a7f1572", "0x1aff13c81bda47e80b02962173bba343e18f94bee27c8a57661b1103a720ffe2", "0x210449dbf5cf3061da2465be85505862d3f31de1a3b58ff35713be57efac6c07", "0x088230c2794e50c57d75cd6d3c7b9dbe19d1e2f1d3001044b93ad1c3ee629817", "0x1c408c256490b0a1da08dc464138dfc78cce9a9e16c7705617a4d6dbb20e7e3a", "0x074517e081eb4c1f22d1771200fb07658f7c77654d58440490dd6f557e9e3903", "0x02d04e9c21df1dbd88524bdb203691b4cee5530559d6cf0fa05adf61e12fdcbf", "0x2eb7a011b8bce91082e13ebd75de3b58eb9b4650dae9f11aa81db32cf1b67b13", "0x2efda77ed35f4af0299f75d6e8a849b54d2ac6bf95368304e6030c18f0cf17b5", "0x09199dcafd50ce642eddbeda65206d4f61a73d10852b8114c51b2440192ae064", "0x268c5cfc446d399c4dd319db666a75b5cb655d8c1797e9fa76181cb4216e1562", "0x2303a652c949071826b0e9a36c80578697b44e912cce6687012854eda11a18dc", "0x27c53563b12a6ee2c3f041f31dc45922bc5353eb110868d237073f4efb35fbdf", "0x1201a87eaf4ae618f02bd82d0a5109049969b5248cfe90f42c278f22615d2b0e", "0x2c43169439fcd69ead8214997bb069becafcb1ba2c51e5706cb4b43dab2a443d", "0x0683597315359040ea03c45d6984c6894f46cbb36d702e3c4fb9847e6304d944", "0x03545706706eab36afb93b128febd16fb0425e158314197b77795ad3a798d183", "0x1a33c254ec117619d35f1fc051b31728740bed23a6a37870edb393b71a0c0e6b", "0x1ffe6968a4470cd567b0c002281caf996e88f71e759b87e6f338e517f1690c78", "0x0fd66e03ba8808ffecb059c899fd80f4140ddd5d2a5c4483107f4e02e355b393", "0x263ab69f13b966f8197394552906b17e6c8617a7bdd5d74a7be3396b7fe013ab", "0x16a425e47d1110625054d5a165de413e3bd87d5aa3958fdd6eb7e03e39ba4046", "0x2dc510a4719ec10cad752f03c673f0e253cc31d13e39e909fcc5f73af9138d9a", "0x24df8e8d856c5b5e1bd1cad23d07dda3423c5179329b7a82cb4aa709a94576e5", "0x2bcc94ff4fc3c76f3cd5c68915a042e87628249a01b09561bdf24a6cdce5620f", "0x076c1e88dc540c8d8de54e343df7c429d3295f52c38cffe6b48be86852da97df", "0x09b5f209a451ac431c051fb12d9a5e4fe40ee1601120947da990fb8e12cb46e1", "0x205f17b0d8729e2eaa88d6a44135a6ab64e9424f55b0f1ea0683af75eb677c07", "0x281c5c688836f6cf912638c38be046cd091681f0a41761720cdd1edf9f237029", "0x1a053e6878e900f45f4d67448c471cf3009a44e7a02ea50e4afa44f2592621f5", "0x100dc7d426debe3007fb7ceac84e4f5468efcb897e7bbee981742839d59e064c", "0x17022672a016a957bb87e2cfadc8b75fb28905bdb62c82c80b1cb31b411e49c8", "0x1086db7e2760fc8b71053a87ebe151239fb8b547182b170de0c27203f954f4d2", "0x15384fe39d73b63302460ae4c2942fac2b41fb65a185536fb85dd24fd7584064", "0x2ebb599fe9136d424bf4abc5342c6c7447b1a853205fcfb5519e551357709008", "0x1b4b5e87cfb9262cfec3c0f0542e4c5a4cf278292b4ce3eed996fac6f4d37288", "0x2465053ae50b6885801f3f82e302cafbbb4a7581bb4fba60b637febe659e5057", "0x114f32edcdea09cd095c5bb5d38f1b97da9f05e18b3708bf6e0ab9d3d54859ef", "0x2bc70dfeb2baab2f6b387cd77be779ac2e5e5519f3d18123ee28d8c2543c7148", "0x01c9bf7a203ce22b775e3a61ad7e77b6a78348b9f6ec68a412e49bfe32c05415", "0x0514b0fe5909ea887bedb0295fbbcec355cfb575ff6a97cd9f4ad00ccb57ee9b", "0x267c76ec81934cc81a132a8b058910a12092520b12a201af03e3202d7b6c1b7e", "0x29170e3322b3d8d5c78c84babbb470adf1622493ce83e95cfb151cf757bde5d6", "0x019f6a8124b19e33af33e5d3873f9c335c6f09a45486cab536dd596ca41d9519", "0x1904aa4d6908544a8b348e9db1981c27009ed8ea171518ae5405d036242b60e9", "0x26f17873949bc679f7f043956694e422b3cee1de9dd6f6473b932a476455ff1a", "0x1ac668f612b8243c193b33720b8aa54040c476031197131ebdcac9b18bc48f75", "0x0996d961a75c0d07196dae45bf624766ccfbf8555be9796da52f81568ef0663d", "0x030c97e1b8cad1d4fd50d1b4383fbe6674d171f99c63febb5425b395c24fc819", "0x06e3ad6a46900e2d3953370255b68f89b3e523f1fe502642ee226f2d8bd0848f", "0x1d6b3755331cd0216b6880e42f9880f565cb94b0e0455153a329890588cc916e", "0x28e4dcba4b96f12a59b041535e730ac8c35189dc0b85ac033dd38c08bae531f2", "0x08b6086046a835508ccf484f2974b6a6b0712a476260376c7a3b3e4bc4a47a14", "0x162cd2ca7fe3b5f1444bcec97812019bb6fd85fba6a0536a89643e15b9bb3b52", "0x28f1e03baaea9bbc05af5b11937e4f5cb5c9a9c1192063d1998c01c64d483a76", "0x1bdb062778d7c15da395af2734c25faa0127d2aab4aa71366031a0bb6791ce10", "0x2375839502e09890cb2914e829627e0e0fc98870b2324a8b50329ebdd24749cb", "0x1fa8662fbcb61fb3ad7c55668dc9423a332dc87cfb2df456e92d33611ed7bb50", "0x1e4fad2dd6b0a6f1f8707f721716c8a446e2fb2c47a5138f3f7f9736079d7694", "0x211256d16c7269fd6df6f5fcdd1fa788ba3bd050059f53d261b0f5f13731ffe7", "0x2e49084b336eceaa4f8e2a2e6af08318f42060e574dda341f4a1079b12bcc5a5", "0x0ce19f54cdc39f7f3bf35192ac6808211aecea08dfe14cab758d25891fb00bb9", "0x0011c5d56c390e893cc394221261d8748dc60451e4ae4e1c84a8468bab2c14cb", "0x17d79ff06b63ac2a8a9e05ee6af3dbb7ca60e17bfa39b47514a8cd8051579b4c", "0x19a7d3a446cb5393dc74560093592b06b1a8b35cd6416a2ecab00173639015fa", "0x030c00a0933dcdba2a808b2e1b9282f331f04596d8928da7aa6c3c97237037a6", "0x16bcb447ce2d50f3ae25ad080695382e935d2d00184c4acc9370be8aab64139c", "0x12341b46b0150aa25ea4ec8715312997e62124f37cab7b6d39255b7cd66feb1d", "0x0e86d13917f44050b72a97b2bf610c84002fc28e296d1044dc89212db6a49ff4", "0x08e6eb4089d37d66d357e00b53d7f30d1052a181f8f2eb14d059025b110c7262", "0x2ea123856245f6c84738d15dd1481a0c0415ccb351a1e0cee10c48ce97ca7b18", "0x2dca72b2ebcab8c23446e00330b163104195789025413abf664db0f9c84dfa6f", "0x06ff9ed50d327e8463329f585ec924b3f2f6b4235f036fa4c64a26cbd42b6a6b", "0x246a10b7e3e0089947f7c9bda3d54df8e2a60e0cca84ea2ac630a4535afbf730", "0x22a63501c5f04b9018719ed99d700ee52f846a715ae67ad75c96b39d688b6691", "0x2f4c50477f7fd9c671799ac5d2e224cdb9164f58351d8aa140ec07e514fae937", "0x10ffb7aad1f51c7d13b17f4d876d9a1e38f0ba8a4a23d4b50cda32cad851567e", "0x0e9cefddc3c2d3bea4d39722532d5420784027352187e7af1a056935c35803ae", "0x07af84a4d3141e7ac23352e6dc6ea4afa1656f96a33c8978a3e83bdd4ba62b41", "0x2d9e31a10aebc761f8de00d14b1e566d1a39323d6e89b638e940f3ec8a22c3c5", "0x27f19a6532e66b5333db1afd592f66f1d36034b314dad8447656747be27e64c7", "0x0058fa3c8454d63354b2024c3b4a577a180ed99f8f3155cd7e4d617d47d07ffd", "0x041627b6715b780967957c080699343eb0414a205d3a175d708964956816a5d5", "0x006ac49dd9253edc7f632e57b958ccecd98201471cf1f66589888f12b727c52d", "0x0131adffd8bd7254b1d8c3616bbe3386ec0c9c0d6d25a9a4ec46a6bf18301398", "0x1c4a6f52c9fccf7a4138e413ef62a28377977ad7e25e49a3cf030e1cd8f9f5b6", "0x03f2a6be51ec677f946551b3860ea479fee048ae2078aeb7d1f7958d2c2645f6", "0x2da770aad2c2eb09391a0cb78ef3a9648a1372d8543119564d7376396b8ddc62", "0x15278463665f74cddc1802febfab02cec9d45fe866c359c738062afb75d64a03", "0x12fe278aa36544eac9731027090518d434e38ea966a08a6f8d580638ac54c773", "0x149b9c802182558a4c45d119d3f4cc7fd8587604ca4f0d6e21b06ff30b6a23b6", "0x0812e7b4d847bc8517d19319772f3c9855e044fd60dbac9a0adc4959b691dfe4", "0x02ed8d8ddeafe3d9d8df7f28a0bfaa7f555813c7e7503aea2a66973703a0c61b", "0x0ebd073ba0537b514deb6029f921029e55e5e4d9a03d6b6ba1304038662d4db8", "0x15c754d5b14b2c4205c6ba8d2ccd028255b3e792c6afa08b44ee75b62eff9f59", "0x169515c89ac5479db0ed8fa6fa311b391cc1235270f4cbc5c29e7cbc30e8732a", "0x25479fbfb3a68f982388f2621001101608bdc29f6ff037696d9161f5cd9a4fef", "0x14475c4bd520451f3c852cb0311a578ca7f8e6e972182196ce09486e94be6071", "0x045a691066cc66bec9baf2798833a1dfd3a847502aec8d5f5c4e73363d097799", "0x26029c0c267c799fb833ac8a11e3a3f0147a8ca037221b90013b8bcb37eba683", "0x163facb34ff572fbf7c946969c1c260873ce12a6a94a3e45b8101d5b948d1641", "0x2c714e96e1913b351d969320cc69d5ec13e06a6275e58688af8ee00c4240ee28", "0x1c1661e2a7ce74b75aba84665ecd2bf9ddd6268f06debfe2d52b804eff1d5fa6", "0x06a69ae795ee9bfe5e5af3e6619a47d26635b34c2a0889fea8c3c068b7dc2c71", "0x113d58535d892115c5d28b4c19a3609374dbdbadf54195c731416c85d731d46a", "0x2ab89102e2b8d5e638ff97d761da6042e534f1ff47f7917a2ca1a74063b46101", "0x03c11ca79e41fdfe962730c45e699546349031893da2b4fd39804fd6a15ad1b3", "0x27096c672621403888014ddbbbfc9da1f7f67b4d4cfe846c6adf040faaf2669c", "0x2de32ad15497aef4d504d4deeb53b13c66db790ce486130caa9dc2b57ef5be0d", "0x0dc108f2b0a280d2fd5d341310722a2d28c738dddaec9f3d255754448eefd001", "0x1869f3b763fe8164c96858a1bb9efad5bcdc3eebc409be7c7d34ca50365d832f", "0x022ed3a2d9ff31cbf82559fe6a911843b616945e16a568d48c6d33767129682d", "0x2155d6005210169e3944ed1365bd0e7292fca1f27c19c26610c6aec077d026bc", "0x0de1ba7a562a8f7acae93263f5f1b4bbec0c0556c91af3db3ea5928c8caeae85", "0x05dbb4406024beabcfce5bf46ec7da38126f740bce8d637b6351dfa7da902563", "0x05d4149baac413bed4d8dc8ad778d32c00e789e3fcd72dccc97e5427a368fd5e", "0x01cdf8b452d97c2b9be5046e7397e76ff0b6802fa941c7879212e22172c27b2e", "0x1fc6a71867027f56af8085ff81adce33c4d7c5015eced8c71b0a22279d46c07c", "0x1040bef4c642d0345d4d59a5a7a3a42ba9e185b75306d9c3568e0fda96aaafc2", "0x16b79c3a6bf316e0ff2c91b289334a4d2b21e95676431918a8081475ab8fad0d", "0x20dff1bc30f6db6b434b3a1387e3c8c6a34070e52b601fc13cbe1cdcd59f474e", "0x0212ac2ab7a6eaaec254955030a970f8062dd4171a726a8bdfb7fd8512ae060d", "0x2f29377491474442869a109c9215637cb02dc03134f0044213c8119f6996ae09", "0x0984ca6a5f9185d525ec93c33fea603273be9f3866aa284c5837d9f32d814bfa", "0x0d080a6b6b3b60700d299bd6fa81220de491361c8a6bd19ceb0ee9294b24f028", "0x0e65cd99e84b052f6789530638cb0ad821acc85b6400264dce929ed7c85a4544", "0x2e208875bc7ac1224808f72c716cd05ee30e3d20380ff6a655975da12736920b", "0x2989f3ae477c2fd376a0b0ff3d7dfac1ae2e3b894afd29f64a60d1aa8592bad5", "0x11361ce544e941379222d101e6fac0ce918106a463290a3e3a74c3cea7189459", "0x1e8d014b86cb5a7da539e10c173f6a75d122a822b8fb366c34c8bd05a2061438", "0x173f65adec8deee27ba812ad29558e23a0c2324167ef6c91212ee2c28ee98733", "0x01c36daaf9f01f1bafee8bd0c779ac3e5da5df7ad45499d0991bd695310eddd9", "0x1353acb08c05adb4aa9ab1c485bb85fff277d1a3f2fc89944a6f5741f381e562", "0x2e5abd2537207cad1860e71ea1188ee4009d33deb4f93aeb20f1c87a3b064d34", "0x191d5c5edaef42d3d02eedbb7ab8562513deb4eb34913a13421726ba8f69455c", "0x11d7f8d1f269264282a263fea6d7599d82a04c74c127de9dee7939dd2dcd089e", "0x04218fde366829ed90f79ad5e67997973445cb4cd6bc6f951bad085286cac971", "0x0070772f7cf52453048397ca5f47a202027b73b489301c3227b71c730d76d6dd", "0x038a389baef5d9a7c865b065687a1d9b67681a98cd051634c1dc04dbe3d2b861", "0x09a5eefab8b36a80cda446b2b4b59ccd0f39d00966a50beaf19860789015a6e5", "0x01b588848b8b47c8b969c145109b4b583d9ec99edfacb7489d16212c7584cd8c", "0x0b846e4a390e560f6e1af6dfc3341419545e5abfa323d817fed91e30d42954a6", "0x23a6679c7d9adb660d43a02ddb900040eb1513bc394fc4f985cabfe85ce72fe3", "0x2e0374a699197e343e5caa35f1351e9f4c3402fb7c85ecccf72f31d6fe089254", "0x0752cd899e52dc4d7f7a08af4cde3ff64b8cc0b1176bb9ec37d41913a7a27b48", "0x068f8813127299dac349a2b6d57397a50275142b664b802c99e2873dd7ae55a7", "0x2ba70a102355d549677574167434b3f986872d04a295b5b8b374330f2da202b5", "0x2c467af88748abf6a334d1df03b5521309f9099b825dd289b8609e70a0b50828", "0x05c5f20bef1bd82701009a2b448ae881e3a52c2d1a31957296d29e5763e8f497", "0x0dc6385fdc567be5842a381f6006e2c60cd083a2c649d9f23ac8c9fe61b73871", "0x142d3983f3dc7f7e19d49911b8670fa70378d5b84150d25ed255baa8114b369c", "0x29a01efb2f6aa894fd7e6d98c96a0fa0f36f86a7a99aa35c00fa18c1b2df67bf", "0x0525ffee737d605138c4a5066644ec630ab9e8afc64555b7d2a1af04eb613a76", "0x1e807dca81d79581f076677ca0e822767e164f614910264ef177cf4238301dc8", "0x0385fb3f89c74dc993510816472474d34c0223e0f733a52fdba56082dbd8757c", "0x037640dc1afc0143e1a6298e53cae59fcfabd7016fd6ef1af558f337bab0ea01", "0x1341999a1ed86919f12a6c5260829eee5fd56cf031da8050b7e4c0de896074b4", "0x069eb075866b0af356906d4bafb10ad773afd642efdcc5657b244f65bed8ece7", "0x171c0b81e62136e395b38e8e08b3e646d2726101d3afaa02ea1909a619033696", "0x2c81814c9453f51cb6eb55c311753e84cbbdcb39bfe696f95575107502acced8", "0x29d843c0415d35d9e3b33fadcf274b2ab04b39032adca92ce39b8a86a7c3a604", "0x085d6a1070f3513d8436bccdabb78750d8e15ea5947f2cdaa7669cf3fae7728b", "0x11820363ed541daa10a44ba665bf302cdbf1dd4e6706b02c9e2a5cda412fc394", "0x201935a58f5c57fc02b60d61a83785bddfd3150e05f1df5d105840b751a16317", "0x0a8c2820c56971aae27a952abd33a03d46794eedd686cd8ecfed610e87c02e9a", "0x180638ff301a64ca04abd6d0bd7500b6650b65ff33e6be1fd50dbc163a281877", "0x095c716266f1de59044f97114a4158a3f85ca8a937cfbec63e9b321a812dd36b", "0x17c31ea02fbc378320d86ffed6c7ca1583b618c5c1a687818d4087a497d73490", "0x05b86c4bb8ef318b6a7227e4192d149d3c17a9764ccd660de4d50a77f192a91b", "0x265bc95df4a4c4876ff70d7ea2fde2c7ab15f4a6ae0d237cd6ce74ba986c7a7b", "0x24752b47bc6c6bc8d9bbe48f5fef2f6908701739c5f5b4b3d6c886d4715c7929", "0x14814a1e0f492a4ea0d86e527a96482178d624b98da96ee5e583b9324d974efe", "0x10def931073b6479bd60577378f29381997c8e041d3cfb3dc7523bca906f00bd", "0x14f7ae770bf7e95f7f706c0d8ab4ed03fa0b880d28c69d031b4592c98610175f", "0x1aef50a0cee751b59f926af40e8035d19decc9d428ebe4e775c5cc9dce1ce589", "0x041935607172f68eba65ca60068dfe3b086c2a2d57d09602951214b57e73cf5a", "0x26863e9dd24255d1573bd083959b856c0493fbefe83c819837a151d3bf452cb8", "0x2036efb6f9830965eb3d7a068bd087c9f5adf251ba62052c652738e63ff8b3af", "0x0c712a975b74dc9d766b639a029969ca30be4f75a753f854b00fa4f1b4f4ee9b", "0x08014dab3cd1667e27afc99bfac1e6807afdff6456492ca3375731d387539699", "0x198d07192db4fac2a82a4a79839d6a2b97c4dd4d37b4e8f3b53009f79b34e6a4", "0x29eb1de42a3ad381b23b4131426897a32709b29d53bb946dfd15784d1f63e572"], + ["0x1448614598e00f98e7ae7dea45fbd83bd968653ef8390cde2e86b706ad40c651", "0x0ab7b291388e5c9e43c0dc1f591fb83ecdb65022e1b70af43b8a7b40c1dff7c3", "0x2b7cbb217896f52c9a8c088e654af21e84cde754a3cef5b15c4d5466612d6adf", "0x2bc6b0ddbe1d701b6570428bdc1ca1bf0da59ff3bbbb95fc2bc71c0c6e67a65c", "0x123a55a31980384f3d20b2cecbc44ed60c38c11f7d20e9271efab9a905eefd3c", "0x037501cc8c9dc819309a769f4df098e588b01858bc8eb7e279e2883be9fb8c53", "0x1c2116e47e03a86bb11695b0a5f6dab6b9a460b1eb951ab01c259eca3fd47d51", "0x2c18213489032e85a9c8cb8e9a65839bfaed13e57bc0fae49dbdaebf54f56f93", "0x2ee8fed3d4d2c71a0429eafd8e5db1718f29e2227985fdf2ad8703c835b9e031", "0x28c64d8f5ed7aac004c92029d9e9bf91ba9436d1cce94b9316d111c70a0c1714", "0x18a01d9ffb747ae0de3e83c707f8b24f682c84f15abf571b34254a03478665e0", "0x1c21d92bef197e73b234e4777b60db14e642a56cee71515d54e1ac71cde72bd3", "0x0ad404ccbcb1e195897cb60c80981ebb9d66a6677dbbedad8b6455fe62d807b1", "0x0a9b6de833064f93b6adb99af6c005945cb654cb7bd14c8b97af8b60cc1fb387", "0x13129e3f930aed6d47690331ff09dc5160efa58ddce2c3e6180d45bec3aa3a6f", "0x0d7a614c8991508ab1ce4895813bb1c82f18bf7bfc9e280ccca18079839387f1", "0x0532f7ec36e30041b0486986875c913a49bddf2f5af5febe8c31f2f4094ffea5", "0x06bbcb8e8e180201293e712f4950f1b0bbee808c9d64263c84d9d8ae155cb892", "0x0f558a4db1a3ac07f61e2e6bee947f73586bf40f211ceb4f687ca5678a9dcb33", "0x2be140a60b5b5f2f8edd78a818a969b20c643e419bcf0b577c24a0d0e7acfe98", "0x1c49c4b9a9f09f7b9ad5f74ebacc710512b8e867bace27cb0dea06e89b96f631", "0x170c1a732721b12cde7f33e476a39a1aa77a81c06e2eac503847b00d597652db", "0x19c27d0e52f65ca34f4e31a068e49331c6bfc39d9241f9d4c302041615cf27f1", "0x2f1bdc5254f9220c1a731fc5276964dab26b385fa40b6b04bed9960e2543ba08", "0x05b42d2fbccbf4d39d2be9339cabe9d0dc6d921e855cd91154b639d28d4a1cf0", "0x1220040715a41ad59f4f410e0c05a42c5fd32ac52fe9d06f88188d71f61e0935", "0x25f9526526155b83946609f7bb9507dd4925ef871dee916d9144ebb4ece1343c", "0x017bfe4284299ae7740b6d0e204951e314a8a5d0452419147978a95b34742444", "0x2a5d4764021ca71d78a9674cb6708f1588d2ceaf3578c4111cf8b359eef089cf", "0x17f02dab745fbe3c081321fe5cef845e7b8d070b2514d29b2a7b7d89cc0815da", "0x19da62626db7199b65f4adcf57fa4a3dbaa1764a7bd155708ee6f378c89ef013", "0x0f88e295fa2ed81b426c91fa69366a73edf75f39bf18634cd266ec4038829e05", "0x1fe31c5548546c7948fe4ee1bd7412e3280eff7d20cb09aa85f49f2766148017", "0x10fdc1613bdbf67f38bdde561b2f91e4cc48b59f98d643638fdc0afadbfe126e", "0x1f2618c2ebe9574508b9c52f0000e33ebfddad1a03fdd6bca6ef7f0093127bef", "0x129fe7fc3efac6a8ab23dba6d886f394da11f5953cf98e28269a0dba2a745dd3", "0x15afd4cdf1e4f820c1631d4ab85ca4ba3bafcfee72beade9fae60523102448e3", "0x1f2c74ba5c367e370d728e71e15b268851a7bb8b45528cb734956079ac99b012", "0x1130e1872d76f2f9369cf59b95edf9ce19f01fa89c9c36b26e09def6786dad3c", "0x13523d173f7e6badb73b63fc1c9bbdbee242c61bc68656493327533a5c1b1dca", "0x14da40d0af427a65f1841b5adc96538653368f7254cb5667ddadbbad7a574cd4", "0x0091f96400e4297ea85bb186c17b304e82638e57fd631ff6315976e1a5dd8b86", "0x303329bf9031c5515b9a34d49a64bb6a0267bc7b54a0deca5c450277a002cdcb", "0x14ed47e55c1da1c2f05d3c1a1b2e6c18509fc8336ecfe9db737916e283fa821b", "0x1161f10b357775d810ad53bcc4a20d5add2b03251c747deb04ee94c565e58d6b", "0x17a8a50ae72ce707f22bc070eb992851ca914eb94cc68eafbb8a96a714eb8221", "0x1a6c61d795dbaf62f99250b37ec5df88645a1c153791db6312b932dc250e4f62", "0x1f8bd2ab8aa840664c4eee198c4684dc4b05772bb2a0869da6722b15f447a133", "0x1ffcb852a4f0027a9799f131cd74b98ccfb8cbc06349d8fefcc62f10c8fb3e2f", "0x035e742ec52f19b36d489c720f467ffad77cd53bc2db5dddb246b23021f79f18", "0x1dfaaee41bdf94d783aa29fc62b7ec7b55673aa818d305fd42d175a05f2e3d86", "0x2821378477a02e995005a5635088540945bd333f2d1455f038a219b8c4796b3a", "0x1db4a4d0f238a570b1061c6eec81c02f31ffdd4a7c19e763174f238d04897421", "0x14bf7889457b20b7a1367b34a3a538217d693b52426aff40a4bb72893b1784ca", "0x2ced52c2bf296f87e57410c3ec9a9483a796d164f6049127109ff0d3a9c08465", "0x1ddeac5805a7f4ada4d0441ed108e3149d4ce6584f49ae5bdfd46d6766eea334", "0x2e36b4e5e9c97b462304e8e2b5f9dc88e1c9f2161ba040673f911123f042ae70", "0x0c6840d1cb0666dc59e89b1865275d8a164b447c5ed64347caee63502c238d5e", "0x137e2e3e89e71d461f4c9bc3e8f12183262a4d1db55c589b2caeaac01238f58c", "0x250932e7b0adcf2c84ed4bfb60a36b6b82e55aa94751157b1d45794b081c8aad", "0x170a7292f5634c06dd3bf09ab5c9c4ecd4b00d5ce2f35f972b4555391f16b42d", "0x0d68cbbe77289e78d5cbf51d70f1b75ba215df4e7bd0149d10b2c50f2a4f3b81", "0x0caf74563b90525f645a6d2036ecd1306fa1dc680b49d9ce4ed24c9749973178", "0x20a7d1c0a27fcce78ffe372f4c58306b166f9456ed46cdeb255e395b7d30d42a", "0x0623f3226b5470b2789b8a53040e44443385e96b9cfa0be4d35015158a468465", "0x1632308688c25e790f57d68a5350241242a56305347de4a5009ce46b8cdcb91f", "0x2de4793a6f99cd14e3f6642211f4d0b7bcfa361597c544ffcb5a567e9076f47f", "0x1d4d06d19ea1b09cad79086d51bde11725a554fa99559ca2f09f3bb73d728c66", "0x0480e7479a66a7cd9ea61c8b28974389908350abc4aafc18cd75e33dd130c144", "0x30430b03368ebcaa91246960490bcf917d78681463e2e7d744bfb44335dac24d", "0x0b57b37320127d4c50f269124b0dbdcb2b1f1352241a5d12103283e089c0c742", "0x2cf4890650d27240e195f60a4f698eda249b8dd614b23376b50178d2df6d2b8f", "0x1e221c5526898bfd12de86851a0d9703751a2f239008ab5f9b7d3b6911c64184", "0x28e07485ad7d992ed1a58f329ca12adce4ec693ebddbb2952e54d339f2eebda5", "0x2f44d64f84de16dc67bd5ead51efb1dc8381c84520c12854dd5ef3a079acd4e0", "0x050a76bc32ebd1dfe2be330f304edc7ace7167ab7ba1516f4021c62cf0d4fac2", "0x2f58c45e5d659a67d781367241f6c35d8cb46361d97b28947d29421c270594a9", "0x25e8da9ae0e42e840e04b230370e782bdb67534844325ba36fc7e5e160c66a74", "0x2fec734da20fe32003ea04f127f844724f38a368ba10c29544252be796040f7f", "0x288a6778f3a83988a8ed1727f15e93b4cb14f4e3a3bbb91dd6d1facafffd5eef", "0x20dcc6c75fd89259be7f406750b3db679a25a8cd2715d245b9175390ac922c84", "0x17f42ba10942df25cb8a541782a18b6fd31cf965d11178c7b04ac45b4dea5dd3", "0x028eeb85d115a904020e0c6148eec6603e9cedabc664abee764aafd455986ba5", "0x0b1d7cecf3a79b2ad3fa298f6cea7ae95d80c0299ecc918e9f8c9c3d38d59d40", "0x0440339c9764cec79c16efdb834a26261db8e3f12ce1cf722d23c0e11ff4cf07", "0x06ca647c29727c1962a002177da2d504f4b07a5f7eb57c79b88e6b7abbbdad5c", "0x2ea120a864f5c4093dd1a962e8f013c7b8ef778b04d2ba5bfc3cab28619ba9e3", "0x2bb737546c4aee7c0cc2ba87c1157e2a77c479ebfb5dc76adbb39cf8697633fd", "0x0e30da6490625d33e79cd50176f568f9a2c28c2f449a2bd51a25d15686803a93", "0x0df7ca7278a13650b919d85497b2ebb0f71035a7c20430d4131d903ab7f57521", "0x27cc589f5bf585794abace589fb8a74a2f784c0990b80fcaa6944097f870e2d5", "0x2255c36a38c8735de45cedf452afa842332d33042f78e60c43c7455421b325bf", "0x133d9602bd3378d69f681c27b05bdffc98b7d86cca63d73a60caed485784d087", "0x0e1548e942ae9d3e26860699b93727c817a9948616c93ef4accd981b1dc3d78a", "0x0f20f0e55d93689fe09ec312f6af47627482e4bde0a1602a8e2c8d6e84e8a6ae", "0x2e52328483cb5b7ff2eb4e45b12e51b26232c9bc17b7292954c0a9f6bfa51bb9", "0x02b2162d533e059a6eda2abb74712edb3a7860beea95dd8a4abfc957660804f4", "0x19e0927715d1cc6d389429947fb3737dad733974c6b2e13e5b3d432519516c74", "0x0d3a800457d77785636303b8b94f17dcffcb46048872ac9f74ef7f27ee573705", "0x2c974d1952557a1aac5f7bae4996616da619b73f441c4e504dc8fe9cfb559e32", "0x0766bfeeede2ccf3708e1b4ff30714c22c1d434cdbe8f55514babc2dd5d97bef", "0x23dac8ea54082fc131e173ae55e4630cd4ca7c871b2a0a479c1e74e7f191e62c", "0x17d5fb6c2cb37010e3e358ab2d575376870ed33186b8eae49ad3b47e340a8d7f", "0x175dcac76d8a8126139b583ae38853290246e43e783fa6903ec8007f178c0023", "0x0c4fd08fede5d221adb7abf549898c91e5be7e85bf1fd2a611bf182cc2e71655", "0x277934b909e72d3a3475bb1ec766ab7a38ad59b128303fc5002f02a65bdfe729", "0x0e88349998dfe703f1b184524f9c394d6004ccacf9cb952896e8cfdb0b078b68", "0x1f1b2078b60b0fce07824e2a2bc8cae8ee673514b0070a8b45710cc78cbb9942", "0x2eb1559566c536ddbc316f6482d51fa340557657700f5b8a846e812a0ed334d1", "0x1c4dbdc335cf6764355208b4c9d243d34541d623c669dec2c3ba066bbeaf6773", "0x2374a6b2da6f8cab8e5cfe8d805dd3a2dfca1e8b7eba5dc8574021fd1241e3b4", "0x19dd342533ccc603a99738e3fb5a569b94ef71b3e49f90fb874f6161733072f4", "0x217d66db6c7fb3effa508800587d2eb3c6d03d8385132f2fcce7f35f2705cccf", "0x0815fb8591fe01038cd3a3b38b236f9efca77c618d3bfc6c2a7fa89296c7e64f", "0x2bb943b40c2bd456a6c17853b1ca88eb0ff36f5974b2ff9a5f5093e9bf63a16f", "0x11a5153fce659513ee7cb9974ae6cba581e3b4cd14570c5709fec3d8d3fc82e9", "0x1b72bfd07635d8501b2eff8785a2495bae74c7653cf90e6d5c9f144426836df4", "0x14902c0700eec897ae178ba8caf850d793f1d87512bea0ecea39cf6b1fee233d", "0x09c138c6e0a616a49ff90d43a6b043f3b745b78865856dc4c1a45e2fd84cb3f4", "0x05b58a3dce57b281a271d69895052d887458a715783e8317e024a61a35ec10bc", "0x2be8d29525c0cfdd5e6b3125e3bde3bf558e55fbe867f024457a96765474d037", "0x061d72f78f1ba9dc6b4d7f7784225d6a81bdfc1b5ad6c24369f9c0560523d9ad", "0x0bf18aefcacffabdf4112eddadca6145738b4803b36145bb9516db501a0692e9", "0x2e73dd105fa8b2ec931d8cdf29ec679e3a9801a93071a7d5ea30659255f03bc6", "0x0f8440ef667c9ae81337ba5d8c927a5347de7296860b211cad1ecbfb5d3598ef", "0x004d303b2dea627b2731be83f93ac34e7d14d178a13800558ca7396395eb118f", "0x234541ad72040a70da2996a35269230c94699eef313a4d480508008cbc3d37c1", "0x0d123f1e72d26b92bdd8fd73d14286c312ad4c23acb46b2e08c157104409e174", "0x2fb360776f0de79d7098ee7aa4123c05ee6b05a8be460a774f3a048e138545bb", "0x03685c079434e167276c57d3cc79703b7dfdc41c156ea1e8b7f99b6956a55326", "0x260af0e0fffcc9772c1631b179344566b47aaada3681eb9034c6f75c3705c1c7", "0x2862b41374f89b695274b33b773f2554916e2bff9ff672545fc2f49563f62767", "0x02a9912fe170310227189ea1e691d0362f18b38b400b0eff192ca59513eba8d5", "0x08e513ade694a0d8ac1f3ebf1a96440d32c713d5058e1224e070348c281f4a6f", "0x140a4a431e2ee79400ed7465978d84773213c628264ff80f21ac7a6b673d09ab", "0x296af4d019cb5df7d959b29d549c3f071202b4eba8b53dc5ee979ed143377927", "0x01832e284a7f4c81614882b6939fc0f185573bd2023e3e505765470bb812b349", "0x1a84d56a67bfdd3d965abdcd329aa78d4fe93434496f2d103861fd19d66d7260", "0x040cb82847773927d2aefdc07489037a9d1f7631eca75c9fb0dda0cb9dbde143", "0x010dcf084cc29cb7caecf26aa633bce4ed2b019f2887cee7b1a78f89d3fabe2f", "0x07edc22a0911ea214425ef542b776db23b0fe5817810d40c72ca98aabd9afa83", "0x2eea4ab08aec775f2148479ea36fbb96936da58ba48bd1d2d3acd48173aaabe7", "0x1e40c0e8257fe4a61005cdcfad148cf7f47d1b5cfddfaa082738695518245f19", "0x23a27809583bd1ea51f436de5443e108f69d44cdf51dc1f03e21948b4980b876", "0x2e4652b044dbfe40e63b6b232fcd5f3f39abfbd2051ee68adc754080d49250a9", "0x11e7abdb6ecbafc2e7d8cdefe9c7b9c50475eb475db3c2caf7f7d67f485775f2", "0x199d52350cc30e8c73821f802096f0e547a13551b27bf6b899396f63ac5cf8e7", "0x0f575d6ee67cbecd98345624e032a37c859a7cbef30b3fddc949cd0978484101", "0x1c4b6f9a2ae2b418e6265acba9c96b06184d07028e5fb784f3475ae7772ff057", "0x2dcb5cf8896de39f228e157c0c5593f4626fb9bc225206383db20360abf0c925", "0x1340abb9f4e113186bdc26cbdf4bcca50b531a107f863ca544575e3cf870f8e1", "0x2368e692b72787cb8870ea888e714e006f59d2b4460cfb74c48a8cc73b1d1a5b", "0x1fab9add9baa4a4f56f23165775c6f2d922a7632a94f96374b7dc852756f54b6", "0x0c7f7b82300d3c6ce3f8957ba1e4add54c4c015e20d9765d220571c16ab8680f", "0x15d63e86beacd93c6083688e5d9c8f3c6947929f9f1f99ab578a4c3a922eff03", "0x0be843ae5f9b07e52572178af7dae8ed05d36b12c0607862929355ea74023d9e", "0x1332749c523694cb6935e0963a07e81b05967ce1d950c0b731058ec92a7a0c9a", "0x25439408810e074c0bdd4598b9815fee892bb95ca51029ecf009bffa5b9b9682", "0x057e8d19dd999a918da29b0940b383ba9fd15db0b0f64996dff67feb55f9a742", "0x1e014e37e9b117cf3b4870d999f2b55d3534d0a6be98e9e357fa43f01e70a29d", "0x1a4ed24e6e03aebcd6bdb100533dc966597afe15c851b4b863f6e889084c6479", "0x253420007083f1aa863ad4760905c1039ed4111c9f053f27710452f83ce36a90", "0x2276a1441971709affe6d2a99320001ec45ec72155c575ddeecac0e32759ab06", "0x28957dd1218ea799fd3411eb19325853adf7ae8ae1281f753302fe7d31dfa7b0", "0x2fd925726ab794c88bd75796aa3e7f1e6692f2914cf802267ddf01e37902a008", "0x1cf8a5c9c76a84b147c8238d9253cd55b47c0c43d82966c4636a28674705fd9a", "0x0373cbbc306e1bab9e7077368715e6230b4b2e2e4a1db9c674b8c359a41e9108", "0x060283d2fe7f23dff513d9110b3dc62448bc48f531ce0c1eab5920bf23290a40", "0x0dab465d6d910740f33ef6cc0eadc71bf8119bdfd5a3527dc8bbfadfaa40263c", "0x0cba7bcbc8224b2a8e4aba17977230a686cd6421dc0ca5346f3446b62439c4c3", "0x1e4365db0790c9c4f445b0653c466ff21db96c38b4076ba8bd68bcb4dea6911d", "0x1bb2dba2199a9ab3bc86ef5f9de7f6c5ca13d60eab42ced68de98fc643800a8d", "0x0ad3c1870c6d6ef40eebad52123cd1a2913d9d62e80bfbacae812e082021f9ca", "0x01b098c91e7b0cbb5c34588077c0ddf95300ddf614935630c0ce3a2627245308", "0x19fd5c0eac14fae7598bd4ceea3b1e2998b0c168493b6d72ae41b576e55b9c3f", "0x0d4749d79cc163f17110a404a46fe427c6434f3fe67b7e7b4ccfa6ab95bd7e18", "0x1ebbfe8114a41bb809e0b33399241232eb940ad8728c8a516d40ada440dbfdcf", "0x2704e5b6133d9764d6d3f17d49d833223e3937f80eb9faeabbfba9baf4b4c1b8", "0x2165e1c8027305b1ae0e323571635e5d540d13d710c3f9a390b6913f14d035e3", "0x2e3497e4d35fda596c06afa63bc3a0f2e55d4eeba4aceb60e65081ad63aa8b8a", "0x031da4345eecd6db6c0f7b07c7815d7add1fe0546d738f4d79ab5c57aa841edf", "0x089ece54e47aa5c908e43e5f08737c1436967089006acab1c9cd19eac4a20876", "0x2f53c15e2aded33c47f55a070483e6cc7f3821fbf8aa40677d0552ed9d10d847", "0x142aa34f4b2e8ad0df7a21b3e39c00c8b0aa2857094801eaafd72befed077f93", "0x17aea4da4c7bcf0d7588b014eb8b40979dd2725eda4e6ace331982467c7ff2bf", "0x0e970c19d19748d8c465104d8f02200363f9a41786f02f1827742b20dc0d1727", "0x04bcad9e553795642f59baf714a6bdb432fc45a0a0b77f1aba3a9823476df9b9", "0x242c0bfbcdaa76f715dbd4ba825c71fcfed671c1b1901fa484c87f810315d0ce", "0x25db1343c24104071023fb6ed34d9909078311e1efe85af0a11b19114fa9e790", "0x2ffe4d9c420a59e9cdc7c31ab2bf35187ca147cb898a3942deb3677786036a80", "0x125bb03af3e2cf18bbe6f5b590eb3bf8d0d1ba63be696483e98f283bc7cd07a3", "0x0816be42745b7dbb4ceffe5b8e24ea60fd8b719deba50037ac7b75948745c6bc", "0x111160f9acf6ec360d1b6a712313a0dbcbe23e64420055471d2ee4c5dedb35d4", "0x1377978e1b1f6a8925fa8e7b7941bdf8fb59ab9542342419283d8203435c9391", "0x0defc1d8882166ef3ccde53a4f236fba83d384621937cee57e421a513d0d3397", "0x2f8fa5c78c706e3a5d4a03f2a7a3953046d7e94cb88a7ef350e67b5ba0f0debf", "0x1a2a957ec0a723da61c2134bab0bf17beb00e6dcd84690c230dcb9e58da94827", "0x1cdf8710995f5e03412b4a7f699532f9fd01f0ea167a8dfc1ddf37e2805addef", "0x26fd31471828c36ae36c27b748054b0c0c4fe5239b301699e3765eebecc18946", "0x0775d996cc2c4456f303a2c1f9007647e11a921d9fea3f7b926143b99d2fa0be", "0x016fb9337708ca638cdfda91bd0daea6b97224ef7b2062672addd1bd18bb8900", "0x2c392fbe7d3fde42fca4f9478bb439331258255356f184af6f76f119054117d7", "0x187a2a3bf79a69fa3e5089ef9f1fd56fdb47c55eece77aa228aa3de1b486bcb1", "0x0271a863a280a32641ffa33510b2edd278c98630359532f3e506b275fd5d20ce", "0x1557459c9c74c94aa00e5af69a1e3112fb69537ce897ec0c718958d96516f2ab", "0x2a8e26ca8d647d9a6388516ea9dcff89083d539e58168c2a50c6dae30f109f21", "0x21cb752194cf43f3b51942eb0040eba9de2bcfb1c2a3fae97924b710f26832cd", "0x2c26daf996be247acd6dd4acad60d38b5a471e6322188d02c137e7cb484377ec", "0x0240176ee0e7982eebe92a68d3e3a38c26821acc0f5d058cf8c137bca2d26f1b", "0x2636e0973c865c1bd974dd78daaa8d0a84cdaf6be1ad47ecf2a0d18f117318f2", "0x19e84f4f25a799496041661dc5d975b681f6e06744cee89b7be5d9fde1744ac0", "0x0ebf89064a3af247ca1f36f6f3570188e271e0b326c4fb26664e89e1454ca110", "0x25c7e97b475be00e8b559a38c452364f4c9c531fecb8ac698f7fd73ce22e71ec", "0x0444c99e592353e5aecaa302add901c14d8c55270a160afed4429ef5598ad74f", "0x138db8887830565f2693d0e0f02e4e79e144967f0ba53b03519aba764b5c994a", "0x24d40f462114fe9ee02aafcf74b4fca24e1ae365dc75c3b52bb13cbbb2f21edd", "0x21e65d6d8ee43760bca40e730b5df4c4cf3a8a732db148f4b2951b4c61d68e8c", "0x248dd79669ec09dbf0350a15d6c75c6a9bdaacefca14d51300978f13d1ab6d1c", "0x2b8238c1548f9cbe29fd35cf91e7b48f0ebda7e639edf69fe8d5aba7924d5362", "0x2439fd239257f38181c7be3cf513f1bf7235eba94f6b8942a94cbddecf6f62f7", "0x200958235281a61ba2c4be0aa3282a18c74b6d262f5de7c2e33d2bb3e893dfec", "0x0e1eca5df88ee5f60cfa7e1fe5befbb719fad8211fa9b2d02fcc233190c17f12", "0x26b53427f9b3ea2c769d9c660fc60881a169c12732d001b7158ee4b1b842ca24", "0x20f3b3f4acafe9f8af3e06661b3a8f778fa2812522b9d70a67402cff8db2b1b4", "0x211e5d2b39d62520a7a627ece8cacbac9f97506def4ec286928ba6c27d463b17", "0x0bb743ee34802129c556731aed9d302dcd085313ce572f6242d13832e536b4b4", "0x23cb2661b488ee71e4c753ff23ae4bd25d8a44094f66b6532977e22140eba5cb", "0x03a35aa3123911cdb4535baed3359f5f6a5205b9c93ef31d35323a47807b8bc9", "0x27803848a0aed96a93fa943b6635e450217e137f4ade74a62d7917322714b697", "0x0cb37839c2c9a7ff79884cbec75f41e9be5e47c76d61538231bd8162996d6f67", "0x1f0026d0bf1f8e1dd5423cc2fec1fb5cdaa1ecdc4c3cb218dbceef77c00d2f93", "0x02a7d7bb970b8a6ed2ee66fabbba956b6da3b100f5b5fb928eef42f9708273c9", "0x0cfd7f4215e434c8da17ec3258b0bc605ad1ab2e90aa494351e4ee40bbc491fa", "0x180b11b720622a156849dc6f7f6e7f571659be69682230c5ed9ac339700a7cde", "0x04e96a965bce3d3a0a24a4a457c951582c871349ce7eee1aabfe578a94c65011", "0x15931f782b45f7fb656f2cdbd1f7705c353a23fe1d30a5a46a1522ed160df3ad", "0x2e296e57c97a5309acd26febf55ac963a5444c1c5f703ad88a0d7b97b9dd38b1", "0x26157bceb78e846bbb262f9a1e06d4271bde5a5bce8f0419952f97ffd13eaca8", "0x2194eb89847d6b0f1897f675f19c0c56b61b13248eff3ca36e34fb9d1c79ee43", "0x2350bf35477656899151ad7dde96ea7857e15501447008dab6b3d27c8ffa274f", "0x1a486f0ae591cacdaf09c58a49c4d1795405435340819e003f0469d110b7752b", "0x1b56dcf76fb23cc4a834d455a4065e133571402b7df309d59bc3105d42a8c301", "0x1a749d7964af0b7202913ef204c653f2b4bfb65ceab7b685233ab59ce3bb6925", "0x18ae590073f969696af762ffa4e8f0ebbf97f8cc787e37cddd1f321be3beadbb", "0x21c47b275d82dde6460d5e769a99421144b1c5a9da59294ade9cbb317103f249", "0x0473ddbd52e737e527364e8eb63207975c38d5fd6cc32b272102b082cd1518fb", "0x0b12fac95b6d3a881d892657c8424e645ac4e6b00515f902d594574302b26e02", "0x08ae7616a260cf6657f8f73ac284588d2c5f07ff425d837aa7cdcef63e3e2103", "0x039daf6876280b80e873bf2a32fd2834a83c69757badd58a888ef819e926ce28", "0x25e7b1d7470a3c75f13f0b56546c8e09f2d8efeff06ef766f9c783ca869d130d", "0x1e8fd3634c3ff764184d03435f98584b11b5b15aeb9c75262da3f1ea2c2a9e7a", "0x241dcc51ac37808a415dd1e3c281f05aff11789dc0cafdd77a35484e0993f9a4", "0x1ffc3153c56ef9755932cea2be0573749bdafe1c4fa0781a4b8b4078ce9d7547", "0x17630d62d9a3e510c88a4d43c360f92bc0fa00b66031adec29bd9543fd3a17ee", "0x2980400edd1d74e3d69db5458d2ccd5fabdb236ec16a82a4301a0ab59ea4a6e9", "0x3034fb24366123ec6dcafcad35726dbfb16194c036dcd648fa69439bfcd00cd4", "0x1aa7e8f4189ca9dff3db2ab7648be0a2392995ce46041e04680dca8ad7232df0", "0x1fa195f834a69e62372f60eb497da167646eae14153d803b39dc5d11f5d7800b", "0x0f23f1c74d5fbf6195ad5a6aee5e56993c5477e8453f5b93a0d7bafd333036d3", "0x016556fac9348a735ab50aa089c97151b3caaf0a20a34fb9d9370505a1515729", "0x23d92b793648110fc5aeef0633f0c77cacb0dbbca1879b8a6f6e5df445e5f70b", "0x2e4c10ec5e65e2f239bbc43c13031df2686ab40fd79a304b05d611b823f23b73", "0x12418bbfd77b63ad5e16864ad9c32ffbfc5a3dd9b78ec2b79329fe5e0a8d2953", "0x1e4a8aace15abc1d5b76a9e848431d2c06a78f72b6bebb1293e6c58e5185696d", "0x0f3e96107decdbd6872c20ea09acf92cdf17a3ee1d1331488092d96176deb755", "0x012c3780207f395cc21deb0abd951681eea32498ddba6ce897a8f9f0c2357067", "0x13eab1b4e672ba1b1c1bb901769301f1e5659d03ea10c61de2477ff0ac221421", "0x20dc664abb20b7456c06629ce37a1ecb1a27a4e8b24e31b48b9c4635aa30323e", "0x2c6b1e2cfea78e2c36785e76a8cfb1b057e9471f24f5b391175c3decb01e000f", "0x188c926255f5b7af3da96355729c2a8670ab4c2c70400481b2ac903740e0c5ab", "0x2f9913208e09e3d6e9e6fba6384fd076ab89f2662976e3e30e0870bb30eb54f2", "0x2b33803d90889706e714f720b5628d26fb60b545a1f3e9ce49a6ae912b024086", "0x26ccabc10eb04327cb5cc3dde2abb36f097086c97e738c133c9f57077e748b09", "0x1b16ae0d7c54408cb75fd931f246751f2b0c3dc20d79e82a2531b76c22b4d5df", "0x11d0bb461bd8af2844f49f0f840c94ef9518b2511344742d1f5438fe3d415ae4", "0x233031847b476bead0118d3db338e89133ec420d673e504ad647259df655571e", "0x1f84e97895bee438eb3c92dc9b1846c9ad29c164387b06aeb6ed1841ed8c4dca", "0x277f7f9b542f0c2bb5f45bed054f09624536010c3cf9452d2273193327f801d6", "0x1efc9c9069e5068baac13d2e6645641b7d27e80fc23077161535c44682ee57a9", "0x0d6ec477761e2efbac4f14b3bf3d5257a99e64c3f25fe104faf988b20fe5ff44", "0x0e0e7d7c5501999b7d16173b59b7cae1f203bef21aebf00251881439ccf93013", "0x217bef2f4f12c6dcc91c2058a23391cb77de53ca6e44dcdc6ea3d36fea326ea6", "0x05780c88adf01531b50f817e3fe44447d29b35aa8a389c71e8cf1226acef68ba", "0x18733887a6b2b3b4c90d8e4990196e23445e47d7ea5939ebfb89a3ee3d67b4bd", "0x20bace63acfcae0b1c9f2bee24b8e9da85ba597d37b0905720c4f15db231b07a", "0x166ea595375a6786ac527ee9eced73ed6bf550876abcaf3ac92b42c808b00d8f", "0x304262a9eff4040acf43e322d6f52676ae2f853ec2e7a80db00c488cf917c74e", "0x226bac7050166e5f6db78cd0b12d36f305b6e8c9a055114ad7709e6f57245b6b", "0x26b2f539c573829f6aca91baa954505bc5c3eb4e1df1d638582717fbdf2388cc", "0x06a0fbf4cd52e93ba5e4c6c4af65db02ee96297f8ad200f2f1cff252e769b551", "0x2cb9c24112d35341aceac88360fb528924e58b6ecac321b9fb29e6aa3368ff23", "0x20e88a4d607526dd07fe08a3552a44669129eb87fcc0b13aac8fe8afd9301521", "0x1544649a2bd73e3ba72f396df91dd65401dd8faf51de325fbaedb9d536ad94fc", "0x1980077457995712c44da7e17713258e3f8eb354bfd80ed9eaf3ecbaf6960105", "0x25d1d22ff13e7705d3c085f97fc4e4f6914b82ffaa5d2091ec64dac423765ef7", "0x2fec990ef556efe1035a464ff5581e74067445cd54abcaf6b8c0399fe0d24cfc", "0x1bd9563506d9544ef3e4830e13545012c579379c2dcc1330416c4ae49bc4ec61", "0x00affcd17ba6003c56dfa85571fc29737b225a80d480e7dd7edec01f14f23010", "0x23670dbaef966881f07f919a2d883128c7b23cf767a477b2b2e0762bc0dbc18b", "0x1f93a532917394c7e22fd17abeea6389c66fd7ae2dd9f02f860f6d96947f0edd", "0x2de42e9f537b7d61b0213771c0e74f555512be07b6a50934734e2c5beb40be37", "0x25c557f45b99781cd37d3bb22931662a67f78b37782c885b456bb96d55e88404", "0x2074c8b709705c9888538a7f8a3c4aff647731bd16f8e254fa74ea9f2be7662c", "0x2738355956298138949e442171d6a4e4b74ef2065740db7cfc3a0b60fd573acb", "0x13d36ad0a4ebeb81969778649659c65cb7d0c41cc519871fdb71a9ea6a0caa56", "0x08a2c18ba41381348c1acfbf9617716806b462a1691bc2e343b79b8085e376b0", "0x059092fc395aed285807bbf557ad9a1041f59c079822b1088457882fee7b612c", "0x161924151b5a5ad2d8cac119522a991a906f15e8531dc70567f6b28371cc24e3", "0x1c68ca8f7aa17659075405ef6341b8e69a298b9a4d72f3bb854b309e4ba87a1b", "0x27f5d03bca1c8207f7239a4b2cf73ae559a15aa37e7bdddf3aab05eec5ce5592", "0x0ecbff4846962a975d347ea9a8fc465fb46861557622f2c2564a7e639833c169", "0x277c4de2363d8b5b456cfc5a7ff8e46ff2ec8daa59855f5ad64bc0521f3ac567", "0x1b11862c52acd351b7a464793f4fbb57fec99f832b63226f95d175c8d2fc08b2", "0x06a719c584c74ffbdd7218eb565cb4c8bd86c92e3dfb3c73e1527201aa51234e", "0x230e4adeecb799877f7ce9a58c836b99d533584a195c1d77a313abe1c7d126bd", "0x10b109b864809c4767a133cce6cbad6c88628173b8ea51e8cca85830ca7de522", "0x0e21117970dcfbd4b1526b253636f377538d3b4faaeb5a8b24bf6200d14cc591", "0x2667349978401362f6b17939eeb0e64ff55607ebdb35c7071db46bb3e7ba4778", "0x05000fa5fda505e029a13bfe304c267b0d86c72c039babf6d3ff02ee246be02e", "0x264d9e094aed5f41a60242220a34a284089087b2436a9bfce8174cc9be8c2e20", "0x08076f9c4743de6130ff622cf401edd2c92f24bfe114f3c5e724891746315c47", "0x132370abddbb0b1dd57f2a520c25336bd7cede94b95bbf5c2151d6d88e641b64", "0x08ff1116b7a227bfdfd4465a67890882b615c8c4c17f28d8d24958edf602ddcb", "0x2bcb0b0db8b9e3e02b7e9c1c9460fdd9c6cd98562332e648d8a3e0ab94597520", "0x12ea68ce6881becad7f8a6b117b03ab976f7abd597f903b0bf230d20d21a943a", "0x27439c98a76688067a097b19b6fdd7d78d5f88e274e0d8fea5ea6b7406fdda7f", "0x02f40d0ad05f5652e31ef9440ad71ebc8419e393493937f05f00499d02a99e36", "0x2fbf04284327ee4f680f06bd390e309d0d13acc74b9c5b14b63059b8cc7abff5", "0x1be686d53e2a8ad57a828b0651425cfc6978c7027edbf247f6b6723c21df86e7", "0x2683b425e85a508f96852f14b4220fcfe9f7ad8b17bfefc0e348c47ca78bb57f", "0x16dace9b2e8012e31db1c7ebe672d86bbe61a1aa3e1693e0eddfc0de0a9dd951", "0x27a321f8c7d3c9022e962f7fef2e3c848b4539dbb75aa139f30430fe545bcedb", "0x06ccd7210dee1d6b0e22b79e12d19082d8078b788d71007b95e7a774ed86a651", "0x0a41dd42221653752bef350f6d74a917b6cbb1fd76a3a12166f4d0be978e4026", "0x220a02881e4d47ac94d950cdf8386274d1782e27cbd0d845978deec91298f165", "0x0e2155a545fe5f3cbb6397606589eac19cd92639339c6b017298a4ad3408b4b9", "0x0f0f19c6291e51546a267c60cc774e5fb9d088bac530782d891ec1af4b847073", "0x0e925bcd1c6ddb4a3a1c67ec8deefbd40c53c0d33e7aeef1b46795aed5943c9d", "0x2ad000b1748abb812cd6e5411286b9ff3ef0a5bd3d259a36e45ef05b9eb5beeb", "0x0a65aa232d32ed6e8de63d1cdffebc2f3fa616465c27aaf97e8cd3dcff648652", "0x0263d8470ab4b1c61d74d8e896242f4f261dcb167a3a06923893d7cb2c93d6a1", "0x2901d946addc94b040fd58004d9a5f8cd1926540c7a8612cec1c58cb60c2b3a5", "0x1889cfa8209f4952df9022db9dc583b5717a0696da41cee64937d0cd6321e693", "0x236064d71cb6c64c84747ac25fcf8d881502e5f03bff87561b85a116b1f39aca", "0x2ff7a174ffcec29862e04f5dbdc73ebf3661570033576290c0c1f6cd8ced27ae", "0x19e724a1d742cab103455f0040edf745a2696a71084c93e322715450dd4d6f5b", "0x03eed3892b6f0e6c5da1059c5f3793985835aa283500a8129904a94c87f161bf", "0x08e2b8273bfa30c1ac850306d91e468a9e8d05092aee4cbc80c687248463ba30", "0x07adcca76d8337728839a1b6ac3b3ed42afb87d72af98f52f416f2ec58b28cec", "0x171ef37896bae2b1020a0a5839bd51784ce11bb4237d548c171169d32fa19b40", "0x20ffdfcb86f4d005064edbc296918c332d32fbeff1729de5056a26abbc3a35fa", "0x08ecd7a6f1735eed86baa094e608f488f38dbb398fcfed4b994383a0ca8e4647", "0x1c3f5d86e5921fde9890189f1d8c618754288600e6928bc182ac4d5e4c9f0ccb", "0x29c61184ed9d460f337558a1af639aa7e3c0975e4014ed8ebcad4a25d51eabf3", "0x0defd45b28958728228adbb2dbdaef6a5e9b1a64902a734f402b8cefb8ab3b56", "0x0a74ea22d8a09336060610179ac1d82fffa9492df76deed4ea60e0133b0811a8", "0x03a37bf12daf1400d297ac4ac13ba24c17dc262db16c8523deee4e0ccde9a680", "0x11fe1790d5abbf5935ff22318e4f7ffe69966ada2f9136b54f830eacb0a65368", "0x018165842f406375f2346686915afb14bf1fe0564c8858ee3bde0aba3de5f68f", "0x261db25e7cff5a9fb72f276b1f9260b667300fb7d361b50fd5c0e8b6995b05f9", "0x2a3ac3314b2b66e796fbe36df778c5e46972320cc43ec807048826b6704ba7c4", "0x23caa4b80ecfa99e9d3fea2bbc1dbbf369d1bfc8937d03d074061c30fd8cd76b", "0x27db260085e224898df145f23f635f2066d8e4e124e581e8c6261929b1dfe107", "0x274f6c5fd34a784d6b915ef05d424ee6c0babbf369e79ab138b8167b5618ec7f", "0x2c3a29e13a84d26a0911c9289daf1aa4cf5840aada0701d57e23dfc796da6da1", "0x1ea210f2001a334d3e801f4e53270d42da7aaf317a553b4282aa78eaa2282e6d", "0x254dbeb52884b699c1ba7fa0d6e80d610903b18a3e509c36351ccc3b024946e3", "0x059e781d65896ebe0e4ba26dc2f29907f47bcdeda4a2ca2c713d8505ea31fd5d", "0x0b5b1cec63d42d5e615dc269b885a24cef303ec78c972dd17cdbb3e915cc4ffb", "0x2a7c015e9c3b2c57ca8b7d26d39a1bcc85d6ffacb7d9fbd66d2a8f1d64ed0c92", "0x29b736b911d71a79cf63d8a6f786f11bd5abee24161dc567a7c851eae1e43b51", "0x285745a90a7fe3d09af5a808704bc69c6f1701e573912df5cc1e265d596c4141", "0x2d901b8195c3c96c8c36eb99fec0134ec2b8304ae810bd30da554e3080826715", "0x1905d3518355eaba7859b591ed7b8c9c253980f0450dbdf54d7a7782ba058392", "0x23e813026fc0b80064d19b5c5428942fdf7efea80bfa8ec4095272bfdb7b4c9f", "0x23c0a19a252c87e6b1c1c21b1a79800200c3fbff3e3300e7e5568071de9efb81", "0x11c4ae607bae492413bf62cdaa2c2868ed1fec6dc0631b067ca60fab125b9e2a", "0x2cd055ebb7ee4686365dea450f046ff62405fae1b1afc9fb01707cf81da0e3b9", "0x053c9fef2e021fa9a20fada22fdea1505b58a3159bbb47337dbf791b215b1452", "0x0a35bd74e87cbabaabe89ad1319d2c9e863b4c631c21938c9a5395bf97872a9f", "0x1c115056539ce20cd5a04d1a5c43e2b00fbe83b25901be36f5ddc4666fc383fe", "0x242954047e5772fd3bded590ec8beb4c542f2e264c8c3e284cdc473505c51a90", "0x0e2abd315b47c0dc93849c0cdf267e811cbdbdb200a6e7c2b67edf7cb0174214", "0x282b37020c0890d751c3fd76950d8068668e1dfeae621dd552d2de887da2ea75", "0x28933852266b52d9ea6b5bb923d9d94f2e5a5be5c778e75e07942c234b643bd9", "0x099ab6765505ba1198ef140e77b7954d4fbe79a056ce72bace39c048c00da3cf", "0x2af211d8e0ac2d8fda7f849b8f229a225c6186b55762c7a7b2ae2d1dd85c57cb", "0x0cd070f234014a2809ab90c71c1da61e98a96322fedd99b6aaae1ca104f3facf", "0x26793e2abc8d3c30c60626fbaa158f263587d6bd15833d448b116264b930256a", "0x225be36ed0ee85e1f845ada84e5748a56699152113ff61b5056b6d8bde60c19d", "0x02174f49edb02d5154d2beca2dc92b9cc595383da1fde8f09e4b5ee3ea5a065e", "0x0f64891c2c8b020e46c3594cb758f0bddcdbd09bd0308816fb41734a869872c3", "0x192a84ca2f99d36991e2d2b1deff3989d1c156c239e10e9f56140e1854576067", "0x29dfcd7b63f05abf2753a8c341d6b7a60c6243b04c9a1b8b3320bba04a4d4787", "0x1ee27ad6b9b5a867733afc61a2b3e76a52ba3e4bd5e657ade91fc038819dba5b", "0x0ab4773f150c3f8ad3bc9538f43cec395a7e3731ae973fefeb623a09217e64c7", "0x13c352a02f595186202cb0b99fa58c5542ab67f9b6d3a0afd103deeff6d80f41", "0x2a97cf2c10c4bfbfd299f67c52a169f92c05b7dac56a41c4dd4fe87c8246ce14", "0x00becbb47042bd7f8c9f6bb422162d1aed089a28482f7fd16ab06a13285fe702", "0x008e44da21d738691b881757ef37ed29c5bd9f7a4450fcf53290a92cc2ca2176", "0x2b205a8b6d4b7063d931f3bb5d3464053843fe7fbe4b83c17883f86527882a18", "0x2d9e32a7c90556fe108d255ac01e75df338fcd63b2bf84c19280d427298863fc", "0x29a322a84c25bd2ddf6e2e4200228d95abd6349a02266ac1dbba520738ceca97", "0x0678c9bfc6f2df012f4fe55e33bb68ac14ced1df0d02152792089d046d828c43", "0x0faff3a5e7425794fe20a7e0eb615b8b1760394b7f2304286a3ae4009124db23", "0x1f8f5b611af9feb9cea86c084058120553e404103aee213f5a41d1d02541c0d3", "0x160875d8479602f96f40acc2d042ee52c1588b6a29de4284965a6dc6c930ea07", "0x16d87a5183a316a1d70afc951efe2cd667c77328fcfda458cbf5fe3045f46d9e"], + ["0x2197703fceb4cbf07c6dbf46c4ad93e7d14e554db66d09102ff84824743fe4e7", "0x1322f0fffc7e4854bd8b5fc23e7106b51f59bd5061d8b565aca2fd3efe512f79", "0x19e414f80380aa2d222133118c337d82a8c5894c2f88861ee46f448fa9d61359", "0x22241199a4df9cb7d65249d9562cad6c65f16460e79a7939cbfdd6d7b9209d9a", "0x0301061735384dfcecf9a311c22ade327b51c78b211615f41c77f6d85e8a41b6", "0x229e1d86c1f2810f4a2633b7b4b5bb61b7dc5d19ac95fd8d379548ff2b6850ee", "0x0e31dcf9c53209a817eeb292e989727c3f56bff65883afe5fdc28ac3dfbea675", "0x222c7318ebe96306c9d79ac11237263c6b8eb25272eb88407e8c29a358b40f2a", "0x0cb416b42c53a829cf4fc823be8f4fedd12593394cd529053ff4e3604974a2c6", "0x0892729d09594a8d8b1adfbf2e2ed75399dee612842b6db3d2d2c2aaddb6c0aa", "0x18e39e9ae45f14ba97a15bd672711ae124375d9f482a4487a0e334dee2d27c71", "0x2560c9ff672e6ea69dbb33844d0d22870461d18eaf0f8992d4d7ac649edd6610", "0x21bee2b8ed54b726ef17f77366b1dcfbda7ccf1e487f9916e5f963e814c57312", "0x300e1b28dabebdc0d4bdbc19be29a3dee4eda8425dd0c7c6e82fec147cb070ba", "0x2c44a5ff45deea69dd2961d67011af4982b9405f9fe38de4a732d2aeae88cc23", "0x0c8d59fe1b7f55095e6aaad9e3b4e7b1c93d876ba3234dd1ac5ec64108291bfd", "0x06cf82bc5fd115d348a30b0c45378d90cca1660446ba049759fa53103fcd78b5", "0x2f80ed01a2118d02e2145111c3fe6ca70efdf95d8abeaee8829293347dc9061c", "0x0bdfe7f6803e4dee7b026e079075908cb8414e3d651dd12fda67df08dded9e42", "0x06cc48ed882405595b34d39138f50bb5b31a963a0dba66aef17c19ad622e29b1", "0x2a67f3ba6d15949932ac5622cf9e2b493801bf16a50336a4518258bcc6867c95", "0x2572725a67c60718df656934aa78fbeb80c8f395aeb6a20cd833c4b14fef412a", "0x03bb7f6ca43545b11f19721265b416166579cb753330b1879b79685d1df0bfa7", "0x2412815e863f8f3bc28bfcbb957faa5f393300b25133e9221b8eb3156ed5c12b", "0x0dbf64d58df212e4307871966de097a5db09a93e5bc305cebdcd0630f433af45", "0x274c06c01158e047ff4a791e25b7bb3db190529df8f50b6386273f810f15c6ab", "0x23cf40693f52abf0ed3d842f7bc85d1a2111d0abecfc18acd0fe3991ee5fd33d", "0x1daaa926528f3368f4e4cf924166b8bd3ff8daefbcf900e6dcc4ee63c4099698", "0x10103789dc9471ad718657bebb6781e39bd92fd20ee1a32d0de3ea2817a01555", "0x0009bc25065080e6c6e9932e34bfde78d1085f19e9ffc8965a4660a4d9b6d607", "0x1312c727cb5489bb174e1dcb82588edfab31a2999b377dabece466e9dcd6afee", "0x20294a462c7d0c25aeb5374618e5e77316682ae3d726824f15f00f7cb9a7009f", "0x25e0c6be89bbb04bd8391c90cf35588f0e9d73fdb06259f47a05513ad7a23e91", "0x0084a0b87e0b336c9a911069f89d875a38be313efc420d28b9ec287f28810fd3", "0x28a03ee29f612aab268f76241d54d477a1d97f5807ba2e1812f4d350d7c6f7da", "0x0b6794182b723a12e0b35f76bd55a7d106ee6a4035527c4d329a6f33068d7eda", "0x015b9a698465428fc686b79db4959c8495b92b85122f6a6932940836facea86d", "0x1bfe52289f811f5c3619f14866138ae9a1279bb76e8cec9a8936fdc36f59df7b", "0x1cd574fe8d5e4c428b92b23a9717342176e1d309a7e259052c31bdc9af091fa3", "0x212d1bbdfaaf0200735bc5851a156adcbfa4f607f5da122e1f63afaecd38cab7", "0x0b0479e28820e883d903a951f95b13093788e9e1ca64ddf2abb94b13fee9edbc", "0x0110f5257c21c9379d73b76e9ca95c513c77a15cc8ee0ef726d8460d4fbbdaaa", "0x08c52e9401a9764f0c2487dfed34e215c186b6c2838e38eb5a50cca4f0bc6994", "0x2e422b4323cb4c0af46f4b0e5052f75744c538abccc7643f339440dc3aaeeca3", "0x2e12482ba160472d45549ff79cd04aebc4a327c4bb9d78c2573b835b05c55fe6", "0x124fa5f9c5a96d6cce92cfc73ea2446202f09100eed203ae4267aa637a032d36", "0x0bf651f82f83ca1fa037a941d4e2a4b3e08f5e1603f933a1723adf4135796de7", "0x21c674ea7b834741cbad39b21b242ab9a5554c6c9f92e801cb1fe4382b619463", "0x214f91d6c4aef57e83186b57fd9fa48a193e1caf16d7f6dc1559d144a271b341", "0x203e2218389729c26c6f66213f2269c262785ec68c759599c2d8e3f68035055b", "0x1aa934198713ce17658f51293fad44b1c22fc80391405ce76c92b2349b7eb3a2", "0x1014d4e5ddd9c17b3c2b29684476afdbaf7fc56e8b799616a67bbc6678e45351", "0x033c13ed45b4762a47e1d2d45d7fc8fbf9d4e24546e20dc596911fb991710358", "0x09bc1c3274c569e7e5c5d77c51fe69b23b7e435138f4f3217016a2d70ce71d5e", "0x1803171c9dbc0610e38d8308db101d6a99ca90137f6ab8cdab2a91b36b63322a", "0x0ba6071aa98afec3fbdeb46a88e4a5d17bd4454c0e7da8c74b15b084488cfdcf", "0x179e90ab4b08a4ead281a8709057487e077b710879911f215fbd6e8ebf838e97", "0x1cbca88b8ab3f0588ff87deea978d00008adbad808e6510897238ea007f491a4", "0x2f50b20b33692bb0f62777de5e3198377d7923ef2fa8ede08831e10f7e9b9f5a", "0x15ba030e8f1ef6f260566fd6fcfffcd21a1cfc1232f7ec7148ff076d1ba68707", "0x0dbe053da01aa4b7c0fad83a3cc966f0b8281bb4940f97a5516cfb9dcd543a6f", "0x222eca5d754afeca8997f31d6fcb94a5d799afb795e68d4d8b0ce6d839f6dd7e", "0x2abffa43d756ef242db7f584bd62405991112618362f1b29a33ee2131b46a446", "0x03c92524ebe67300d0dd0aac464f0e6ecf962d6ad41bf2685f077bfd788eb3fd", "0x282241758ade4ef8ff3858305288d3b4a52209295d1a4bc89d885b2f5dc3341a", "0x02635cb973d71bb3d2137bd81680dd3bc607fc5487e898c4c2d83c1dc2817687", "0x13c866aa66e8d506079dc24c2df7b1e691994887d35622f4cfcf014bbea223e9", "0x151f0007ccf42a7ef969f1b6f6315992e6594bb5344d2839fee6620b60e2c023", "0x1c1c6a5ebccee8caa4dc7ef18e194274f6e198d2b140ddcc97cb15c92ba1409c", "0x18330c9e67d62f7861a996d7ed69bba904b0dd459f2b254fc7cc53dd28e45a65", "0x26b747740c95bf139cb11bdf02fa63a4bdb29a90f158933a1822cdde5387290d", "0x1475676fb205084246ef9bc7234f312c214f426852dcb2ec7dc3772f579af8b1", "0x1b03ad9080d29b70aaf30bbc3200efffe73ee269dc032d2e32bd190767bc380d", "0x21c175f937c2f82e99735bc7c201284f89577b27a1f84fa24642eceb552f4455", "0x1192e0269a6b66a8c5887527aa4474c2de91cf8c71ebda835df2cdccdd4a4e4b", "0x0f3a12c0ee52f0d34f2b4a0dcd13541b48aeb3d5121d311113bba9792a45a58d", "0x07fb521883bdf78b33689205b45e52269458a061bcb87eeb3b1e183c6d7eb5b7", "0x248d0e8051c1a965640c96c6f010c4931fe648b96f95ef6f5b8e474f64cf3169", "0x2ab553db9ead2c82ce91febe180529eff3521875f7e90a9b8b7a3c4de4877cd6", "0x211ee3bda3c95f1954eef22a0a82c2ede8444e42a72a8200bab6a133846d5b5c", "0x111db3b5184ff7412f79c129904a9cac4ee65a51c2062d66732f54bcdf767be4", "0x1a73843264cf9a3a1bb6fb68ef76037c4fa98337e5c10096c630b449ec4a5f67", "0x1c2e5a2d9332f65128c85358662d6a7c44353add09c27cd07da02f9144da855e", "0x0e2b35fe1021b879de5b67a7458fa6188bbdea39e2bf468a1a24e3625cafff98", "0x2e568594e5dfbfadf272b8d6e8c99bd785c4fa94ce9e87fa8a9a37e32c7a28de", "0x07043c7571cb7dc5205bfda42d693527a4bcb58238ed6a6a248e7917ddaf0c3a", "0x239e18a0c85b845ffd6b85e96343f1a8378f3c691dadfb228da6ff7aa79efe1f", "0x25e247af250c564c00f5ff1cf1f2bc8606600f173cb65ef0780af9f5a1b676c8", "0x031ba3385664544e3e0801f1698b15033a6049b2504e9cdc2c6e3eb2fd12100d", "0x2a33777739e2ab0adfb1ca5687db1e059b20370cbeeccad32da5c3609431ff65", "0x2bfd6f0e9e996ba13749327b9c5cec69903d413b2df29b777d05384b3e7af952", "0x2d453d93fb36fbf8e36747ee92d90cad9e02e692d0748c07fd43eafc2cc5e823", "0x187bd8043f8642cda2b6bad82958d115818880eb80f6b730381d974ac5d5037e", "0x21aca605f92a48ac35708fe5140729fb35c3e48ccec441217713b08649443930", "0x173fd164f5224ac06c2e99f3e2eaa6379df113de30aa485e8bbcc7f0fd2d1e03", "0x071c66a6463c3fd4292bf1e5acb6de611142d73cd1db590e89b61b57d44d69bd", "0x044a40e396855be550d8ccce7b82ee2caaef6675bebe92266c666982ff72bbf8", "0x1176d9f52e12df67f087110a15aaf98d1ded293ffdf99599fedef2e51569e4f6", "0x06e8eb7dd026d257b15c6624bee2f37d5b67b4a671cfcdfee5797e8457b63916", "0x0696aa48c1d5fe84ca5cf59009ab0baaefbb612e32c91d5ef306def38dc5673a", "0x0853c33a9c7a7c3b355c92c75de444365db82d241eef9f3fac417004a3a1accc", "0x3016c0ba34678e0a67f59cf96ce16e908154f5f9802591717e66e95ba25ab77f", "0x0af008601dc9552517f303ff9e22c793a682caa93256f2f09a4f746542603b0e", "0x04cb6d76b5a27a5aae387cb647790318c25fc16f8d7d1855a38765f847f731b0", "0x2ecf70c372d8e5edcad49e58d47875f26933d62614f266e6b4f586177148565f", "0x01f393a6ee74dd6c4d52b0e7820a7132f8c4889742313c06caa6ecc55f3dd413", "0x2e4d4ce3f97bf96ff86b88e969d13e415e14721282769f7cf8c3a73723f094db", "0x306000ef24a7f5a9c652e3a9367578554ea59bf8efa0bd8bc5776460c18c1add", "0x26e58d6287678f3db9c225c1d3b93ae7c43a69024ebf249c8bde40617c2b3d49", "0x09eee09f873d1bf683971df4d7ce56c8f0b8b98ddc05b9612c0a0d317310655a", "0x0f08879dfd4fa0dc11ded556ef01c6f94cc6f4d18553b08bcb1dd604392ec00c", "0x11459f7e9f0e3c727777e34d6d93ec28a25bd867171523bad5be0d5a20029eb7", "0x04e9cbb6f6e8e805a20fbd801a53b723f78c1f5acd227880f7f37f4e5b0528ad", "0x2d2ff32eb7a0c0266dd46bd5939c9a9aae88b3e9af5dad01a7304f9868f7c7c6", "0x23b77eb0f27e950200a590447d645a723d9b405fa2538a5cb76fc5fdae16d839", "0x2cd6d2c5658ec0792daee2067e2f958d6849886318a6c1c27233a469e9998c2f", "0x0ae1daa420bac90780d0c83026bfcc84af83953e26eca839da76861e739855e7", "0x2b495b854553d02a75b68763bda6dd8ef0e81fe32b5cb072d3f580a914967bf0", "0x056fa5d7ce2c32bc5735351d2d48af5d6c9256a4b72e12a35640b53ea959e296", "0x2ecbe1a06b28ec78ea7d22df11cd224a0e1a0ac7a3476c5cc3c4e50da961a87b", "0x143053c1c387f9353bd677e5db6e9975792bffeecf02d6aa0fe8f627579fe6cf", "0x04064b25584499a011ea74ac047a8b37494189bc63342bb1182e234212d42bdb", "0x100f61f6b81542156760a6d29af5dd8644c82deab5b90e6ac66de8b4a069564a", "0x18d331b2e8180b7aa7055c029fa77aff4f02b0e2a2078bff67688ed65b51d6dd", "0x0fcf9b89e19b1a55f9b03255cf80ccb9fb6aafde2b46207d873fac80ccef085c", "0x254f801f3c89c62436ef63df67d912c1f231bb1f76c6c7b497f7708dbcfdc17b", "0x16d8e85e57819a10a61461bcd8d3d3c963c4f95afba3e4d8fd0d6ec882b9d161", "0x29c9565aa702088bd443e4620d84bb2bfb93253a8f0f04e5cf408c92820ada84", "0x294fb68064643d8beb237bd705a557871b5f1408624eda46d47b583a60d29cf9", "0x2c26f3083140c104baf24c3df922317584aa11770451e6a846de7dc795197313", "0x231811279854707dbaa537cb27241e7021a949a1d9671380a7d6944c838904cb", "0x1419365adbb91f1f7d1bb0aa8a4b5d11c7ad0570cc6cf3638be9c5a2a275b495", "0x1674425f2e9fcaa66eb001feca48ddd4b2a29e86d451f00d176ea35b4e02fb84", "0x291f956def59b878028000cef03d7b54dcc2fe1dd5a75dc180d6d5bed898cd30", "0x2f1302894fe6a26b5bc03fbaa69c4d95012394d78de494549c7057b7ef965bcc", "0x0627d6d6d94d0a19a17db45c0796f7db8de13d278a2b24c99ac5d92d0a1a1ce2", "0x2ee297662bafebcb01df8e62bd5f50f03025515b10465d59f3a294f0bfbb2fc5", "0x118029945df773f52fef5429da766b902eeae7d967062fdd879c60a1bfaba75b", "0x306042d262f6268ba789eb4323c2169279752ffec6b8536cc68b53bd4df0e858", "0x0472a13ac7da9ebe1132e05f9ef609135c82a0ebd9278def2b34f8ce709aee4a", "0x2e8f76b27b474180f00c5a6c2d65850bbf96019bf0d76dbb4743a970f42a130f", "0x1e33984165f47c204a33fee31f613544b7d846a7d5ea45280ede4b362c32aaa4", "0x17f22e27252bdcf91a72b59eb276a666ce4fea7adfbacb2ea9fdf28524b7b43d", "0x00547e7c70ee4e3fb4a4d386c8baa55d823a0f02bc963b43039b8847cff6e6c9", "0x08ea4ccbf815be325ccd15494f38f3f97153ab09c54a87a852b2a99480724e25", "0x277cb45f3e632718673ba05d48c712fe7404df9eff5401cebe45d194c67fa8db", "0x0159ec7ea49aadb3a8b0a23c1dba0023807b0d099d3c40b69df866a92dc87b37", "0x0c33489297e244956de579c5c112ab40c7fb2d89866a28418f660a86ee18524e", "0x01bb4fcbae28a2f3399568c6b3849da27d6ddf4fe6adabb591151679ed37d21f", "0x2a23343d24a9cfa3b8f413f52ee1b233ce4c1d5b9bf34b03dbc6d733d52305c9", "0x0707a6d515b3bad03a9b06d6be048defa850134aacd120f38fa93264016b7786", "0x1837db5401dd6ec30ba6b866184da56e8db439ffd04154ec469b62120ce35cb4", "0x244872a0d2766b8547e6b6a5afeabf198e1409a0f0026de36c101793952f6cfb", "0x204fb17927ce873c761196395f7da46f679ca331832a59fddd2ae31e84eba1f5", "0x056f53037d5d8efc7cf6a6feba18d102bf818bbba70b86dd9b763a12072f4c2e", "0x1df4bc5d73239f5ec3b89efad53df9cd8ad8fca543be01f5f40fea2952071bd6", "0x1ffb6ccbba001155d46e167d1fad1c13bf2892ac87cd9c347c734ab5ef658367", "0x08ee36e881496539b0abd647d353e51b63fef91fc944880006f2c26c2ecf2a24", "0x1c3080c254443332a3e6283d5bab6f7fce8aaa68487b9ee4e372cbc6cc172665", "0x2dc6040500e7329f75a3cefa4db49f9b47085b1660f8873b3e81b7b1af82af53", "0x2c8bca9dd293bb67db1f66ff2e82047ae9385ce67d7f33568cd4c216a89994b7", "0x2a157b9786f9224cf63648aaec1b9f61c7a7087ed6eb8ab20c6c5469d401b7df", "0x1e0fb0cdd8a54591c42e7c26b9027b77417e4e6522b472bfe61ff89c39bc40e9", "0x250144d1cea033fd78bd73ee4ea4cfdcd6a42f7c00e2d7ee6794d464207d2b3d", "0x0b6b3fe9a7a525ca60443c4b78a8e830957aae0403116d22983a2e680eedff65", "0x2fdf613e67d176569f4743b4963f8c53e52482fa32e705247eb650bc7bd616e9", "0x048f64b14275fb86fc55b3c0469cd89306752827c3c04463be5bea66fbd7b38c", "0x0f2027b781c2c52490e11ed4b7b494d66cdc16e690b6a4b3c924dc9d6e854832", "0x29652785160b261c1c20c741524a26147cc3191f33b74ebf17d44ce2f88b0f91", "0x1176909e02a5b37bfd47810fcbe73af87fea130470aa44bdf6b058c4d359e179", "0x180f26c6ce2a3a477baf0da58d069769c2bf0156d636f2255e1bc35c01e98993", "0x2afeedcc2cec57285ad22e734fb7fe3dd65f62601c1ca4884a86c7a6a05f083d", "0x0dd21a87ee22626998dbcd73dd751affb49d47a02e995a41bca26399103087d2", "0x1d21baa09d7f50f0159fa8a0b6e0d61446d1c7db5d1566469da6a85aa7224962", "0x2dc59c4c9e275cd8c2506282cc5bb842c014bea4236b1bc27a856351b48af802", "0x2cf62d08541dff0919ba68a697f44f4791c42d1447a41513ab9d5f755eb1f38a", "0x2f5b8853e2cd2e47a9fedeea4047e46083c97acd4b687aebd2264e7a0eb354b1", "0x05865328a9b2fd469170c391c5ba8db5c66eef9938e4da5bae33f2703c470730", "0x29761c9fc3d2c4cc1b126be1dc0470a97b8f2725d327c6d1ca923c2aa8092b1e", "0x1d3fb1f8dc3c77cb515c37bc810d3a5e3b96552d4bbb57fdb01c2aeeb1d9a048", "0x05f2fbeb7cae0a35ee2f3a4d2964d241a0ceeb47b3f7c4c87bb3b052c8705d90", "0x1f445014a0f266082a50257152609cc219062154f4d7c13288746954b97998f8", "0x2d35917cb1d0ca611ee37cfd9078c924fc84bd1a4bfd7db3ce39e05b38f698b1", "0x05a89a4eb40387b8512f2f398b6526efe76716951c500fc8dabc835775335ced", "0x04e26aa3f02601174f46ced15594329e4f4e5bd5d7d53d5df6c8633a94dd01de", "0x204d587d61526c1e047e1dc6b6d403b9eb8730f2e2dfb7bc7350d939bac5b90f", "0x21c8ca213d2f44446ae90a6bdae5843b7c2cb53ed699f36675ea8280a2a420e5", "0x1303bd921f32fa4c4e73af21457c46b6d69e2e6a2c396716217787b46e822ebf", "0x0613823c5b6abeef14387465317e713b45ace79c0e4433d7c4d352097e5c8399", "0x0f27c5305ee978f4f775e213e3ba12a901f51144ce1ea89bb5046930f5ec55d1", "0x2cad11c693c6a627531950a307e07b30ea8a495115f5a5388827792120c7bdb0", "0x16bb256883c44cf37366618e46c6db4e3da97a9d4ae7d5c585959de3272f82b1", "0x29afe50bd78f72cc763695976410324bfd67157a5ccdb7ae45b00032e1d57a51", "0x09329902e59e5243a726ae5ca35408a207148609ab3698139725aefe29aeb167", "0x04b1800e600c90ec4776bc6af1764ccbdc10bf55c3314f42acd0531ad53420fd", "0x298d0110bb90e4c35e293c7a7dacedef7ee9342a591b4330e27276aa13b67ad1", "0x024ea6e68cb1aa6b407e022649aa32d1b7ea4a350e510c07eee43929395e4f82", "0x22ae3a1a81c4550f5fa0116e135d2df2bd9f6835a0f0d03f4dd934e1320a3d8d", "0x1f0f5eee9e9abb2a2f4ae04d6fe09311fe0115c1e199c28e22705e681442ed37", "0x023c86606616f317af022464f350b4bee80c2fca32064bcbf83e8cd35dac06c7", "0x2a89c4e5b074fbe67d04cb03efe18c4bf904bec4759b33dad6b2c86ebfd2b9d5", "0x04b0f48c4f2e05bda4b9cf806075f9c275df2cf60b5fd11470eaa7394a82727e", "0x0edde5a2c01327ad042a686f443417bd8f107c99eb7c02900c931a7bd8cb349e", "0x2cacacc9c9d8b0004d8932080f9378b60675a8bd853aad1dc50672f137212cc1", "0x0816f33508621f2d56371156b0a3f7731030e4b218e44c90a88cecaf07170dec", "0x2ef8e0a455d472b49bffda935c8d3bee1ae9248608e2a52d53f4b76313c97920", "0x17184a8af9199aba605dd1f2dd18ebc02e3055ce408068eccaaf3ea7c0a334af", "0x16395e153937a83660db6f78446cb995836436602777d81f0607130b44881448", "0x0e174088223c38e9440fc77307d6720ac32784c9d2f591e2437eaea9b8f5e2bb", "0x19e70fa937788f7a2127573d56c8197bd0dd096140f39064865c65c31b47d402", "0x0e434c329d5242adbdab24780495ff97230beb344b918f6f8d6bd7d21b03692e", "0x2c88a82eb87c81ba42a211bf2ef3c15875ac157c7f3868fff35af9f55a8c22bc", "0x111dc223e3c9fc7452a9c2de469383915f33adf4cf5b49fd2e01c51d09ccf436", "0x10647353de3197b9cb48f4539b507e45393b000842e8baa1218af097f871baea", "0x0e53d64121c0a851c1b3f07423582034abce698525d0a47724354c07152f703b", "0x2891938acb83ee193754969f4aa5a62a531081dbca4dec226258ea92984b4348", "0x04106f95e4ba3fb74dbe4bc53abc170262ba00c7c63ed8c457c3227532c12ce3", "0x2a73e61b8f1babfbb38b186f401eed0d92c5613ba25dd2ff4d099f7dd3c19fe5", "0x18e16b24642f19193b798b923b8dd25f6e4856d6b21b729aed2281ab154f7c5f", "0x0d5f849b166ab9f6fc1a64467c5557029f359a2d0f194030c4dd875e12ae3485", "0x0e25250c57365a29c63a4f1531b8b0ef523eaa93c1d70acd0aa7cd7844dd0442", "0x0f813d14af0c85bcedfbf480b3d80b9f335853c60188526d80761274074a599a", "0x0d2356a92dbaae8c24a8cebed6428083ef2f469460f166a6e774377e78055435", "0x1fb6dceb495bf90fff56c8aad70b40bf773ea1003cdd092fd77a43961e9d7dc7", "0x2c0a70ced79951a75e23c5a323fd706c2ab87c381cfc3c269081627741c2bbe8", "0x13dc6b3bdb05167dceb4b11037064ac5fd22db5e229e4c6ba55e8382321dc5ee", "0x210fa8b777907ec30bb88dbd7c0e6ca9004eb3425d498025da6c90a47c35025c", "0x0c5cfa957139b45a72fbbf80a410aab5454a982668baf24b0dd3c04e4d599cd9", "0x1f1f3bc4c21d633400fcf8bdb7be59b7f65cedc06bb2fc93a873b6ef12e0f52b", "0x188f0ee95a9dfb03cd5e3fb30827057e933711644ee7bd57490374c0d67532e1", "0x0823877ebf8a842b77e8e0f3b44873e9409727101b186cae2b80d0cfa726ec8c", "0x0fe81603de39ccf148ca6390d6f8bdc9395ca2f3f50878283d98f1f0e61b1aff", "0x2ef61fe192f52a9d7cebf41c134098f2ccae35cabcaa12963566768ff1b83706", "0x0db6d076b2dd1b9f4d56d2f66fab4d7bfc6a38fef7f9ae1d4c2f8c44b1510f51", "0x2a194a4ae8583f28189f9c011d107b82f279e6a0f8ca8bc9cb0aa581831c7d06", "0x0ae539fa9ca67d4af48fb292f9188c9e72f2eeaae2e500b7e7201718c8da8de9", "0x23f66a894b1df4d26a8baa6d05b1ace511faffd4605b36cfd12bb4c6dc2bb4d7", "0x137cef522af2942aee9a4fb8017bf330e64601f466b56d32245669d9fe5ba707", "0x187aafcb87841b2df9d64c1767789a6b221767e4634f0d550063a0bf92788c32", "0x23212e75f4b89992a3647036ee36d74938bb9a9851e13d7b6e52daf66c4cbd25", "0x0f54cbe967770dfa9d068b2fc53abc96489bb7d266212654d326de6b9af16d63", "0x23d83a60b9887ab4359b8569ff3a219bb81367955fde72a62002d3cd51101fcc", "0x2ea676fe7f21fc583ab0b0e189020d42cb22f044607ee15bfac7dd66da5ebe76", "0x16f37f357a0c584821a356ab56a16d41f045029cb515f58ede001f05a807890b", "0x139093b78fc9603a4288ae5811ed1311be916e4c97d35a5cf18e4b7e47d13b03", "0x0aaba5fcad1c047030c8bf246f41610b68d60bad285cc15f55900f52778a11ba", "0x1611827956f3435c1fc67dd3d37954a255eaa0196cddc5d5a6187fa0a2839efb", "0x23db56362f248912421e5f087ad16e0c9e6d2bb59db30a52818e41964b7d8126", "0x2f215e640207a88b02999c98f1af8fa17331d19ea3de1decfe8f2e478224209c", "0x2b2a261917c0fecf2bce19021f8506e378e9d3e1afb451e9d162b3d93eed8612", "0x2f662e4cdfef5f822cb956df75b17b46f17b08f930f54bab4324a0363e23384b", "0x0870eeab2e7bb1e82c426c2ab1d65fda25d426749a538b4ea669eaa31f661a00", "0x169418dffc99f2ef5dc6b1013717c134409349d846457985725b15ac6a152fac", "0x021d3cb240d6400339ad5bc535b4fbb40919ce6b90162e51ec6895a7cabb4375", "0x12e45c46c45b660b6addc149e4216eeb6fb19474c8cce4d78e34c3cc18024afb", "0x0c7c86394b7ad61d8c348d185403dc77152fd310b5d05970375a11b5abd03548", "0x3024e78b217f85d8efeb60008ff70d33c3e84c238d9c21a04121b498a2fbb131", "0x235977101b56071ced3163c1ec7187909a3ed7679bb54ad40811ba318e1afc81", "0x14bf885e66f7c01fd974efdc0bc2d628ed79ad6fc6ba511c5a8ec383e1a73a70", "0x223325ae7e73cf093e1d5891aa92ed43f82610f1283f265f56548b38072f38d3", "0x239a5ae138dce6a019f44560ef7c19d2b8025dadf040559226f54870d318a57e", "0x01dcc35115d9057efaf468d7c8a7d46048e01359c974855bc99738f0b247672e", "0x1359a40012c5332587a4deb5604a436e269c282ba240cca0a6d77b343e76bbf3", "0x0a9ee39712223d4c0c37c26a96f267c85fc8e31acaee0c07354d3798dc5003e7", "0x11812d1ca3671ae688a9877233eeb5ec29868f7cd7c5e13275391a84167e0231", "0x2435cd699bc94985945d878960770f9298d40c0e28b6b5979069e0590952f0b8", "0x2bf020785e4117a1ea5930cd5355303bf9aab2a1ea0d6685391f40eeab2af0a0", "0x2cef6c78577c9e97a76855292ca92e4269ac53e9b7439dffbac2eda5c6758024", "0x09a30e00c9f0f6f260f05f029cdaa7c7afca506a5ce562c877b3b8d543135429", "0x1fd85928f8c8053c9b264a74f121b90bbf9ae8063e0e89670165b9ba66a3e7cd", "0x24482279d9efa57862a6cd4524aa289e6950606df8cdf8fbcaed4b674fdade91", "0x10260a39cfb0d82ad8182a6951f9c780a455fc1de48c417d6ce6b27f36462185", "0x25207827a76052d489bb2698730d5c3fc97192a4420578d2474a37ae7d7e3148", "0x28e36b634ecbdf7b8e4f9e1a347df95d771f15d97f2d5c401edf6a6e375874bd", "0x073f0dea6f83d443ee3ba27c5b7f0064ab7cc0d34babae859f6bf66d46a1e165", "0x14c6618569f748ff65514437adbcfa97f87b9b0d169048e84c553ba9888c451e", "0x0c7675a042ba6cc74fa588a0b26fdc4f2d1f119a0fe6ef111be6a2d45b4bbcad", "0x03dfad7db3f32c6ed8130c43cff604dbe1c29dbff250c684c955f09e495fb34c", "0x20114281fbe35c188164fc6d4144200fc1d9ec433efc677480bd2cdcb35b64e6", "0x29e42f5218b1ea3fad06a48e2292c0fe3df08a2c4a823a3be4b998955da8a21d", "0x13bf4039488d94b1b6a67f256296daeb6c7c80fad2726d6e9be11e17c2352816", "0x1847a4e36b3eace13de58fa4662a9f88c9c17a464e6dbd2083c2938c227ee3fa", "0x0a7a2056c7b79384af9fe3c6826830145f51f6f8ca5d1a344e295ca7663ada27", "0x181278caa15bdfb5940cff2bc3216ff06a45962d4979dfc0d6c94993bb7de86d", "0x0a8a6f4fbba2ee09a36d390fbb1485fb789cf3f9f641dae011520c8f10e57a43", "0x08f6b4c0d7bd5e4c87fbc6874520e3329c067b6841fc833aa37514435e987cea", "0x2206b2c18f3292e7a9a91039683a55d813dd914b0c7d523210424ff0f2817df7", "0x0186cef5c04b3a6c32da26405a16cdd359df57be8e93291acbeba3f487329cfc", "0x075aff67570ea17c7c79c9114c7a10d533c6080b6d15a5bebd1204fdcde772f0", "0x2b06d8389ba9621c3869d2e8b25ac15e2c97389caaf7f97a35700be66c1655a8", "0x04fc6d0a6b67744428161cb5228a94e7c0e95dede804b2b47a18055acd737aeb", "0x25e4a295b4e7a2dc71394d41ec2a8f4b124e58c234448a028a2c3bc6ad25e69b", "0x0094c24ab01c6db594fda907b639a7b3a54301439340e889b6ca9cb6cba067b0", "0x2751821a6e3b2206cd6bc3cd5d98cbae8850745ec6cbbea413e7254d2a514549", "0x145aaecc24e3878db9a8d77149b2419ed5b42df025ecbd1a8e97d8b817904bb9", "0x0d2aa00cc6e5167d845ee1877b7aa059b5e5151c57e4c163da3403f9a95755f2", "0x24233b69861c70c449ebd36e4420ddfc3c242b69ff6e3d4c6090c2bd08a764c2", "0x2c55fe1a75147c9c826f762f836d5645ac4184ba1927dd56a76dc056a9895667", "0x19779b1cb16a9c79654016674978b8b6ee1a78b64579de93ed2d67b9e49f098e", "0x1807721ba60fbae476ff60120c1f47ec0bce692cfc00102ae50bd9376c5a22a1", "0x1c0208f5aba12750802fbdc3bf12eac9e00ada708f167d4b167bd7d4b03d76f1", "0x090b6e28ff541cc38869abe2f5dbfb9fbe888d21021f29d2bddb9127d3c273be", "0x193d6c7e76ad94eb59a20010a799c7bf96a8dda8c90887d65214c8665ecda01b", "0x09ddd5bc0b1f8d4c4f1a7a102c1ba12ec7e7540cda285a564ea7c4753af8a8d1", "0x300a1dd5fda15d1a9cfe2a287801817168721da2f970139549e16811f555be1f", "0x1520908df2eefba075bb41cfe0740e1e5a1ee181ce492016e152706e493cf470", "0x0b3f215d52e85ec3c682698ebcb6228233ae9518f9450f480689e7cf30137846", "0x050996a07af6765c56a8ee2f736650deb4972bfcddb194a0efeb1954daa8a4d7", "0x23a59326daf5f94f3b5192c18ed06cc58cd9608e44138686399dc4f1ee807add", "0x1d220b9add0592866898ce834b1bdc2003976e815c0cf7d3f6b8bf967ad56496", "0x19b49c4da3d9e3a26d36566738658923477c504e76a38a82b1b1247104f681e1", "0x139decc567b06b495bd6f3cf006c05b7e1f25d5b7ac554445c37dd285beaae7a", "0x1a5a7d8bca8d4f07d4cd6e9bcd00c009e3099e99af3080debbb21f90f8e5b425", "0x0621e3811d3dcb9584d0a8be41e431d588c93274c8549e625f98fd15983a809e", "0x02a41c2d2bcf14664a0130a021daa6efd4a3b0c3aded38635bff97e3785ed6bd", "0x21cfb54ba72fc06794947cc3bda33d815355416e2aae19084d84471eedca399d", "0x05115093894089a202a4cf8d0aea329d83cbe0ece741160f9975cf01b7c85dc6", "0x2e40541caca7653212827129559ab422a1c06a6f48c974291470c65fc070dfb6", "0x07eeadd730284f5ab60778900b60300d27970001aa63e46ebb7f9cda1157600e", "0x0cf33e4964d350adf2051f8e2e8448d3324d24d3f4858407f4fd60d3333bd98d", "0x287c60483e2db313f1a2bda92c1e1c28b65ef0b99df4acfb75709edf6a3bfcb9", "0x289440f4b7fdb8b2b22661d0742e9695139c1a1ecef53c3febde0b5f6d9bb4a5", "0x291bda2c37fac962a24555a7abeb36d8e8b9eb25222f97f4817ef2e5b0bc7208", "0x0e105449589412404cda7b82f14d527594ff99d04cea894d6ecc315119f42b73", "0x0e6097f0ad418ac7123ae7eba6cd4522b7ffa8dc8cf60a1f836be23e41ec25e5", "0x22fdb676724017afa8a8069c62d307aa4ff52c1445ad41b94c3e406e33e0def1", "0x0204d594ad7855ad0f6950742b19e60c2c5338817aab7ee7bf631c3aa92160f1", "0x0b6a643dad3f953877110517f7b336518c8fc11d868bc72e76cd76c3b2f7dc1b", "0x04189ea6c2bd4b00fa6349adde17027eb7d76353a10bd07d0942639447cb43d3", "0x23bc8449d898a7524b2dfde263036cac2e14935134f8c3baf7f1e13ea2deec3c", "0x0017efa608d9941bc64d39e0b2593b742576dba257fab323d4c99c7a42107a16", "0x02f061475e9d8888b3877f9308e7758a16f91e3a34a5856f15ad0b9f2f92e2b4", "0x1f257d4d6f3277674a061330d73d6ba135da7cb0cba318686872fe1ef6d52e25", "0x195340f6c1f7b5f6158884bd237715149cea488edbfd80fc9b9cc61c384853ab", "0x273e200179c5c45d860b26a20b2c0853c1008f942459d5cdbed633ede031aa1d", "0x24bd0ecea1e1df97af0f296c0e792d676e2c8e02e808a158bdbe01431c5e4a48", "0x0c6e6f0f7c20811f404599d458af5c6cb41ab671599d6350df38e82104bc6835", "0x1dee1352470235cd8e129b5611fa953706bc08d58f6a3ef3d80370d8d19683a2", "0x1be0cc30343a168fda7c757ac0c7e5e16afddbfb7265878080725a12fa12ad4c", "0x1a449abf644f68a64c217c6a042a231107ca8d9c619208580eb76bbd9215d984", "0x080117dde58f228a459f59d90e64babe2daf476a9a2ca018faa3c5fecaac1789", "0x24ab9a167b61855e0f2c60bff098d5eb7d15166fab51f2b62c809de318d6d176", "0x2b56aca9d595460503363292bccdc80e823201f71b54bda684c93eb0893784f6", "0x057361ec23c87b30080ff1cdf3467d57c95a12afbfc48ab5e1e4de0162a41b5a", "0x1baed177177a25ecbbfaf4f204d9921eade3689ba1378cd9362cc14145089f95", "0x00ccdb6d5f4913d7656889c312975fdbe0e0309a841849fd808d75f593a71481", "0x2c52f5e1ef57de5dde528471cc1f0ee7839929df98ee743d9eff962515561910", "0x0234a4a32f767f2e1ca48dad3a2fdd3ff54b2ca3d53ce13fc9052414ad7f7555", "0x182b4c0c551ab0ce1990b472278f794ba9cc62abcc90a89efdd80776558e3433", "0x001ab2bbdbd043d2d7d1a4eb76db4de71fddf19edf10d7cdb9550e1846e53fd5", "0x206e6cd1e3154c113a762a628e24940907b41e90e7c2d43aa256ea5249978358", "0x27816cab4bec18577bd335bdaf8298798a261bb175137177d46ba95dd03dc8bb", "0x1680b632a04be3eb1ed64ef589440b3f9526b2ad82cf0b8839d3e7b0f585bc8c", "0x196b2cc0e6e07628df8234f58c027c190c75b0342511efea4c3724c4fedd6e75", "0x29ab0b6065ebbefc684608acc6bf3b5fc693770c38bf91b4be38fe6f72647486", "0x224ce814d39c382da2d65eccd9deb48056ede18c5efcb8e25515b727e540a859", "0x195e1cb28f38a9cb57b2c719b504f5fdd1d42559b6a368264fd0fbfefa66559f", "0x0e9e5eb70f4490ba6dbd1c0ee1d6724ccdd58acdf138785ce98ee3848ffb7840", "0x1995c9c8e520014e4412ec653839d781548cf71f46fbeb51919582226cbd5b21", "0x0886095cc376c87fa653000283a6eae11008982f27104afee198fc377f26e324", "0x13761e206b3e89b23de2342bfca860f9b0d9a36d486aa115565f9f52369c124d", "0x22a8c6cfc0e38a500a47515c519ad6a72506ec0d508de25942c10f51f0dfab81", "0x18985e9c7ea6f1a16962e4e27cf1aa4aa3086938b13f8ee9465a5ec7bebdee03", "0x215b523ce3f055c92eb148c00027d1ad406a2abd64081043e0d15492845b31a4", "0x0102f78c7513b093b885726b7df2e70298801b3e4019cdd42239d76448588c31", "0x0bce88602fd3a0f0ab8885891ad44045058f9ace11fdabd24e8dfa1b0a4ae727", "0x0745f760f8d466fc21043e2292e6cbb20b6227517f5200251129c5481f52fa4b", "0x0406de3807445c6d3cbdf7b174c410a998a1530fcca991535a2a262de4e2ee56", "0x26779e7346349068dbba66f784f87e243cc27cab59e887f7ed7a0117887d1acd", "0x25150652a08af8ca574c7c5c77ffd98b17259a1d914a6ea41db75014267949d8", "0x00bb8d13438040f674a79ed42202c5bf6e67de6fc3f6b65ca837ceab795fcc6f", "0x0c1ebf40eeaac3d4a192dd50ee25c0067f66eff6229d045d5a801067639ccf2c", "0x1a39731eb32fdb51dd793754f76103b5cab86947aad12d490d4951932ff20727", "0x2baad3d41b18ae10c463af1662ecb28c6988524edded36943672a0e857b960f8", "0x2e778da1518b6a4fad2e833e41466fb2fe82f4f8df1b5c218cdd3b7e49af67e1", "0x156dc717930d6490167743911e9bf4d4634ae049b53adab281698645f8b16dc6", "0x117f2ef1712692ab9dbdc51db4968b45f5e0104f9e5281329349d908b23e231c", "0x0b281b5d9dd2ca1a92e2d83b5087b6a08d6ab08330f47512aa047b2f88ba68cc", "0x1c2803766dd9096567a3366061764f8c916f2a2dd640b6eec0942ccb75d40767", "0x120174d53ba57d1a141bf40e4c705683668bd55800000aab6f34766b7b6575a2", "0x0c37b25020f8c76ea5536de54c722e47d01795d31b5ed73466e7d8b8ad376d46", "0x0a508f345cc9a8b0c30ba27651ba1c3ad8398025a4000a5c2500228c44fa91b8", "0x12afa49ff4d8b4c6c372f7e065840783cb9497eeacc847a340f61f1823cb2a8d", "0x29fc37eb5ec7cd004809516b7aa3c716f4f7f6e7772f443e0730b01dd5071a55", "0x2048fb9c1fdaced0fdc5159490db2977e57dbcbff7514ad1e52a271bf84dd1a8", "0x00a6c4223aabe583e899bbcd0314a4743181f1d5e03dbc11c8a4d02550fab64f", "0x15f462ab5b21c31557e25d9c22d8dc6a0cca93c8ed68a35655cff745686764d0", "0x27bc1c9af68edf8e3730197124be559f1472e7e3bba0d35e079b2d1b9e4271ef", "0x1a2ec148f900eeae38c0d3d6efda64e146929c71eb82da3139a3a85968ec6ebc", "0x04ff41cb553ca616d0616545922f2030b71b2354bcd1c55d7eabcaea8904c22e", "0x2f2c4e7b18a845fcd6add67009fc237b14a984619260a7b3d38712e03a0849b7", "0x22925c606a1f091c1d5c7122f8e1a8ffea6a140031106826ac53a9c69d84c0ab", "0x10e2a8c7b12bf70266c257573ca2594d8811633f77822d7c232b329c5b4e7279", "0x1712319595ae464992524bf8e488b783fa45b3548cd3f162d586bce31ec7184c", "0x2e9616987d3333388ea5a1cb56b4c161f279ff19454a64ade43daed4dcda5c0b", "0x2c68210d75660df5d9a8392a2805ea1612fc6137cf5b35a68fc1f03acfbfe4ca", "0x053cf3707283df8730b6e1f637d23c67b0b3533061a35bcb0cb0f9bbe4e8adc2", "0x07577491483d03d7769dacc79607b9897081c0095decdce3d227c059ddeddb66", "0x05639b2324c0b0af81c5b256ca6b2d46b95eaf855fc26cedbf90411312de4a12", "0x0ec90944eb8fc36c52f3fd13763714f41cea1ff487ea39d70bd94e9b7f8f16d5", "0x1e96cd3ac345bb2e5bd3e755922f84afaf303d6fb227fc68f703b93665f5ea96", "0x0408425405c66baa7d49858e6d5871e5b42ffebb0df885a824942da1e2e36d58", "0x284d77566b42f3913d41ebb0528b899426e0805aadb9957a534b022b081aa977", "0x0b044e5984887cda337f58c7ca50a78126deb5624f644516239427948d7d06bc", "0x0486972179ee3496795bded1c2fc9674c0c3f71b58150c9c525063a6f2b340d8", "0x25b7568316c4b2fef9b72543b6033b317a7bfe406623e47cb68e5c79296e6bee", "0x0cec9e74c344198703ceff28a4d11275f6c5c15738aa5a54a19269261ec6a8a8", "0x2bcc34a99345174c97a65e8978194486a9957c9d736f0ca39b98130801d1a114", "0x2ddb2ebc0ac98f6498c0f2be2d73e86a786940a1e8c558d8dbed8d6f44b02551", "0x2642b4a208e503e3480718d4d205351f43da183ed284ed7a385ef7cdca80bea8", "0x23fabdb09b481bc764102ae85ccf1e6ff71c7762f8bad04a2de3f7a025cb5087", "0x0ae4ed0ea6adb74b9d327fbcd01dbf37f5f6c467480c8aa5f495124cf70b823e", "0x09034e1a646d6674bef041afa774e3634faf8adcc7c71bc2ed6e03b0b4492016", "0x2817ea20b471a4bf138dec79d84f9f6c0015e0ca147b650683df4b3372b55ef2", "0x2dfb7f81425c2def6bfa4e833e51e912298397de78fd2aa17f6d1dd2f1379ca9", "0x137b5bdb746523c051d680be08daa6b0d54c9ff7099f2bf5ce894c24a8ef1f37", "0x03900ec7adc8e28af7046833dbad3fa1024e382aebe02bcb535243ddca21aa85", "0x2b285b6c23b25c52f2079863c759e6a10c33df8f191551ead53ea508511cb555", "0x1242067be2202d1b2c32b79c464e2d6c977e6fd12d8b35281e84c375864613d8", "0x1e8690f5b0a8729b9536ef2920abe7e6f3eee805237b158d997db63b17525eef", "0x047f5113e1287b5572c82edb369fb0f717a91f261ef9d81764a5b279ad9c13ba", "0x2d8800f21cd6774d5a6aa58ae2cd32593593d173b687122a4d61c44743902105", "0x274ba1521d5bc5c580647f10d1a4c4cadeef088685d1976979bad813756f84b0", "0x17895b7c10d6a475310d34a0737efaedddca8f1eee9d8d56e7fe4934c8b56441", "0x06eed11ae9f70df5ced09b1a6db258978cf5becad2f66d15761bf61e7dc13440", "0x3036b521c631ce5d3599e37f6a5daf928842cefcbcd2c6bf84e2db5ded748f09", "0x1f52d6e9ac28976c5a6fbf168c818478645c90d72e367609d7d7805a6367482d", "0x2a0e60356875d6ace1055932b3dd9ef39c3dd871091e96a323c1596cedb35e6b", "0x02089633a6194f3ed38eeec2c8f54d0c7f434938fdebb9c0e1830dbe5311c38f", "0x178c73d2769765d85383283fdb0d769457cfef0612baa963336bac1240b604c2", "0x2fc20bcaba9e3d96ebcdd710e3b341837d5d0db849e789f28c4be5004afa19a0", "0x151a423bee67fb14d5ad279f425213db7e0f21494982df872354c01f0f4a722c", "0x25d61619e135690c4e10e4afeb4f5578ad0f8e25c20735366895b31eebcdf47e", "0x15dd579bbd075429301d7295d3e685d832bf9f36c51277d09f2c3a664b045cd7", "0x236fa29b81678c8a109fd361c1ca90adf4423c13cf5b8cc1032b7283bcc959b1", "0x2a80cbac9b884e20368691bf1567cb7320537a977da10e53c5baea3446c01d1d", "0x11d4cb8957937b3628a3b3f4d27f276cc0c179b0c22b2c13fffbde85fd912378", "0x1289bf8ec507bf752a07c9b71efc0f800a52fbeb1637c5010fa54eadab402946", "0x26f842b1a99394297d25799f2f03dc9e4903e77d2ddc03ec2fb155466da6f303", "0x15944b9954b6182314e878fa2f9e091dcc40eadc48d37d39bdd5f09905c3a369", "0x0742166dcd8ebd8576a6bfe0f1fed13793928f84442c7465a0012f584426fadf", "0x08603d5a0e937b5353b56b05768fd50bde792e72fd61c06344cbd735707b68ff", "0x0caa1711c66e9301b6f25e21a31683d80bf58d86032d03bfd25b9777edb74a75", "0x2d6506da695d2087dff87b5f636ee676fab00c32ae45c75b3db345f3fe74a311", "0x0d9244b07af9b6eaeff6f84049cb2e01d75dc4cb68533606e976b8b300758c84", "0x243abc3c3382faa5dde3f1c3b432042d3f030ef6a1f5401aa37acd15cb1c8c46", "0x168416e0a6d275d30eda3989242e0723024727d3b0791b06f8e1bfe8efe40198", "0x1bcdeef03693d1ad0ea80c65688654affe634aa14cb11ae3a491681d9c5f8eeb", "0x02f66bfda3d2a1bdedb0ab8bf7eb1c4e551bef58d94fad7f7c231107e5653909", "0x019f6802171ab82a5922f023fdecc097eb8ac1fd0a1ed349afe9a7b94298975a", "0x195a1c738398feed8c760468a0556c232645a1dd862d87c1f508c949ad52c3ae", "0x0a36a3a46e6ec16567dfae1f853f360e6f24924810e838cb24ed1b0fce37f1e3", "0x002123c29ea87f7ea7b35c25f9e8dd3e81bbc3974c3c17c607cd840c09f374ae", "0x02a717499cb6c31f71f0f0352b0f5bfef3005b80e93a520b6e42b3985789e2d3", "0x0fc053584b0a4607a2293e18baa309c52fdc933e9ba90fd327aaa8c8cfc4daa1", "0x1310d1942129737b32e87a86f4573032b1b99ae3c6d71bafef7b494794855541", "0x1bfadae53fc82900f5761c558fee5e1218e6b2a6657e74b540969eeb49e0b8de", "0x28c08a69e5f3641460ff2c60b7579395650c5b6afb392da142d32de8677556ea", "0x223222ee42b6ca997f44d643ed6a3f2b040f47fe8cd922163d9d9d8b2622d909", "0x064dad4752e708ff29bb0842d2c452a71448b43949345690031cb125588876a0", "0x2d5ddc21797043996b22dcabb9a1ba6c82b71e9a1bc5919db8befd35411056a5", "0x26315fcd9b5e1a266ec8e9f6600f5a6e0bcdb22f926d61591e83fa21069c0e0b", "0x0759273a4177fcdeab23da38b478faf2d4f22e82f346aa754b0a1331bc8371ee", "0x09e13300eade70568fa0a840ea9729896ddd84c364d6279d34a0b9d1478fcf2a", "0x13e97ed3c16fad6cb5b7bb954f278f2434b22f8cc054463a145cbe0240d4f8bc", "0x05cd3486dca58f4eb221bc2cbedb8aa3027cde5765971bb1f61c272c5aa51ad0", "0x005ce523f6bc21daf1df468b12fd3e8665e1c1697816a9a671a3b2b6149c7de4", "0x2103066cc5df55e67cd7914028145fb71f089d671c83c5b537abea482b2d8cbb", "0x039f8077bd9b71f91ca0502eaccc1672c539f72329317aaf8173d2edd7636928", "0x2247bc0cc4373705b89672a2205346e6af3a6422e81b4f4885dc3af7cadcc5c5", "0x27bcc768bd31b9d00687a7e53c3ce53c426762706188790ea20b2e819638df80", "0x0d91cef51a76f7a62c51c73a2809732d79ac350159814ea536487368cfdfd708", "0x20a9ecdc649a26388dc68dc02343a0f167bad46d6aa1cd008537f627ba140730", "0x23134149a0d4567c6dfc911d5cb80c1a1016220d39e0c230325dae2941f528bb", "0x2a07507e9f030a42c6f29ccf1c9cc4f3e5a5b0dbf05874d5edadc03fe74b9474", "0x1bdf66bb1d57fd788e54ef29f06f35fdb2729b718ce81152cf3aafc64966110b", "0x275c33d07f9e7338ddf50783bf158d51be619bf77a12020cf5630b78e7e0d0b9", "0x16411554e55fe604a1ff1b3b5b7afb6a2bfd0f32c4070b55bf1ad234e8b28116", "0x073e6ac7e6af227557249ca1a5c55222a36c641bc2851a0dfcfb60831f6759a8", "0x10a6fde88c5f621d748543c76a218f95c202bbc3baca06838f31331b0556e12f", "0x29c5865a26588ca8a88128a072c8434cc97a1bcec23e136f038d29dcf96b0eb6", "0x233e0ef6ad132ed211b1911cdd569576fea8c17ca64e4d5dd516fcca07212c1a", "0x096f9b92b9cf2c7d664408a29860365f5b6adc238d878a476bded3e4d2e0b840", "0x2fc788fe8aad4c28b943bb57cb90edf6d7b1f1e835de1fbf3192e395db785554", "0x1bac0ed609233148503795fc5e114076ef7c9d722bc648dd0338d9689f6e023a", "0x001c35268aa030d6cd148e106e3fc23094e561573d8c72a69fc383643e2adc82", "0x2bb1f8fe5d998d0b8b92837ffb27bfe7a39ce39ff94fc167ddcc95a7202e34b2", "0x1a98576450a43e5e705b9af68cd0c145422da23945630b10b8e821dd61f9a2b2", "0x2714d37ee506efbc2ba9941043fb23f16af966f123d653f38388bcbdd50e6037", "0x175d0480ba14abf0bcb8075a03f4a2a01ff7ed75413917b53e50ea00cc2a4ad0", "0x203de45a037b75ef63761750dce08da2be7709701ec8158c17fc026fd084d541", "0x265aabfc78b70ca985c329080d6329a12560f76b01cc3d431a7283022193abf8", "0x135468dfbeb70e8c2edaffac8658a6c22b2ad1520ac0819c127af2ea5f3a87a8", "0x216a41e24329deda65a8a82001c84ce8286c61758447ff1bfa9d9293b6711fdd", "0x2887ed49797bd6652bed8bb99ae345ad70d1a27cdb21b9460bb6fd0d4fe482e6", "0x03e2bf82690c804bb6ee3c79dabd1892ea53a9811e2424a19fae446b8ae49cad", "0x0e6dce1bbe6e9e465cbe14dcc615611867414676dd8a8ce9946649b1c4e81116"], + ["0x123992df3b9daa65139ec13fbb52f7d348e134333684c1596feb0e8d8c3ad596", "0x2fa46f5dba9909ce9984a01e2af30b550dfec978be92b49119a3959c7f623703", "0x21d8f94d3bd98f0b63a7aacb175b2cca13b2dd8a8cf68fc36d94ae29401b2d2c", "0x1a8c06c61046e0f8dc6a39bc57aea0d07fd7db34e68f73579da89e116af87eb8", "0x298cd7046f58c0cab77523a58a6fdfd1401b89e7ae5eef4994442d167f7ad1d3", "0x0eac737966715df4a20b31ab693eda86a07f3e830fca475a6574d67fc5f19f63", "0x06b9b718bb3b6d45e0cbe6d5d9a2f096a77beb056821750d072262af2a70a33e", "0x0bccdad6e8b1fdfba846a9553fc7905b3f96e435d653eec3972565e1fbbc302a", "0x1b3ff4a6bc8490993abb7a002393cd1c1c007f49240ffc2ae1f1057cfcd8c7ad", "0x017f0c9452d70eecdf5cc8b6b0b205ec2da1de59750d6d1709751831b7e4ce26", "0x0cf1ab805bc47a10349ae77135ea95a4144a6ed0718fdeed42971c160791b269", "0x18dcacac61318af644ab0f2e61ef48c29a8aecfa0282e9fc325b5c0287103ce0", "0x16fbb3bdf4066e2b2f050b89b685d408711685db7e4638dec90ab1cc794350fe", "0x0eefd0b8617a1ecd7711ffd5f6c4cd0496487a1b1146e9f3d53275af18fc6c6f", "0x03c707d1835066fa30e7295a097a6ff463b85b778ca11d9bd2988d41b600aae2", "0x063ad3f6e3f8443e0908af99ce32d2c09606e84aae5e3ad30ed60d7a660738cb", "0x2cf67cc9cd3a5313d992e315010d90cb501f790bbe35a166392a51d90d117353", "0x2a6e7a7bf7c190d4e4f7f258d890dd41780e28f6b71e893716f70140f4406b34", "0x26140420009b6d8c7314723e66925badcf98440da6c2b97b66a52b98cbdf1d41", "0x212c611149d057b2ffefc9938ab1498d3b265392c73480b9cb02276906e445ba", "0x08918ab686c1a160a55db12010b20150f82632dd5933e27cd01129518cd9e952", "0x173ef7767749a3249b004eac7aa7e94dab20d465c65ebf4bab422f743f17d8b0", "0x049d90fb549e0e25790f5a6570755c68c13c97b18d67bb9199dc765355fcb1fe", "0x0d1aa7cfe6ca9e048ac6ce2cda40c6d64afbb8c15a7cd9e0222566f9922a1547", "0x2d82e2ccd8bd63b2ba44bc0f4cb5ec88142a4408acf1dad452a66e8219f667c9", "0x2ab73a842e0bbfe229ea1154bf8aeb48cf2fc289b939471d6b465b7202eb2354", "0x233f36bb205dd59d045310064408c6eaf710173a118f9ed21153c99a6b0783fc", "0x18c14a50595b8df32124bf57f8b8df430449f35986242a2ff79a644f510cef27", "0x186508d6b75c7902ed6a1948f91088c7cddf973d8cfcdb4e5a5b0cac6b5b22d0", "0x10bf42990104c39b27ef0ba451b510cbb001f8ec39a313d259be4309d6429bd2", "0x163e875fd9e04b255971072c0d2e7614ee1f3c7d2b93799aa1570bf73153f3ac", "0x2925a59f82c1472b8120988e3af6cf24c2ebec9a9f0f830bb5c826061c65eb8c", "0x25caf9ff6543dcc34e2d0b8c2af3b36ebef3d4c3fe62e2937ce590a38df2da1b", "0x14cc417fd674083090f4463f66180e4a3f38ca5ba87f4889e510ada924f6b799", "0x182550aed7fb3b7d92ef0b91f4916ac7f7db3b943103ae7ba2e09ec0f4a08517", "0x216305852467475a9f934d3b1132a99642fb79fb6bb91d948f391ac9e1c3f1c8", "0x0423b771f7215716cf97b3a72ccffe156bb9f8097c77a2b6dc67bb5848689b8d", "0x2247cd5af8b5ce0a983aede949f81dc7d3fc5a2cbbeb8d16ad43fa2c3a882537", "0x04990ce49123ed1eca92df7bca2b271d07ba4ae5a30c6a0119f77b51c3643d2f", "0x064e8bb29cc072af727af1b79af50896a6548dec41bac10f0319fbefc1bfef9d", "0x05f9be83351a037f574fd0f54d4e9ae5cadb930ceb51c91b07894f0160f8fa42", "0x202ce17e96cb24e8986cd09351ab9576d5a5167168f9d5f3877c4c5ce03629b6", "0x098a2fb5cb01868cde6424c4211b9549b8f550a7f03e7fcd8b5121516b3f452d", "0x2cbd947e532cda0f8f1b899ffbcdd5e0b6b08451e637fe53f3b4a8ea7832aa27", "0x0e0fa4620cfc943da81b40b6b42f86fe74e55900f800645ba66137b6b7c728a0", "0x2e1ca081c96d5abf2cc40b3797c38b0ae8a8ef5d76e6d03e9bb06741c2184123", "0x271cf3ea7b06b4e743585ae68997c0143542e405c70855787181163e4ac20b45", "0x09dea127972d2109cadb7e96abba7577c0ac0077312b9550f81b7716a92f5eab", "0x1982cc716da20b119525c64a3fe85f5e31baa97c76c82376999637d8ef1c8a07", "0x226600de8bb65b38ecf996e5bb26fd6288c690f16a5eedb730d939311d0c3ff1", "0x020f7b77fbbcad998e7744ca27c0f7c0c2550a3db90fe28944e73d01d24ae6cb", "0x1c2e445cfc98637aaebc2c1ab7b6d790ebac5027071d1057a945bc90437c49c2", "0x244b349502df4a33563b30237ee750e79bde135f0b0896f0d9cde04f1004171e", "0x10860a875d80bd71c6267c1d54b02fb58c890b1cffc35fa707fe6a94941281cd", "0x2eec5addecc4e24650dbbea531a0fef0dc327dc694f229b2526d2f30b2c499c1", "0x188bb7150b6e40624b02ea2821aeb6b52b1e85b5b724bc0ec512f8fa641182ca", "0x05e56007dabde2cc83d498371e99ada953ecd69e135ef0204d2d3b6cc1f49aa1", "0x2553755b36de611ed557768bb5513731474a0a8cdc6dba8f04f3031b07687b16", "0x1cf267dd9bfb6e678a82c7745857a63e2b57066a8626b52c0fd5ff42418aa65d", "0x106b2a40087375ea2988b8e0700fdd71d3716af2bfd0b6b0ca6e24ab4b4c25e1", "0x0b978e4a10dbcdcbc7e90aae2ca19615df674819cb611d93b4cbf5f2ff9a0a16", "0x2ed68ffba6a646e5047666b8ad69f6cb35ad096d6d34fe1ca67e532b5186bbf4", "0x23c632c2fe68d4f0a71b1ee63951c72b7d349797f07053df2ed33520ea3e94cd", "0x27fda5f826ce6a8340d12a584d4b9c84f0a4ea3c9d33eae8d6c0e23a5a9897e3", "0x2d24aa4c0772256e90344d20d46dfbdbb5e9dc132a4fb07faf8eddaa30da7674", "0x048d52c4e3d71485ce6af122ea136e60053e387d77369eedf8d9bbc663fb98f7", "0x0e0c1f005a1759dd161302fdb233cbac5fe151b5c2192255bd757b3ced899f92", "0x230d641c4552e5e55416e360eaa32900751de5ca53e8654af8d422eec627efb2", "0x02ff6fa8364a8cfb19e30be87d4cdeed9f957dd024f8138d535c6380a8b5d38a", "0x1689a04762a5ab1388f6a7257e7c72838513c57da7f546a2017ff128afe16171", "0x288d8c7325204250e8632f42debee8a31a470312ab2fd00afbc7694f95b827cd", "0x23996135af9f3a42a6db33fd55319a7caed8da2e6e338068d78f5408552c83c1", "0x15d052dadce14506fccd2690c333f8ecac382d2b6734726236cf9c7be278bbe4", "0x1494fb65e5993d96c30bf0bce3f56dce68a2de52299b4809cc119e37d8e042e6", "0x0b800ef8749f91b307947c581095ec9283c3b131be5ad5bda4200992fbff053c", "0x0bac1f53d5a7d39811bae7c1a79dc997fdd5f1270f72805fb05f5c52d77c1cb0", "0x179249893fa86ee067b47bbe8335b8942bc921ae0e082c303e32b809d939786e", "0x0985a7c9b42805d910a89e2dc9563e7e3449fd5b401ff4d5eac75dce7fcb420d", "0x2c1905b5f00c927a57a154c474427e31f3caab81981d621fb7fea525ccda9bfe", "0x0b23502ce04c0f4cb30c0bdb6c4f2a4f81c2ef223936f07ef57856f0a9bb4f70", "0x2dc051c1bcf637233ea7c5e086aed7dcdeb51b7a3525820bdd6eb65e578519ba", "0x273d8a4166dc3f53b1ff24c61f1a3b3007a282b526c7239eec81e92f51c741ae", "0x257988be7dc257a0c5dd7078b72f692c755f01ba3c8e57d82d9b969565dbf0fa", "0x213d0fe5a3e7608fa602f5b5ad5b8260654445ebd72492a32ad3991f3a5a6218", "0x07a383e7a221bc76fb14370d4b3eee8de502601a5e4d54b3370c4c502b097a8a", "0x18ce7b3e647ce9a3a90d0ed9aa57eb9a895d596a54958cc9702d8da219623e81", "0x12320ee10efc1f8118d3ea697574eae2dfaf8f29c183abd123392e3c2829900a", "0x093d0e1304c660fddafdb48295928fb6a83114827566cbcde26ef4c87c9fa89e", "0x2931b9295d96e5b97364b37daefda7dcbf3dc9f48ab3364da9dc6a7234d714c6", "0x1f533a1e4b4878c2fc2e9706e541d28481ce43b1627d0ba46596906cf3281624", "0x2517cb724d12ee6ebfa7b4b0d25cf0315466e98d8cac3ffbfb1a1bcdee0cf064", "0x00e43dc983bc8febeaad40130444ab7f9187185624149a7f274492d9bd8389ea", "0x186bc09a7ffc4edd291579876b77c2fd3eed0b1b83f21ddfb899039ceb77f379", "0x05d22a2f48f64658e181b8ae5e72e1a942796af2bfe6ef74ac9abf53ac65eeb4", "0x1f006e8d2463636bca787f765fd6ac723ad2c2e466ae6324f5d39f3eee58f0cd", "0x28913d42bdf680478ffd17374e895fe7799d9d100196f6ccc30dc08f39a479f7", "0x11b557c8d7e97bd99ae5f49e823308bd6e22694225d4029dfdcd836cb7c0ad7b", "0x0744b53926e1a0ef395bb04908b13326ae1866a68983c41de56fb7cc7dcce297", "0x2bfb2f2456a70989b165fb6a3ee6f944d28362935cabe516114980f141422a03", "0x3027047944ec82cef6240d1637070c622c5d28a74302de0efd6d4addd4dc2db2", "0x1ed0b5e4b29aeb0b5b3eb128cf031759cb3bc47cc1286657cdfe88c5c411d4a2", "0x263479ee77e44e8b2ab953e82ef63a7e4aff48f0e730f4782b225cb22777104f", "0x19904c84e55e1af3147cdb7f3a428265e20c1bbccbec2a5c8b950417ca2ee471", "0x2fa8468fea3204ed2a934a1eef7c78580a8da30c5ec5922fac89ab92ad81a3a4", "0x267c0b4b19662cf09b870e05f7441e042e5b962f73dfd78d23384dc7ea71afa5", "0x2f1504675041755409946e8c5f5432d35849ba7bea0d12512547ae684b83ac2d", "0x204199d64982f574327ff3f400705e0a53b25d59ae91ce0b9d31fdbba1ee2b0c", "0x0a087554e5511426780e457757c175cf6187a2efb9568a3d390d3a51c2297ccf", "0x2ef9b88428465f535cb04119f518d1c2052268455f1ab145ccf1693be92416ab", "0x2a96c9f200b477eba78316fc4497e08b2a4384b26c97c7b4ce877cb65ff5634f", "0x043293e61ef1b614850bc015dd316e2c7c54f12d2db746f7c0cdcb0ec551cfc2", "0x1d81e0e280611bf30989c1a74088493504b818b385d04d96ad298dbed9a7bdfb", "0x1ad9cf17b8368d98002ced2cf6ef9385a074c5e3aa0b2e12f4b768cc4804bde3", "0x19b30a27119ff50da2734b127ab83299a4b099694c31acc182ab453fc000ef95", "0x132d81f00bbef2804901c4073fcd9c817a63832c30d653063f67fd86482e1998", "0x292ea3ef2313863a1276b1f0e4973fa784dea78a1ec98f4d593947f6a4e73924", "0x028cfb5e0c41b0c77d987e737a5018787079f2ffa650102f2feb735c7d9bce84", "0x11afd75dc84353e2f9c2f05d1f3ca734eb45546b92396233a3f29f4e8f6791b3", "0x1aaf43ed6da39b453120bd0312f259294ea101b678dff427843c0fc816409ed6", "0x19db09df83387b1e4185cd79400609e79f37e5a4658dbee0785dab5dcce32868", "0x029cb3dcaf2ebb0f5b0b949e84278fed2d11db8c1fcf35e38189afca16c0cbfd", "0x2881df9352d274f0cfeb55df8ffeb1d0d81fcdab794082e2107e1b0426a730a2", "0x0628a0f9594c159206c7627a8f10748a1df2ce582b7604a8e64a7015ebddb65b", "0x22657393eb7ed9f4572c22cd7b9d5134d1fbce295c2a95f1afc6441de60d7fb8", "0x006325f509f0362714c4850daed8744062fcf8098608005e7d08b509bba33624", "0x171d6498b42b39345d56e8661ccc2b576ef449b1f8e5bdc5ac72d9f93dc3dd9a", "0x1be82f3b1cc9d849595d85e3398331186b6e4b4cbdf43ceeedbf04735315a8d2", "0x154711be62f23cd46086b9311b28eeada8d26323f8864de7e36e5543bcd7a38f", "0x19ece5d8c0b6cc07fa0119746e7f36c9c8d496ac1e1d95cd5bb8d769a6745cd8", "0x26d6162d8d9c9c60244cbcc1bb78814265fef97a53a168c62a43b9e6f4cb2d16", "0x28bb85fef9f65884e4a99a63a59a906d586cdd88bba7c51259b1fe6a375fe4af", "0x267ccac1e34271971e474179c5800526ceef2f1a6fddaac1de2299e92d9d8ce0", "0x2e6b4868d15390d8014248eec0c7f10d8ee9eebfa64025f961ece49a9ffad985", "0x17039023ba24e37bc4cde497e95d134ff35dde6fe093ed788e4839d2bcecf840", "0x214455d91fc747c6aa9908ad92d19b2dc75a84651183dcf43b9a256320c33e57", "0x0a07405f036d30ec77ec64b034b9fc5df2cff5877c3c67b7ab23b9f2d8dad2a4", "0x29f6807284b6e435ccc2fc14579baed0a60617e0ee33a358cb316811b3d8864a", "0x246894f6071fc9630f69187cb5ab506c05084114d2efcf231780b5d4b5c4a0c6", "0x04224081b90a67774d15ff98e6134493c01926f7ec25053de56215c145e5da67", "0x0d99cfe7649d1dfd292f11773bfff1ce3645ce4212787ed369c0a06b602bab21", "0x1fc76023333ba4dc0f2a8dbafbba1bff33b753fd77e6b1bdc4c796a031b7815a", "0x2f60e05fa1f7446735a3717a9d73728a5b20166537ffeb65707e5f7503e8acf3", "0x1a2b7508921fa054f58ca4d6eeb133453663c8979d6216ec9ee1240b8c894e80", "0x0a0aca4924bea6979a56e47af0bfa19c1db7d756bb4aade0a58e5bddd7ddcb4d", "0x262a2365cc780f62557c854566fa2c8822e6fdff8eadb90949faa5abd63a7f82", "0x19ad5a882f1dc4971429545dda3db1857b1ca0a246768b3a2b0014ba5a302439", "0x261e3360fb23c08e87b8f588bd59f08cef07bb48a6f1226a64cdc7d4de7e95ca", "0x069cc67cae46ded18fdc725c9cad9dd64e445c990271b0e2d2ccc42fdce0bf59", "0x162e21896c8d1f6c2b7ec16fb7ae7ef8c8ee19216ae189a6ef2d7ebdb1ce62c8", "0x128d42c08444d8956879995a105a336c4248ff9581139122ed9c9d55464ee9b3", "0x12e9391f7f131f13c39725c4414669bcc64c7a41b6764e687cee8e507433e3e9", "0x1de988e46c2c9a1c00d85dfafb1da7509bcb36422aab6052fd1f927df741c170", "0x2002cb8a779f93de8b44d7fb08cff50828e0771d65011f9954b424e67802cf0d", "0x28f6e5af2752c79d01a3c6c7d2930fdfb164989c20f905ccfc0982c29365d631", "0x19ebacb5354f7f272f5c12d6c71b39d89e14aaa4efbf987377337ffa3c026b2b", "0x05dd47c695cc6c95e2acd1bfc0ce335cb304a3c3380a94e8b7c070682ca869a1", "0x246bc3c037a3c9ae2bba7e73578b1a825e1672a7418801cc0743954534d9c0c7", "0x1b7ee255815ba7020f0cf78ceb9860815c0eeba268a72cecf9e3fd1a6870b3ae", "0x1ce04f643bc9513316211fdc0bc23c9a52bdaf4bccd9ca18590c1703a2d120e1", "0x2e3a6532afa95388b41ad59d7c2705445d7ce10c88d73411b7271f52ed4c44cb", "0x1f91121f2cbd1ead2f70f4f74729a25723721a895a87d73394cc9c1809fccfbb", "0x11082403388a99da0de3ed7d3b873f5abcf71f8bea6e358f5b0f17ca5276d926", "0x03962a691eb42cf5ef779bee82508641329ed9eeb7857f1cecc46dc93046e1f6", "0x0a67910e294583739c2b6d18ea5ad74e141bb2a353fcdd93fc3ef83f4fd7863a", "0x1c20f9bd1323709fda124f71e88901235f44c5e48287bf0f43b45443ddcbae5c", "0x111ab56e19274efd47392b70171dfdab0c8cef5b6de579de67f579e86b506fbd", "0x006e6b88e6f0cdf982de483aa04bb9d0fe288ee5863a6892915d125eaed786b4", "0x29bc59d6fba6d692e2a5e85ba50d6fd9bcfccc57e2bcbdddd65881af445fff84", "0x261d13ac441b2f30096c1f7f66a6d973244c2c070211275a37d49b1d70340edd", "0x077f8d9273ffda37ed1ea683f69349715f95986d26163f00d41c9e3c366ccbfc", "0x1678f9fc6c4502c235267f4b841d9543208542355ed7db420a609acb8e8ebdce", "0x1a65b41dc302b906fd144a594bea6d909f72fb707500b270837c9a249590075b", "0x265359bf0ead777264d18dbb4c4664301a23b10579368f40b433710b97f807a9", "0x2e944ce0eb653745a45632c070b931d08ecc4973ea091e5dc67125cc9045e41e", "0x27e3025a2d3e82614a4dd0550f59359f5643b86835926aed2eb0a7aa4f06219a", "0x0d9848e0d3b8bc8d43e5e6954e6f0181986e575054840f238cab4cb5b03fffc2", "0x1ac3aad815d8ec13b035decf67a685496a87b104bf57ef38cda855877fca7c75", "0x0c910186f912eef95fd673ead2281ffd0d5ce9c80cc51f6f931d0c75b9c0a3af", "0x248b63a76a024d5cf2e42a1bf70a954f01b1849dac31fd545a7cd74c5c3a1e54", "0x1a71fba60cd363b0be3ea3604a386cd1df466b5e69f93503858c69f5a868695e", "0x15a2869b6363cd02a472cbcec5c91bfa17242cedeab83084f0eedf28343178b1", "0x2813c10731f7694540eacde857786ab2443fb1891619243b8d4d9a529a733548", "0x2aa96905ef42bc1e8452087fe13dc3d55ce94062936fde48fc29f8698ed5ec50", "0x0f093d369fad0a0d255bfc311c4a58dc98a1900cf359b3e7d9688f6591b8d384", "0x068dbbc530967765cf7c7e69b8bee4ee08d486b420d5339626c8411ca984027d", "0x1dd0cab71570941ee962bd61dad1cb68a8ed8022adff356a67fcab3a6eaf5aee", "0x29a857f084ae7f2b506efd6cfb0672d63ae960cd1979f78d7f55d78259553777", "0x2081f7713f51b3930dfa0a6df8e83611bc8829cd1f8471b7e2e17f480d853c33", "0x2eea374a60ab1a20648cb908e605c6d8599ba601538635c8ccee00cabc85727b", "0x1a1b68bd2951131e6d71952233647e4165bc412da6d99c2197aa397d8d3ee5ba", "0x1defdf14415a78d5e6f287ae6e49ebb11822b8734c9df91c80e08de57b2d4f2b", "0x10040cc4fd20bacca69e26287138be4dac94040cc6224e2bfdc76661106a7249", "0x20ce67f32e823b988011d0c33abb0f725be96fc9ab5b2eb71012f5f80a55ff40", "0x202ecd50c82c9e1c79f0fe136518b22551c058c21b6eece43585bcd28cc4ea87", "0x10fba50c060fceb989d7536c3692f0c3243338210d145d6187926798b747087d", "0x02680936e402765dd6ccfdfe2dea719d3c507a7c551123c0f9dd59a58bf8dcb5", "0x102beb4a5c4c903eaef9ecb0d5794154620d7e9de84364fe0583be79b4de7cfb", "0x08d01db18faecd1a26c285be65414bf18ab012d7efb2675f4ae1d6f5e1370622", "0x112fe5d217f33c2d2d19762d286841366ba782b4bddfa33bda836fa2de419010", "0x064885f457cfafe6ece2944a9a935efdc717affcb4449ceb31a2792d5eea6765", "0x0bbdc371ab6d4296e73ed2078b99fa47d00c44cf51eec0ad4ad0aab9c09cd886", "0x0b9e59b699aa688dd12143e890b6fd0e34800d6b440f5f6b6c426b30ad078887", "0x0a5aa31d4fab8e109b0fdfc55eb14a5c2d9267d7f986b610170ce5543bfb30b7", "0x03239d50b4a0128e39c7673f2f99d88b5903eb1bb7704c6c0cdd4c31408a7a6b", "0x11a6945949a182759b6f1da60eadaf2c730cce66ea046f8f5eb781e7c45f8c9d", "0x0c502ff1bed8a68726803e222b87d59074956d834f2d63817f2a9efed3dc931e", "0x222d9daa384ae2b40e43e274cc07d2dbb9eb6988d03894b6fbf51336634c917e", "0x1df8fe0dda8e51971b917b0ff0f3e05ed4b00c09545351a1177805c50f6bc009", "0x222bb8290405c5b3373f1b199969c6d0f9ba8eb772f2497c55c0f551775b2635", "0x07902bec23d9f91a003a928eaaff9647ac030289dd5eacd8cafdd31b93264d10", "0x2c706f059d6a86ea496c2e4693d1717e4098ff87d05a82d738fd8883a82b9d5e", "0x05ae261694bee2446a1813608edec696f252922d33e94280aa805bfd843786f5", "0x186ee2ca779c5c26a193adf0ff47d9f333b750f99b77655011c64b3e8ccdf93d", "0x1c2ab6e96f68e3b2cce6da3465b19e3e4a437b1f209c55e6ef99a1ac0736bd11", "0x2fd17db7e1827169c32ccfc0ad14d9f97c7507f8ef88dc5d6f04b02203c37e55", "0x241fad7570628418ab9748ced53646c2e100aeebd62a6c73804f080de66d9720", "0x0016b5b53403ee6f47e6100c2778ca970b40af6be277e98b71032f894e6f6a2f", "0x000a095842f718e71645b2e81c90b3f0857c8c935b135b0cb25df1541d38c7ff", "0x303f2ba04eedf1425b5d7cc4be2c5088b9d2ef2bf478b9e9b8ce6ff1668909bd", "0x1494435142c96fc94e8d66d9b643e019163c6ac2e4e162056fa8feee51956667", "0x031cdbb9ad28ec57c4e1ac8ff66c791d04b25a28abcadae83a5573e3f3d4bfea", "0x0c787dff012f136b89ce3516c1cf867928d7107d218d62d51b0b2d8cc9850498", "0x0b20b314907f522e17a9d5da8c10fcf88cb956556cf077457c1e4a9ad5dc0b0d", "0x11d5cadfd04189c6c14a49e8ba6783540adc7ed70bf25afe25df9e2ffd9bc35f", "0x0852309d50f14538c8b7d35658d89ba30e29aab6626531aaa1185ff0cab8a1ff", "0x257395e7c190b3cdce5f934dbea907705008a30593c69293fd7105622602604a", "0x0aae37af5c3a542202935f590b667f979fb414273cc87931610a4b3144aebfb7", "0x1c1654a77feafcd7feeba94c32605f95ded03e13c08a6274c47edb41134e2444", "0x1480cc4cb3b9d9fc97b99e340fec19823dcd2edf198f7095ee5c70a9200995e0", "0x18711057869189126f88536accea4882a34797a9dd96a94cc87b8ea462417655", "0x0e9c4735ee797b9c70833a7a6be7c2cfcb962f070caaa649466fdf9bbe5828cd", "0x2e2e38ccea7ef6c29a922b027d31d9870ac0f9d27de19d70039bbd1f90ff74fc", "0x1d66369e95c2e76030e380d6538a93278f91ea5dd60e5a316b3dced27fc137a3", "0x29ef9102b5e671edc05f87bcceb6d900484e7ee7402a32ccc77fde2e7866a083", "0x2103b04c1735f7511eb775c7334a0bb6d626fb60937ba3761dad73a84478e3dd", "0x0dd1b6ba84a3c29b62923765068cf63c711bc1d6bb28eefe38a0e4861ad13963", "0x1eab4c7faabec58ab9b73b2baaf21e42880b77b0f0dfd30d38e1c955e9dd721b", "0x002e1a3f669dfc929b9cc84d96d489ece114d5be5db8571469f774cf6f6c8022", "0x1214ca424ea151785150d7db57b93cc6bbc8d75d1929938460a7c67f0c791f11", "0x2e174dd4aafff6103164d9165ff8319d9260c86218510a4d910341f0b4e01d38", "0x20b32f4a423617fef146da5f1a2695fcff6497ffaba30decf6ffe62ae952c435", "0x29f4dd468db0873491468b7009dbafc79951f3b83ab64efb8dd2e56cc9b31a8e", "0x2519801de4e58e4164f7f0d86994311c87f279a38afc4cb3c4d26cf41c642af0", "0x2ca123faf875de4eaad80eba73cb2a00f22eaf5b6109ef41a65d2d286f602cc1", "0x0efed651a61fa30b70937bde9d02b9b6a302a1aab706687b2233ae9b20331267", "0x13e21dbbfd7e5526bdc5075e73dee0aef45a0ed2c880b29b7dbd5c9e6439ee3f", "0x2c2486d85aadbc358b1065dd7b14957e8cf5bf7451afcb394659741cf6be5821", "0x2c97a5d5b9751943bc11e04c2d60a56c43d945b96b0982c8a3f5e63b73550d6b", "0x0d3876b0553694380adc086cc9272e1770e2f86b336ff78040419e5edccd8cf5", "0x12365c7cdd616d258f9ae3504b37d44e958c816a0bba374278e8b7ad79ab9679", "0x1b60354d16b01843540b8fc6961ff84a58ebe5e42b46d22aeb618e2db4ade65f", "0x03778fc723ccd03ad8c90c311c141963dea639d2524ad972d8496d129e1c2434", "0x2ee721dde852879e1238cb7a79207147b3d864e6c8a14a327e2e558b9df57662", "0x11020d0581ff8e79c8f5aa4d50be2dc792a038bcb61aec4ccea2ec4df2d0af4c", "0x1e0e921193e35b3c42ded003dcbbed8eae46712e15e63aec715f3f7031cf4f8f", "0x2a6c13d7afd6636c2d4d5d36f42c09ac3286b67703ac4d2c24dcf5a3add9020d", "0x27bddedea7d8d398b4b6e9152e17c2d092217609b109c14574f932bb02c88440", "0x2e13f9cbc356728e6d2b7a5c593aa9ecc9b900bb98901593d021d61eba6555a3", "0x109af33773e416156885bab0513dc199a0045d405d81bd2a151690bdafba3b66", "0x0bf7a121a985d20eebebf624f3837307415ae480954bf49552dd8c5f3e50301a", "0x0f78ba7c3e6d15d11292dd121aad459483271b5fe2ee56a63814d5db19290567", "0x1625df035eaa992f424ddc6dc88c1b700ac5e6d5981e2ad0df9b290a56bd5001", "0x1ac7d1f33bb598fe9581ac73b0aad4e9ace99ead01981fcf2c502a71afd56762", "0x2d37296ef0cd5676d0809608ba340cd7b202e2e1c2546d989417d303ec319337", "0x019caa62c5238e03ecdf75bb2c276be1805be3fe44a957d8aa3bf07cacf1c114", "0x0f32dea104320ce0f00919d90f9c6c76d496882791146c522a8acaceae3e4a48", "0x2ce5d2452c0a5a9fb65a4a6482f34998865be9a29f266f88a8affa850f5ec6e5", "0x135d590de80a0e717da7325c781aa167a25e5c310d92df83120e891cced24a8b", "0x1d3ce96a7cd79e94492e32b8983d62fac736499850722f7fe7dd1589706ab693", "0x0ea3a1e1f5dca3ff7d8671f2fecfb467f6a4e6516c8038a9306b36dc818321b2", "0x1ed08c4f0e16d144059100f05fb463098e3d869f342e0ef8b4a47afe74a83a25", "0x0adf612bc0c24e826135c7de0dba90fbe1bd249f7424f1970b52e8bb24d986ed", "0x240c424a024e59bea3a14fca73d7b63869eb9b68746ad9c356b93fb6eaa3e22b", "0x24dfab7238b05bf08f66fbe599763f63d5c70a181a7e9fe35daf0479e2b1cbd4", "0x160d79a03959c968dafb76ea3e08ffd2ce117d094e820d5e9f7ce1debd3bb08c", "0x1b65216187a1ca1679642d4c40aa05bff725bfa50248aa89d57f570c2fe9345a", "0x243503bad8adaf14a8e565013863c13a77f6f7a0fff571c1275b18f54bd77351", "0x06c2ad47bf4de574cacfba515d18ddaf782a8addfad1c18ee4391163c541a62c", "0x214366673d387148578fef89434bcfc7e0ce4eb08661904026b30ba10f3a1341", "0x1db81d98b4d4d83226ae4131301c8e3622a32e2b7884860e85257f5f7b7e6de4", "0x29d2bdbc19896e8faf0ce15d7c883bcbfaa38861d7c92299a6bef42f7c443f0f", "0x19295f72c5907e8d9f8d8cdecf7d193fa86404cbb7a85522f7fc33857b7a9c88", "0x0bf015760770cbe8e6f69080f3aca18258f2cd092e33d3ed62d8d19d144baca8", "0x06cb21aac0be8dc2528c3974724b38d73a918530976ff118d08764cd42e0b240", "0x1276fe2c751ba49fd5b75cab5b71f64aa0588ede807db1bd583c3d6ae6941356", "0x2a17fd8041ecd762f528d12067a09204f9296ea57374806c39896fe9499b98cf", "0x1904e2bf9c0512c72559e71e3f132f65259058f7d68b9d7d6da1a8f9f5caf674", "0x115b5eb99233a8a2200170733c4743b804c601b5d8d4656a138212d66eb89d38", "0x006b58885f0e09be6ba91176fc8a6172bc16d680f888a3d92f31a3bf213e7ef8", "0x13c6704e90535352934dcdc0483b4bb974d50beb7a5b6be30af0e46fbd7325ce", "0x0fbbcb96ccaf43c773ba1ce70613892543732feccc872975b8eb73e3fb4d54a5", "0x059b4df63dbd2bb66e0b2a826c5cbda96c338fcc38dbf9e9c46041918bdd8bfc", "0x27d859e7868c99d80f99d181e6ef7ea93a694623a89bbe57a6c8e7ee54be21fe", "0x21eaced08f9d0b42c6fa51f59d65f96598e9ca50d6cd1dd49b84fdc0646ed68f", "0x06815b7a3b80971d05fde6d7dc5cd2823363f38d0af5c0ff8abeaa71a323a2a7", "0x06a778d29aabebb5a3cd940b1c33f05551217b6005248e0e716bd5a10d558c6f", "0x14fe9fb1f167c6257ea010088115769e62b60ef3add0f3a22c9fe7a4918e94c7", "0x090305dff314174e27edebe574bd8f0c8fd85843e7d2627db607b2816e357dc1", "0x2ce23dfbeb8e1874b9ba894cb85f068bfb0497555cfd3dfaf3888aa492d20445", "0x1b0fd94dd9cfe774d9146be584ed0b25cb2c7495a708247f5763c2380e5c1cd5", "0x060bb716ba723a4e5f5faa179363a36774619d1e0cd91bf4789a1aadb3e612aa", "0x043b10c508e8681843eddc05e73b95b7f54da5a93b701cba4d6822f9c9dcf436", "0x126734e9502ba9fae4a314b67ade6ce8890e304a430e6c9f4fd60cb8ad69950d", "0x26edd35db97c2ab2ce27b503592859b4317a25a688f9743ef0dd9cc2619db7e7", "0x27b225e4a981af36cea863f591c8bc5aa95a4beb6d5c9abc5e03ba906ed72062", "0x1102728832f751c313ac6610fae58b9cbd511b51d6121b3bfa60f47db12518da", "0x18276cb011bdc6d75eb1c7d5d06cce10c7c9079c8c9920fa389b116620ee4141", "0x2502d7dece8cd7d7a04a1730bfd2868fc64f835dfe143cee18480c7c3fcada76", "0x06b20beaa575dd846254695068484611bbee1ae48285ba2c3d99c14e62581a2c", "0x063ab4a078fcb212275ff5fd06042bdbd17aceae994e2c27a1ba876139f8ec1a", "0x06372d5952bb69a460bf1333ef4ac6b20b07ad4ab4124dd4066a6cf66f406993", "0x0f41d4e3ef55da71cf4037c49d44c0a641f52a5a174f7abec522476e3c623ce0", "0x0f0ee9841b21b9b223c1d1a906993bd66b0ebcb7dafbe2b802bb8165c6011773", "0x01df2eb2fa423f01396e073390104cad8004a6a5f140a2b18ed658068167521a", "0x1ce05bc55407c883a5a41792ef3486ff22e403d38474cfa90f5ed30c8d30198c", "0x037f1fc7934bbd5fdc34388bfbd0f95467254e5df2b5b62caed0500a2594ddad", "0x1bd6a614004398f329b7080ffe69d3dff6de06c819fedea24aed16e4c47164e7", "0x0fc2e5cff7e9efd46fee62aa3b3f22bcc9f1a3bd8917e2e1cf5aa334d29d2a06", "0x274fa4e3d86e7ef8b0fdf1a81acce8f9ed2f2eb4627de75781a813f106a377e7", "0x193af1c5fa057ce682ec728cea90735935a22b5aff46ea2f803a29421aa950d6", "0x0e72c33ed6055471adad61d027c5ac1bf75444fc4e14988b42268f0787e29875", "0x1c75804a4ef1c81c83684d688c4429ab1a7e517dfc602c9a2443c59f32ee9614", "0x08803f69d83e0c3397e09dd47a80cf9f4e423437008cabad2e50110456c8c60d", "0x2d1214ed17bf81162a5dd43a3fdcf195fbf47426044cb22db538478e942b07e6", "0x0c85b24b79ab57504422135fb1cb0c5e1e3a5f0a06103c2486ee6a3eefac7288", "0x2e29f517dd1b30b791bfab03ce747f950202f0eb8267ef3f71ccec40e91d95e6", "0x13281c94a670fe5ab09773af42606740503509efd74c1ed993bc6afaf3d64174", "0x21a211407cef7b0442160acc9dbfce1a1e1d58c9e98f381a7eb48f7bda0f1e05", "0x085ef1e77f929bcffad1a93f920c1d8c8b3632e1e1a1ccd4ecb01602759e087e", "0x2b6f796de3509ea703c8da6276e3ea154b504170c59a8ec4581e9757d74ba759", "0x1fda5074fa5bae5e16fb4f2d18d589a7230b9a1c1e4d08a8069fc8d45b1de3cd", "0x02d22a3c0d324750d3be31219af32a8282c372dfde4861ef86ef15c3155dcf14", "0x0c21f4f4bdae07a79bb3a98cfb351aa629f3239c4d24aef92ea79bfac9c2fa25", "0x1b721ec1c1df81c83acd7a95ace16b3e2ff4297aabb6f58100b5dab06d3dc404", "0x27ec9e9e923edee58189d6c7f303ee3e5249c5aef78758c7f511cf87b953561f", "0x1ecf1060366dea9506fda0d01cba016db9620090a160d5a760a75d12d5d72e78", "0x25d432df312e005c69a06a1f004ec899575034da26392760d17acc80c39506cd", "0x17a0ea51f9a201ba2a0f857c9969a7f6bc6f5d5bc0e4957e1c0dfe4b202e4a24", "0x02d34c47b847d67c9b4dc313bc714ff223ab01127806ff6c922d8763f142024b", "0x020e59e5e5bb0951a660122fc1aefea294e7ccd5f9c79839282ebd9e119f96ca", "0x249c9c850173dba0ffea3568c28416020121c3d9990dfe2e917377467759267b", "0x01e8ec57b7681d631a02d530c9aeef93775869ef093de92014cdf85ee2d459da", "0x00f739dcb9f3ee6e7b5519774b540b2898bb6cba3629bb6c60e423b7eb6b5ffc", "0x0e016f0724fff85d781aeb1548d76c566e5c26aa7996edf504e4167285fda66e", "0x275270828b9ddc964bb8d68a6258543568c844947ed5ed94b3180cb874c68325", "0x00f1ca3fc28aacb8ac21a5b44bbeb0ae64cc339de13e04c74fce820f4f93e48d", "0x216b2f89c90105f570e0911bd1ce20e0664ffe01811cb777f90376719c0e20f3", "0x1a91edf90950cb2689d2c29cb22f8dea61ec41fb061f1b6002f72265694c784e", "0x2da3342eaf39a2b242713484462971afe53df55bed5f5d50d67d9138cd78fe84", "0x29f79c86f5a9c96fcaf2296be36425b72afaad4865cb9090848249158e2ea4b1", "0x0519426a15a599f20d2979302067dbd1454b46539c9499c65f6195b55c760337", "0x0f9c475cd72b7e2e3865e96baef89a149eacd3ab340210a9c5e0de6fc082e89d", "0x15f1d711979dfe13e45eeb9759a89f51db3d27594985890b88c9bf276922173a", "0x1f083ac0549a1ab00d4bc9066f05494148f60c9569e7989941c3f50fd6acf760", "0x1505ee4f79bc8187856d5f3f5a24de97aa082b8d452c63b17ac3a591451b747e", "0x0f20876d712f147e2fb9f7be6a51f346ea28447df529eb41342948fc2d8f096b", "0x1696d12d9ae779c92120ee715f6b8da11ea93af2673715a2df7731db91e360dc", "0x28485f438eec133b0be36b32fae82da57fb4006bd7f5bb15a267e7746b37bad1", "0x2780436f9da12461fbe31d979656e6d1a13386e0e6a5309b050ca819e10ad945", "0x271ea863673332df2bf2471e6c8935b037ea8318ea5b32379583f611e06b3da6", "0x29f1ba4b29c1daecb9839bdc08431bcabe68391ca540f68b484a4f8e96a9dc61", "0x294f4cc728dd423fdaf37377e069aba66f4d3000f1a559bf4c449103306031e3", "0x146b521b1c08c9181213ebdbc2a34fc3efd87ddeb1bfc5e5d17ca951f55abd17", "0x0dae0af973ea0b0fcdd8158ea51b9efdeed5eb664b84ef67eaa255fe4e55f3e2", "0x2604cccc370f0a50f3f726edf1242bcc131dddf2697853276c079ebfb883d8c2", "0x2873b19db1d03896d3d52d6f9361e3fdade5e7b2e6833e4d5ce4661186bbbb9f", "0x0b04d090bcc4cfabfa47f60043859aeb5f33a6de205dfdf0e3d099d4a8394e08", "0x0508a195c0ca583ec10156f205ca1bb6f6917318b8ed6ebb7347b77d72dcf748", "0x09262dfa80aaa0bc61c5891c237a519d3808c53fc05dce3d71f17c0e3f2a5eeb", "0x0ce6d25b1c6c1b89fa005c23619d877f2ab2fde708d30923669a49fe25b3c7dc", "0x2e69685b46c8050268dbc1040e23c739d7216b2c5e76108136d6895ded3ddc44", "0x0278fb3df3fe913657bccceb553138fa7b8ab6e062a5ddeadfdddd5b305ff822", "0x16da892ade35754e57d8f03f3e6f4110a9dc1639d9b6de65e479165ca49f7a4e", "0x159754924e7334854ff803a1782ffc059927a3c26dc43e661e09a1261bd7c94a", "0x2212ca6487b845ba4d16c09e224297d4b1a16e341e6c593d7fabadada3929d7a", "0x2dd088de831852d169aee1d6be69b52c5dee0b73e18fca91cdcef9b90396a047", "0x24ab42ad6749a14fe2f707ec53ac3b0315deecf421b9753032533e28491db30f", "0x2f6466e50ef3c61a0e6493b18d34911406e2e97d3551887af808d67e1ce9ae27", "0x1f5886fb8618c8711ec08de9477571f0eb6e462b8f5e5349f85631f059594480", "0x05ba34953959784a57c0019e916e2ade5d6a523110437cea9c2b94453dcdf2a0", "0x27aee67a3c6ef783cb55915165a5bbfdd86bc06c776f145048bb2401dcf17341", "0x0f57efc05e9f97e7f68c694ba2b3bf216eefbd5c71710a56f460682a6ba5d5ef", "0x1d35eb4a40a41dd77506d872a458ac93d7336dcb72f15b182a6702ca53b94eef", "0x18a33064586d5a702bc4bf64f70b44b5a77918255c2dffbefc537e40bd5951ff", "0x0b0ae5716e42b440b7423bd899319c880a4a674550b7bd036207e006ac7a2d21", "0x1136a0f6c004a2c57d21a00c40dec6f027b140b36d3594c1cdc1b0e8707b62f1", "0x21cec52ac4b2aa7f80f98eb75b4e0280591977d50b677b8ff10b0a3d028532ac", "0x284a636786fa63579b1541746901d48e440cf0c586f1b089cc45e8b830fad22e", "0x1d4a0aba0cac51c3261f7c483d89628d76748b0833cba6bbfcac5243e4bcb4da", "0x0410a065925e90fc70ed1aaa46477a8ac8193a10c48b5d84fb5e9cf2123ae24f", "0x301453b23d055c184a65ad6a6acffd9f520637fe751ff7b769409d512fc92f0f", "0x037827104287d94bbdc06584d36d4d5e2c46c4ea224f4e0dc0c3bb541f053b79", "0x294641ba8a02768c5e3b7f542d281c69dc2c3f2e8032f864295a64b08a93d993", "0x1c12f993f0f1edd809eeefae6932e5b88738b336bbe6f976f5f7a0a178ffeab0", "0x0cb2d948d38fb8e17c60ba6c67608c9ffd912e0a627eee756b8d22af8b9e5e43", "0x26f1ff731268d9bbd26ab33e588acec09fd5a4b70d60b553904f5e2d05e894c5", "0x09aef8a2029f82b76d80ad8a3926cb6e1174d8b8b89c59707c123473120b4c7d", "0x1be80cab12f4bd1737796bc770f17073c6b0046c327bcbf3a36e26406c775c74", "0x2476e7bc637f243d23d762cb3e2cd8430dad89762576cbdd918428a75828836a", "0x196d707ca5a9edcc0e3103aedfc60abdd1c9e577354d930be0d5b6d03617c209", "0x1d262487237e8503908d5375a1a798a9b8c0faccc056eddd8aa87d0a66b07d24", "0x2a21e03d41154bf3191f1a834b9af6b23d40bc01d027c2b4841fb23dc9ff715b", "0x029c647822a1ae565b2bf1249edaeba0cbb3ad730deb6d2e6618fbf9e74daad9", "0x23e1971175b8fbb26c0989dea82d8f4a3f708774c286e4ed2f8dfaedaf3db5e3", "0x1306188b792368ebda1f2e31e846854cbb34f175e01c92457959ee1c6da0ff3d", "0x127d0f7eb9804fc20ab4f8b9409834ae521645fffa86b0c221d9223fa0e9d2b2", "0x2441985bcace35a81b1f81fc6621215df0ba42441e450fc65e3519a0393b1196", "0x2df7d4eb115114544ac4f52fca36d6b33f09f639253e9e3549d5987b0e097136", "0x0f6c5518f92ee2e549d31adbb4e78036ef9aa3c2164c317aca92203e3b99f940", "0x26e2cc9dea47dc6807f87cd87c531b17a7f2f5ea86ac094e5d5a22fc3433dcdc", "0x1c71e33c864b0a8de4d10dc26f76bed55771d1601a0e04d399cb2397064c5cf8", "0x2a2f0b563b4083766c8b6c60872c32eeff2b207a1981c05b1f396178f01207af", "0x0c1af0bc5546250a7fddf1cbd3e7bcdbaf74ebb979535e0b343676dc9f9433ca", "0x018bdf2e7078dc40af1cbe488cb562fd32120499c4c972a6d43b92ce167ddfe5", "0x22b36859a16a8cdc3df10af2820715891f779660a1f9a25ef652019f640bef06", "0x10e697dbbc43c7ae2030f5d49974f8344d5e48ab66d635b41e7b96fbc7c6289e", "0x057deb4fe56390abbbdcd8822cab5da1207a0ad79423920622b0c4a12fef3552", "0x12b27c1639f162f846fb37ae7144f29137682ee7eb1632e791b4628aff4aac23", "0x0b2c7c76d01843a2d14655c23e8091afb6f3559d66c3bbf3d115dc9d70db5af2", "0x0b7d9684c0c8eca0e8c31634c9fb68b2e83abe72a3679b3678a8c9b1a13a4895", "0x13ab0a7fea9b2c828766d2fabf574248d2d7f7b2f8e60e261cef29cd916e9a2b", "0x2de3579d790ac367f66d90557b54668153a5c37d5391e92a6a5615c9d60be979", "0x1ba010b6d63b9538b281be3764e8e6231642c6a6735d89c9808fab7bada21f6e", "0x26ffdea8a8d9894ebbe02a705fb7506e12b1a7f100c5902584e4dcbe1f2119ac", "0x11ff1619a49d6abbb56390e3dbaaf0c1cb01b951a734218b3cbda4e8052ccba2", "0x260c36b80890befae89cbb3478b9f7b5b3f6b11ded47aae2c0d5e0c48d8e5174", "0x05ca88857cb0dd5f380e592aa37f6f94f7f0c3262131cef29948a1a49fd184fb", "0x18b3832a19eb7ee1a9dcf574302ee063ec19046b3b9eb7fb277a48ee8390e485", "0x2535291f03dad1e3c540e7f26201c2e330188fda58be783067698a1739f79369", "0x014f832b38a9f43af26e5ec2fabf6c4250083cf87f0ba86b95053e9182d1373e", "0x2548e6c4767c67691af55162d9ce0e45e89ea08a4232fa0a223fde869bfd3ea4", "0x023ecdaa3f942bd45ba46f528cbc81a51ce1425039f44781a7696f48d29dfbd1", "0x1611bb59a3b28756b840db3189a3a5ea22ec16845472abd68570ac771c8f15ee", "0x0bf7618845013330ff465f12ca95079ab72d0ca9d8a7e633048c11bf2c46c7ad", "0x15c88fa2eba3d087fd29f6de6fd864b875662ffa438144352d684717cdcd3ccd", "0x0d58d12798ab552f96f0d951e97cbeef887d858656b1f6af4010c80091b0c662", "0x0406eecd7bbc21eb04fa1e565745cc65445e4f82f4a241efb8bab06eaf9c7cbc", "0x2fa88eda065714b9ae5e18456130e31bd6f48d02b2415ec61ed209ad8ddc3164", "0x01749863aeab13ca512261103eab93b43fac53df6b04022c7cb7f17638f51c29", "0x01553263a318edf34429d901f3879932b72f5c32ad56e900abf47672f86f9a62", "0x028b7a8be47c2239079a01dd6d0e57ddc03fca9c6a58d3df6f234dfe82f96aca", "0x2c489bef0fac19bb187e5f8a064e67636f34b289c2e8adc76ecbdbb5105fc1c9", "0x1ff548c6690f5227d576668fef6741f999c9914cf4842e793fd5b5194bd0c3dd", "0x03c1b551c84903040faf3d6db934e83dafc5f0efdeb7a8feb27547724727a344", "0x1ee3620e8f0dda8c6f155ce81a9376009bcef2c8d8f6f266e04b7b80ac8cf867", "0x18e45fe7ea171fb11d0c4af5338568990f22147e14421f336fe6e0bcbb8a0014", "0x27393404521a55e0e1a4e58c561180040c18682814882f45aadd131b9f08753d", "0x07ff6857011a24b20d698ad43a5f959acefff729940e346ab18f9d2600f83d05", "0x2981b3a288b4327839542c5796ce2f09af9d022a604ffad61fe0077d76748bfe", "0x00dd5b0b8158e8a73995efd0b9d898d4fd3587011fa586cfe02ce800f3064033", "0x084c05fae73cbd6432e622cf9880f0d28337c6874b87b88ec0b45a55d393623d", "0x1e2ee2fee9b9bf8d3f3722e7028ff3af8e5ec6319fa6d8997dc115e5de2ea8b1", "0x0003418fc5909b62b0296e6eb42aa07a971050939e99ee371f6412e44e0ef577", "0x1c4994a2d41258064376be5cf3c99887aab74803f67c12c64e65aaf7f1ef56b2", "0x0413c2b38733961feda0a68493d3cf44febcd77952b8806ff583e8c40b31032e", "0x01c46ad39455255525b267b8a0533c5c66504f81ae9534bdd091ea98994997f1", "0x232fa2c090ff3ddea83adca0b9cd0e0918c9458b75b0ba3b7d677add820be289", "0x1cd5701c80a10f420eb34f534738c0dccfccb6c87ccf9aece35abab37cf05fba", "0x03b981fe0c71882c6194465537d5e402b816118aae94bf8518eb07a529e4ea54", "0x168a588900100006443658a61ca9d659f0ac451d1e0bfd5a6c6a3aee85723bea", "0x1e51f558bced240c65b7cebcdcbbdb7a9ab06e3580d46f318de84edc795e6f88", "0x1afa5a8c5fce396de56ec97dcf0317a6b7cbc3ee1f8e9a3bccd6d870022b750c", "0x1135efd63e8f8cc9cc0661dd49d36ac8ebf7900d90d66dd5fa816054d4017dca", "0x2914d21c2d2845ce2b14e951f42103599c8755015641db03c54df337103440ad", "0x20c87a2d759749aea9b2f0f8cc01452452e711e39eaf5a8b07100a197127eff6", "0x0db07920dd779c19fc1ea8ec5323d5af0d511b869db67dee0408785ed922905d", "0x0d631f18fadaccbfdd3b3be46772a3bcee276378cd2e46baba90d56468cc50b6", "0x2c500f790d463fb136f2d8d4cade62296e7d7c49bce18395b3014c9fc72d005a", "0x176a9eba97635d1e59b19faa2b3325a5b1a27376a16dec7317aae4afee02bfb4", "0x1202fce1a501b88b455ca44788d55214baeb3b54e37d1cc80f3d6ec0e09d4747", "0x222948377ee9d27fc6406007e1727b566b825decb95096c9aedfa8e6453a5cbc", "0x2ec66fc27d82aab2c98eb50e67a0932210f3c6e12456269d57ea9095f41166eb", "0x2f5c233dbe3571836fdac0915ce6596fc0844fec3d0bf5a9b968ca58c45846a3", "0x13889bb59b9c07953b52f66123c8c1380e6f272426103adcefdef4dbd2865da2", "0x1cf78f25faa52c747312d09fb4e9abb4f1e55a3da349cc8dcc6dca81cf99ac3a", "0x2c0eae2866d65c97077047d0f4c43c28c8d7f36af6a9c6fe07ec89219f1cc735", "0x28b816cd8b8c98163380066d0a50d8b0e06ff1c690b81b918c7ddd08a6b7066a", "0x1d46d91669ce5be6554fc3ecee895d41fdaeee189adee381abfb75ede1488cfa", "0x1841e03b9fc527450e4470aa8f0888d9ec8599db6b0f7222dca26cd43d22bb05", "0x2d2ead7b2078b09085805c2777c90f6c55744b49a73bbef04c899313bafa0f57", "0x01830a8db342676cf7492281b4cfc7b138c55d44daae47b14fc888e5bf745095", "0x074e4ce32bd14b01fe9f6729de2a12f218fe443fb708738a860f1910bdfa4678", "0x1fad4cb140fa4d559cf9525fb24e7f17494d239af679a030e7d1b7c9cffa949d", "0x1e50c6526c7324b97b7f338752bd700ca5bd6c0efcb225260224556d76a28331", "0x02cf0359b8da1abffffd73f90758645793f5d1112fe898e8af0c61e79e673e5b", "0x0a14ae497b49785ae7771f0dfef4bf41857bb2fd1f27d15c3cbc8ce3df9895cd", "0x16bfa02f57735662eac1c1f520b4b3f9c4bd26cd2792177b276068916954cd41", "0x0f6fa95e0117b734579f68dc59736c7f9afd9cdd4a90e13629eeabfd84525e9b", "0x1d59cafe27bdfd78f564894300763436daf93f863c3213c1a849d1c3169ba771", "0x289e39d6a2d4bc817ab104443b89b8a608b13bbb93b3ade772a63bee300bbc3a", "0x0d47edafd6a8d4651c27f6bee48e9756f5d6515af1a3a3512f59e9e3ebdcc331", "0x198d6aa9072a06de13128d7b17157f85994a10c4957262770cc4f59e6c6d332f", "0x174b80e4210f9d81be7bf70e3ab0b21de8065f7222e80cbbd3cf985d6aab0f05", "0x2d78036ba0948752ae78b1138b4b9c4b67f0d78a9c8965e1bbbfa356158532bf", "0x0c1ff404599af823908f32e607564f521b75812c670543e390cb02e3087ce924", "0x0a561b578f4be4c533151da1a529bc98f4940aa5b48f8c012a9c181d811b8f34", "0x2012a6ed245e48cf65030289a1cd01d26d3eb2e439bbc4f16f256adceb40bdec", "0x0824422abb64b758f600c18e6b998c19d82a9ffacb95f9eff9e018d5afb30baf", "0x250a091bc91301bb1393782a7e21eea81c0bc8e68161a3a4e5e4a8a7e30964ad", "0x1a4adbc8530eace4e19696d77a06e1eedeba3dec2e44accd3acfd7fae6d076b3", "0x25a511f7b8595b12278f2b05b4ed6684ee12b1d298fce27ccd6787b5a86e26bb", "0x07df25e8f76f32d99b99dd04d927c1b2fa1903776636e38f7188d8c2b73c3a54", "0x059421ced9bb92262f97e7c7beb8135539dd66bcd6f0bd41bd124a929823f75c", "0x26e1cdacde91e112796df70dd3a479b595b8cfe7c4c95b5956ed477a07813842", "0x298083deae9e0cc40a9b60e494e44e6efe93a8e0fe21181cb1351d97fc0d954b", "0x0f01fc7bf4d2f1ec8cb1af8ff17715316fc44387d515185f49a2443ad2a14ede", "0x186049573b3286b17003f9e5b27b8a36a78b8f32efbf0510d9fcc8fa7e73c5f0", "0x07335829d8e3758cbbfc4cc49b655ec758086676b4d3912da39f2ccdc4a28d14", "0x019d072d6e66aa6e034843cc3d7ca51c47df51f35dbbf4a99d34293fc3d59624", "0x2bea340a223b6665f5be6dde2eb55b40a05aae26d349a6c4af07e3458ab9be5d", "0x1b90f5c0e53409f8b573056438bd9e6395f5256fabb16006c009bcade1eecda7", "0x01932c3f3e1c4481420c603e23f16029d8b97603565f6314184776d865ba2e7e", "0x12e4e9f31be336777527af3ad443884e353552da362921074e023f14580b5e73", "0x25e7a09a55698b0c7323472b2409654ef12f2959a7656c0dcf35ad9a7926f3f1", "0x178c9238fb91fe512f6885e512e2a59b7686a34aed0fde1ddece6b1d08d422d4", "0x2b568832e6262628c31e405305f88402948b515d28861f0dfaef24921e7e352c", "0x146ca0dbfb0fbb98c162eb84b37228cfd7311e0d15d2e48def85f9d207bd175b", "0x0095371673ed3ee55892e373d5ad5c760268c83df7f50d44d29d366e1d7a9373", "0x051c57cc37343989744272869cdc94c0660bfcf6ea1c1c7ae51427fb298c9db4", "0x1c8bd96ca390714a2b0079ec38e25af0fe7a69fce1620f376f770e1325aa65df", "0x1712f67e82f90446550d51c1d2e4ebb1475d6e6043a5c46eda3170839785072a", "0x1c3363715dfea957de9614b6cdea17066c385a8864dad5b43aff09c963573925", "0x2672b8adef74adb0b71c0166de766a39e5e1cae03719aed0fccfb7ff432fe916", "0x10635771a37850c2417c96b7f5fa48a98734ffa59038d8b7136cb5d0c646e1aa", "0x0b16fd5ba97f28f5619f6989cf0d665e908cfe8a1fc24e5326461973d09bf0e7", "0x0027df27e1618278ed22497590175692d262d4aafddfe34bf8db619c37a66068", "0x036ab8de1d7df77301d16cb576a1346fd196d25534b22667f50628769ae136ec", "0x049ab0f37ec5bcc724a3ea321a91951f90cc00afdad5ba3d5081706df5e75e6c", "0x112fe3f664849af9f494ccf3ccf0d4b8f1e4a600c29631d059bc6ec343450c49", "0x232b3e1d4715272d5f18a036c137f0c6fa56878c9aa054cc33064e2a5d30f567", "0x056c91dceace41ab131a1c59ce4a320857224a09657ed82f7141e7619a5db545", "0x144cd983cfa259516382148e290dab14ba9b5d8e6e76b84ddae2ab086e7a7952", "0x1d21aad5c6b407e6eee7d0b55aa92ce0a32a39e918bb32bc8d45c28094a634af", "0x176f60be5a21b98d3469e1339bd5c7a0a8ee84a0d34339bef675d064e6e0a466", "0x0329d048658d0eefed7f3aaa9bc143b0c26636f13262176d650a1a7a2044d34b", "0x0fef28f114d6420d1a288f960fd9dd40bd4a5a02d58081621711ddd2887c757b", "0x08818813ba3e9a9329254e78e00a83b360c905c7202459cfad0ab47658276a81", "0x020a128b7112994e52c4849bba8d1217f13a957bb4d0ba6a0d97cf1914b65b07", "0x0980db3c7d2c8866e9ca0902c3b8e0a078585951ea4acbac245b61cf55a703af", "0x14f2bd6dc317fe19126b583da18e2d7175cfa704c5267b848a2ff9a12bb188c4", "0x11226fe9d81faa6c6a35d3a12230d63245061f2045361e757aa0c5ba7c5b3152", "0x1fc144aa275cad950ee4e3182bb87783dc45906b2e846e2703228e5d5328c1fb", "0x07858a3e15adfc14141090d972cdda3461908dbfd1c91b7e9b991760c1d47749", "0x19284489d7b53ed2549c5fc66331c71b9b31446eb3668c65d85ad094727d45e0", "0x0587702c19b9737857f99cfd021f8fc6af71b428e3ae90f9f5d2ec8e7140f5d8", "0x30602b296ce2450d72b00ee8cece9f896842ff3470b98e1cba2a1b3ad87539eb", "0x2776dbec079a5034700cd9c6e21404eabf7c13fa17d065a2d69d2987a718e78e", "0x28bdd009549a97fd0c29e9c30f7af9555d864aee05ad1886fb918d371ad29e90", "0x29791a2e17dc204afe645306f584ad767f2be949aa6d061f886f21d0401aad14", "0x22a667b65908699a22edc1697324bd37ffb0f18f00c0ba7292ec8e05470fbd76", "0x200d4863b2f35a853b7d5dcdc22bcffd8f45b60bd036c2f94907d873e5d95ca2", "0x18bdccaca11c8a10a12be6f7cc96d4557dd9cdbecd5f841e87303e3a312e9e23", "0x126ff502714b58c3a40ffa3d96df0de4e8aff3543975235bf3510c7ab22d897c", "0x0570fa4d1c92cf2917036fb2d477727e55b569b4a58891a07f96c500c28bbce2", "0x08c84000db8f725655f47432db3a4dde514dcf49b40fc4d301a17ce5d7228feb", "0x07212da8afb35376a4b9f93c20f7419ec704b22c898b20ebbf3ac9f1bf513038", "0x28c6bd8667a7e5336ebb7e53c724990fc8af6a059390353bee16d8c8dba971e0", "0x01790e7a8c59ebbdce18ea7b9be261b8848a8f5c69b3cd7a7b63a1b1e6d4c926", "0x09ce10751c2b7b90bce0d62e8fcb29fd3c8a0d286e93411fc66588a70a14a4fe", "0x203ec579417ebd5f056e1346a8c5be34cda66c9901fbb0bc27b8d773de7f665f", "0x2297981100bfd0bdbc495572aae5ed5676ecf2b693e33913b8fcffe65f57f4cf", "0x00e3fff36bb554a017f94e88130957a975d343d15c0772a67ce88bb1736db3e5", "0x22214f9dc31c1766784846260971d051aeee92226b6f13e2c4678689ee1304ba", "0x1eeccaaca23a1446309ca4c3d9b7d07962dbf8bcd8b3b37218f4199281263327", "0x1bd52cf0abbd32e888d402aac0a358309bc83eb74256efa17edc1abad196bf63", "0x26cd8ce2ace79114e2ee96fc1ca3801d012345c68750009745735edfc4e29d71", "0x1dd921013e6519e29b9aa0f52cc8c02fff3ad7af6a187ef0e90635008406dd02", "0x10358e1cb8ac12e54988a64bee4f1e94921f030a6926a00d57236283ea0c0ac2", "0x1ca1168b167aa5298bff96d82356b7387ebd1d70431c30b1c0c0df81fc0408c3", "0x08d1ab2692d291aaef2e50985c869485061578a2dfc37997222c81ef301fa942", "0x2d59780dd0a00a869516c6a0b300ed06f6fc39e0f9ead60507cb24c14444899c", "0x19b30f06355690afa779693f7f99c4a470f8ab8abd6989993d489a9b17180cb2", "0x1b93c9367d56b207bb1a2f171b56208c6aa1279be2572c1a59e65345d873768d", "0x2f8b45e1e079448ade818bcb785b0c8bcaeef004d956142347a08467e1961809", "0x239af691b7d6edf2761f88deeaec665169de99399cef819dcc37b4609b6cb4e0", "0x1260bd299d9e99321561090559b3f90afed3a36f36c4d397072de293d34cf8b3"], + ["0x2088ce9534577bf38be7bc457f2756d558d66e0c07b9cc001a580bd42cda0e77", "0x1b86e63908c4b12af43cec6810356c94d21c9e37d73dfff9742a58e0ec356be1", "0x09ca022ba1142d170f755212e2edc9d0a4ace33e16825f540d5d50d5a021a169", "0x277e69d47a133804241f6aebe9449be6e22c849c6d8ad8c938eaf613bc1aecd4", "0x17b57ea03754e24ae0ef425aa2ad931aac9ba5457a18cec594545a235db6b269", "0x11c740983395e0f4a026e2c7c939236375c9077755eb1a37a77d5a1fd74abac6", "0x1cd85529010dd7e2fb7ea403515bab5727556a479c59b822efc5a81eb37bc5bd", "0x2cb9354002cec4bcbfa985de34f43d702ced83d197aa374b5a1f96f87b12f292", "0x1f7af98e08f6877923f27a3dad40c525ac52f56fbbd878506544f9acd61aa32d", "0x2b15176925df33a45c9e99a7c4f26ad946b1075de58c7064c0ff92c431d31dd5", "0x22c89859b4d399d3a60a322d6b399b88061358493f3cb3653fda940e988c1ca3", "0x1a9f2730c80854d8f6dd98109363d405597039373af5055aa67fc18e5b1938fe", "0x040bae2c57fc68e3ce5e294998ea060e2563ebbac58ff8fc4a1a0a40575f0ed3", "0x16bf4f5622729467ee9749cc380605d2bc4d885cb99699aa2dd8565c4faf8b7e", "0x1045ecea044ba1cb1c3bf07ff4968390a3ea075001b21637ec7fcef61b11329a", "0x26a319fe6b7d6e08dd6cea9587cfe3f523492ece769f70f66d3b6197a262fd09", "0x28a5629b4c2083387eacb09c1571256d172ef1ed9c0738686da84216ba81bd6e", "0x186be22b6a063d18cc8760dba63b119cfc6d8897e32d6a0b19de280532fa9726", "0x2c41eaf9c0128c486c5595a1ced6b3dd15bd9b73218c6af88137cb8aa5c574e7", "0x11864265d76e8873b4d2ceccd18dada46ab7213321dbe0683727fa2df7e3cd7a", "0x1383e7371d7f3eb75f97461ff79565538166ede6fb6ac68b02cb60d8322467e4", "0x1a005346e9edc59573e3989f34c304ff1351de9642f398163602e138c59c7469", "0x2b541345bc4fe1589d649270ceed4b2dc6299c69a5d24b460e36f3b4eb486052", "0x213e74e3b88692068b420fdac7a62f3e90f87e8bd993310b982881b4ea7eb58d", "0x0254370fdf60e319df5d27b984e21d8979c86cc6c9db77b47e9e037d41ae2b84", "0x083b7377987bed3fbd0c5ee3279cccb319adaa660bb6a79ceee627f5a6369ecb", "0x0a2b26bbf2b84a55bc4c5b09b209d4a77bade4ecb0999e2a70021cccd4fbce1c", "0x287090d407c4c5293cd72bdd881ace1a4785c51889ac9ca053faef068533eb09", "0x00a9fcc21a234bc22a473c04931dde66476001ea6e32931277ca4cdab62a8587", "0x1d79fcc5066ff2a62d6ec0c096f3c0623f9722c5d10d6411386b8cf06606d116", "0x1d2da676081b7b0a7d87a57c6a6f2c91022a82291934ae8d646814f38b7c9cc3", "0x0121189d7362dba92f3bba28737ea247e85ff4b3ceabb4eadac26f7a79d371ad", "0x03ba01bdc7f31b4b3626831d5e82852a5da5a7f472f497564362ee63bd6d6102", "0x216487ac4eea81e4d835b220c7f1e7b7a3312df5ed0b6e606a169bdec89a35cb", "0x0eb5eb424bc72e5b20779d6138a7296dc333b4d98e4cede698c1d8f3069fc804", "0x1476087ee68863fe69d538de90f90bf271875fafec3aac6831fa17811afc45f6", "0x25995ecf079f4f81925ce8050e6bdd0b440e7adfb00da7e4dfd8a5aaec009f32", "0x01b590ea145df6152ff0e8eccb97f057eb378d3dc8585a8195a8fc6b03dddb21", "0x0ebfed12777ad9747734d82fb7ab59ebc85f07c3d055eb987dd42470e016bd52", "0x2e03b519ff070e31bad1ced25d02de18c5c073355890f26d6437c9990a3e232c", "0x028ed48befb70534a157c0bc8037347830ff6f7bffeda93a22663117c3038109", "0x21d5480ef2288cf37627083f5c6ff5806645d7878339792169d109945aa879cc", "0x2a017f4ca62717fe9d616fc3b74f426a22666a268eed190c92513679ff531866", "0x085cf123084d6b4b0b2b34cf06cf6f893e0a9db664958560e13102dca258a182", "0x01cab1eb61ae5a9c4f1b1f0f4cf71073d063cf8ea6ecb3a326bc3f2f24fc30ab", "0x08b659a737c0a7e198c51de07438e7faee94369715042367495f0305e89bb96f", "0x02b3adfef956007ba949e044a68115b0a9c895a81386e769744e7b5b2c307df6", "0x1a502a7b0883deaf9b24a7b451cf439d9b04c40af2fecc172b057b4fc00cafa6", "0x3048a536a2a75af41a0fa596752c83edb19c46c00e4072516a2cce33a42ce949", "0x01d008216832f77736b9f2c8eaf18d2ae69a7595a3d2e8725e75b3e9c66ab22c", "0x067389fa6719bb9e493424576d30d6254f1b7d54e69e1d1896c1b15ee85c0c20", "0x17da04cb5060861588a4dee60dacec407e08d6b19650359452705699bcdcabf4", "0x1e110b24526cf19448a04b71f91f834d903a08d3a7658e05ff0104ce6de14af0", "0x0b0a28b67269dcfb242231c7384d9b96c4406708f1a7bec26160e2352a820e34", "0x0226ba223bf5cc831bca604a2f55b324ad1d4b29b81ae33cbd7391ad0dca0c61", "0x1fa506fae71f617db6a04dba21eb6224accac5f7cff145947093bfce2f3f5cfc", "0x29724cc2973b5b34c4e53fb981f273589e7e0467a5b4b5a16d596f48844f0394", "0x20185815e6d5bd43d769b1e7b3a42369db44fada44534a9e41a181a7cd90cac4", "0x2cb5ecab94a2faf89986b565545493d5d8649d73a9f53133b614af6d89376612", "0x06772704a6a6c396f2f186272db825135c5986fbdbce0a3fd879bc27ee2134bf", "0x0112bff4736679a477440e744d7fc6191e168efe6c37fd0beeb6e64d30591851", "0x2faacc248d2f742b7dc50b013be9c4b2ea8d00be172832ad07ac0e268e391a57", "0x115ea053915c9231d6b9a71b4f3437e76d08af6e8fe7e42a3800136498df40aa", "0x0353e2c2845c0fdfc53f58394e2dbaca06164d10dbaf756127621b5a22181235", "0x29b3685900bbaca910363ae0cdec5f61cae2c52c7ede3ec010e2afeac748710e", "0x1a73ba985b824209d0a9f310920791fad9227b21bfd8e8a3a9f1c2fa89fac1a4", "0x274682d63a1d6a9eb5ea22e0558b145f5b9b5e845c8c9dceb83be943309a305f", "0x249de663dfdf6682ddc122e02aac0d79398f38e6089d92e2c892ccf949fcafcd", "0x076346a494ca499918229d2faf87b6b5afd4992f0d7d4023cbb677ea4376d4e2", "0x0712154eb43b0a3e8bdd94e29ad85939e220daf6931b84464741e64e9926b50e", "0x15bb7e127b9fc937642692a92d864960e249ddf327fc6c92afdedd89befc6c32", "0x0d438d885c3fce5b06a80584015eaf7a8ae05c60052c10ab80d80076800d8e11", "0x2bffb873c9b04762b2e362d6195c8013dcf7a5fd881894b7dc383c8aa34a9e0c", "0x24ea42c76f7350d08e8b1016663fdaa3f8552b9564e5ba2da45b76652707d6c0", "0x2a62ea21a0ade4740b808b9d838b4ef205b1193b579ecece0da34523c481dfbc", "0x0c49774a68f5274b468cea0f32211cc9a8ca864c6d32f2c644b1ab89edf475e9", "0x0a9b4d3d32564d83c24d4e052dc3072cffd61cbffaec957151fead13246073cc", "0x221179d848ae3c29baa0de8e19ad399cf000dcfce572ac310fc64bd4d201c3a1", "0x1702294352579a43d19da15dee1fdcb2a70a45de25203435e2340692f7f5e0a0", "0x059ab788273600685cf6de04f87ca9dbbceb1aefe37f779663a7ef5019d4d8e0", "0x23af64b1622be07735af1999691398ad6a034029a109ce435f12c1b21b41f599", "0x109ed21e2456ad7f94a0c6ca6ed942ef5e8132433e5fba6ed8f49b2038594516", "0x26d9ccfa5379d3fd6927a58958338d6037872271d891f19f67f70c39e0893326", "0x24ea9e2db358c1becf7dcd7d0e46979a647207816ae5a901fb00a6ccd991d0fe", "0x0015a9b8c33fce93ae3971d193a430be98eeca1d27735974cf502bfb20c71bbc", "0x2bbb366f79bc3baa138d79a96ab5cd14826bd3a85347e559550bf351f296dc1c", "0x0a1c76641eded157eaa1bf4aadc956791d9e7b29eb14d07654af052686b70e29", "0x0a8a9f9ee8ecf8ad0b5cd84217af26fdce2ca16c07bc747d103abcb48ab21fc2", "0x26d6852b5917f4e229c46824d00b44442b77d8e566fe3b3901ba6de2011dead6", "0x19601734c30cb2a44ee4a323b35f2c171ed67e0f3c1fcec7096e5f01fbae6885", "0x07895f7f029f84c3f17e359b0ee926d402505587f386cbb71070bc17cc87d044", "0x05807e0a2b2473f3b87130586c7868228eb4d9503bf25cc2b0f35a939e0ef483", "0x1ac9ba8eb9e2fde0a79886aa8c7dbd362aa490a355e07982828be3e5099d2fde", "0x231c7595f76fea5828672afc5bbb6463cd00e7a07346e2588af5638e3b321b40", "0x2e3d1677310217ce5fcc58f4039532ff946e2eff2b80d17f581ca78f0068672d", "0x0974163441712975a33b4093f922d7df17b2bdce7b7eb02c7830c5980464000e", "0x1cf5c1a4280822a59deecb82a64baab4edb87977e98ee29139bb51671b9919b2", "0x11ad46e13792150cf57933aa9476ec9184bfd5f23de46f1df78ed7e94cc81289", "0x0828fbfc0951c1ea0c0f3d5af2fe5796ed792a9c3cc4002b41e7a1bb8e63dae7", "0x02c720a8486e7122305304ecf3a00f99854535c4ff404fe82e30e99e8500fcf6", "0x09bdfc942fba8824c0a38d6f525f9176360d2881aa425028f1cd3a7fc3ef72c2", "0x1d954a0f93250e5581c6b897fbd72f4f2a943dde51e262e7dcc4a1b2ca82e2bb", "0x2b829352e297ab2106e74f9fe702f69635edf37e7ab0e1a7f92f14c98aed56eb", "0x12d3b917e58f1f44e1babaa341d1dac923dfac75482e108af1c33368734a904e", "0x28a9e6c65d06ed6ea47795bde9b177b5509305f85326062ad5015077afe4bbfb", "0x2bd3c33ae311c2f8d4ad82508b76df890c311fc8d232fbc2dc535fa593221ca8", "0x272d00d7a8fb1463bb624f1dd774edc8f3a0923bf9059bae3d84da23767d6873", "0x1355a796abdfaa903b81dfae32101a13068f5070440552eee0acf2a4d07d03bd", "0x0734bcbce4180ae16d4a6689b9b94f2b02cc7d74ca8ef1592cd16afe2a033728", "0x0778d4a614c2f76e28199d989a9052e2627464b620d91e7b6d3d15dbd4799d54", "0x16bbc980a67b2a65434d087c501859d127db377ae144ff634cb8574fe8bf869c", "0x12a3e7e197b0504c6894366245bed65e326db7c7aaf2c1c0d59e4bac10d633cf", "0x1f35f8c4431fb0dbf42d9d07334fd67f99160fa9f7e20d811f4b8fea7dd5d33f", "0x25d5bf1a863a0a6441cf55e7c85b8f232ff1556e77fbcc6d71e8bdf349bfdfbc", "0x15e6b8d9ab7e063a3638216ae471176e87ee4ce30cc24cad19587a23332320aa", "0x01929ef47c7322b77ebd0d1a40f9ec4d41eb2641bfba35a9cba7b708a534c9ca", "0x184f51e791edaa2dea7911151247bad4b0e864d7a8f678c7708ac65c51e3bb79", "0x2605adf5562d5055ffb284df1ec0d4e371eee0595ce1422ac535a410597cd866", "0x06e6d41feb832c2fe007e1bccc81442585bc9eae1612b8bc3d2a4925c239ad51", "0x137eb7da068955cde28db6ae5e780b7ae1c0d633cdd113bf0fde4345ac9c954d", "0x2e97930eb419f7353ba27b25879753fe64d7d187023ce2de4bf9e70eba6e9bb6", "0x13af409362087866e62d6860fdab159207405bf9c75a9efd9321736a1d812413", "0x0fd2f95404a9e92f46d57c80507375724966264560ebafb3ff2fd19259d47d62", "0x0bdd93ac21aedf31826fc3012fc8fff14384add521d98135df3ce70e47d38116", "0x083ea678d5a53e8a9b601906befbef23811a6137788bb873fefd5521f7d99f03", "0x08a9906be6e9ab93cbf1b94f090df2d02df6c6ccff6364c2ed6986d61f16af29", "0x187b1c82cfaf880449337cfa77f618e3ed19c604e65fb768b0333d8d535eaa47", "0x245005f814e38250751143117f5e27d5c173f0ca4ea2a81b1b8f3e90d7fec4f3", "0x25aa5a53ec5e71f3f47fb1cf8ea8c757fab69a61274fb36eada71deaf1614db2", "0x01c244a2ed1922753b39ec6b775f07cad91b14cd9b6578b64492c2cc4b0c8bb9", "0x01664e5c861216c4cb10cf3a3bd51afa0f3e59eae24fcd7e7daaa853d46c382e", "0x2af001a296c111e41e327ad212ed30234da2beada0449ea1d2e0f0a00e424074", "0x16022bdd67d2ade15f661a287dfe23915433b270f28c24e6066e45039aed813b", "0x132d7ca5f935f3e8864268ad723e8780df36916384a54b812c74a749a26826f6", "0x20bdab9829e48c89a99d0e8b0d69b79a4a273808807ade4ec5db95fd184c4f37", "0x28db494350ae9c81ab52d719ea05f98dc2afe87bc1afe556161e61772258a951", "0x19fc92f1d2c1dc043af3427b77ea74e80ab9f6041e0e51d1b24d9cb9f3fb3ed0", "0x16bea7126b8f072ab6c86afca80b606cb90c7e5fd02bbdba1dd733c3cb884705", "0x1fc57b168a5badca15a417ebb4bf5beb28fd09e0dff889550a126f5833f1fd5d", "0x1ad20d1a3ee559b6334be4ba911dec957d56699cf37dd7b97d23dcbc65bd9afd", "0x2173430a6842061f027393a443b6e25e59a3e5bcd20895ade0fcd7bebcd88885", "0x11673173043e15137361db05a0b067147a23d7f3003680f3e1534b183fe27cd8", "0x037c80af5ed51c1c22181f3e7738806984493eb998add05556eff65129259ff2", "0x1d70b961246d2262cacd8c0954040548b63fbd25f3038285c36f6b44e9b9ff5f", "0x2184448a7bb80d176dbe3de73f383a909635e4610c25864b2c63252186b6c44b", "0x03bdca6b22fb80cf9e7b317190ebbb9f6c7d3c96c1bf7d5013f36521a5dba7d0", "0x2b65873313d5bffa44d510dcb3f55048436f4eea91a100ec0d1af952eb64b247", "0x2a7fd02ef10db1c9dc03c9cbe82e857cf06f37ea10e7e3f539b53778ca274616", "0x1cb880cea192153865713565ee4255ce72da23b3d2142d265fbc2196fb8b569f", "0x16628b6f83fc36bbc1d60029a69c843d27484f594a7e3ba8d47cdfa548a91a56", "0x26fa9b84e855f1069e76e037104f8886b760d4919bed798e2e4b8dbe0080f16e", "0x0ee86c87bdf0ecd526e36a6c4ac9fc9bf05b9161856d658c1b9ecd80da9e9687", "0x08a5179993a8056405527cb82b6f619984c63cd115ffed3a6734ffa85267191f", "0x047aa61e4bf0721ac4e0a2f291e62124bcc2ad3949dcf96e875f45df7eeb5437", "0x263a511f033e1fbdc6d282b52712a09bf5d1fec21ea8bbfe2eb1ef5bc4f21148", "0x226520bf730486e2d8c859b449bbda7631b86432a2c100dd7386c9b1f993f34e", "0x2baef27107a52854788f0c5a940f5a4df0d18d38b893cbb1157b386a7d356357", "0x18022cca17f26818d54e60e300b5c949d9c92122f7de5651a60cf70c8da5fc52", "0x07baad301d58460d1e6ed10f52abf1bd785caef8565777fed94dd67de6717d25", "0x1e476106c4bce3903a5aac6e110df2cc1a7f71b4135be3662f4b01047e248a6a", "0x1e019dea5028d23b2df063c210466a88c3fc1ebdedccb8045c7e9d1bb6e77a98", "0x0dd55f006559bb6747b254d29a73f5ea7174c6b6067e730a5f9a9908186308e2", "0x0993085a8024a598e0c9059d3b919fb2ebc81be408cb96fe38a48a952c029189", "0x143f3cbf98e40971b2115493ee06e26c7893787bfcfb13b39f165869ec7fb9b7", "0x0525ff28fa24291b8d033b021395754fa030d497312cc17caafd008524eda07d", "0x2d9fdc18cd2586b9f449142017909392025095182d5f40d5911f708eb05cd852", "0x230997202fcd6f051e1bf1e59a9d01188e3621d613fe0e78e6dfb400efb43f45", "0x044b56469ffbbc9d0c0f075e20f390d30d11981a767e507b80aef7ed69e7171f", "0x1507d88bbe10b21c23a94555d1e4d379aa71672e002450393eaf7a23736150b7", "0x104d6752a761b50026377ec798404f71151b3cf6a9ea1be93c6840594824e9b6", "0x25276305cdeae4c16558de60da72941446a9fd2226aa604d44bbff12b1e0ec23", "0x10f3cefb054d630bd7dc4c7cabd97940dca683dad8cc35a6d0c30cbd9812051c", "0x0e406cbfa384c6b24ed043ff3cb1d6891baff0585afc4fcecc7cccec809df03d", "0x18f36033fcf64f1bda0c12616b00b611863efdb8966db7ed3534cfda40aeaf0d", "0x165d022a34cf10ad3255723635a51a35ba2a6db07572dba106dc56ca6c937c52", "0x223c8c9aed305b3d18265b56ecb7a4cfc4b10e58baa1365827a539c47819424f", "0x2103fee94674840b1aa185a1f8221ee4511a2b5268f1ac96d7b28c8984fde6d6", "0x1c1396433bb9eac9a02abf2390973c1723ec5cd55297a387a92806f78ef9d384", "0x1befee24005a88d2c9ae9226169e898106996fd32fecb72b0cb4decf109f1b92", "0x1adc49f1f1b405df727a64e98675ea0ac2fc742c806f0d5950c8ac41350f5184", "0x10a0e0cab76db0b6a00799dab1f2e4a74ef739173cfaab2d03eae240c9c847cb", "0x1a9aff62d6c66fdfed0eb91b6c4f974c1e047c0b27ef49b10d2933af1af3f997", "0x261967f6840995daf7411034526eb5ac725f95e21fc36c8ed191873985f95cb4", "0x1338030f85fcd2fae09eb016f4254086e1af2f88fe7dbe29d183c89ed5286098", "0x02c53745d1f0e66499ff109e777727e750c1134914cbb4d52bdf1649c7911ada", "0x2740100354406de4d94eb857a1c5df1c0e88d8b0b82d10c1276ea7d9f62a05d0", "0x0b8a9153d3d643f0a9f7dc08f24d70863e4f150d1c32ac8905a6226887c9bcef", "0x25dd73d81ea8918c9c1ff69b0b86a0ed3801ed1aa4059d94eb72cf548b2eea1d", "0x253d813cf05f2ff1c7d6622bdb9faaff277b4d0312a5888a9dcd12891ad1526f", "0x2523322d2d2a78cc54c944b57752bdd8d2c8e62e3af51e020eb2c15ed830f5f6", "0x2ac9c2d60d456848e8dfd47499cdbd4f2377f3b4ac98e10e2ae3e4f83b0071b4", "0x2a4e35f1df833442f9ccb8c75523b1ac8a9716174f47fb0830d94f9bc4386bcf", "0x270e7f6b15f2c0e0926147cbf79a7330b676d174acb65b730522dccb096f9fdb", "0x1933ef75d4b862f2274634e1f5a4e50ce899f15214f0b8feaebb2ca2ef52ced2", "0x165130ddf77a82db84278a31841109da4108d364bbdc6acbb1b0fa7aa5175dc5", "0x2fc1fe031dcd4538d5d8b1340d0d37df5505e965b7e7dc4c19895b9f6fceda6c", "0x0e1ead2be6f64559d903eaeb6e02a7c85d546422e7730e360a1e4bcc0f62f16f", "0x0a983360bf32392d5df30a2e4b22535a4f161fda3d05b1a5067d278e21c8e54c", "0x2e27e61828693607c17eff9bb1e5ed0baeef782e879c5230b86d6a79d729f4ce", "0x0d1cea26a08207e522ace505e837caa2ce7b105cbd04e7c838c1acd006ffa53f", "0x0b958dabc9a8066de9e4cef89abc82e3396a03568376fb44ccde4c38cb2a1944", "0x16f5b42d88f8d4f787ffff796bcf8175b1cdce307261dec86cf2034a9b88bbe8", "0x12b68aec2db262e0a61f0fd4b976b00ddbcf7546ef27f47d7435a288c2b6c63a", "0x1d2238d8d9768dc639d06ca5870e3503f3f81ef863300944c87b77628ab6d84d", "0x0d164e32fca3c3c8da3ae332a831cc9a95e75d4833ae232ae382bdc6b790d91a", "0x02fcdde6d6eabd7f2fa19234fb157661b762a5c47b57739a62000d7f6ca8ef3b", "0x0f133b8b1e54f43484574647812ca377c802a1590df5e5b8f9c8c21908efbe37", "0x03057ea8932e9bf7d1a4bad8241e14f1e60afd13ba4e90afb472d9dd29c42bde", "0x23dbcb6ecb4807740debdc825f7764571bc93f33645825d0e45c88b0088a9f18", "0x01b90754a2058217cdb64ab45e24c2e29423bc3a76f8289579927ecdf63edac9", "0x28db800ae16d7033c8e107e198aeaabbf9d0271c74d957c6bb9514a0f038fa91", "0x02f97a36ef93a7904cbdbdc36e5ef374e58eaf37b5b9439473cbe477c3fab178", "0x1bad1d9637a6ad6db5cbd19ba7b955a45b9e8089d1697445a130743e03ed3caf", "0x2b96f520dda8251a878b28bf96d281855b9c43220b0a3279179753f740edae80", "0x041f97f76c60b28e0fdf7974bf922b7a0999e0e0e40c654378ae12843212909d", "0x13b5cf57475057a2f5fb6d08093123973aef9726cbd9835b95616c2aed5588e0", "0x2ca43aed5aea162e8c9be92a15e7ad0af84d44f3d2e398b5f7491fa2df12deee", "0x089f6b1ec8b51cd1e6ea69b9649520a6f0f2f96ea11df270ab0c5d9adb5c3df0", "0x04f510cfc7e528370babb8ed7c50c34c6041772627793a0f3711d1300b4d1275", "0x260e12c47d0ab52563affcdd5c2862f4bad5b7af4ee037ea5f8164d0f13d1059", "0x1a656424760e75468aedd8515b3111e16cc0d60f8dce451f7bb35b12dec772b7", "0x00cc850e959c567bed20058b6769fc27a6c70cf72f222b80879e9bdfbc6711a9", "0x088947910eb3b43ebd8688695c64ac020e19d0bbe875a7f3a0b699bc60f18cac", "0x2c25c236bb48035f45fde5b178105655ace9f3f9afb09071e790dc4babdc86be", "0x12dfe1bc28654f5c9ba65865769c9e47f2bde0d79ddbdda21704904b2905da68", "0x05645b68f99a564ff08f745e1413bd83ab5b0442f0b8efaa2a986a6cfb2fd8fb", "0x17cf3ec9831b4d6ead640d912e41b4c72e9c259126bf6310fa4b110e43864c75", "0x12b15f28fefe5d6fa519ab9cc67a78c57dd721ab44af286e72fbbd5689a66f61", "0x2da44f7210520779cbdacfaab2e1ef01edda8eedb6fe6d037ffaf8e59842a00b", "0x137ff7323fe757f32afa165f11588b403bd393d5c9a961cd2f7da2e5d9a894cc", "0x1318105fa9fe1549f04ef48679c73d46b91ee0bf27b4451195de945c8cf78aff", "0x1408a4259df52a491775936b2c2d476a121708c312e635ef8d1f843c3ba3438d", "0x10cf20dd5734c18880dec5be44ae2ddcc4f447f20cac98c95193eb7571585d07", "0x2787fe4623bd3264e0c8b5a471974ac1feb1e37fbc3a9c8a4ea74d6010b7d08e", "0x1b90e21074907545c1dec3c59dbf2a6b1f703258bc03707e33db582d45ab172e", "0x0b8e912a5ec5a0bfb779a0801b90863edfd9429a7b3632bb5022fdbc40636cfb", "0x0d9982378cd9a8370bb7a555c34df3183ee6b0d8abf31f1f547a3993044188db", "0x1e497bcfd5c95cdfd630b0afbf6d376f29a468d1cd3ecde56f6940221d248af4", "0x2d602401cabbc69dff3dd552e271eec29a5a4acbc935686ccff9a15076585b7a", "0x170a5f4518f58544330671ad2a361f2c803c0d355f3e10a5784951f2abefa707", "0x21b3a23c3a553d401c08502eca497be938776af671edfe44c784956acf98865e", "0x224dd497bf3a4247b9c48c9ac3cee5307490e824a14204ed88c2b1166e8e479a", "0x2654965a3bf3c92422fb54e676ac8401baaf0f68d42664e300624a375302e0ef", "0x1d525f4105f51b69c006828670e7785b726e95be160ee1a3e299677820839f32", "0x28f88d089f421ca2bfe697270fc0f34f50ec41a1ede53612c52db74479b4b323", "0x082e621153ee34324e9fb7ff3d123fc9560ef9af0fa0f948db24d1c8e6f07a9c", "0x07f8578337523867b1d9403e9ca61ad99c0d7d5bcde4f19d8752e12a4d5805f7", "0x2e52f30dd05931adb7d7e85255849b062ba1cf2eb8d59208b5bda8e35d69819a", "0x14cb3e56b2b8c6605ba04261a8b117791caf26f7c233bb183f83f72ef4c8f345", "0x2fd6b4e6c892609fda21414dd8712de845eab305be627df4d36c8d325c9bd7ac", "0x0325898c8434f7ca32ebd73f53df3b1adb0c9940a69e9191fd996a4a96157bf8", "0x08f50a7b584dc022b85d6a16a0d3dff6b8a7ec4dcf5ec066f99fc4644d6d5d48", "0x29c5bbb8eb214fb285ca30a43cfd7141d9ceb8a19ff3c970f2bbf4c9bae9e11f", "0x1264cbd9ec001175211e2856a78901e4088f1eb7eaf5934999e1997307e7432c", "0x28a0e7819aa0251e9cf2bdabf64fadbd51dc9416533ae33f7cb97fd177688504", "0x1a9be651c412fee6c800848477cbb67e4c52fc23e51ade9c48f6af307ec621d6", "0x1bf70a24fe7fc8946fdde6f556b3ed4b03c33005cbe7f34ac11296e5b0c75f6d", "0x2f56c8c0387e5e44cf4921abd33b1590cad0719e932a36195c5138e0c6ac83c2", "0x1109db87b7684f4927b2afeeff00608af5f211920eb8d638e3a7c943b293fede", "0x1851c29804025b6f9c69c80891035590a51d13032cd576d332ca89222bc75787", "0x0909e4cdc0bc47f2df4898106b5c40f25c7137e1d5ac9a986c9f66fd5dfadfba", "0x2ae3e90e2650e286d5913d4dd1e71d4f233659701b319aa228e16af9f010e07e", "0x06a6c015f95173441f7a40d4f1bde04eb60fbc4dc72fdab7dd81ec557235d530", "0x2f6ab5d35ccfe9ea366da257c8596fa6ff30d6c46816a3bd3d484c97f8d2446c", "0x01f9c60308182eb6d4a83f9272bc220a8745d9c9127050899bf6426f7ab57cdd", "0x2f514c412bfd9754e6798e4c3cb13d5e4c4b29609d3ea5617ded35bc01d799d8", "0x14c4162b9c9eefb97941b1f133bb18225d28294d092cb8917afcb3e08abcd9cc", "0x19921fd625c66ec67ecd8af3d6ff0e0a3cb650e1e72b3fc98884b00354085b32", "0x1c852aefc9296753e1268739ac15d2c6d21de3436c816f75f93b8debf37eb6ca", "0x04bf4a69b1aa4f304afaa1dd1bf60de1f559e8167edddac1eb88ad9d02745fb8", "0x240a791f3b8bb62d5d9aae80f341cb569fe3fe72e7183d8e5830165e4d123753", "0x151b295b4242e0c09fef7bc5ef40f1e3c8551654186d62cc663ee4f28ff5e764", "0x086eb3d30bc4d80664a074a09739dc8c497c93cf7e657954b0cbf7676165f23d", "0x17aa8992d7b901eade7eacd95a8e89382a292a7121ab0ebbebe0dd62622c21c4", "0x1a5b3345a4c0d875663657607b5c7ff832f489b23a3c43962008570f96eb8de8", "0x2f03b46d9eeedcd7f8f4cf2cf710e48ce3f31d1364f03345b2a7964b01e6347c", "0x0fef583e7e8e102feba879f7bd60241870a0291723aa354a35259e0a40050d45", "0x2e07b5d70ca583cf4d9baffacd02d7d80fa5e523abbd895086a36288b969fa6a", "0x24599dbfa1dd1f4714d585248cf23ca1394b858af8e904c0517baedbf2f176df", "0x00a826afd370bcb65b66189e8d986777e61377388d8727e407b500fb5291f8ee", "0x28745950870bc1848adbc5f4bc03415f0a2bf23e905e7d33cad03de907081e3b", "0x219e6dcda590fc88d405673d2cb4710f8b5747b46dd9914d1be4081714cace58", "0x296692077b42e972399f17ba71ffededd95185ff7253d9d1f41747c6f27dbe6a", "0x2ccc5f0e2049d426841862f32f8062829fb5d826a6a483dd5078de859f9cbceb", "0x04f915a4fabc8ab208a615dd89fa207d367700bbb9bc061d07fa90a70feffda2", "0x2e04b7c1aa853f9ee5e4fbb5cd7b6e60ccea4ed5928a34f4e59ea9eba8794708", "0x08700df51138b36c0ef2bed12bd78340ec69b04a2e1b865108036391b4b6db3a", "0x2503336398f165bdea8d4929db1dd0b3710416fd63d7aadcec41bb7062c24782", "0x05633785a50a9c77573ab10d893341a0cc2df072ed8eab9a2996a47a527bdaed", "0x0ba4084e44c50e1412a4c982dc0d8a0d4622513b7c96e9fccb2c3be2d3901e1c", "0x2d6f32cb761406dfa9e03d7ff8a43bae106dc4519c61c3996cc9cccd8f307c86", "0x2f959c830737e631395846373b1f7d003c8e6bae3aea2edb73491244f8373687", "0x14863af59792adb1bb40901664349217498d999250cc0a858db27aed54fbaa38", "0x27623d101b1f922899f9c5783e1fdbb1e7552826e4d6b58d6df8d986937cdc82", "0x247328a4d9ce81603e37ea72cc5d1c895c21f09305301bf1411c0798602a6268", "0x1921909aaad03cc78a6cfbed6c1056e3d93a25a5496cafaca12af4ce324c6081", "0x0a85c0358cf388b47d14d42feafbdd4392df154f649b7213e29cf101aed00d80", "0x01bac04734a5920d65d67aaee04165de621beb56f902ca483860f7077537512e", "0x1dd1720966b3231bb00b08d6b8bac6c76dee5454f784134b93d8c70ab3eed999", "0x22897debc6eb2a7f36bee1e7f42ed4b0d37ad696535d82d39ccfbbe92e86c08e", "0x2ad01bb42b95d113b3b91ad88c69a33c1e94dc85512bc5168ee73065b387e175", "0x2e82bd0a053ce03af9aa947df5f131791529a57f8360a2cd697eaa177c6000b0", "0x2d2daeaeaa93a5f9d8b6529f00c4c6d691c3bc4efbfc8e7c2f08ae3e44e1f4bb", "0x0ab08914b2de57397983bace0b327f98c1a9c1e58c76ef2e716cc305727a0f72", "0x2758796cd1c178ed0c433c4f1b6b19d42ffa1bc884c3cd1ccca107cb2bc91998", "0x063df5b0349016e7bda4741ec898c74e4a30fc4f1b59fb713a824992311e30f4", "0x23713016555546753d41abd69e6fb91e4344b7c05838048ed0641cedc5fc6728", "0x26bdfc0a894998e693b7e2059d6a528aa86ab57eb031b96b53fe8b5adb74c075", "0x08897118f75cc8e9115dac581b9553cb407a1de135b632541bb734f53985286a", "0x02ef8eb2c7b26f7a57691ecb1e15a40afa9b3a5557abe81146ea6f6d4960c346", "0x254e8e5fc11b992348fd7a2c9f4a5a0b586bcaaf12603658b25910f63cf08b01", "0x02f41c21b73dd4e7b510dca16e7b4b4277301da5fbbd59db03d3a32b89c57b7c", "0x253f09ce9ecfd2aeeae98ba1b29806bc2871e5fc67bff13e303db99618e1d0a0", "0x04395eb655582d03f25775e66ae67be0aaf7c63ceffbbea9226b04b0e795bfc9", "0x13711235c3d21dd749e3e41bd048a32bfa2e796e26b72e05c999e6e6126e402c", "0x083c75117510a37d43b5513963fbd0f9f33590ddcc297e3cdd9ea42add7a175b", "0x26cc9b5718d84e606582d35d8fdbda944c6525ddcd7488cff21d4d0d823dcea9", "0x0e8978f047929b1a94601499634a8da020b9a46d0b1187d54504ed8a344d56e4", "0x2b11423af39a5d15be397439b5ca50aa9a6d41234acabed2006247688f6fa805", "0x21a56381040c702dda5a31a5aa275ce692685625e5aa77bbc430382573b402b6", "0x19a869e15b3f9b965016feca2cb82a2f14c800945ba49db74aad8e9346af07f6", "0x2b01c5a2baa16f9569d4670098466f05bf3ae097aa930771b76f24afa6be50d5", "0x0586148573b6b56617f94602fd6c86ad4a71b3fc67a35448d64eaea532582124", "0x040352e19809dd93bc7a2c549bc19cb007872e0599a3127a3e7704411894f98a", "0x2d6486b8e7b9549ea86cf044e8950ffa36974e842e1fef876561e1346c5a893a", "0x2ea9d2e1b7d07c9a3895565840e25843c9debe589044f305c1b5872c74e5a49f", "0x12e0dc4105acd8692b7cea0bd76da34aaeb8f6d00ecf84b4f062270413a8087a", "0x0da9c10656e6f42c3ce7c980a70c9d793db4df8307599a33a491f24b6368290f", "0x02f3551c6a648387da629c96633d5cc99360d9b89aec23c18ac76af21b11a850", "0x202de33a6fce9dfe8aeea34af1ed5c74093386c8a553d3a3da46e134731dde14", "0x07372d41054dbc009e3e91f902d57a213f043575f3427e35768a5a52482b1b7c", "0x02f7e35a4bbe9699949a819262943c97e8e938cd999cd911a9edbc716e2454fa", "0x2a27b84a7422e29b8cc73bf54bf535b011606c819b4baa6824b6123036d73ff1", "0x19527e9093b313d5d2638c863499839ff5d8e5f98e74b312fa0c63aff7161a3e", "0x08571a6b8b730363299666231e3c49ed231d1e355d93894c8562ba033147f025", "0x2c0f32778edfe932d912961c81d88e98d4fb64caea2cc2d4e3f213a5d2a1b9ed", "0x2710a63e84f8bf3b15da09e69bc24c567f84a4577610b19cc58191b2b1453ea0", "0x2d4b8440f168745ed84c3e393f75bdc0b0fb3f148e4ee77b525ebc258a953dd7", "0x234901ff3ec65e0a4f629bf6e96eaf379aea7c808ca9ee79b6b796895917684f", "0x28a529a627cfc689ba1bb3372072518c7720b450975339e87865c36be526e5e6", "0x1a1af260473d83489a6a466ddc1855fdc6e83d73b5c5c0fed554af11c6cef5eb", "0x2fd594dc14997e8e0123f3af16c9289d088264cc16a8119e8f02ab7270952924", "0x0d3564e44716de8c02d8f8278b0d2f819658234bc4db59147fa3a5dc23eec833", "0x293e9ac448bada42377dd8b02d5ae5695e886e0f8e43f01b38266aada3cfaa0d", "0x2186e961df0728bcd7b667d35e95f354cfb1ee1288aefb7e0b2381296daecdb8", "0x1b4972ee03b2787a27219cdeab7acdb5dce44bf8368a0c43e1e3b8c8a7f49e74", "0x01105ad26651d5ac52e817c32d86a3b10f05738fce996b2fa905ce1c3279522a", "0x072b770a70dab242ac30d03f5d2477595cf521ba7c91478d72e45358569ef30c", "0x1e399a42196a8061079e9d61ec97ff8c837195bb936206997f5a93021b70d275", "0x24f50ccc3a68ab3e2cba453ec40a8796a3c59735dd3303bcfadb6218aefb7d6a", "0x14fe92dc9227b42df23f8a5a0a7a2f50bc119f01dfe708b9118f75616714bd3c", "0x24713d85951736c77b66941c007d170282271958c98fd42d6b12696a7065916f", "0x05cf2ad05c75de38238f63258c8dfce0d1b698dede7feea9a97b263cce815ceb", "0x2d62695c7008a11d0c874b40395a695fffaaea6e6bfce85ae1580dc48218aa26", "0x19e47227e74d5563126770fa5ba61405ea6f348565c3aadad0830b3ef5d775a0", "0x20e43ff580378bafe2074a6b2fd50c74594537f98565f2d65ed8c15e5ca1084a", "0x264e4841309ac1aae92ddd9cb4d973e237406d50d2849c7091bf1c1bf5c1273e", "0x1238beacedd4f53b35b578af1c30c077f4289680658fb26ae1b4c0b2f710e604", "0x0d90474c262aac1913f37459d4f2055dade903de9bc02fa5fc7c137cce05fe35", "0x0f5aaf4827d5f40e00235ebd1cd1b9f6ebf3388383e692573b95cae4f653ad82", "0x2cdda4350f35334773cd823df37097ee967c28d62d0c45c34d0cee4008834893", "0x1c0c8c2ebb6860e64dc46755a7e072795bc2c78832a618bb6a2d5d0911b7d768", "0x269fa26069db1cf0cb705bc3584c0150b85642d4f243d5e68d7240b8e8c03276", "0x09b443b0a7676575b9a6d3f003609fa7c7b6226341ac8389258881d994fa91c8", "0x191b4697a8e295ab80f81b25743fe13f3fb6998e9131e99a86f22bd33e7bddbc", "0x0b488b6a875f238bc324f04288ad865c8577e8f906a971ad4bb9d91775645730", "0x275928b25e503c9c95c01b18a5d30081bb0cd31c36cd172bde1db83287f5f5e6", "0x1fde053dd87291d7e14f0f2e7b7461b49f60e4afc39cfdcde65d70f65c3b026f", "0x29b2c386816e9d3f76100e8fb9543329ff88ac29199a181358dc231aa1dd3e0b", "0x04987de3e3121811ec3c10421005e133fe1ce9c2aa7d7c54a26f425cd19767c5", "0x19a23ba97426bfa81b757e35aa3559050628665eb496ed8732d409942fb6e16b", "0x12333e97d1f0e3280b5e2f9d96561b2c04d001d2b393791a861fdc26c1b7f767", "0x23e48a5b646d353895d06928a181d75ad25c95a7672f3a1f4917ca03baff3227", "0x1b6bff423317d2c2721965972823ca2e93b8f2bb0a52245cedcd94587d596382", "0x16af0f387b9ba94c0ba6d176df30701ff378b3524680aafda4f7c4df4b088b07", "0x1bfad9c1a92234ed97c51ac7dc2d80f2e908c098b28bbe712cb75b92797a2103", "0x29bb5064073e9a6aaec7bfd94d48fe2207d90ea8962530f388442ca4d95e6256", "0x1cbe456ec3f8d8849e10fea36509acc3647edc3e765f4de7489264f5e34033e5", "0x0087a35062dbd735636f76cef6fab3b412749781f03b39b181495a62aae42424", "0x1f1219145ff0bf15d9645e347879a7347f9a6a5f3dea9a9bf9495174d228bcc3", "0x07f93fb41605d3cae1b42b92d527b2ce7cef14ad2b907702afa13d76ce02f88c", "0x0ae3de8a6edd589ab62767e92f3c19efbf32115679d2629a5ebd26c1c7d34299", "0x15b6688e877724b41ce08fb17695347b5eb8844423c71a98ebcc188c23888dcb", "0x131cdc252f00cfe48cd6cb1b15344b6fec8b176c1ca5584d76d6f9f6ad26bb13", "0x1bd570cf878b3dc1616ca32bf55e0b3fd898444d0e70d64909ec789ff11e8eed", "0x1e5a54e71ef7b9eabf717c01dd99b7262c3b43d1d6960094b8e508d1e11f03cb", "0x21c88de360b36a24fb641014feceacee94856233dfbccbdd1e9f0f35c9e7fccd", "0x2ef387dc1012ae94898b8afc9aa54a3be1f91820b61ab86f45ecb3ae21e23ac3", "0x283914da97f036349936af1157c536d9c2873fc3c1543afdbfc1c0c55cc6d5f4", "0x276ad4f7ba33971e4db2292c7ff704d15a14246a6e7d76ea79f1189066dd42c0", "0x24ca7fd6a2014d9821a624bf07950e8f64f5e6892d48e4a71cd4f63e9e2c63d8", "0x0fe8f370d24968de4dec0fae5919d8f4f666673ecae78bd7e22dc2276364afd5", "0x2f0bbec7f6a255512df348122df4b91778775ace589d4657dcc1223aafbf2586", "0x180732ee6d3ae2aa4866158f54f4d8b980013cc671d68c69a72d5955678703d1", "0x05a0b0ba16b7b0631dbe2c92f9121284974a7033a69be30407bec6b153590703", "0x2908a5a3204a9a144f6565e561bbfe9a4b664edaeba4106e1a57ac77290193db", "0x18c860a5d2537a84944a1075e804c32ec66cb5979908a8ca8cd7f2d8a7029c0f", "0x1ef80617b025bd54de5361dc2fb16cfb90c364e37f7a1f07ddb9ab292afc0e91", "0x2ab495215ccdfda498510f6d5dbfdac1429464e7788a229feae561be3d62c2c5", "0x251dc073bf23010a06bea25560e1be3ccb2c38e67d64eac680aea6c19952a7ec", "0x02201c3662a59685a511e2555643567df50772e8c150bcec0943a8af3f106847", "0x2bb9277b8021c5d354300da09101d24c72a842f97627a82065e5e67a22f465f9", "0x14f5ee46878e605585b3ded3fa8b9b7fd62a2017b6d2f30ed61339cca435e348", "0x114578668b59522fc7d794abcd2497baabd855f3fba503d5f5e0486047bf3fc4", "0x20bc06a35fe07cd507d0dd0a9da6987f228017055096ee68cd33eab3773a1146", "0x184801f655e82f8d32b94fb0612baa4ec983d1cd94cada67237670051d5fac5f", "0x1404d5fc7a2e8940778158fb2d303364892147a64bfee54b25d3906ab5b3490f", "0x251df4335e5164fcbbae73beb8cb57b809d71cb59d6e303db0560b0c1ee79e0f", "0x09a45be49f35c4f987b58d749c78c69082486d3f8777eba4103eac7190faad57", "0x2ede228b9b96b21dd5e1e6ea260a87f902c0051f1f203c788fb907df00e51177", "0x100a3118e3248ac400e6aab0e4e6b10f07e96de582c2c923a99cd14e45d6f209", "0x15872dba1f1047ac1faeac076b57513ad92ff71b6a6a2b32f27adce084894e10", "0x1f68a35d81c05733a573076ccd7946a4039da22e42959520737e4a6843283fa9", "0x2a165a1a2b018ab2fa4e581d7cb567d9b1515db27ea710af3683a8919e99a282", "0x064ff94b98a0588aa924e943ca627fcbd2ef854c66f917ae526f719fb40c6759", "0x1c8349f898cbf2d1fe6db936c53bd3564b673b72d673aaa39f9691e08283d5ef", "0x2e4628a8655d2fc84a32f10e0a95e92d0576739c07050bcb0158f156db6e7c5a", "0x0068316de71fed80213380a8757b3a9d517e7ea1e4800a22c510755a4a1ec152", "0x229e32cdf952fd49ddac8bacca9ec0a85b9f5f1e8b4ebbd995ec5b8289a54289", "0x26c9af69ab4a7e08335cdfdf33ce102a14cfafb05ad000afa7383f01b9b5b892", "0x14bc5140566915518f20d51498ca60f6e5e48678f97c1bb58e17af4db8f232d4", "0x22fe06bbaccc5b18b4a8bf2cc8c47e351291bacee5c5226fbd0cdb308734339c", "0x1dca1403773581144b083aa9b9768db5a81902626de0d81d80f53d75d247af04", "0x04152e8ca329e892a4503613f3472ee94b7e3025a592d4625f420c45c56a1f52", "0x13ce7edc9f1c7d2ed533026150f2bb6d261f379f1fbb48a8d556cc5ad7914e36", "0x24f4fa36a48be01d0bbe57854d48399d81ec03c394fb2eec544a631f4e1cb1de", "0x26e0659af8c838aacc352710f1433d9df9ccefc47bd5c487a0b3c29a01e559ec", "0x222f80f3327ff730c8ca585c067b5ce946724707601b7a4a72476c4f73e7818d", "0x19cd3a66216e859e433f64e4f9f3e2ad9c58d993ee168ceae5ebed3049ab2f87", "0x0d01aa823ee846c2cb695543c8499803101fc0ef222e3c2b44d8680e8a76188e", "0x2e17901918cb6f4fad9ac0d387757aa77c7207924e177d0826ebcc45c76488b3", "0x2e30cc49639069e2101cb479c7281e8715ce5f34d17c016430a9fa75bf484ad4", "0x18694d18fe6758b36c38ac70d1344c6d2b70249db92a74e1404683b2f00dee5c", "0x2597efc11329ee3e0c8bd40b4a78681738b4c52af4e55fb5be529996b56bffbc", "0x003ead8cba0d24715aea9ff5443d25ee640893186e6ff6c045dfc91edbbd1c94", "0x1e17e4583d68f0e1e7234d41915f2fa3c7b7c04cc2afaabd7f3bbe071cf1ca2c", "0x2d05098ef2828d71e8758837f5c973ec97b7547bdfa1433a5527168ee9f9d5c0", "0x09220ca57e2ddf5a1b2f2971627d1a74b7c1b837ade64a37e8e1f0d436051a7e", "0x22ee5c6d36a980b7a428f8afc999eb09868adc52b4fccfdb68b3f5fba518e03f", "0x1b70154b6e76cf9bcf4411203db1c19c77bc0ca8bef907ae8a4b4aac270842c1", "0x1a2ad9a834a4d41bc0d5bac3b7e9453100f58c8605fd112ef6b7a25baa7dfb88", "0x075aa06f43a273433cf8ee196e8577e5fa28844595b1f2b36f6473ffda38380d", "0x070f884d5d0093ff75fb09ce934c8733008f994efa4f556520f11ee8bcedf82a", "0x07d5a9301209de0fa56d9dee45f8480b12d33a73be02f078f7b9df6f9225ddf9", "0x0100dd4a2833b127fd800d28af04254a018853218ce565a8f615995a0f2466ea", "0x164c79e2906202e73bcfb8105c5c10829397bcb0089ce03bafc5f0e627e0d836", "0x29dec9bfa2a12f2fa1bc9158dc1d3d1ebad1d849fad58d34163d741923f8fdac", "0x27d590c95d3dddcdd43e3c40f7579dde645f33c7b0ce03d55e07978096257f88", "0x0c32e71be02fa8302d8abcb8ab2c6a3dc4e962e75955401c1e6a66157dfb965c", "0x0cecd591ea4f3cfe0c7d3edf52f4f93d60a3126433bf9b9e47710d298c31e9d3", "0x070627a0421fde844216f5f24789b3f54d44f1a06184aa81f75aa227335f264e", "0x116f5232abcabac8a8b9f1a3ac86bfa97fe285811ec2cfd733f1206f449d1de6", "0x2a8ecaecf1355850d03fa2f1a7904cf3a2ba7d3bae30aad7a35cfb4a6d7dbec1", "0x252ee8a2dfbaab265c060600b3f6e19f24e491ddd37195211f95918d3d39b911", "0x23ed5e73a4223df85afe948fdef2b6e0d3c120aa31e2f1b4c89054d5218258e8", "0x0ddef510d2c7ba32e4331ddba93aa688bb9fb86173625037b86ba4c62a0600fe", "0x2339cd5cb769acf2dafb5073bd988be15a65bf8ad06c38a82d38d317f0febe8d", "0x26fb4a101c97c06acc999150483d44aa762b585c422bf8dcb37afbfdf076ab49", "0x077d5874dba21d260cb02f280c5fdf78fb8ed9e0acada998ab5cb833b09d1858", "0x22ddb2bebc8cd1c946f8522d7326702328511313b40b4a9e812b69aeb6113220", "0x2e7c43c6222e6323f682c05c571f6aa62a3da64be2c3f381698e2c0ddadc93b5", "0x19ee0e60fc2da7a295371c667ce850772acdbbfa0a9eab7a7c94a50c9c682de5", "0x04d46d32c131ca79258ef2c525659b8138c0e199ce5968e57a82e780f1fa79b9", "0x2ddd25bd37dea23386a030f4bcc1d4382635a6dc7ea3cf3889a5e8faca46bd82", "0x0be3e9d472b8118ce3d01a92fc168de78549347b44526893312fd5ec3d2726ad", "0x27fa8f235db616a5909a2f31896dc8de9594798707b477f343b48ff528e49b8e", "0x17226412ab2fab6223eeda0b848333816a4dd6495e29ca47ce8b96f8c87aea21", "0x008a2aca609e6344086eed8a710a35469bdce68646a435a6918277a21d03d4a8", "0x27a10619eec3b5211b7ce9c318df7edfaecf7bc84098dc1c58232ac25093e35a", "0x06def2df638eab9899865393563ec8bc81897fe0f1adc5c0499755f25497fc46", "0x0c86bd5b00467b98563b7ad1b362a058538a7faa110a438b9d0ec7be8c50c098", "0x02237c3870ca51c0c9daf086524707a78be8845df471e4d4fb3f2e7f30d90214", "0x2aef4c14a514a36ce1afa9f2c5f1ede8d00530e01e2a704d70494cfd3c2982cf", "0x0f425f81861ada856f01fcf0d5ef108acea281735a913d24eea75b55833b328f", "0x1e562f2a3a83be1321eeaf564fb19f57aec9c66e6cc8fda18999d5baa0b4630f", "0x0627d8f4c1a8c8f8c5e1eb617598954aa814a756782e2cd85b79e8e1e748c705", "0x15e5ad36f719cca83a41f67782388cca380c25992e5cd14c670fd3c317b0ea5b", "0x0cc8d138d0854f9b62697b7791da960be500e3529cdefd4f0b18d16c5e757ce2", "0x17ff555b52d28be1b3c46c80946df519e9de247d2cf8d8175086f975d24c1e8b", "0x0fd5dd57c2cede876671978d2fd289aa0a02693252b74f7fdee8bd404e6c79e6", "0x203144a77c72ea89fcaff39b141def7e93a1da1fb9e22b7d0c6733bd72f06f69", "0x1979320524dfa45aa8ef35eebbcf6f621e1c855b5704d8bf755bed7daaf721d4", "0x089b6683b1f849dbbab0f1092ca04880f8b894d7f8bbcb95cade4e736ea28998", "0x2c2dd8e6610a0495784aa08bb9661fbe25c908396b5c3f2bd51109517fa28162", "0x2b9627b579ec4019306886e1ff4003aeb3a33249be5cc6b56dc3607b17e42477", "0x178f70a99501a6e05bf4ca79b2d6da47049f8c988936696519344ddd931174f5", "0x224ffa0f9d0d57eb0c7d718e99cf3b6ba01b523548ea0ca23a3f156c04083abe", "0x00f2ee1e2be1ece2cd8aef1dbfc826997d304d88cdee555ef67a799759c39ed4", "0x25757740ab14ca93745a76000e24328eb1a3d21d3cbed1930dd1ba2cbf7de236", "0x0fa6b963bc65bd930510b3ca6e1ae62c1b4675edf79ee79a7f280eae6496f16f", "0x0ccb794ddf870bb92a9cba5f859fb3cc3f4eb1f1117d14c1caef37beced0e32d", "0x123fc6d306f17fcd5a4309d4fe6e0cc1ca00fc23ea9447a7c6b68c7f6ba50005", "0x22162170a1f845eb0aa1ee7baea486212a09814a9557bcb9fc72cf90f0a29961", "0x13e385a5cd2fbda978dc7740e927ce8d422c9ee861c43036257242484e497e3a", "0x13bebd80c2022724017d8e3eb84c269810cecf47f9f57e237bb4be69410a7803", "0x13ed291502566a7033b4c4607245156a158a6fc84f4ba6f0246c1de057d8ff1c", "0x2ffa06928536af91c7ac3b7714f204e26c541142742179217095a6e54f743247", "0x2a6df655e926c4aa029749aaa7c9a40a10fd55a368624c148b5e528d4313183e", "0x27d8531ec6121a3eca74db524323fc100db502a580b8a4cf8651f1bf6b9b0238", "0x1ea104a44d82fbe1bc1ccfd4626cea0c06693422b3846b3a2b4aa12a3b0e747d", "0x1d69a3852720a88758034d954dea602e5989114a4667251b0da5915412ac5ff4", "0x1b8e232710f6c1ceeff9c1086d49cd8d2e647f6926da913cb5e10337d7f3d7e5", "0x2d40d3f8e6f9e3aa6014c69630dbfdf3169f88067574ffc9210f7da599c4fb3d", "0x24e1c2f60b1cd36101770cefc4334a8c02f00cc696df64f76df54a6fb6f0508b", "0x2408f2eb6b1e958ccadbff81c9a44913ac0c9cb5cbcb4b4054017abb3db8c04d", "0x0e3c6ecd281ba2e16aa37dacd2abc38eb07c1353dad96e87d14e5ea33ff8ecde", "0x248c7cfb7ba2e71819bfc755eb9e9a306cd0f6e3212e254090f0006d9ec543e8", "0x267fdcdeecf69d799e79f68632217df51226d8ce39574d72b4ae4f39d21721ed", "0x2bd9173ef276b7d4911ebf78dd15342eb261603c2c9afcf4ad831de9fa34bab9", "0x1cc0af33d07e50b2adda3346723006250fabad8fa3ddb365c1d8582f4dc65f14", "0x221f2bc4b7dce9195f9ca9ce8fdeaefcb05440c20dd9754bc59c11447caecebc", "0x18ebd5c63b0bf20f45d238fd0cab5dec8dbf1996bcd1b3489f3c2499ecf92b07", "0x2f338bc5a586f2774af3beb92aa92ce8e58a5efa19ddc891be47a5e77e9f5a4b", "0x0556b9c3784145eb4f2ff6e0c88f41989da5907f8c7118ae492939bfe4e9fb1e", "0x1ec100367f65684538bc6956805ed37051238a3637e47022a3294cbde38b2284", "0x1645a29dd4527ab91a4b798c7096e832073c8baac6e5db87e26c215bf448f84f", "0x22a78abf7d5b362a743ed52ef2737bbbddd375e9b3bfb42409a95ad105ac9350", "0x1a9921dead26c55aafb3ac9f3f35acb61a49d5f181e8036540830bb18686eb37", "0x0eb8645b0d2b8f0c3927d4643574c0b1a588272465d319e15fcc6c3262191aa9", "0x0e48af0cb275af55deb825a34ca48904a47c31b5592c4afa9077d60e5e7ea655", "0x17dfbac5a26f06fff967cfef597a6da11b5bc894ee6b62e626a62e85a3ea4b66", "0x0dffbd016ffd2b795226a83edbdb3c5a6f78917d7fbdbbc1b3631027c866aaa1", "0x2f948d5f70856b5f23a4338d244f6ba7e7ebfc750e16ebd1e2c2d13825094310", "0x194c9f7615cbe3eaa0f885c59e420bb89dca60fe174ea321d80435301511713c", "0x16e81a0540143cbbe662c7ae726051ec663d621562fb3701240cbfbb4b17b3cf", "0x11ef0c2d88131f715e47e9a4953f789fec78decdbeed34bc8eaa42927ea6eee2", "0x0876e45a4f862901bfc620a55951802a1d1d5c3e1414308db7d548400f668535", "0x2e78d35e1dd86776a4ddaee1192c055aa8676363bfcf3165317dcc98017e6c75", "0x19f6e589ba384db3c36adae4bc034fb9a444da42164b6ef289009a2cd7d15a6e", "0x09fed90b1f10f84f6739bdb1b4b508957acceadace687aa735dc9f6ab14404fe", "0x055e35bbef7ce5ee7a3603222e09005dd5192adcd70dc33721714137221f4831", "0x05e8dc359ee98d3bb6990fd928ecf056f9bb736e0d47cec22a96e7cac65a9828", "0x0c732297f8b0c272fac76944ee969930752a7bd3943c7b97e038bcd2315d290f", "0x16703fb8b02c94ade315d5b62aa1bf7834de248310887dc13cfd13fb6c2a10ba", "0x28715ac5265d7a812af4e39e43bf9ac80059635d01fd6fe40f3f1e059d7f7f4e", "0x2f683b0027994e095e71eec8475730fe227b480a6aca67ab1593ce6f837bcaf8", "0x0854d9c3be72187a2f198590decd43943c5aa6140a858f21595b9a08da85b323", "0x1e3d592b71a473c85b2104acc1d8db8cb9101a3cce55c66801a0d379497deadd", "0x1eb27377cfa38a3967a71e697725c195bc1d7ce047e83d0e069dee8b95a9a70a", "0x0045b9fd1e0f115801232c7aaafb5e73bc2d657c47b122f4e3ea30a659bdd9be", "0x027aefe3d1130e9394b61a804dfe2231d68295910dd39245f1e1de65a87dba6a", "0x2e4c5fa1a42064e556fc50dd7fca7b48625e4c169415487d4df0482a9b1df4eb", "0x05767cb28f1019a39627a19196a7e4672e82441be0b90523c7b9b9f74dd3315d", "0x17e443e32ab352d209d3e038d1364b24eb3f945e99a6809502c5439c807fb4dd", "0x017a0c0d83cead8ffb70978edec1bf3c4acef4a2cdcfd8c335bce42793513e43", "0x28b749b2a9becb34665e38f3c49b767f20738a481a7a76a19bf1030008a252b3", "0x1f5252eb629922c70f2fc1b5ec5ea0a0e0acee47da26c40436c3f1ffca690356", "0x29324c40ee7bc85d33a056c3fa8f44d6a7724da53ccedb3e56cc26b73358aa0e", "0x00567e9bd8a2b947d75b376a9a1af17bf8bec6c9abede582054fb3ecf7860cde", "0x1e96bab6ed6f45550f2621c0adad747c2fc9988485f6184355c3176d5c11e8d6", "0x08d47dc23b1ff527992c9eddc91259a748f6cd7c1f61874a0836f599e995a399", "0x22733cdd318150f40d89d1ac142f26750809a0b888c85743af671050cf6736a2", "0x2168174bb9c45be2ee87441174a24fd41de6bff4a377803025864c5ca1927347", "0x0b48fdaba88524ef8d0495ba63e8713b65af4a9267b5d62083e7b8726043a1e0", "0x18658643fcb63644520c0fa02dce232935a4ce8d7b733a9b17a866e50b3ec8a9", "0x2fc94cda5238fc785871bca97960b299ed0df05f6c6b28a3834865fd4974bc21", "0x1a54a91a89dd7e0ce87530303c12ef76244fcf42c38db35513d65c6d5994ab6f", "0x15610d8d64ba02952f4170eaf42a27cfb2d13f04d4673537b72510c5c4c3da22", "0x13597b4707657f437ee42087cf8b589042b277467d8a0436cf66ea44a6661212", "0x2dbb95e5114e740028bc5edf58b2e9fc7e3871d3f16ad0c3845d5e961a87837f", "0x2cb3a3e7ce16cad9596eab92d772f6b8afb43cb6492b2c363ec71e11f86c52f9", "0x286e8b9468bd2d392dad5d90ef65d28dec27de7147ce50b8edffeca5d70020a4", "0x166e762a73b519001d753737d7d908ef226237b077cb76ed9f6bbfcce9989317", "0x1dc5bee6477d7e7879fa2f33ba9adce878a57fad3845e7c9eaf4be54ab844f61", "0x1f16f7f1cd61d9563e064c86b508afec41d614abc7b34bb45174b40d3877155c", "0x28df04cdd7f79cb06fbf044e631ab11fadf9691e4ea5f6209f8751af58c8eb15", "0x18aa6490047ab52105dc1e60f448762461b7075d38a7c0b2ba95646526588fb6", "0x0076ab8143a290792147c6a6465c9a83bddf4f65388cae8357bc6bd9400ab99b", "0x2616217a94f407053cef3b234cc11acbbd2e344b403bbd8a26f821bcb6f1f8de", "0x2296862cb9a14424a34d3a11080d6ed5bfe1bc4e0301ec1cbd4e260d81675684", "0x0828428022a299903406314c159732bc0fda227a3e7a40a4834e513f3ef97c53", "0x0771ff9f397469dda6f20cf1841e702c1780a0719b3f590175b394f38279c77b", "0x0dc489dcf61aba1104925eb9439a4f44228d06dd4567fce1444965a749567975", "0x104470f92923d3b9dafa39eabdf7eaa23b6ff11b2ebb64a63bdb912d43865fa1", "0x14a490ce09c929505ad223e2f397186135aa6586b27cc9ccd4f78efbec993a6d", "0x206893bb747ca2504461fb24a2f72eae4cf330835825fb8ac9563fed9a7853ea", "0x03c2a738e753f35b068c6ac8171244c23fbd4f37c80ba508618c800acf626546", "0x129edb7a013029be80efc7400212cd7af1308100d34a569ef3646b52cfb06e16", "0x0874b0edfee05d8cddac89e7b562f917c7ece1ec2e262f226f4d1524a1ddc158", "0x10a0bab2786cda30537c696bb1ffaf898078841896f7be41cdf30ad2517b2aae", "0x0bab661c2a17fbe0221f435ba90520bced928364cac984e17a6c72a47e13fc2b", "0x2042016e686c984057a28aa2ae13c981ad8dd02ac7d4663005e1380c54f843b2", "0x1fc295ac71911a59a81d087f967f16a3a887739d7cee663fff5d6e0710cf4a42", "0x05922697b04ae608cc3bb0d9d345cadeaf4fa291de888e9b1dd32c19cb1a8777", "0x271b87d8b895c6e1d864b9cd030729e523bc90b469cee37b51144bb3b0e4b9db", "0x24aa401343e4705f22900fee892cca269d0c0ffab8f55c21c674edb9d7bba552", "0x1b07068cafe17b55b5e00f7037c9ac37ef0268d5d2b76d7271c617004f05922d", "0x1e35bad319a036cc6a2094f2a1bf2d1984a2b74aaf3e5b13a6ee30c90097cb33", "0x2ab91b9a85ce69e7bea68f4fb5b1fa0903945e039c4ddbe05eff2d5e754fc219", "0x21e979fa3a2594d2365ec70b5b3e0ddc5edb8e28fa7ec307aab14b547858f666", "0x187cffd76c5fb29795523ebe065c9c2115e73784ac6b15c596fdd68469d1ad0e", "0x18d2ff882c52b396a8c068f88c3d23f9d11d9f91c0f7fde9ef6af2180a007392", "0x0a878a77de615e83c3d430f11f326b785c1ac114e599c24e5adc1d9fb91b31f3", "0x286b9c6381700288bcc75d020ea09c45957a615576d7620a0b9af2609d39afcc", "0x1c4e5ed7db96db52059ae2da709879d489a1ac5031c35ee1b6c422d9080c3f12", "0x27141679bb9260a693b880784ff5fbc5d59457b96630e0a5c04912092a4d2abd", "0x15e337c65fa58edb6a74fdbe7cdd1901b5d019ce7dd4144a8b49eba02bf085fe", "0x08256792218c8227eca89f5114f1e7f091d88a557c69b2a956fd2dc90cae3631", "0x0c08d19af9c30a31acd3928ffb5a57de5e83367204ee67209ee7ed1bca5185da", "0x1919839ad91604c370f237d2a0aa98efac29246f93c24a1bd0f9d2b60709b6fa", "0x15bf65b02b92f40b9f0ea893ddbb0572f49375acb5958bf944c77ff6c3561a41", "0x122e02f2e0169809b22def001acc797b202d335af7bd2cf032e3a7c75ef033b5", "0x12075100dddb8098654e718605211f7f6a21f5176d380141fb39977305182469", "0x2dadbbb8fecf5ccdf01f73d0cc60b15f1bbef018a63f50f68d00b72d8adf0878", "0x14334ece05a631ab375e7cfe7b89fa0d8092ec0cee24c9fa3009edcd62ea8b71", "0x09a51856d49ec654f7d44aca57b174365ba5479d8714a09f0f6de08b34e3942c", "0x048e8feea9b828528dbc63cd3d811ed05ce9de018f4a4647ac1f685bb8f6715b", "0x204ba6f18193f747ff10980957022ecaa8fa4c13e7fa4e89730a76253c9b07f6", "0x0079e1be1622edc5742e4f811ea2c0379bff4fa82b79fde5d0c9a0d174df130e", "0x27e48eabb0ef3b22305ab720ee4c7f414e8d4dbf4360c81d1ffae4d7683f637a", "0x15571becc7f5454e45ae416a6b3576274767215f659c91ba354372d999881d5a", "0x2e6a4545ebf7c2e44af91ca7192eec4aedddbd2ac1df4f5101f7f8cdd316655e", "0x2de19fcc78800027b1932cdf6f9e959208606cbf8a07524457492867f8f6bca5", "0x2e1ca8efd1876e209fc2d62cb14446e8f3c4bdd53d6382ca86b113f3209d55f2", "0x154b3f85eaed8b65718e733ca2ca7c8af03cf8f23befc4d7c6177ac00ebad368", "0x29e58f39555d9dde7bac3df18d8eaeb2a5a50503860d20c5cd0ba2a2cf6373bd", "0x032d32032e52103ad798fb36ef7c0681504cd2d86a12c7d937ff518e57b4c3f0", "0x281de0191d30af73105e39dc174015d65dc7ff12d20888d02cec650e1a245a3a", "0x0f7e76af800ebab14281645d290607eabb062bf0afe1419133e1ffdcf70c808f", "0x27ea405bdfc6557a4dd338a2bca9819547501f6f77a588a75c014d46283f75b3", "0x0570af543efefdfddab63fb05d31edcad395ac82381491a80c825c621c7ac22b", "0x027a797e0014302478a413cede7a45cd894b0a229c8e89f56ebaec4c46692bfe", "0x1dd0e283a8ef7d0f4966a517687fc53243554a8d3c7e41d91719b36bace81516", "0x2006444695987560869df6dcde2673e5b73ee5bccbb43a05c2d8be6c59979242", "0x271926392e5f1c94437afe2c2969bea4ff3f6d83ee71394008831d24bb1b6cb6", "0x1b607ed2f130580d9a8c20ea26b33b478d6e1f00cc82f00176935a8b54cabf8e", "0x0b7a6e33808d217a9e55c23871cfdfe495c10d62b8b981784b0487e63df03e0a", "0x28ac790d462bb345ab80cd1670403943599b79edef17cf70236ecb1ef872cbc9", "0x2f8d745b1b4750fd2f932f7913095515c498be314210180c6c3077231226bb94", "0x2a3ef20e60142f17d2f3b82eef6135079523956d8bc684092eecb7a7d56d71be", "0x08119b14b83922e4b224697c2c6536cf772d067489d42672b988cb638c71a0f0", "0x1a4bae6c9cf73ea22739a275bc722c8cc83d91e7ddfd5110614a52d84ce73205", "0x1d659aebe4b37b888be3a7d7f23e362c250046c09d5326312d8d94cdb384d1be", "0x28e2fb92bf6da4e6b96730479f170760564458d95f732aae2406af4c03969f8f", "0x10f4ec3ad6f3ed3387729990456c9685786ede8e6e14b7c66311d47b8778aa68", "0x2ad366d90419107866504d4d34346e0a3c595de6e0aa51c805272ae1bcddc2d8", "0x02f1dc29a06c64c9e43d3379db0f2e8f0cd8f80351724d313ca02ad24c6dac81", "0x20086a672c397e65cb37cfb64ddab08074f173f37d0e4a1747b7f020652da64e", "0x0ef2861f4ec9ba5fec74ba22c0b7af9d458c3cd8f90c825c1f36110ca2ee9076"], + ["0x0e1962c232fd0a6bb54ad8962a82b9838cfef19d290a55fc49d6debd061cd2f6", "0x01e1f45cff3e74168accd0a94536fca6317128953eb47d8d2d79b847b355cf51", "0x1367eec3b20cb74953618fd9261047755ef7f8aae5ffe96fc8f7d9a02e37bd1a", "0x2ff6ad40533afa2acb78c9b91650d7ccbd274b09f78c100479f3a4d72956d706", "0x152c8c3d9e43d90ad8094831a74af8151fdcda0b18d7bd8374ffda68d1a5fc71", "0x241707db26f96df502364d26712c7f465d0ac5597a309559b075406351a20977", "0x15a4e4728a197dae6303d0cdd2b6d1e4114a9fad38a530bca6fd06ca1ffc1f56", "0x0cbfd63f363978c387d656e93f11e336987a68748c8f54f385887e64b1075598", "0x1fb594474b8334f9aea6fe5e323fb0e0ac27d2895921ac64e93e524e4ffd25c4", "0x05ac55361da931c1b4c560aa8dbabc8624ba225871bce224addb5af901676aeb", "0x135f83314252585f7e011692cd9acff36df6be985029f226de256803ea704d78", "0x0a68f262c9e14d8a9ee116bf90cd7d65e3df561bb3914e314e3f43f167f5c04a", "0x0a8360a837d4c97b946633c353298b77d6891b6ce78e82a3bd39fb7e51193d10", "0x136a21bd13b11857e0f7670e12d23290c2318bdac830154cc37330ccad9a3fe6", "0x2a60989b8092f8e1c1cb0238ec85bbd6b8b659327a03e8e193c15a54dbb73c04", "0x1b5eb81f143bf326da0f4eb95d4f45c8142cea640d33acafc8deab155f37345f", "0x08903cf6b684826737a348acaa452e1ba9f9345de911f2340ab7324d0bcb47e0", "0x03b8b717ba10035a12ae4dc40f4210b0f0529ae837766e1a269522105635d818", "0x0623ee7c19eabd13115398893e826eee211daea73f80fa53a22f8ce55906027c", "0x0bc8b24369ab76647fe0ea278c866d4d45bc3f93e8b06e76901bbe5bf20db5c6", "0x1a327d5f540190e1c9cb1e31d857b5c51c5cad9f1ee126c44670b782d46c2f50", "0x1087efac87bfa4807aca410a9c297d23184c05bb58abfd43a3fc2dd483380592", "0x2997117304dfbb464b5cd4a4188aa4f6ccd56de9cbd813da270ad7ee699e8065", "0x2296482e919fbd46f7a518155e72a55965596866f32b1f8433390f3e1f0e4063", "0x2152d5f164ce09f6928ace2566bebc6109a4f62047e4747a051e29dc187525d9", "0x1054109861b3349e419216f1bbe82f4a57823a77acb1deb6c48fa267ee5d302f", "0x1772f4029540432ab8c6968b3739c3a241cda3ade13ece2ea0a0b157d65c2c93", "0x00c296afdb2e037d7979878671c78a5f6008d98cbf75be4e3ec3cc1d44e8459e", "0x0ec85b22c62686e52cb79ab29a0181dc8e34ddf3167d1e353514ec868e729a5e", "0x149e2435c20d48a3ec56c4e45dbbc583b85bd64311a2576ff352668962c21866", "0x1d44140dcb4597c7214a6ed85bff1a3b5fad33fd7c530699bbd610e3bf5240de", "0x03cfb0570f824856fbf41513be01ed3271e1c38a16f610a8097cd27a1325d4d3", "0x0f223b396423edc29d51e58872b2dab7ea3aae89517bc41957eac79ce9761379", "0x1fe6dc2e6e83ab88e84337a45130963337746ccd01c2f2be100080be32a59520", "0x047310ebb459fe860c954517249440d367c6efc5b93f70c410bc76f8088b4a3f", "0x21858ce69a019e4cd46096a61790bf7e03e10e3edc1a2988df768498ad667cdf", "0x0da4f87da196dacc964fb6928a51f3acef042037db741f317b4d80a81cf98a8e", "0x198eeea981eb256b4fa43f05fa4e1aec908e57613eefd35026358080e329bc12", "0x11964efd21ea079340c66ad92fdb62b8a18ee08a9992f133a417d23b78cb1b0c", "0x04b07b1960518122f5725ceadc0c1f060928bdf0f5ec42e16f8c2934877b4143", "0x0246f5fbb5f719b0896e07b4c23fcf1d24487b4c775983cea49500f8637709ec", "0x24d78daede9327f49eba679539f85d099d6583060938cb052dce50125b01cdd0", "0x23de932658d2f181f59d7234a67e174763ff790d3904cfb3dd10af8af4d8865b", "0x0c4f5431daaa994ddf5f3fe6b1df0c0c42287a38c9a5c4c758f72638e3bdb403", "0x175999589895b6947d386d83a5e6f5faf9c6588d523c7846433212233f64d04b", "0x02d54cef5e3cad1a80471bc6ef0c6e4e74c2e56886a31d79257b2762ee7ab517", "0x1539cdc69fd93f2ea50dd12ebb0437c23df4ecda29c76aeb09437ffdbf01c778", "0x2359a45452824ba97dbc050086bb910c12cee0a908db1c2808979dedc8f29942", "0x0880e5da2125b0842203bb98e5f24ae26228a5af5a6efd5461f634a4476a15f2", "0x16110fc6c8167930bde230d5df954f107cfd0da005aee44ec5ff642872764c19", "0x1310c844b70d6a5856f6d18669e532c2d6bd5d01e6a31e804d81a2f5adc63fdf", "0x2ea868217a99a6cbe79b442e2152853c7330fd8de757eb7555765879fe42ce2c", "0x29c5042471d909ee4813cd1a36e8eca08d4e0d383009f17c4a367a877a3df4bd", "0x25e36eda0eab576075e88ada3914c29442172a027c6d174ce0ddfbb017d51dff", "0x2d21058ec44674d8493e702aade5bdf3b691e3faac0427089e867f9ed856bc73", "0x18d17c3835ecab44bdb8b67efe2acc71d39e9d3443dd0ed11d95045409a7c788", "0x28a2f63b0e940afd2c78d00de1aa6fd6953e6d6ccc3aa3203b39618f5d698f5a", "0x02635f5bd9bebaff0ce7614ec7843418a9aa83637910229beffdb91e23ebc10f", "0x1fb8e8726525268018845f8c826b0e4d56c4e9c58ea92752d581d1a51702b882", "0x087e2ce4d2ae5c93ea5611d50c313202a80c4b43533b49077fb569f837ea1fe5", "0x0788fa9532cf00f13c817f38ee1bab85fbc687998cf1c14aff5fc1eab115a7da", "0x1c5c85c57a1f7587f8d2fcefc1d4e98c2741a019effbd4c50334b0c15c3815ce", "0x0c1fb832b7cbe0e7e11e8edc2baf8749f6ea0637b20e972a63315dbdd5be1472", "0x229758a22b52ec3907f94a117f6639164508c77bfdbc679c1b3f876b46caf809", "0x05e066ca1257d8d5edca65a2921fb5b5e01e3a2f0a2a3bc6622c791552190a2a", "0x2b1a935a4ff16c2500bdfee2086d9df3927a358e8eabe75f6a70d7db25a31917", "0x19a55993108088e03fe7fbc2a014509ce987f4277f729ba5b924d25b39e0669a", "0x1bb65a3f9a4375ad926d44c188dcfe51b5a5dd6a7ee152aa6ccce44813e95db9", "0x1f721c4d0db7592f9bda01fd1fbebc8e57452e218d8a2e19163067d4af128d37", "0x2bd32a02899498a973382a4d40266dacae898a9847c2b33c2ad30bcdc4254776", "0x28585b052d22283650a9139d6361b08ce94d17d7c8f6dc1d54f58589066e4a31", "0x03eb34352610227beb26f8edfe466cbfa347d7950bee431e7165647bf1c5ccdf", "0x1c1347ef418d657abbe6e4c019011bd34ddb207ab54a9b99f07c4044589e0986", "0x04a8aa3b18263e171363e9396847a1933f044fac5f5b11f754e6feaf54ec4747", "0x12744a063cabe92e2e18f000afef29c928585a03afac3b2f4c17141203944239", "0x10af4d39a72d2dcb65eeeabfca40a08a69b274129704c021a01388ff8662fae7", "0x1038c656b332e519f483d54e5222b34b35af12906d13652d1d8c6b0f509b27fc", "0x10ee02ed1176804b7d43696eb87643b4fb45f01dd65889e5b65128f781d39d93", "0x1d08ccd47541575c60b567fd9b6705de88248f9cc60af2343098d35d9e4f6d35", "0x06bbf6e32d26e922baac8c62bcf85ec934cbdf6870e3818cfe49dd3a4c70897d", "0x03ae60403f93a98370688100dcd87ad4c71ee529c4dcc3be32d6bc0621d42355", "0x0fd0f776d267dc3c01a377d217e33a255c39937ac281a3b0eacb58b1012393c8", "0x2d4ab3b85ee6f55bc17d051fcef739168ae28b7e6d5aa4ac12a2dcc07b9ba6f7", "0x2ec07b3fadbe296f9bd1fcd1758f95e6b922db7582068d76d552184131e0832f", "0x0a6013e37f560f540dbd3e9790600200777b86a577c2d2d83ec7cd13db319376", "0x0dcbc3cb4aafe08c62731dca44c843012265950e0796c73d8f9e53a767c7e888", "0x198c373fbc6ba598020456f624dfc906f28cab915b70eb5568f175f842355c27", "0x2a9515770f3053638e3c064f5901da7acc2510fb29f5f3607f8ad1256ada07ee", "0x2d4154739ed8a6cf9a92e590812f15f93013163f57b8039773cf86348d5318c8", "0x02bbeae4c716ee136c4ceef194e7985d46415fc130430a65b24e9f47533077d9", "0x192b5b08320766f45be7bba9e9a70c0efc69afec2a75e4e071e6c8f55fb9ef54", "0x2bbe0e0bbda936b305829e3a74a82df030d4fd8112aa7f169670876b028f0702", "0x0963722d8db532fc95cf2240a570cd7a136366dff544947845b6d487dc7fa62a", "0x16010c0ed7a37bca9682ac858fc8d2c4af513f02d0f17dd306f05cd57dc694cf", "0x24486122987e17077b026baa81e705e5d0cb76b4d92dd3ff54bbb813f3d09ea1", "0x28da35a85262582b220f7262ea68c381573a918c10dd17e8e564eb6da113e5c4", "0x1d3196aa6209085c34db2f0e2b3dd4bb6bb670e6ca24d27d90dc8efa5e81638a", "0x0e56fe4b7ba62dcda0d2f7b9de86bce6166d79a0a0c3c695341fbdb407b9a506", "0x145fd47676ade5c380b90bf08020faefc8c3d270c6bd97f92a18ab94f973dbcf", "0x0b6704486fdd2a633bf9e40a5c5e4091e2d430c937306ab3045b39b8b74e333e", "0x276747994473ba9152275d15beafe42b924de69728107898b4701a6636df3cf4", "0x12665324c9fc8d246c1518e040a15e3a17c0f83f0a479571d8f61a47f3982d21", "0x0288c589327ff97824eaa3dff40bbcc9ca73f69e43eebf24b29cd53fa111cc8d", "0x2c3b3f266f21d21da33e4c39001c7a703e6b93e047357840123f30724fda336c", "0x1d089260f53d9b6d912460c6a9d9ff9df5a6391a492731534826a5575e8a7725", "0x052226cd4ff2c85dc3fcbbfdcaa0ecad7125a03d533223c8667040fbfcf7062e", "0x2712f9171804273a9c1973f7e87fae28bed9a833fdb70ed93dc6274865869356", "0x276f2f781e0c9ca0424a9a5135593be95764a759c231199db5d5e0e776e15aac", "0x2b21ffc3ba163ea61b7c0b717d519c64aacab81957e268e175f46876e9ac6f62", "0x2f3c2b6874b81531b890a603be7e36ceaaed6c8a3360a868f18bf23736288c09", "0x056721148d9a370a8e8128ee00178695f66ec5063c6660ff554913394cd5df67", "0x0e1712fd1798dbb4a2976dfaa085bb9822d2d2693983e99c76a556e75e63313f", "0x26c9846c7ca0b8227b6eaa7634cfaa6c4a13bfa4710cbefe80befe5119c0b608", "0x1ebb9eb479a644d25f53dab3e6dca08339f0effde9b7aad7a34748507d69a8ae", "0x1611f5e2add8ccfe9d093bea1d55eac62661a9ac9713fa4c70895997441bba88", "0x2462c3d5555611aeea4a146b8da50d30c419943c1aa600e5b13bc47a3810f63b", "0x0f376eb9e7de4c45ff508a22b34e55f0ffda026826a98b298672d81c826b6292", "0x0e7ff80c3d19a2ad98c8c52a5d19d1712517aa65826291ae6e75e0503c8b8a3c", "0x2eb13ff66ab49a73aaad760f5bf271316f3f8538c526a1a64fa65bd3b3fc2d4f", "0x22a40e530de7dddc1f842c9421192c635b43a6cb1f83d89ddbd3c56c2a512edb", "0x2740baa318c02fde162c920a6245b0f2208f7d0ee189823adb47baffdd5ee21d", "0x1965522cce8bd29b3ceb508ce40431f40d54b59c0411e5ca427f8c1c789d29b0", "0x10a0db7c2b0969dc250647af0bdb0d99cea4285fd8a90717c2760232a906be7e", "0x0295486271ada3cae4cfe3721e6d7b0acf21bdca3caa0e020a6d88ead1f2bb11", "0x1d00206d65a92466ddef22e5583661c68ee313cc40a01c090e5ccb118a1af13d", "0x112222605052423fd6da21d95545d6e96878e5a6f43fb2666e2fdc5937971bc5", "0x25cfafdb7df32a86f2ff44a32ad7b2fd9a60f31a44e5b5ad423ae52b0e3ff2ef", "0x1a42aca3307df84a81ff5b9fbec011ac9fdaf3d9c73cdfe95011f7c1ac779d15", "0x14fb6c4e0df0063275d380e67c251a29ae638028d8e6072a6e4fdff4e039a4ff", "0x1687f501a8c07c9e43eb4ab2244914b651293807a28bc43d73ac4b5640445264", "0x2d64ba4067ab898f7b434409319d7cadddb14182f613e46642919b43c89b8159", "0x265e19e2a2bcff9489cb749daf9b77256e408f180cfaf05506e11a02d6d4b142", "0x1120d9116a584ecad323cb8b8825b9e43ad16ce59c5e8bb5f11b4ab8e5ee6801", "0x135c200f7c145c042fdc94ad5bd2e4661b0db889ddc3c24a207f5c7c4098034a", "0x2f9d365d9b5f9fffc5491c0cc39e6b9ad14e4d8794bf76e66beca2974dc6c65a", "0x2bb27c1a1e8452f317bf86a6384954f8609a285004593c52fdcffe7d85812df4", "0x245f28da6986368776968d7e5da1763d38b4e1a5b53ac3b457b26d35d8cc553b", "0x16047c3f4ca23c6f5daca5d01ebc6721a3d156ca4c35e0084903836bd12893be", "0x13299dddb9e277b122240d08656164d15f8d15cc7483de7087e8ad96909c0565", "0x1590dde29e11424a0e7f7d4b3e0fc7e412d092463cf9545b7c62260ab2d434b9", "0x19fd60baa2486bfdffffc8f672ab64cba40b394f2818366c76d05b77e91e2b36", "0x265828edfb0391d860822c4119b39ceeec02191653f95c7392c01725444ee849", "0x023bda9a3c2e8bb1b227b126ea574f97ec7793cd80c62ca44cf8b2e415132bb1", "0x1b770c804bfb918b1976e3357ab884668b0d2aa414e007ede000714714aa09d3", "0x1d84eaaba6521eb866b600749069e6643daa80f7de10ec27351f1369a3729d13", "0x073a0aa1ba4c1e1e982ef00539183ef648fc441be88ab1dc5315a0cbb401c9b3", "0x25ac099aa85c9e2aee6789f2592258cdf5ca8c7b5739e267f12034f705797f81", "0x1c1f0dc22ad54da9f26321b793e014ac1b853001d156eb590e6ec522e6850c31", "0x103749ccae90e434a1d961319f96c744e04ec0f77c8c6505bc21a1194da6c14b", "0x093c47c9dad5ea61c8566620e4f436c36ad00d046b252d2264d06d9a377e9c68", "0x12d48a22d443711b05bba73fe7cbf5e0734df7ed34587f85d850a5158c0a274e", "0x0d1487ee7bfca46febcedb83e9dc73c33d3c099bf3c1a779334834f89f7da334", "0x2ebab1e544f6ad4525eb5592152ecb46f8e0f70cc54e739f5ae4c48945e534a8", "0x17260110bc0fa2d859a65a519b679cab157a6485e5062cafa3d9e8523543d460", "0x14b60bb1b813533655b74d1948fafd94c73e1e0bad2bf3e7cbbe997c40c22cb0", "0x144ca9b18104b5bb5a9d21d73bd957f373259539a163c78197210cd16c886641", "0x0b698540c0ab22734bad58e48515ff84520051215f5ce4915d80444032a3ba49", "0x1f458fdf92a4c03bce2bf69dd3dd4e26bfc1663c187799bb35958d3613e25bda", "0x26c0c3f9f2abd19392330ee93e2554abb27ed377481e2a2552798dc952a0acd7", "0x00fe825bdde1abafb480e985d6fa8f4c7ae9c6735f9be0a6924293d2ba1145c0", "0x24deed3988546ae6520a6c20c7659ebd2a5f4b828182a30f5195674997b1f734", "0x0bbbcd555c184aae0891582c61d65195132ba14aa26fae5bca4cfa0ef71c90b8", "0x0f9f78d85dede378437afbec3f6ba40c8e3f674cbaa51f2fc53555779ce9aa4d", "0x269cd2fb8c03936aa6e30dfd09c34ff786c83996e89f706c39cf9a673a79c8f0", "0x040a5ed55c1541ad1431b2e0a5c2370cc0ab8cb2ab31e62505f799b0a535537e", "0x0b10db52d69a08382c9b0f60d53c586333018877ec879067a2f9548fa035b613", "0x1e6cc5c4090d2d91f567237064c57abb80f1d1886a509cab6bc23e81767a2aa0", "0x104f9966b6a892138319ca037d4298fae4fad5d09cd05e6e4814b752e51f570b", "0x29d96f530ed5cc92c904d21bf560c82923bf6569acb90abfb9d68c495cbb9814", "0x16b917a241c5e2a1941d745666d8adfedefb48f9cffc756fef6667439eaba1fd", "0x28049dc8703e7eeb4ae5cb7eec9d0b9614f33f03beca54a67d729cff65971fa0", "0x2bc236714aefeb86454cf972676c646a071e70959d53871a23a27bcc4a514b46", "0x0e85e3f0b62dfac04defe89326b1f1c9c57f95dc299ef95fdce2dd130b0e09f2", "0x1576f55650e0dfa819a1273e6a0fa04c1f1ae18f1f841daf0ad5a235793b862e", "0x2e6d1f984d90d778bc0e0990dbe6be66258ad00487129ab3438da90c9ec307f1", "0x0a5216c240378084d7410cc778801c590391c6f600a85514de1d5cfd2e29fa95", "0x16af0c6ec857714b9e9e7932ac8a6b1b01fb42532e51e957c735e02403ecd492", "0x07ef3829b21e86dcdbc3aa02fd246b8fa8e7e4c21578ef0584874d36de491aac", "0x021cdfdcab1ffdac2baf015ddad7ef6fc196b7442e82b370a1187b484d5d62d5", "0x0911aa1ce608f4234ff3b9f35d9be546f5e7b94bf0a25f8bccb3535ebf1c5846", "0x1c861eb01c4b335ecfdb63207c5167f2f2a2dbbd4c604df9739082c5db91713a", "0x032ab5c0093afc059d72265152026bc674b6988489fa1922d3f6a130e6e98c0b", "0x1dbb7c4e30b3bdb3a248e0118c9259c31b75bebbda8acde2d114311e1166b850", "0x295721987b2a072f968216f69e14afc10ac7ce6870a1cef620b9e3167121e565", "0x0d848bbb53ea8c72c8ca0a933711061cd11c38bef5204e1987c6e0016cc87728", "0x125437f6105b57329c045376be9801f150088384916ab57ee90e4df260533e40", "0x16a6f85cf070a9343769dfbde8cec30d62500d50ee294167b0cfc9af4707ac24", "0x23e4ba166e2b5a1506df9dd4dc74c7a30dfb79f493ade38be21c0a604073d359", "0x0d7a570d5c131bf78031c66c8ae5fd454ba9855fab92eaf9ca379d08e856414f", "0x21793d46a696ee5040f599f482bd9845356c02e4c2b07a6450a1005543665821", "0x04cf9f12178ba86fab11c12d690e620603525ff7dfcb5606d0f67f0a7250d0a6", "0x1e1c8714aeba7e7549e08477b4365ec2dbebdfbb6018937f680d3cfadb5b9224", "0x125f99c81db5d7e74be0c6e6b4476dd0e503c1c704b3c7d3ff0ed356f9a5bfd4", "0x111bc3215b3bb2a5d17257fa73a77851d2a24e4804ad1ac6e652f0858326ceb2", "0x09e73771faea0065c80653dfaa8bff402eeb0be36688343826faf639f684b31a", "0x0964f621946810a123469fce6b544ff61cc9b733033b632070d47bc9474f4b0c", "0x09532bf9f11051f863a4e80679782b0732d663947390c12b02954918a18e47ad", "0x1d14808c54583a620e6587c24b993b1838a0eb07395c3085b449d3135be322f5", "0x09b88cebccbb2a0a18e2d2e799e77cabcb4a231123c303e98cd897ffad598d44", "0x24ff5ab38ef457484493054c9bd3ec894a8566491a91a52bd788343c429d0a93", "0x13eeaea2298ca24ee7a73162ec3a21d817ba86f9772bb68c0461d115535daec3", "0x11600a36cb41fde2dd26a7cd4a98cd8beae0a04e46db399eec5c1d49020510f0", "0x2c7682d3ee4ec3ce7e1f67cce9bdeba4a1f669f04d9f7a4bee13b3c97d3eaa3a", "0x2d9b1db246b004e185b08c953dc0af4fbb7c7dc67b2378eff707507b2db06cb7", "0x17f1407c2872d3810b7474bebe3711f72583cc95831301b4e3e06a3ca9628318", "0x089fd58055d20602bdbc2171ae485ff48f205301065932bc9d526fe54d297f02", "0x2779eaf53710f3a5848a8dffbe40b5f442a8a13c514ff97501fdca080fb3bafc", "0x07d6c3ddb807b8634c89aef35615da73596e8ee1a8cab49d022f0bca8780ec15", "0x1b2918da0b9beea69a80b05a151e681722cb66fb8ef1f7dd82939e991cd021e8", "0x1a21a1409ddfca99e3c0987f97450840f958524affeb28c18fde739c8189cabb", "0x1f9e67e3979195d368172267a6ba3b448173e2379f25caa137ab6964714d1fe1", "0x07e57931399bcc4119d9cd7b2191793de0ee69474716b08008a9f68a428787a6", "0x09ef7d4aeadf7bf593c5a79279e9e65578d14315df9dee07401693d199599482", "0x285fe3b15f4b43269d4cc0183f9f75b0b4fe69ff170ac641b18c7fb105d2d711", "0x19a7682bfecfe18fbab22301273895c1c4b9a994877dd778646e9dfd64f24dbc", "0x0ab794b4433b5d0ca9f3f9236159ee7b9f112abe71d3a4d19385202c209501d0", "0x08ff64f5bb9e3f8be81573117e011c803f69dc6a0970dc05118ab1071a28980c", "0x2f0d454b49e0366171d95142230002d70f90c8c37047c6b258c07c0c9d0388a9", "0x17b463c68fcba461e149e56eda9e8db1a4bc5c7b8289b0cd4286deb5c93554c8", "0x2d1a83ac832e49280df94b1e27bab65faa9e21a60a48ef0f4557c03f9b7d11f1", "0x1e182411560c80d7d4c480e4fd65b9997132a4ed29f9a8dc3d882209b63b07c2", "0x04bc5c19cbb312941ba1b731f096349ae7624eca3b83be88647080f794d7fab3", "0x0f10a1319508c09aa4427ea79071da02dce4a1745e139e6949f99216acd8305a", "0x07579d96bab793ef1f740713f70f3d2cf4af1d20ea560f48e6f8c04df64f2077", "0x1fd8b55d0a28cfd009b298b30e226aa3d42433dc148318c99c4e32af13c5144a", "0x2affd50c6aeba57687d824aeffa55c217f633d46840c928c0373ca46432fa731", "0x2fc1634b69dc697b668fad3e89c88186a76e4077bf6d1140d8e428eaeb7a3872", "0x23a53e514ab262e22eca7ee722497818c064f8f74ccd330503d7abfa85f015d3", "0x086ea98e8a4edb6d8500bca03d53a03a22f69b6f132c99ecaf9e950fbf26c87b", "0x0f48915855b4d191b7c37d85e8a5d491648cd4e53f5806d499a8de87ee10f2e2", "0x13e0bb95d9d3078c10ed2f731f57f5e9e40c95637574e95a933d9f2a7aa56c5b", "0x2bc35b0c5b335dfc6f1a9362e5b389dafeb65f0ce5b44548280f46c16ff51feb", "0x05b2ddcc86a8504b00808acbb4a643b169db2b07fc25c9cc3138467ca750b5ac", "0x1750d1a47da211d8e8386c198095b83ff665b589ac278bca8c0fa01bfc683cba", "0x1bb5321e95d1fba2b22cf4d75e2ea2c3643b85efbbf1a3b2cd4be0e7d123880f", "0x2a4e8ad4dfa27652839ce179e0964cc4d4732fb55370901b3292d663bde41ecd", "0x19b984a2d5a0323b956fae09b529bdcf455122c443eeac7ff1584bcdd632787f", "0x11105f818cc27232a8445ff886ded838fe980038727b9e2b33436a55c2f9fd3b", "0x2228205732fe6b9af281b5b2b5fda2d07f5184c555fb52a7f514c6c1b1fa80a0", "0x20b4c468bb8e29c186e7f45feeef84bd857db85643aa798bc264519daa463fdd", "0x14bcd2fd5c7392bf9d93e49b5855b5f35c717d4ce51137b8751b828386a7a5f6", "0x161cb26e6fa48dbb05a5c3bdab4a1a524469f98b8d10181f2848029c795e0576", "0x26d537ccd8d4f3e62fd0fac41c6a24c9411f4d6ddc03276bac261768953bd745", "0x1de7d3df97d11a081106a4bd21b97603a76adff165cd40ac747ed49e61c611f5", "0x29800fb0020ae18d4efd8fac1def5c7607af35f4e223904acc6a14d8c6d14ac0", "0x271271f850f692a3503fb72124b583a81f3f0ea6789be3a56ffb49776579eb25", "0x16694bf37fe421340b186cbc817d0b136f972c935579f2da300d8f3c663481fc", "0x19ccaf839bcde3fb9764e57b40f8be036c1d0ad6dd23caf40f0c2dea764b4538", "0x1345bc63be8e3e86d3eacdcc4cf142542e0ac660f6f75fe34d3c7f3453823d2f", "0x07e733e36a63b1c54e453050ae43078c86a1803b9bc1984f836da9e5bde26cf4", "0x067df85fc461d1e13b0a744c4f7894d3126d400c0f674115d764a07a053f6431", "0x03c2025ea4ee2c19b2f8d8be0a2b90a1d2f43453515ec04257ae1fc6ce5334af", "0x2cbf1dc7af58fa9adb8ba31b1930847624cc4f8f67cdd8bca3a9276c1f06fbb7", "0x012035a5219b900dedaec32f62cbb85a2228a3e71b53afd4d2fe6b3c964f91fb", "0x1b8c713c90d62b367382c0ceebebe29893157acd56e10755d10699928f3505ae", "0x14475f758d5db01a2de2add46c405d939eb1af0ab36bcf26ff93e4860541dd56", "0x213776f1e0fac855f958cb20aa090d4fd47e70fd0e936f751037fc33cf9c4127", "0x2acf42c1eca1a093f10198dd5a16bce16bf8b21107724a94aff2f190906e6980", "0x19194b68b898476596a9e2d4056e15c95a6648234abbbf9ca592cc2c53703380", "0x0b20a1d9a2470011eb2f8180215400b583cbbb1fd085fd53bdd1c9217cc5a3b8", "0x14a7d1d7065ed6f6ad72a0ef3b848d76034f7a95d2da2a06433c6c4160ef9c8a", "0x19142416e3b168abb99babc17ce6821d95a29a31d92bf74a122a8efe799f9bbd", "0x2cd1571dfb32abe6e5dfec8371f8130cf77566a9eda06cc8b6466fe9e1b3c528", "0x1cb1ebc4b42052876e83040bde7b380230f5f145f9400b5d4d7136a61c6eb458", "0x05c4ab72cdd1de95419689661e5e735e15b3ffcaeca1fdc8669e73d8a6cbc96d", "0x24c8da03cd8fb497e4f0450069b5d4deb102b64e68d5889772483e8d0e3974d7", "0x0de8195805706ff74cb251cfb0bad9b9e3fdd059d01a5fc7c705d60971fa4840", "0x304ce8cb3cd5519623520a4883d35792256dca0c12dc1e855157a59daa4508f4", "0x0f36b586984d1959a79c38a0e06450edba003daeb792c8d4df307c55c9efa8b1", "0x1a8325d55480646ac7faa3addecb2ec0ef7482f10a099c5b4656752e24551869", "0x2d7f6744d06196ae0879f406814aabf889073505deda846651fafc8c20185aec", "0x09205507dfc37672dd9711d7bf42e7de290b366b5df2367d437a82dc9e086681", "0x1c22e9bd3f23dfc3f73dc73c9131e16a8b076818fc8823425ccb1b732bf5493f", "0x1c5976233750078411d6c93680d8879596dfaf5f92d48fd4dd94ee5d29c51ca1", "0x07cb86c6973abbc69f89d248d744147e26690a61b6e31d10e980137879e42673", "0x0c3c9880a8248520b611ee4df7fdcc16a66af45f52eb010457579107dcc99d39", "0x03928e6de66d490cba3a1e3e3665123919938effa7fc4f8c9b31bbdee1e479ad", "0x0340f788573b536fe1e42c7fd409d367124723dda9c4b0f3b962e0137667e87f", "0x030a65bd5db79f009cc1b3fac1ce464c4c0d543385252da017b116146fe80d82", "0x2a42a802de9085d92c3bdd4086371a3f17ed03c08a2bc61b3e43e0539357de14", "0x1549a1cb250435699b3a2467f83901128094446a6bba526d5473e8241b5004aa", "0x30501645d7f67d6d4e1f64b95a344a85bc6a6f97fb361e7692c96cfd54a1d414", "0x1c3ea369de18dcdc3378f61dd563a1aaf256982fac9ea0994a3eee26c1f5d00a", "0x004f2d2437252a0d4d9ca4c1b01b66083c701281c233807e744910b3ddb971f3", "0x132fe529e4aabd030412962480562c95c8fb3c4abade9326e1d87becbe1392a0", "0x19fa107156b961886fb9d99ec13bcd8d0c4c544d4240c1f7f43c77c63f144857", "0x2d5f91cd3cb552dac7f7843f60552bde86f45e8bbaae484c6b79ccff34ac5ee1", "0x2dadd9a69ad146e65bbabfbaac3378af9c5540d17b9ba19bb29c48c85dbfe71a", "0x03c9003074e450209212b3bd1622da61c71aba0e8a094a7660be1f4638eabc8b", "0x0ba91729271f6b814378bf2b847490d8b06b46ca31cc5c4fc74c1cb04b71cf14", "0x0ee583d817f1705ac7ac0b9ae042158ad0d5ef3672c1d13dc7dd794aa84f3061", "0x1140026a5abd89c4012d2c43a478b52fbb46ec0861ce5b3b7c1cf69fe5c40f62", "0x176ec0bfa58b3976290ac145954418c577ed77ab87fb9f8228175a9ad8e6f5fa", "0x13e5899c46c14f7004fd0fd376476cd34aa7d3b13470fdc5232d56a3e59b47ea", "0x16730ce766f65c06cb611f8d7f4fc3d53c6662ea12ca4502bb968873f3e14f86", "0x165db0eb885ffed5f77a557b3eb21ef2d48b4a7cc6220709de00e61cd9f8f525", "0x0c428278c217c1e7e76e3110f7e1b26a9095e8c8cbc07a171714e9afee2670f9", "0x2ef183424c590a0a5d3b8a639f37e4e77d10fe9e12327718b8ecc2b40a2e92be", "0x0bbbe09fbbfda7b6e06cad868cb1a389fba5ca299ed9545351c974e612f5fdd3", "0x2f42003eccab3bff0dce2b22a8769a5ba1a0a6f854c73a788443bc13e8fa5ea5", "0x059113aaf928acd9154ea9295a5a69f864149ec96f0409673be860cdc1edded1", "0x1fbfaae77bc060fbbd03ffaeabae2cd4d3279363c5e4643783dfb9a5d5946825", "0x25b3cef1d524c48156e9a24aa0d2c20ed32fb69b4debe1c12de50db246e3c805", "0x15e6f0329ed4e44d0323f02744b4f6d0321e204fd38c99ccb72a35784b94026e", "0x16e47f642bf13ce66c2c2bca01a2763d704b46de0d7c99dcb2b480707c1a3bf7", "0x1d9f848cb9dfdb81cad62dd5fd43156e57c4ba194e32b421aa07de9e0a8700ec", "0x070e206946f4cb2c2a7c5c7c0ca84fe53ffd884279259eaeeee00627dd985cfe", "0x0a5f91aed115950ce6348b0f0f001569243c840041b974e4fbdeaccf72b19da7", "0x27736747795d235597047a57b524dd4c1ed0e3f42798215ba85056bea765540e", "0x0167c1d76479106953282f945c8d8cb72160f6310470a7f5165f1572d6c27ea4", "0x1becd457d21ba094804c47c3a688734bd543b2e6d7cb51aec0ca89d6c1e3c355", "0x1f43386fe739e7f9c63fbdcbb82bccdcd417338feac1eed42def7150d4a21358", "0x2d091c358175583b32cb97c58168f32d83a68c99bdfa7c2008d9c454b0eade16", "0x017257c5bc8dad57ef6f66cc041a1606350900dce184c312426065346dbdb1ba", "0x0b4adc03c7bfd313902dda678c2fa251522a92a7fc6e4b47d4f1ff98ea1f21c4", "0x1af84524441ac03fa2d8b5b391a7c371f2d9cf06a09005fea6e3b708ccce2cb5", "0x23ecaf81286336251a1fcc5dd44a4ab9fd3940a048e771ee4668830744a5a9bd", "0x187bc703cc893e2cba22fbb598c0e778c2046adbe58b3ff252d7b635ed990c20", "0x260b02db111d63998b6af09a81928f62cfc97c4f8cba26e828ff5c057a0e55f3", "0x2f0232a9940c4c4cdd0e44e3c4785ced14ff13b5f871ce2f6ee35742ad050ace", "0x050adc4d5d64807f730d0f450da5517479a3786a3bb2c8de24536a7ca5de2d8e", "0x16ab8f682a4083d0f999f5816f41cc7edbce82c0d59bccaa89c254729440f981", "0x1127fb2f0ca9cc953fbb1d4793474263a6e51b77e72c38b1147ef865415d4dac", "0x1f6d04ad97f2f4b710f91f5226a8c55ecbc1c25af4e4ca8b76cc4fad24eec674", "0x141be544be4c23b3625efa886da65e675b6799028d3a7a6dde1ed149faa49678", "0x1bf785f9867194b45e21dc76b200325ce4bd664b7ce3699174b28c0fb3243906", "0x24d9be7c32c7e33bf76816e19a3c1e4a887c9ae74d15a7712dae802864c08651", "0x28a481ef8515851320db9cfde816826a2eaf994aef8a551a3d0022d77205ad6c", "0x20573c158a49c54731fedb7c494eba7cca17975cb4a448c688bc56495907261f", "0x0a15b156592972641eef2970904de3e1334376ee64bf76db4bf5e7c8542c21c0", "0x1b2bc4a3f3f448efbfa21a4e41d5d6e09b73574739b66eac27e65aa1fdb78c70", "0x1a79a5d83a28bbc4c113600038135e86ce6188df4dff938155301593d4cc73aa", "0x1e15e7f11ea36757fdcfcc558e7c6bd8c7cb8484388a2c95258e2125164df413", "0x298a03bc1edd776ec3372c82ce73c44b3e12e9509c124459f15d9df783953816", "0x0acaed186bd21b6bf01884c2e80dfb84699e0bd83b7770d03b918d24a0129316", "0x2529c4ffb6c39cfd1aa6e04800cb59baeaa31da43903d3385b2ab25864812963", "0x19c47c2a37278f183f3b58427114139b3eb82c0b890c4199706ad944391fa6a4", "0x0d2701bdfa57cf911f1cd1fb435fee068caed685c636382249dd9acf45d4c989", "0x1e58e36e0ad7b4bad27ac7f76d34ab497488d1661a444dbc07cb9c7219409f12", "0x2698b2f66fb15f3b16a7e50cbd835a31fbb83e0b65982d7a7acb2971cc5825b8", "0x1c3a8e3737856514071a5891b7eb286fcc836f11b629c12c9b61a76a6f6dbe2d", "0x2927ce5173086473fa445d53172a05aa66a8f9d9a169f685c47aa989b9e0f5ac", "0x25aa17d824580d6d533236412a489aa45aa389b3d3d55a345d35663a1b143bf1", "0x0fcf1112dacc31179819d66574a5cb8ded45003f76667d34c1d34153d8fca994", "0x06032d6e50d059057d461477999efb4acabd1a9da592731a4048ae8d19b3d351", "0x01e40e819f426fae3dbb00926a7d6556f30d84934ccabf99e9876351d1716b5e", "0x27908496d0906f524c251653251098cfbdc97b9d7417e437710e1a7f4b80d08a", "0x02db1814f1435cd07ee54f8c3205c7d76262cb5fc5da605836a08d47f3fdf134", "0x19377a45d6a5de00751ea901198e1a0acc41ca8a99feae5eec07fe5233d289bc", "0x2d004fc82e3df9a9b89321823458832770ec80f875895a3ffe2370c0aaa5cfba", "0x17b836256a7de413cdcf93a4c4f8fb6b76975b1efe30aeef0ac12a83b3434c0e", "0x1b234a28dab9149e2cd39bb34f794a85dd125f33383b77841b913128cb86a3fc", "0x158861fd76bd8a58950c0c55d9578c9c6c3ff1aefa88803f32770adb1a6f17a6", "0x0eef809302d3141584285618b0ff2e6a373b1be0db0685be371bb601888aacb4", "0x1acf3ee76f19de157996768dafafe604e185bb23356b6e2592032eb732dba44e", "0x2f4f55f57b771ecc15813526d73b52b2fa1c4f065517b9bbf8c3658040e120bb", "0x0622964ca65a48b30d40a9fd4e8fa757fd737f020459e74a533cea55829072bc", "0x1c8cb349b5eba594e3e96ee041eeb7e096facd421f789bd7df6aead030cfd1eb", "0x1ef519f3b82f280469c1ea7b2551d3a38d3e50ad2b0c52ed0185780e83470697", "0x071f966c5bb87111e1d0f03d17e2885ddf50b7b5dac99f2cf9c87f25a1383354", "0x0768f94a8cc8222f9d2eb36abaeae3b351ad7c8fd075971bc95de6c2422ff2ab", "0x136fb9d089170fcb343dd1f2cf254468118c97ad2c951b6b3fe4933d5a4faa70", "0x14204ad52e17efcc8d6c3b29ce5220a5ea8c6829e2a9d33f646df24212c2ca81", "0x19349a56f15918f1e9c6c587cd23bb3f933af583322dd5c0fa6166cf1cd58c6f", "0x2ffd15400e3d57af1d503755eb97d331814aae9add4764bb7e951816e06b4fd8", "0x001880d406f04352ba0e70d1ea4e55302f239327e1dfbb0fe9fa74d947c04304", "0x2194fd04a6d3e80a04f53235a5f46e8e2225e99c530173cc28fb1577a0ebaa4f", "0x1384ccdde57742281a3d117c0dbc825cb7d1b7e2b57c0dee6521d315d60d8a11", "0x0ab80f679adf8789e9f68615f8e65cade12c9c19e8b096f9d7a58a6e9155afc9", "0x1be3a55706d4814487268bf10196ee80009ac69d26eaa4ae6b8299d3fa27da6b", "0x1f8a7889404464277e3fa7dad1438e5a55db2b53b46f1080ab25b31b538acdd4", "0x263c85c58282f656ea6193f72641aa2cf99ee4f7e47f1bc1bb22c46cefadbaee", "0x01019099267ff1ed724e463573701f4c2d074337b27f474060dc35e72ccd18a1", "0x0429bebc430d4062e38733619b8d3fddd5c26d05b203ba9bcd5fb9058c7545f9", "0x0a03e113f74fc0aee3e546e5937bf8c561c12274fc5008cc63180a26004147df", "0x0688887334f483422f47a9397e45666c9fdc15e508fbd4fa83a5e722be92612a", "0x1cab73177feeca8c863601745b40138d81b0c209334aac58951709278ccf7c3f", "0x0589e112f43c979ab3b8f131a7909a284f3786783a9205271f79813500826f3a", "0x081a1d79b226d02f3edc79d6756b2b78d06b7677fbe7bfd2e1c73c5b055cf6f8", "0x1d126b23da26bd262a0ba45cb83b78ae17efcf1aa5b97478d90843f0a618e923", "0x19d02ccaf1f728c35b88592e300daf8c6cba6eaa7334352eb047885db22f97dd", "0x1e7e21dbf66da47b76b4e025bbd438a654d665eeccff928e29ddd0587bdabdec", "0x169ca09f61d1010465b3d6a04ea6f323ff2126b2c513f473e258a738c34e84a3", "0x1afc1d0db8f4d43d32193344634043bd3cd59ec3c9e867e58f7c83489cf8e1bb", "0x219f8604bfa2f5aebd196ece21fbaa2b5e9d5a62855beda8781afcd668357eef", "0x0db71d9be8548133a2605d713b9f50cc768c1ab2824303b141f4b2f274c6f098", "0x13603e5cd20c12ccf12da4f7d04e9555cda644e5d9abd0f5417f7bb8c6c24544", "0x0035c4356044389e8d8d3d84619243b57ec30cecc3ba8c7ee66d8ed9877c40d3", "0x0ba68c56af0f045fee1b2266f53980c31cee55187faf97b612dcd930cddb452a", "0x23f4759e8cf82af4e51b1a31233dc5277f53aa2422435da2698f1b65a9515787", "0x12012879b9f59dece1ed0e03b17ec94a6ac6f2919157ab97dc1d5fec6fa4f017", "0x1915797a54b7038336310e46e2faa0b48ba3e1a2d42b8b587bab86f80b9594ea", "0x190ed18777ce88aa8ad85e8ec239d8259bf0f51ed8996339759d0453429b4425", "0x24e04081c1519eac3990439d5f86f2967685fe86b8dc37a4444d5fbf2ab701b0", "0x1345cdab47510fdbe7fc389be04256335e387d3f24d2aa7326f59399a10c85fd", "0x119a3ac7803dfbda5564dc8178a79cc1eff78597aca6fd95b3dbbf4952511e7c", "0x197b3596d3b66cadac6cc4d88c2da1de336594ee48a4f2e82ceefd9c81267b49", "0x015740cbf5b80c058f671ab7b14b2e0bf3b15a44dca4d640da40453d0ebccb13", "0x23da644943d6f890a344249f0d499702838011dc6e4535c478efc8a0e7ea1afc", "0x2344f76a1be8f4bba48d9dec02fa88b6eee01d1c48d7e37d7210b5a8e471281e", "0x2ed6f7c7b4188acd5623022b461c2672054ef8f69a05ec58fc8ec7f0a8fc6085", "0x0f5a919e83a103cc62a73502819fa163494d902d7ceadf613d7e0f7b56ae962d", "0x168506fb5ae2170331ee463708ad0124c50dda86c1ab464f13711db7a2f6c4e8", "0x065064ae2c2846b1e8c73942bdb1e2b402eb97a393e18a600bb8edbc8d029af0", "0x1710ff94c079aec5589d7a0487ee074ffa49f880abb14d9dddd2739ee6adde2b", "0x2af3554c9bbe595b39616669ca1984c2c143d16f9ee9ed316229b4f5a0a0103a", "0x22964fc3479b20e70b3e98306ec30bf3d5128056b6fb525e100f684366c3891a", "0x25de0b4cd61c81940d0fea87d9389eb473d469f0415eefd81b56d2048ebacb62", "0x1fd575da1c5352daae237b0e8f76723d44a3413b49e016ea12634876310edb38", "0x0533b56af329976350645c7cb7fa29c1e0c3b5d880e25f5a52774d056e9658ac", "0x167d885c645bd9cfb4a2d63d57268000b73d88398616fbdbe56f231b8b2bc825", "0x0cc2f243dd60cd41e04b2430c96abe40f21e3fd109e7a1946131880516bf86f8", "0x0341715bcd52b75e84c60edd47292611c4703f8f81abb45f58f86ff7897eee12", "0x1ccc6d8301ac14bcb7d8cb9feec228f9c2eebdef5778fb88e69571374f2c2481", "0x26d54cfcd51f1d76c8a6f67f37dfe4cb5365e33017fb4cd4d5aadfea672b3b88", "0x2445313440a20b29650a00e2efa7432ecccd218a8b111a67e0ec28c559be72c3", "0x08287cd7099b718a473e3a2dbff7354e6f56a54f860d1533b28a0c03407558b7", "0x26c24628356a67c0a450cf53f60453defa580ffbec5295dac6f26d87ca67a71d", "0x1d1cf3eea9d6f23c1722071241367ee8b05560a7af1a825fe788587692091aa4", "0x29a6cc340dc509321a8db99a1e4a6f92ed22518718e050946a211b9b0b035091", "0x22b0472d8d18e2207c7faa819e646aaffec0283c06cccb04554899c28dddb385", "0x0aca637d3f71393f5cb5d01e083778f519b821ef37e1335d65d14b2fad555568", "0x0cc06cdda9bbac58a1e162ef5c910ed9fa9861163b5bff627765b6de8e1e9719", "0x21c547728fc964c17b65a60176da2a1a8292d0d503dc16a5c60513bf88863c44", "0x08512df52d8a94319bcc6daa9f814853e4bf58f57d16f57997eb61d6a19bffbf", "0x25c0d9feb0c02a64b753bca57cc68248a5dec4149be2b759bddb53b6f7593c39", "0x2352d3944fa61a2c4ed5c84ec318fbbae05eb102075612c26b0f38670e69995e", "0x24bb393dedb3f8114acdc77cda2e74a97ff8cf89d751fbfcd9f52a4287441763", "0x033ba091bc665e268b65a8f2278ab3113f8c4ae9b6a0baccb4b840969a3b4f3b", "0x21cb4b445e8a579c73436f6e08b6b2487ad0f5c4706f0ddc9545fa62ea0224b3", "0x04a925ae34260dfdeb17f5c793e4b672b8f5c0da69f16bfb29403926e8d7d50d", "0x2df42667610a6bc6602aba26746266877079dc345a79f6d673d64fb27d7ff499", "0x179934386a6423cdb3a10950fb65d1c7776812ee19c813f5a67202bdf36c9807", "0x0c0f3cc0643c9053e7e87a1ed590dea8a70e6d5ebd907543c9561da4ee9fcf63", "0x051a858defc040eaf0847bc5714fca3d63775709d5486a995e93336184fe0aa8", "0x10a0da93f5e24e02e1da3b703eece97fd3a08f43a0476cfefd70372d6274fa47", "0x2d7beb4067840b65456935fe808f57cc971b6fefb7e09ec91336103e2fb072b3", "0x13f1bbb6a850cbb536a0197c016a46723d7387e991b67d58a8065c3e4dc18c55", "0x041fd980971d4897e5e3f42f4342db10e517f639855fbaf21c0b9590b23bd8d8", "0x09636927f5b349d290067029f74050c9750ef572691424a8a0a01663a45c5031", "0x2af36e704001f6023acbe0757637f6cb0facba8e0515b0df5eb317a1dd0e65bf", "0x2f97558fe6f6004109ac4658609a6d2cd1b22e5dc099a2ea132e88087e72cca0", "0x23cc4c0f96eb9152447440a55e3a3d0be1abc83834d9fe0873fc9d714b0e26d0", "0x2a5b6bd888a8a36578d8625f5b77e527ea06db8dc1b54796d80fb1c7db293b90", "0x27220be37f223c82ef3157df596b7c3f21bcc03de8c4ab8d7f1d5baaaf638f0c", "0x09b92d05c05908c5d9aaf4e8d234481f9684066bec0f478a6f7f41e4738f94c2", "0x103686d84f6209572cdb829b7aa67962be01752899ddb717831df659c2e2f60b", "0x23b62723d58ed5c2c6ba818383acd3964cf39243288d591a4ba0803b15b48735", "0x18870f436ccb65a0e1dc5e6837248474ae52fd226b179221bbfe73f747eae139", "0x028691d2f0c336148b5b5f1c5dc06b422d34071705f9a33faf2613c907f3325d", "0x1191fc63b79d85edaca6a27d88e92d40d897cc0ad052136e60b5bd0a8e560282", "0x16680b82f6e755d8b419d1e303203457b5470d8dfa214d023579cb6c1d09a3b6", "0x180fd65f8c737e7e07fbd0e7646c1541c8c34f0bd8a1e1623a3a0e383ca42237", "0x06c7ac54dd40d3891a14b48e742a06e587cbdfb65dff4a955da9c71d152241b2", "0x2c65c95a72571373a6ab7a18b7f4392c1aef296eb581541d876bab6c3bfe6daf", "0x0d9c0008a4f07214c24fd0e733864d7c57f4e13c040c31923bde3e9288552bc7", "0x12d3a04f3439bf85b6525221a3f314a2663b9b84ee290e481169dab2b0a48d0e", "0x2c75ef5fcee292d05dee7a7ea27eebe87bedfe6582644dba0fb5118cfdf255eb", "0x17c01330bb570b1ca9970d5872c1aaab8cda24b330e94a2c95d12549168283e3", "0x035fa265ba78efec1b389d50f1880191c35bd402977c50d252892c70ff3a66f9", "0x146a648e47158802e1fd7b6e211561de3ce10df63473c254ed2e3994796f3b28", "0x05c2f2d7318f91f0398ab541c72b9abe4cd4810598bd0afb230fcdca28f0dc9c", "0x1a14bac926bc804faab0ad62fa213583872294ff31da7306e8a092eb070acd47", "0x0883cd6e7dbe3bb29320db1da117618ff9f761713b7b07814f4bbad71610d89d", "0x06f98d2bbeb45ad82e7624bc3e387a1b0d818fcc94ce9d96f4e73e80caa23e55", "0x0c2ec98dc0ee676d862cc05b09e7d74389f6844ef462de336f6a8b693e568d96", "0x255191cfa833cd6a862ac869e520575e8da70da30ec970657c38781a7b002641", "0x2636c3de1dd779e5577de214b3e6c6351711e9cc1348dbc553be1c8d68b8b067", "0x06437037937218fcf4e73ce9b338baca0c3fe948c398cf9fcba25ac02e652956", "0x1008550284340174d1e47ac5a027793311c42867e3b718b24a4789acfb7d6dc9", "0x152b99159e87dd6e681aaef38bf7295419bb87db5f9fb0cbf37320ec726d448e", "0x0d382ade9b281a2e726cb96db54d26f433258818753b88e266280f74d8dca806", "0x0f544e2459e6a636d8da23834e317ea9ade7b2a07c4ab94c368da356cd884e6d", "0x2a6122af7c1cf2946b33735d2a9f5020cc5dd8669529e77d0069db364ccb08ca", "0x2bd710638fa09fa70cb0aab6bcde56cacaeb11aa9bec688c033ef7830dd0cd07", "0x17e172b03f25c98e9680cd0bbacf1933a942d834d945fb9880fae95d2594939e", "0x0759acc9cb975aefb18a833ff4c84df8346ef63c4eb67e220b11b0f5350c6331", "0x229f41e153a4409fa2c0c7c75811813d8a71930da6c8b1b8827aa648bdcea63c", "0x0d3153d6d1440aa8e8dc0bf1058667a18e5931afe24fa90ac1911fe322d3d9f7", "0x198a6f179f92ba427490fb90b8cf3455f69f02b756e98eb07d4601a52c77a33c", "0x29c2be07e30d93dd927e80aa49c44df0dbb5f0506e96676d2d4b1a91570bc7e4", "0x13e75b095ad21ac9d107b2a7f1e62088974240549c0bb4e7d83ce4630cdabdcd", "0x186d1e26c4e415c8aab305f162f00d8a7754cc1a7a4a5f2f318b7437465ca869", "0x24462e17b2b3ff3912d0e41f1750cff169806bc158648da822e1bc9f6212886c", "0x04c8ff3b9a174fc06d3b3302ff57c510ad38580c35f4e3b5af79e24055662bc2", "0x174a26f79f26fa7c4c2682cec14da70aed49fe7c75770f87a52b5a672413289f", "0x1794c80fa206e99862d7e1a753d7754f6f1779581a85201fd46a5bfb7baa952f", "0x025b4632d29770667d09f79c33bb2a8a5af66a449d6d39f6fdbe63c976e1ca11", "0x11adf7def96c53dbdffd06a85d63145f0dd2395063e8d332be42ea99ca368547", "0x01b928b7f293beab032350dd3ea4c4b48c4a04fdff082b4f542e094d973a399b", "0x281187bf98a4c5a6bf90203092c6aecb9fc2e561974f79f7481aa6d2991832ba", "0x247168cd8fc0ee2cc9fea561bc4e01ad3ea57874756f9d9d734a7fbc45c000b9", "0x23097d74125e04278e5fd0e14f52ee1936b901c2de64a05b2b80991a1f3f19e8", "0x2cafdfff6422239399753a96110feaa8a156264bbf59013f1d8195a30838e649", "0x1a5820280d1cc66e2cbb99320a29d80e7844576377636d8cc22a5b89838b5e81", "0x0439af191c824775b86b6ae9cdded69e0ac524d2d7953bce65dc54e116546a47", "0x059216dce06bd797a98709ad2b90c15d1f9f78177f0ad66d50009725ed6864b3", "0x17453fd8ce97c60079f3d00aa29be8b9b90cbcc9a2161b7cef52c599c6286cd2", "0x023a1ac8f3a07c86e93184c5f082be51a98f706b6d1467dce344bfe266397ec7", "0x13b7bfd3ad519190d49beb27b00df30991fad40a694ef0df12e89d617263eb98", "0x03d37546147228b5faf95ba080b2b40226a58810463208b9b39566f073163dfd", "0x05f3bcfb8ddc917835430a22e50cfb51396f15242a5fd0c7e3ac1538004d19ee", "0x0b75558f92567fc1ec54e9954a33efafbf51866a5894a76552d1349523cf65ff", "0x09415183df1031dad23297c334ef7a255819b7d74365be4f353a88b427d90697", "0x2dc2c7f19b5024315cf5b0c76546f9432e068efb50dd37c395fb8744771c0e34", "0x115a5ac148ff0c29901220bf5b9cbd3d5de9a902c8c6efd02f7a92cb1d4eda5d", "0x1ec78942eb0fed168fbe55b730675f3ddfcab69c122d9f6ca22f7cfa72280ba2", "0x24bc460c697257bb30552b45ad37313987739e25079c2842dcdf2f974f9bb686", "0x278a2b29bde54b5e1d0f87216de48f51d4dfa284555ebd7fe7f3dddc234d1a5b", "0x10f5c4b02af508777c4cd3cd0c6c11f4d679fb3b0d7a52698593bf50cf203cb4", "0x2d695324f885445840f526b71e519f295cfb0a6e4f24145f952d8baf8572f573", "0x18113527536434b631fb3777ac733ab250ddbe971da50f13fa6cf26c9e05bd1e", "0x040730e3684e391d5a166b5487ef2fa42a9efc154629ce413c989efe2c878592", "0x1ebb21dae6af4dc7d80bd2bb938982c215ca124b15e0797883af2a80adec4a12", "0x0c68022eb63cb3a73859b577b59b17e6f836176c595c6a1fda124a05ecefc10e", "0x088f4a9af5d668475bbaa35610bfac5790e103ef53b9a1b3abdbbe293e56f5ae", "0x1325e2e84e281caae87f905df719eb665173fc82cfce43743eb3f0d1fccc98b4", "0x2f3ea3a22a56db970cbbedaafe9d85f14f02456889b64ab7124b2479978ed3ee", "0x055564b7831acfd8f46df96ef819622a4462bfe8281b05e95557598167ee9f30", "0x08c29e9a22ec7f02449273a35136949b73de66834e3f015f4689043aab341015", "0x212a65492c6e2992484160e5e2f6fe8fec7581256613b05b8cd4237ea596dda3", "0x20e629bb5b6c1ef07efa2fc1f8f63b12aa92bfb42e38e48335db3adf267416fc", "0x04086fd6c2128b11a5aa58fa2a8b25ed5e57c5b6a3df6534839a817299ce7713", "0x065245cf59148ef3cf923d2866e6f1f61ea54e6a0e650b6ab8c9bf94dcf1e9a3", "0x0b6c1b1badc00e60dc7e286bf1b76198e61a063cfdc2630f7565064af179fa54", "0x023a3829defce44de2819dbeddcd9bd17cc1cc24d5efd94345352d153c898097", "0x1b51d50b9f2a1ce039e1bf33a4395f693e12cba9aa5ceaf5fc0c6265ea446bdf", "0x0ada2b8bf069b0a8622be85bec5cc1502475bcc995a5687023ea33d3a949382d", "0x0832620a355e131a479d163bd702e2e96aab3688f818b54ad378764ae1a2d3cc", "0x01dd7cf51102ea8b1048d3dfca649308d59f65f4f370be00726cf5c8e3a72fc5", "0x22cf9eadd9580935f02cd8a788978c53bb4cd780b262c7aa0beb67def5d1975e", "0x17e3b5605516db11b62512348f8e7f206c2e71fd57a7bd9fe96832af6bf7215b", "0x1aad1cbdd185bc5a2bbdceef570edb986520eb92bce2b265ab8864c51ac489d3", "0x28d5eced9d9e5515d0c29b800e333bf66662a8b5b9839856e4094222dfb4e3d3", "0x15660d8c936e1eeeedb10437c4cae544dbc1b9be0fdd639feffd0246a313e886", "0x1f5e8f3f715cba0dba6f1271e1cc8940b37305246fea62aa7e16c301c89fe3e6", "0x03bc3a131bcea5b2f4ddb5cd58f71a92c54973da67f3b6aeeb9c2b2b1ed32628", "0x10989c21815e815e3695b1e86eac0ad5e68468f37066142d042d951afa013609", "0x13a14796be2c62bfcef389accb50952a46c7569e009201965f13223a77feff88", "0x0f307148b769d5a3aa0d70b54514d1de5098e070dab986c02cd91005c37a9385", "0x1e720c542b831a978860eca880ad522210565a065884b82fdd9abaed3d224b99", "0x136981fc4f37a5ddbd57a28438eb003ca7ff0109b349c2b3114447bfe6420d5f", "0x23c0f4dca797a7ffeed6185b6270045ae960f80e1ffbded2349f7857defcc5e6", "0x0cadec3532eef6e435656436bdf7ec56853edf2ecc1dcab33e585d7f9f33f215", "0x1d3fd0cddca96749c0e76b1094747f66e822bb07a1a011506d198eb80b831421", "0x0fa4bf5751e05cb1879a7e9d1be18c0cfb070ae2e54365037bf152b45ac085ef", "0x0801c4500a511b5f9b6f0bcb6deb2d0898a3ee9d9727cf027bb17bced7992263", "0x13b257c8b7194f0ccfcd859b03f7451cde8314798115ac1de5981ccbeea58e56", "0x0c8e8cb135dd381120087376a03c386e67871000da2b1bc02be951330f7a5670", "0x165762ac8bae66f3f3807dd925a4334e870a9b885628cb7bc0b8b7cb941c070f", "0x042543556c325a58e3ac753f4a5aec40d3c73926e9e3b0a62b92a5b920c47cc0", "0x10884137e86600bdf06f81d79045eac6c34f58ad687b799c849d2d12afb2b005", "0x243aa9a7d3478eb73fc5c1107b39becd9808c6e5e45533a3b267cea612a3bc10", "0x0d56cd4f582b5719a3301be7873142cdbdbac3901c33c71f490a29f198cf837f", "0x01bfb79eb37264d67c12bc4b214fd728d6adf84d02a08165ecc982868612e504", "0x082b38037b96a47f54fea54f4f851430f7c716766cb58c14f3db8ee1daa707b3", "0x1d92ef0b67d46a991de603c82917a32b7b0911408f8c8ab283bd36fc1c62ba78", "0x1e85bcc91932f9ca07b35984a41c4bfdca243a151441e1b758c5a4c0ae6ba181", "0x25e30f6d84da989e0d4d0db84cf57739ed9d1f354c8e3aafcc01b47802c57a34", "0x11ee0dd308c65edc88ce2ad2edeca29b6600ffaf309fc6c5e3a3d6318ca98c83", "0x18f3ca75188fff5274224cde36c2d85211b094c20f53d9e3a4351896e3d1a1c0", "0x05b6b21c1f708032911b6e0dc4e57d1e8edcbdd144102b28c8617e53b11e4e7b", "0x00eb79b07bcbdf2d2258177bfd15ba43bc56d9362e49f13d002394f6c635f20f", "0x1d963571ce7313a17110b17d64d45001b36d20b4869ffcee44ee578d23d6488d", "0x28c45144eadce345f87378b432bcf30e9fdb40e2ffcf61f5b918e3ad42ccf153", "0x2776530993a11fb7e5222ee0df505be5e57cdbb6352ff7853e668007714bd718", "0x210a7004456a4c7e56642e7940230842fd54b7fbdb8c337cb1493561e778fe8f", "0x0cc1cb51986ab1a0f628c12d7c6656a9d8495db91d90e5dae8f0dd264d9f19ba", "0x13d1e0cbd9e0f421626c8db09dd24df92c270688e702495231d057c7676fb1dd", "0x1c2b5ad45cf4181611eda67060a0490d8d6ae3cd1b10a1570b00bf0bd3a26e09", "0x25edc11d3b5e6e968ca9a27c340cf9350744d28920f5762687d2d31dfae14235", "0x230c8e7ac3ff2b39daeba2788119cd58a3a90a9c24c3ed821eafd08383f389a0", "0x2937cb33c930ac4be787b6e890e67f8a08cc92c151f7e673ffbcc27b25cd0b1f", "0x28a3ac677b6f19ace69e3d06049557fde2a92476c199e1c819c907ce456812e5", "0x2dec341eed7524a26b7b91bab300323347038c01206e0f780349e5c2ca247076", "0x0e83c9f68c5feb4210d633821cc840bd1fbcbed87effde9f23d4403d9b8b03e5", "0x112fb21185598e785bff0f0f7e4821289232403fb2b31b48e7ec9022df2b7971", "0x1faa621f0c039fdc8024cbddf4ca817581c6e3f26bde278b13c34cd651bd8782", "0x04e3d26adfcb4ef7cc322ee557878606ea5b537fa1f880445c647e8d12c98c91", "0x1a70c2015bf1c5dfa637e8debf8f759e309f46c37e535f0c64486995ea5b9061", "0x228f60de5b5f3ae8a52bcedecf7b3830d5b6879fed7eed95231c674c016c7fea", "0x0e4ddc512fdf839ac48b7ddb03e765e9cf5e320745572a5d4f70097c1074406a", "0x1f8e572e2e0b48f9b6bdc474210a1c8df655ca5e19f7d13b5a89a185f3a3cea1", "0x03a183213151c33d6c58b6631cafa0c05300f75deb9ff971fafd35441f5cac78", "0x1b7da980828048a7498cdd2b49ec08be3bad7d4327c9754b5e3fd674e02c8286", "0x285dd9c3bde7c361a16cbf14bfb0b5a78d8f4ce4433d41f13a372e92c35e21b5", "0x06f952d66d60cd18949ec08a5c203707ff452e3df32d50a4e221e72a793cba06", "0x2f6843da088f675ea773a0377ecfcee33c9601ada5b8256b49f2c2259ab8abdf", "0x1bee4d9e168ac606a73d79a990c590900012aaff03291747553781384c28d800", "0x0c8c85c0320d6911ab65a50deb2b2825d3e33921a46522e54ccb6b806e55f192", "0x119ffc6ee4a000ec8b6bd175bc99718dab6508e999578d85f57fe22946120d55", "0x300d0e8681f117fb491827fa12101206254ecfe5a70b08716d1950b6635cff06", "0x04f424c26471906086dad2de5452b3148a9480a644e69b0d2c6a8e3572070181", "0x2aeea0843be6d263700672c426e9820c16f096fdeadef7beb1c423c04eddde55", "0x270aa0ae5c5a5ddf685bc432b47c996eead9eb1ed89a25bed2bb358cb4edb6f4", "0x0ba4f42fa43b005e31fe2fbf27ae1df017ff6d11f27cf952436383ac901bd17f", "0x189ac9f58d25991d10ca6233b1ad8cc583cc1c2479967904a801f92c4db08818", "0x0ac7c203b5b06e4b6f56de45fbd9e502d79662b3ef4c122f73f7a3383fb52af5", "0x2ed482bccb4a7c8a75dfd31a443b74d1e4ef522a250660344c21a8320a478cfe", "0x0f4eadae92ccf071dcdb7d67241db82286a0b53436225d8d6d06c3094d032be8", "0x2f3ee4a76715b3bc3feb74e528948ff152d0b69cae7aaa30ed3d254ba8931a73", "0x0a666ccbfa6ed09c57f58ee2963407236b8ebe1935729e811689b398a9dd7b40", "0x2abf8b9e553379c8bf68fbc67a67dee5a22df97393673145211d0fe9f5efca24", "0x1e0e4a52a2fe011eafaace83d54b92e6d857634b4510101958e7d80686ee9274", "0x13ee73f6525acc520a0987c161e5195723b4785d7ba6a031c8357fd55ea7540f", "0x094ff2c24cfd2859ef66c4f62696fcdc7edb93ab92127ca6227a6c029de19e11", "0x026fdd4092be37092fa13e02d03b3c93dabb7fb7bbacf3129344061909556cc7", "0x060cb0ebf20906790098d260ed00a75704e88e33386f43e272154888d56fefe6", "0x0ab0fa8ccd280804c537d2e09aec4c1306b1a7b479c6623e9128364d9297f7dd", "0x13dd22e61ff5e9e3387f90488037e06c48cf9ec7b8fc40b2f78e831e977f3d13", "0x24c62af21d61cc277ed3eecb6b53da40f824a6bc8619f830a5a5bf86846c1d41", "0x2a025c7888cb0ec6a2338a4be571a7c67bdf7f7dcf5c0775b785a2c5ea3a0c60", "0x035c1ff077b016b8069c044a2bf5cc09803e94ee0110c17a5bbe594cbb270e14", "0x2f296505bf1353b23a672791a4ee325a28a9e1b21ddb02278e48b7c8fd354d18", "0x13b16c3cc0ca470c75bc2ad7bfd6cbf0b669c762bf0411010099c1162e26a9a7", "0x2d3c900ba9a9d5494fced5d70e8a40acb68f47a0bd2521f3813ef831f690f5af", "0x0ce9e5f31feb0a8d20eb1aba890083cc3092738bfc196e10db8cc34b31f1af2d", "0x0da413bc6c64a52d068bbc66aa2517c323ce2e00ec365235cabb2235c32c93d1", "0x1897ae1a23df0f99f8c1cd4d480958b959d327816e6a79d83f64f11f29f9a26e", "0x0d116dfe5362123684539d6841825a764c053dee6db6b2bb5d35966760a232d0", "0x21e25952e98f9615b696b4cdc5403cd7cc432835a8e78ac727a64674b34e4314", "0x1a3dad57e7ae205a48f3a024984c4da0501b544afc63aea283022642d3b74528", "0x19bd3efa0a6092951ee71b313c1b6cd2b016f1decb5b51d8dc14927ec770f186", "0x266efc42a30cd04d6778f50a3fbd5c51dbcfcefb6eb400f85a7a278ae184e381", "0x1c8d90d85ef64bf4bedde609957ff4dd007aa05eb2a2d04e07b03013d7c90b6a", "0x02ac06d4cdbd30847a9fce14472ae320e1f36252687227e082f213b219e72703", "0x0522f2c9b0876d27388b8b52a51002e5fe0669f33da07014dbb8c0a8e29e85cf", "0x26bf744624ce575461c466270c3c7cb09ef5c0b8342d865985ff22d17b47239b", "0x2375100f868f06ec614e0ded6d99f714a1b3159f810493c846eec25cc2df2854", "0x0bf461146b46b3e73e0edd4936989f404cea1f9d9a058297b94cdeac7758325c", "0x0e98376ed641425e2716faefd8ed7544b173c5a3a66936209e4af629ae6771c4", "0x2f9c4d96056a1391d89f28720a20d0a1e7cb59a5c93a87dfe6069b5f4eca2710", "0x192f200bf3b555bbac797819bb21b990b729d65a4d28a27d6d3f00f1a02aa23a", "0x2bf8984b5626accf10b7667f4fdccdb7cb605a0ae34d6d204ac1cbc80cb49126", "0x0bca21c12464247244b2a19fd30fed65f8e3abbf8335b49205c1fcc1f6aac1aa", "0x14078d4ee11f463471a49516c3c85f9a266f8c40f6d7b1f86b1d1935b09f15f8", "0x0bb8a04ecf9f98e1697d330e922d0c8abde0000b50b5aa57c5800d52df4de011", "0x21526121c05e09a0abd2ca6efe5b42ebf7e9115382221caaae628a334917b035", "0x00f6a443b0e7ebb0bf777511512f66c5e5bbe044c9665d96109018d9729c84f4", "0x10092751e94fb6b5e49bea158a014bd99078542458af14ba4cbd9258b8acd236", "0x029389903d0d3c29a173ddf452a66b4abd36efc642cb0b57d8f10819d5c0f5f4", "0x2b6d20e6cc7ca916f542668724179d8d0ff0741c3d51f74545e2139112177376", "0x2900b4277fb3a0ff83b4c58fac79a8861e305d5eb313f2cf57dbb05939036558", "0x10afdc0066dda9b64bdd43b86d0ed62b9b3938007cc50f5699250240cd2ee1a9", "0x301ed1566f5220e17fbd4083a57bf42c12c15a6647ae8103edca272fbd5f8f11", "0x27f1833229c3a5998686903e824bb3e3e10bc969f1342ab0d02de635fddaff11", "0x0c4ef35ff9f906d0bea489d201c210c53abbd47a151a9e4efbdb922029fb64af", "0x0ba5ab9246af723bff457ab8228be06484af3e3545dbb4c932ca49115f957d27", "0x21c572bd4264d821c5e2aef993006499c88b3245cee9593f02c250149ae87ac0", "0x04d1cc4795008719326f8106c9ce9a4b0dde4f4de01d2429a23511b1fd0fd171", "0x0a379f7d6eedca7c4f07bb5df2d8ea0dd87f1eefe2ac2271370a7f3be27065cf", "0x28daef7d37a43f2ba44065f2213912eab6c8c60e3f7560fca990be0ff4639720", "0x2906e8996458504f2c044f053c4ad24d35b0e0ed373b27e02e5235a3d34f65c3", "0x260738b3d0a746fb0612dca6db53bb968c552213b2f9a134df341baf3e1379c3", "0x05f177ae8c6eec8b9712cfa042776690e924bf422430011ef27af82df0abb237", "0x26811027f445e86c192e8ae371d2e83fb73561c8cfd10bbf5b29a77f56b1d95f", "0x12def5ee59c1b4a96b50ab3de36175640cb70363fef89995f34926ee84be514f", "0x069b58a6aa41994a11cc7dd3a428f6c4ce621b5b06793f5e95b4034e2ef7e9bb", "0x0dbb162fce1812bf2a16aeb6aac7f1737f2d27660ca4cdf6e79121fbfbb6c5e6", "0x287ba84aa5087d8cc9f89450f1fe391cc3a84f28a24b261cd1dcdab039a309f8", "0x1e878a1f2fc77cbe232aea7683d46d8996debb9cb06af003849fd099e9c504e9", "0x1c8d1ef246dd75f42de13c5bfe069c08d6af9943cd7f2336f31c896456cba2f1", "0x074f1a678cb029488356dcb477a88303d0ded5f2d5ece54769f15abc1994538c", "0x2766e558172ac70b1f3dd85f4c80517ba6e18556bf51d20f687b669e7815d47d", "0x20636353e29facebaee5f04ede42fc3ead0d07727ede7a80af1c505c6ff5d534", "0x11ed975aa3d3f9bac1e0bab123041671f8db695fe07601fe5a71e0fcca916b46", "0x18100160418fd858f3e4fe8d5d6b80e2ef376618bfe5a556f24bc3247099c441", "0x2abca18d9b3f2522e21ee57a1c6634ec12774d041e65ef8430224cf31f960f14", "0x16625241533c582b9b57f6e0963dfbba9a7026139daab3174fbe71b0d9522c8d", "0x1bd3cf1bd3124abaa627850ff77a6778e8d82d07ca24655d94c5a27b57c780b7", "0x084e7ae8a515bbe6fd8370e7c13e7d09835c3749ed21c2842e7c46b4bfad4e38", "0x0105b64fdb0f02988732b58e06db800b2df09a71a5b5a165ad2011ebf48a6447", "0x043ed436d6b9af567aac7e24206137faa086d188e8444cabd5234983904bcef1", "0x2451cb7a5dec1f93fd2b3f8b97c4b1dd2fce7c87d0a92c9f699bc550032a0a7b", "0x18f37c624e96ef9c494d2f016bb1ed956ef951f3b57420a46c7160bdfaa576c1", "0x1bf84d6d70c748ccd981c21b19d555ce7c3841f34220c10797af76f62e258980", "0x0bf9b051f2021f38a294eadfd0811f05c08852720bdc749e1f9a62720f62719a", "0x19f1fd2199e3aac88c7ccd7dd858d158c2ef10e8236d2cd66a70a3f0d187988a", "0x1af9d63ace6db7a8ae20a04b776fa39de34b795394231214317f036e5954eea4", "0x1b3a2d08d1c3763b7678b9d9de1fee10cda80937fd7d74f27d6e550386f5443e"], + ["0x0752af3c6fdccaf3868276685f0a69b9749e1706a82917b64ec2ef847f804559", "0x069503d417e25f4568c7858ba8334301c0fa19c1b348bc7e18a4c1ace1d15418", "0x25c1b121f33f4cf7b308ec4630f27b603d22aa81ca3595e801c5fa7d9770a096", "0x23d6b55145bdb32827c1456af4d7be4c2d213e825c1d2f0c9ff99b2273751f6e", "0x1b357bce3ef3f2b76afc2b5804805adb14cf6bf37fe2357c79aa7d6b32acaeca", "0x28ec5ac0881c1e6426ba499409894a6f3c276fe5689f2c35c9027e80944877d9", "0x2c9862524ac8a07b47d211c9c504c8b0bd398d028acf690e4b8ed4005dd06eed", "0x1f6e6f0ac4aeb7a52343f30418078b40644cd43e290da0baee92891c4c065ac8", "0x03db3517e233f8a76d21b2fb23c85fa7cacc577769edea09aae39407b9af2fdd", "0x0fc333dca4183dab479c5962eb05ee4b79a8ac6e0cce9e9b0a2142247bfd0877", "0x1eed281978a8395c04289b86197673b0f2b65e1a135264527e250a5cdf99aca4", "0x2568bdf6511034343fb5d5d021e052d3080954fee357dca36fa5d78f33b5be3f", "0x1dafade374e63251deca970591da4a285a63d11cfe64661fadd9a001dff82330", "0x0af25c781abf56fa4cd6833580e97c7a60eaa97f1dc32b622e895df3a6915b39", "0x13501451cb7d3e0cf3cb57741fbe8dd59757c9367fcc48fa11deb135427c5c1c", "0x197045fcdcf15bcdb247d8fbf6c85c80f2d065f923108559a1730d71c73e56ce", "0x1a390d7281375fac249b9855f8c67a275e8ff8a0a821d1b305c4cdb1313c8661", "0x17f0706f7e12fb022d15f94297c7b45947755e5e84c7b9957659be1de64b737c", "0x0a8f5f03f19d49799b6fba650c06e4aef251ffc75243a8d7aee8924d563f7e49", "0x24c9e6c35f4f819f5bc1ef26576e16d2c7c7206a0598044acf0c18fc5042f0e2", "0x002405ca70d51550dc14abfee18e3823b9e979072330d547133a14b25e461fd5", "0x1eab4cd56f1474b270d502945621d93e44663caf8f1d31d86b156e107fef38cb", "0x066b9750f73f4561ede55939407e74b497d4deef598b873c4b4a1f32ae425d00", "0x1ee3dfa596f5d87030a6c9d27d61dd175b271179408235f13bb3f84ea28e7a42", "0x1ea94b9ac6fc1bde29d5893fdcb660ed61ff7b2c65b638a4046eab217c02aae3", "0x131388351f0796d4753ce564e754591cb1bae02a2dd54878281ac6e7a3c069cd", "0x1a45a017fdbe53619a29d8d31f27e408f64be10bf05ce16c90af3d1f13886a2d", "0x1b4a0d68e54312b9fa67550c5c0ff0d88fe57822dddf9d58d9d2215057aa94af", "0x1d45d369ec0399905bb029dd9fe0b97a5ced1d29c7b5a39da358ad226691dbb0", "0x26154c9c51df8059745bb2d97d9a9b8cc8f3d3d813dc4af414adce1d69920e8f", "0x2b748ad3da43c5cb9412cc64313c8d4711251a7080ec5b59206e7ac8c701730e", "0x17a5468fdb1e5fdacd9c9fd0a7f5fb756e05f2f2fb4104b2cb48d830fed13758", "0x2697a5e22542123f0923b86b1529a5405ef809de03ee4129b2baee5cb3bd94e6", "0x09b07ad43370fc4bf9ade610e1addd38d9d962e84d8ddb109efdba69916dd489", "0x069c194b5b9f2301bc48d6363c8e5afa4a75ca2f8a009e15ad4ca11a17c81a1e", "0x1a1974ad418cb372d555ec9af0f348b9729cdee681eb0e4479b90bb720f542c9", "0x18a9d8d34cf2c633138a9eb9eb29820c85b7098895826ecdf2e1bf040dcf0287", "0x2e0554839dd70a4b9998fd915327fae14685eca623d662585186d2f124ba8bb0", "0x1e6d0216c8b678bd9e890ccd72d23bc267948ad87fab25aea6257f8cb7012803", "0x0920932a6c405b1ee871ae173949731e6169a24442d8f8c9ed79ccc7a24a495d", "0x142c42de6abfff58054f6a4bda8eba5f7f10cf39fbeafb8d39aef30e884fa3b8", "0x1418edd88e64d3ddad03f33ca0936172444bb0712d646a8bce67b2e451ee0d81", "0x05c5dcf2bd5e04ea65654fb473c4d4692e9958a5999abd7e5cdd706cb7e082b1", "0x114464311fdfa11eec166d202aeefc601e4d16959ec936a9e8f1b2f97fd35ddf", "0x21b713b0fdb238f3b053f6d596caf07223b2a9d1fcca758321a1d9175c327ef5", "0x15ef67cae5838a50bc671a5ea78e87b48bc98e3cd7bf76d5fa033093ddc97581", "0x0bf88917cb7c570f68b39429d8fee0fcfe583306a6ca69338c349026fe66bfe9", "0x1881f0129a64b7f861085f6b3669dcef57e568d63497982780770b4bc3b437f9", "0x2055eb732a72d37cada83f04ef741785368d648d09cb50142575430a110e89ce", "0x19b848c33b3876bb168846d13897cde6b0b9e2b29954395b39946a4f5f26d003", "0x01e19797232964cd5f26ae8a2e04bd7b3dc1bda25b541f3d4a059b48fc952da6", "0x028b8dd78e8712e172486a4b278ac8e166b1996552c74bd2fa4bfbcba3913457", "0x1fb1cff73196d134c30359da15a530b1a5741aa0e05788a9d4fb2032aff0d586", "0x23bd3301f59bd655225f85c42a9466bcd7c64aa93637ee27aefecdf288326039", "0x0e2adaeb2ac7d6944e287dc7c833015313d3f2beaba25ea4c1dc6f0e3fbc8e34", "0x2f5d08548ef73d65c2853178cbcbc8a70c48003c0d1386db7288260d29a52d0a", "0x2f55c0e96de74a61fc974df0da85b11ac544b5c8544ae59ad76cbc03889e79b4", "0x18885f739a9c3dfeed39ceb7c8eef77fd635ad52e3294d3e126a92a64c5a4543", "0x1267cace9cec3c1a96fbda5f20df309df88f9edf5684a05bfcacb11167983082", "0x2a45c0484448da31b253b632f39c3d4f6c6af8e3e399ddd393b820cdec66f902", "0x2260279c332583a36011973aa7626d4e81d6382967868a9643a76e53a2b25316", "0x28ec82446ae8bb21783f54cd4daf07e279bc0ead04d7a313769f662c8e74a0eb", "0x16e13570deffb3bebe118958b2d86470578cb112969bc6eef3a1321befdac9b0", "0x2288e83beb79459807cb77408c9bbdbdd077e620279986f4e2f0b3e5facaabd5", "0x2db5b06f1102b72ce49946084d75f2109ad970785a8329de8e225a410e243389", "0x2fce39a19ea115f3a917041fdb267c1b5103b5887e5d63c48eedfdc533699758", "0x2c65ef055b28fb41707c324a36a894c6ad9f862fd1f97da54459c5db0bda55af", "0x29e63a24c91235dc00a6770b9e572358c18a9063a34066f8b6f56683cff48ffe", "0x054211c56cf9cdee64b7daa7677fe9f235e2b5c99c5d8b55de20d9aa612c72c3", "0x108e8e83433f7cb1728723837ede94d073032ab66e2e0fb6db9787b39559d73b", "0x0ff9bfb41914e199a553e070eed9438fff033cd31476589149a9e60d5058114e", "0x06913bc2e37230d4b6f56b44697d6f80418d7c11a1d20d8484e95b067f935bf0", "0x300d3b773b9a41ef818fdd12202f499d5dbde395388a81c5ce3bc3cc8b488099", "0x29f9b289721fe3001937f6c487bb30e342b344c71ddd0f957d02d9295fabe594", "0x14de0dbb50a0aafffb3994762d1496cf51449350b5dfceb0650667f7db7f33fc", "0x045cf1d37629dee9289fcbe4823519deb857ef66cb39cc6630a3ac6157e9e0ed", "0x1e7de46fdd23c6aeb94addf6cb999856322d3ad6d5803cef88b6693ed13590a0", "0x2c033fdc57232e685abe9aeb18a5950e59f666598a0a9032afcf58aea772939b", "0x117eae65ffe6634241265348d98472074e89cabe3d8f9f55cbc74ddbd9843e4b", "0x2988e81a9b5dc22c8b3c7a9d01344422f2483364c189996bcab079912d25993d", "0x0dbea591b66a2448fbfb886d10b899d656fddbea4e666c0f14465e09ccaddff5", "0x1edf424bb6ca08ac8c4cdfc98d6d3fd04000ec4c6a8628d5e2b3b1263234755d", "0x214306c0105f363d5259e2141e97b7da41b9d5115048d1ac8483fc688a7034b1", "0x242e00b6930be5835aa5027493d3b11e311877265a70210e01216328452fdc98", "0x29154d0128cc650989dabb8ca0b18dd5beb1ebac0f63fa47be96e3832012197a", "0x25d22d54d9c82d7cfb89c61aa62ca150506a2bfab5d300db784d25d260827d0b", "0x2f23f0ba299f5c0976c16eb3b88306892612873923ee88eaa2db8cc10108f5c6", "0x0b743a8913bd8e7e709e68311a3585efb096708315a9812039f215899f4294c0", "0x264efa00929546cb4ec30a621c3c6f661325872864ffdf84d5adb61af8dbb3d0", "0x1c49d76663a358387762d208dc85400e7acf1b65fbb13edb346df1f2a10ace37", "0x2f40725d1eb518ae4562ee25ca08b3e56dacaa511bdf82d099fbeee5110b682d", "0x2651bbf39215d6d6632a652ace6ff5118555acff7d4c8be7ee3e206f44ee7c00", "0x2198f3b0a3fbd0bfab07578d40d7fa03e50761ba8f1f2b018613d65b091f3eaf", "0x18d4c4699f7d01fa00edadc43c8e1f10d92a4f7db96c2d9139bdd6fb11fea408", "0x059edbc553491ec6b94233d53b5328a5d24b6e49f457190bcfd062a5822957cc", "0x129a61614b4e9e421e6667daa9b85fe14beaa822b3954e551288564bd2b14552", "0x2e2bfe4d7b3234df6b62688bdcb2c8767597ea3f7b7792fb44377e71e1ec9f16", "0x01f8397cfd8eaeeba4798e9863737ec54572f6a355ee47cdb827a7f20dc389c9", "0x117db9cc9140e4670bc74e7fd3a6fe99b87e1781d2ae191d011c6d64e02dcf8b", "0x11e0cce35b68def7ded5522f434c486f287db0b6bae3cafb231dcf951598f89f", "0x25bf4ae30c44ddfc8700e2369aed7f568980c6d48e33b6c63737c82f942b9230", "0x1153f5c16d5608a17dcfa2fcc5ff92d0a41d0fd1380b58d2f77c058339886f6f", "0x041bed39c29afb7004cee993fc222605cddfe641fa3a096c8013f38b5cd85b7f", "0x047cd5c5b0c2a604ae99c842540fa37d44e6abec3657699a116b84fc42ad5d3d", "0x154ef25e671486db8e882181a331826dae7b9739f2eb6c8f748a30649aa4180e", "0x1b483e74f41c2658fafd081b9cb7709df288999454496a29a492eee79efb9622", "0x12db88342d014b56fdbf93dbf9d9c082196cb34e0ceddfeca0a40904e2b8cb2d", "0x0944263fcad7635a7e8ede76f4fe3afb205cf835f42a95c0336de6c42ea5a990", "0x2e7ac6fa9dffaf83a9ebb6966ef5464e4429b98b78b8f14165c501546970b734", "0x04bca07a15b585cd27790768caa382e99d14cff8fa57e2fdaa115a472dd4ec12", "0x0a230ab485e781468fdbfedf32413aa400c839ea855a50f1916b03c6761c034b", "0x1621dc3c8c3db86fa83059f4a3c41298aec8ed93c49c53bdd2587339b216ec74", "0x1b4e4bc4f028fded0daa5c1a094feca0d05094fafebd6619348e1dd9fce168ca", "0x1a739e55ca644e9ca0ff28062320977d9738b357287fe6d8727e10ff4452c799", "0x292800e8452a5666cd02b1756950f8048c367a2439adea3d942ee3c3185cfd92", "0x1fa371d9106b81aa664c11f50cd41d2481a91439a39c0fa1311ffc28c4484dd8", "0x2a786941b8ab631a455f1f0bdbbd3eb9a19cda5d76c463bff4ef12200bd6cdf1", "0x1521f303fd41509e122d6b7661d62c911fbaeeee821fa2e11e29e70c843fc859", "0x242af7a107cc7bd9c1c5b2537e5eeb794c677827c5663418bb9a2c9dcef29157", "0x1cc30d4813bbff4b91740cc8ba20bd06afa9d217ea012ce12d14e0271301e77d", "0x23bd2922b425af4d8bdb587b1cc08ccdff010ab030431664899a4a323b29735f", "0x150fab5986eef5bd1fefa92aab5002530d9f54cb7e65633cd5c310555e0b390c", "0x18b43cb064bbf3c83fc2f158ae785aabc730df7e5c6ae3bbcaef613bc0ae707a", "0x13bb42eb4e73787060889be175018b8f2e5a28a1181d777e2aac1c993acd6698", "0x1ab89b566dff36a95f8050e843494740ba34cd3b35d0b7c97bd2d705ef842abb", "0x2d5fd90e717d8af8d5b10f73844c6ca50d005940af09546de8e34ff991435fb6", "0x0b836d0d581914218db0e93c8598b388972a479b35c933ccad984a0b6ce94bc9", "0x02ecdfb150fa2eecf4c34c76d56eb29a44a94003996fe3c7fb9d64d72d352e3a", "0x23578d7d5ec8ed31b2d7eb794564d389025fefd00652195dad122b400a5196b5", "0x1ccfb8b4d93e5e08c7c4c4f30635706fc9df759375fffa6835a4c1c27f222796", "0x1c0cb735346164ba93308881d536f5888873d4441e308375e8e6b738a1c0cfd3", "0x0b73e5b78e0d23f77b0fdfd001738191c33029c06dbbf6f410774f242d0023e3", "0x044715c00e5fcb99c435189c1ec24b3ce9b8311421f5b1f38484ab7692c6c632", "0x1d3b3647b8ea345e92cc286f1bc18b6ea3b3a8551d0bf1a5b95214cf2310f700", "0x1044b915a339a2582a6e7fb6a66f2b97bd6182f9946ada1e5d3f764ce1ab0ce0", "0x1813db2251e3d904d0d30bb86be2d7c5803a92b87375dfd68f976f4622a51534", "0x2808152f5685bfe577c94fca9d70962e5a08e0f6fcd8d92182df7fb3b2b3924e", "0x2da940a1e8c89a6f983e3f988a4e79759b5c6987ba11f3f51d9a53d3fd1d4011", "0x20fb1d869cd192c87e34254e4b48f222f997b4526a3d3f9c9fedf51cd1670269", "0x1bd49eeeaac3927d1982829065a4db42698c0f5d5febcfd48ec3bc1059959f1a", "0x135112b374480642311b6b142704f21684dd024e0ad55ae02728ac322689e66d", "0x2c9e245c71832c690a7ca3db1cdaadcdd7cdd39570bedc14a87ace5f726ffeac", "0x1a319a5ab3b2a9e95eb0c11a5a12b79e856929186a1ee3eb2872ad86be73f564", "0x1a123c31f99d5ea55bc42ee322b7c070f4ccc1fc26bece9f4f3eb44b90513808", "0x0b23ffdea065c8e75ea0d3bfd966dff136d6602afa94328439590ff3e200ef76", "0x1c81f8e014ab25b8ed79c5e1bdbf869fb1be1eaedd875a7539678046bd1a3314", "0x01bfc092f4701d4caeff6ed32605cc0f3543ef523858bf7de922363354ac3370", "0x16068fc89b3388fe5bd541a72eebf297689d1e6f978925deed56f2ada6d01fec", "0x03bd9dc121e7e98b549441bcf073b564d5a9d40e3020de4d1a71039ef2630336", "0x1d0bbb93d9c927a609eff76c3ca95ac6e94e1893c88ef2a544fb5f6295da72c2", "0x20e9e2dc88aea45883e13db206222e4c21d4e8eb954202f2b90c211cac96c9c8", "0x0a69dec0cd8a399fff11902a34afe9a1331f51ad13a7ee5a71efd7eb8594dae5", "0x0867c910850d2f230f7e5a03b3cf0dc03264d5b6f2661105b675c5ff41575c89", "0x145603f8fb5a0cf56bf71b9e6ffff83127c2d0bb368de23c69fc7a94c844c404", "0x2b8bb76dceafdd4a12be1fc9437b9d406ffe2144b7be46d9a56a410d17da75c4", "0x089bc5ce0fd41d90b1aa659de78346e05eac7d054f1fa5fa7db91c07fb3fa7d6", "0x27bad78b8cfde47a264cb63481b5a0388f1339cb21f2cc32905d82feb4e93f93", "0x07043ee703d2b1b6ab8641fcffaecd107bcbcc034abcfd46fe967d8417fd3720", "0x04f5ccdf4036bb78889335f68633fe091e0da370d2f07e6f854f67049e54c0cc", "0x15b1ffe12147ee71e3401b3335e78681c534bcc58fa9f80a8130509dc0820256", "0x109b0548eef07fbb9230e92b4cfb7441873a44edbd265fc152d65018783cd573", "0x0f07c58aa725aeb731b6af087e7c5ccec5a3796ad74c872a7426fbeb7fece87d", "0x1d1342ddce6e4469f70a948ce109108d3b1e75b3733ce7c9a237a4c5e5274514", "0x0635be9e7e8443d3b2886d154344d243daa9578c82a38e252885c4f3bb138b10", "0x1bd4922ac758c0f4c50bb3035b7ed4b5618ad0b714ab468b5eab988cfd8c2959", "0x2e1a0e6f84c93342b4d529f88184554976e21ec6180c580e4a58634a7b74759d", "0x2f1589be5a127698a4783ba48722e4c9a9088c7c9edd9aadf9152b9dd839f2b5", "0x273dbaf645f1185466bfc99b676c6187f8415b9fa2e1dd6fc6435f0a3ef35526", "0x1c11b76df042385ceb6d0fe269cfa150695919e047b4807bd6e9a3cd4b4e0a22", "0x16a0988d4234ecb090f09db6bde79af35394c9b3ccfc6a0bb444dfc6c7867359", "0x215d025730ada1788e2024cce27f2a53ce804a93a2fc60452a0cf948fb03a8b3", "0x2cdfdb0847de8099ed8a941822b15ef9e91fcf64325af2202de42eac92bbdf21", "0x0946dbe9998dec541da39a9d8ea544a7e449e26a4f9aa87c28c7e2f118961342", "0x0f958982b43f8fdc2c3785c4ac3e631d5c89fb94e0c724a7a65c1c3218b67e40", "0x185021b192274b1b61952ad219cab61acc3b36fd36188a1b8c12e56d998c5e84", "0x24d56b4d52b47f9bc6dcb7ad353eec927c0e7d4212a2e6de0eac44a210260b35", "0x1098d58fe7b53523eee81510b083fdadca004b549468cbd201b0a31c8b7e1d17", "0x24a99bc48481068390bc48330c113b7921ccff028ad504583976e7e30efc3c88", "0x12a7fd0a7a6ed9c0eaca3465ae557cf318705146f72f7b4e4ab24934dbb4c673", "0x0d42adee447d6aea66365bf01e5b607c52848089a845d1fcffae9f47e0716b16", "0x00d5d109de2579f4e5ca2763a37d1310930dddef69c2023b167ffea54b0c4aaa", "0x2efe7e744a2f0e450693507731d9c0492a077d194a02210022acc59e7ea469d4", "0x1dc37644bbecdc24f85b713fd19af55b6fcad311b77b5fe3030a96d5334bb833", "0x243115568da36482d004008176a75427fda366c9d07bcf56c7b0f4821c263764", "0x2ac9106e5d82d4e200b257b0b222cb30957327beae9834fc428046a0f5926e71", "0x16b852944570287d6e02c35a6300392635820ce4883fd0938260f85555c6c0b5", "0x29dfa400161b661f5264b4158460d4776f3e862b7b8235119430f7678a2a2a74", "0x25908a5cfb1c210f3afcd6e8d63173a6d79dce7535aedc57aaee994326c386b3", "0x1480f56b3a68ef41e5ea44dff254aadddbf19d50f0e990965fcc89bdc3bf3546", "0x2c1490f9335e14dbfaeac6675595f6b10807bcfa3e49a76efc9032f5f53af5b8", "0x1833f0ce5dc529d3576a7fb481d8f70fa6e2170d31c1031a255cd800fcb262b1", "0x26d36461a1c9f3a3653590e8273554f81fd51cc430f25bee2cccf55e2e762733", "0x29027f0fb381318f8eac14af24f76e1707dc6bed2710362256f16dbda69a90ae", "0x0a4cde8f3d42ed48fb3daa7589036f4994176cdf07a2ecc3dafb54f9d45d9b03", "0x1fbec12feffe0889cc4a31fcae7d819cec482785e190dda2536e2c4011da8704", "0x1b26f238c7bb8636782bc0ee48a931a309274684014ce72714005d98b8d8c666", "0x08ff4df0c027e88807b8b6e55e6bf7e643fa60c66d74a33dc844ec1c34598ee9", "0x2207c1318e959e4a002ad5015d381b29915de22629a612a1b6da389ab86fbc24", "0x09fcb07e82193539b71d0a052d3977996a09f84216bcc1e46f11ac84d5d75ef5", "0x1969f5c20e80f10e71ff42fe5af7bec47ee7533153678dd2ef33f1e91fbf98cf", "0x07b65d6a874f5706282479ce323f36bf23bdfbc34769e11ac34ef2494f2bff85", "0x09e9ac4c51b61ceada2c861e276a1c0665f1b069142f144f80c46649a65bc425", "0x08b74eb90b0e5b3013347515fbcfe94d8feacfd5aefb9546e1e5adf59ab4acf7", "0x19351714ce3d2e3e93ec9015c02e0fa056f68ecf8d1c7faba519dea116e0217a", "0x03c4a15bc97488139ce1cb928f474505ad5bc7893a53b3cf1c9ba21d51b00410", "0x0d8b7773df335b6a9cf298b08721d640290a0b17d5060f0222f263c7417d25cc", "0x1e14c212fb7679676af50c3711b1917d6599f620652b8bdfd244251667aed9ce", "0x2186cc6cdc5271291a9b111b98bde50c62a28043d90aef654171bb70e429fade", "0x0768dbd4b9074b435467927d1187378c4b174685aeeca35788de665f2812a195", "0x063f5a888b7bcd3f8ae406ba40e11207be013618ad5f811cc317fc1e558c79da", "0x17807cdc2e72f05b3371fce98fdee5f3553eb4ce92e9398d702f938cf9ee741f", "0x25f3dd0be3bdf8e632afdcbd431be7ae6601549304475ca580d13741e2a7fd92", "0x2274a45e2d69064bce67e2eb664db45aef4f1d9dcccd157bdceef7aae145f6d5", "0x087ee7936deb77a97b8d7473f53436cf3fb1ce85df07ab68a028b46dea841701", "0x0aaec0f75e53087db937a974edeb32eabeb633ece1180f1f8437abc9099df1be", "0x10cdf01e8c61263b446c3f7a10cc29fd01ed91fad9891f9c6fcb7b5ce438ba95", "0x176627a92072fa2bb64dd5dff9cc4a0d5bedcf3f22c91fe991cc6568a4fb54ce", "0x0eab0e158e2f672c68a7a0a48328e21179a417eb0c65b1b617644e1c52c4b425", "0x2edf1ea1cd97d1a91fe7901e64c0f2d12f7965741da5a7c7fabee25eac3b47ee", "0x1fc07137863b1d337bb5dac18ad91237739680a69eed5da0bf35062f4d4cacc1", "0x037bdff68025bddcbed554ceac3df66a9eb298966d79308ae414d34227aaf862", "0x177f68957ba07da671b9dd919f2433dfe5f363b74a3c16169481c57c5b5c07a3", "0x06d47b9921e2502c2abb0138d3b1028b02b85f8f42362cf43671b60a69e9e60a", "0x131d58cb8a41a753e767e1e97cef60d0003e49c8cd1f0f5101c861b177715da5", "0x236ca76235d9e69472c9985f842e626f33b3fd4fd5f543810a0c5d2143ed4c9c", "0x2fe7f85a579916545907f2a02202b83696b64d1f61e813730cebc06d068537f2", "0x04952326bd26efed64637d4fc0f7a4bb528e3a341260125588e75aaa88f62d71", "0x00c2dfb577b78dad18837bb70c8e2990f32325bb418f4f66263a2b63f3f98384", "0x122c682293b4892d51255991f9cfaf96e25140bd6b37337ea7dfad5e1242328a", "0x11ddc540d4a110e482a2455112ba67ffb3ca3ee54711498db1a372b9cc23d145", "0x2f6bd71f6b2f3af3d468820c80aaad72ee48a337f1fe3d7ce01bb89242106a1b", "0x0d6a16d136ee77c35f216f1aa0ca9e09bdc259e715848ce047be056a4a09f787", "0x2e7c6013d1be62a78b4c0015465fb0b293a07d4605dca6422109096164b22b2c", "0x0d6bbf18b7eb684adec412713570d3bfb36fd0f569fb36474f694b11b2948ba5", "0x12403cf8877ae510b7314b7c75ab5b0fb7fcde2e6ab48121288dc04d5b51e594", "0x151b3acf4ce3297d86e823a72067c71717382150c080ca3f8012bb0ba2fed47b", "0x2a1396702063c62e07c512b9d4d181d71d88b5681a7e47fd114cfb682faf4f98", "0x25cc49f3508fca1873a6f85b6550b6e1041d90ce535c638d2b523a61dd7869c6", "0x1fd18327a0482c394723b152c90544729cf4040bcced94e8a37e1c9e307683e1", "0x0b27566ce02bd4cd2273fd531336c0ebfe65a5b0da123cb31bbc89533e518b3b", "0x1a9e153ce82bf2a6fa0d71d1889c24b5f111d262c82cf3450f9ca80608ec15ff", "0x07ca794d5ac4f40f0fec4d69e3a3cd1f472c7446e4e27fc1fa4cdcdc8605acc7", "0x2fdaf44c707d8289da9373536a6f61b66494fa9e9e782e0e410405efbaf504ad", "0x154d7c7e94ee06a436fdf59b501b763be8dc7f12aeec0752b79179267d643a74", "0x2c753b7779a3909fa0cb0695a9f33a673532bf5cf394f40bb8db5ec5fb7a64ee", "0x144ef40df7a262ff41795d09590112d63feae75c3533c0ab4bb9ae43d61201a8", "0x22c68d6cd4bb18163791274a28ba33b0d138e148d6d80b469d6e95197d164883", "0x27ca38cbe8b2ec8a927b6fa011e982323e56da932c24d73095177fe7f8aa979b", "0x036994c16973ea012441dbae792fb3d06b139addd7ccc0c0f353be33d8873ea0", "0x242d7d1bb8ed3658035034b55e28b43138c56c7fa9c0586978056aa77decfd3a", "0x194576547027c4224e9cf6de762a5169ca5c18ac5db90108bd76021bb9b0cef2", "0x0e823aa11624ee571f23da021d4d7990563fc9898a7d0ce684e535fec79fcdd8", "0x082858a4db283919b56c0bc08b89386724b90868a4ba170bb1ccf5e112205c4c", "0x0217822675afac3da4a9137e0b172532884aa670f142da689569db24f5b0d650", "0x274c614c2e392cee896b7850aa7b6fe952b7681959fbfd7913b43af0f5858bb6", "0x27d35572895d61ef77994592fc75251f440e5d120133252049385ee1be25aae3", "0x2b391acc9c8e452b35f31c91bc7de27e00d3e625413d27f6d60c39d00c74bf7a", "0x1b6320cc8acd98c92ca849a5b3ae52f2de368474dce727a0069e97cc0a546b5c", "0x2286075e6a96f1a55fba6f84b3ca4974e87016864aed62735ff0d428c0ac91f4", "0x18aada171822e8e1dc3da76917fed163a523bbf82123dc98f4c097e17e11deaa", "0x0fc3fab45d405fa715ee3ac4a279c7003885e52023e6e36e5d71f05cf5f3035a", "0x1ce99509af24e048925eaad26d294cd555cd12e1d65881777ecda694a5e52a32", "0x2e26c17c921163b5bb3aad23ffadd47dd0dc4449b94c90ea3eb4e4fef138f727", "0x15116a7c92e6d9d46fb7fb51adee5a862aa2fa762c690991804aea7df5cfd3f5", "0x18a26a0800fcf288aa7e98f047317210e6656c87be903bf19a92e7c2a499c396", "0x22d7a40e7e4c1e76dbfbcce1601c22469b7fbfdd055a3f953cfcfeeb47a85c7b", "0x0ae771488eb4bf107cda3042dda3495899ec5fc437921508fd29d5bf21807afe", "0x17104e0440a812a33f825fe57da99dde13c1bd3e10de8ec967a5deee234cd701", "0x2680e4afc93fbbeb972d842f18fa3a35e1ce822ce02a629c3696e2cdb2894a5e", "0x0d64fda93aba5c384eb39bfc144bea57b13d11b27d89323d2ae2748fd54f16d9", "0x0aeacc635139009646db8941410c819e087abc601709b1f923f04ea67b5f58f3", "0x0a8a2ed2b2158fe6443bc3b11754c14521db193335616c785a073f69cf15bf38", "0x07b133a201739ee204c81df78b20a13e00fd8c0a386942794c29187aab6273bc", "0x118fbc76b7f861e02e9ae5ba516960c91142ad7c4af11563e1adff97f863ceb5", "0x2754b4ff473681f3069edfabe21dc75f4123a0ccad5597d42779a8120f54f022", "0x190360a036668714837675f7e59fdf15fa57634f4db0c2c24a80d26951c1ddc2", "0x222922f3670b5f65cf34b2b2665b40a187f3c303c76bed52017073a0a18dbf53", "0x109e9fc20acfcecf3d47c04afdfba926f30e1172a5d506d1241818aee9cc7c55", "0x16213b42dc9dd4c9ef91500adf2ef8708851787374dceee4d45a6645a3a69b30", "0x24023ea68a2a2b008acbc5d4a15fcd0942b67ce952b0e1a03ad175066f755920", "0x247404c48faa06e6c72b1d050b905fa3ebd774596b4cfe6bb4d57ac38070859e", "0x1d868231e2df133dc0212c6248179cea17cb0f71c4cd827f5353806230d8916b", "0x0c314749559c134886fc12ba1326e4ffdc33028d8eacd341f510f1dea2be37ae", "0x0cc1c33b5320c911b47eee03c4d96ea2b25bcd26e3711d28cb152cbc5b87d2ce", "0x05f4c3605ea09d4b737b29fee87e1c2ba74d332bc19e6d3e8ba947f0eb3999ac", "0x05bd7ce441a3a72786312e63866bb986adbcb847b06476f98c6b7f8b8f042457", "0x13fc4c0e950281ef4e96eca60355152f7c0b335e0f36bc1cdde5f3952dedc132", "0x153c2f89d6681e7f94df511b9f193e2876884faee1bd3aec26bb93493a064f03", "0x16fcfd6ddd242be8cd4982678cbabaf4010be47978764ee4d14e952dc4a3a118", "0x155435d02b33ce45b9c3b6f3f1090930fc0a9fa99788927e504721ea0668cf7c", "0x0669fa7d440e3a06db6fb80c876a36245bb693bb7960646421621fc2c391c5c1", "0x2b57df93a096e78d7f14eb117a9a5c5ef69d96cf45bc807e55d89bf980e8ac76", "0x1e8a7d19a676b3263f85a8482d95d0f3e76be0b6e5c9ac107a12fb9e655c8713", "0x2a6de0bded2bbe2b5866801f880e47e6bfa69005a0c185897c72efb56bd98a87", "0x099ed3a2ae3f0f6d0a67a1f79b55a135bd066cc32e5942a3fa2572de1348f840", "0x1e7d7ce084654213565d6ee21bf1f27b3d8027a2faa810517efbdfdca997fbf7", "0x2e703dfbdc86f5586edfa0221c81bb6899143210bbd8c66847764aa4f63c65b9", "0x0505b0c3df9f92959a41fb36c72d85bb826d5672798fe7482572b5f41f37194d", "0x26d1fc920ab60d7fc4e826056f7d19c78275087ff9116e356fde302840ffd3ac", "0x2b3439c16b1af27bd7a4c8d9ddc6934e7b9f5e10aae7cce40ce6a937506d510a", "0x1e45d86bc184f0e086020deae34e53ab0ee7123b3a1190475c6e25e06f832154", "0x23f3e2f49ca1c95434b0342156172e65dbc6c9f8321cc75e9f15a66c3bcb09c0", "0x1d8c2e51db59d6e96ee69f68480d1f8e48c03bc876cd7915d888b5b0a11a21a3", "0x1e1dc3546a86032cdf8b8bf7f94a44730b662f8a56ad862ea1247ba2ab0f3d2b", "0x1147e82c00df45e182d416b8338ffae299178da5f92d8f9f9153c695e7859447", "0x0be94456b9a03c6cbfab9d8a34b411e91d20cb11f5624faeb3f78f38247e90b9", "0x0c4bd9a3aaa923f649b9cd1cbd7879574b266ff2f7c0c063b5c44d6b48cca3f7", "0x06198c1fe412e25887115b54ff87eb4f1e2871d4cf377969ca151fed5d7b4dee", "0x1ee90aae68a6bda42c34a797d4d31f79679ceb41b587f619d620e1f5108b839d", "0x11aa5360b586c21447711b49721e9f4fddc6b6c98b57b84772d6fc6b8be017ca", "0x1a41a67390f922f10cdbaaa0ce5eaef61d66b6730825eb98a24d25987e87be58", "0x24a2997c832fba549618926afbcad00ce920788393df128f8a5416d26231615c", "0x067036caf8b57daa59ad4514773898e1b22f8e88d454bc1f8ef0c82cc93a2772", "0x2f18e853f9b7b7c4b1b4c3f0d1a2570b035fd2b4231a584139adb7a11221bc33", "0x1b3874144923943beb66ca8b798d0bb8f2be7f8dd9dedac6d91fc5b9e53186a1", "0x0ef5849ff458a11dc413a2d8abea9888c62241c3c285afe3a1b14cf71574c3fe", "0x196a36a231753ffd0c094642e27d80ba201a549af584ffa9a70a8026817ca668", "0x2e02fc222dd56fe6568a345add3c1d577898a361847e58b67576f12e3034a8c6", "0x2383bbeafd391d96aaf0ba7481467867c67ad39366ed8c43b42520c6292452c1", "0x20de2cd5ce733ea00a7f167f686ae67192637321cc9f0f4aa7214790676a3f75", "0x1f1bce33439afb8dbab1354b46a5b9ceb1980b83514095d65e513b79351a9907", "0x057b8de9d8ed593b5d214302ce88ee08f1812ef53cec6e05baec160c054d6747", "0x26777acbd88e932b2552f7813e62f368ab8b1d626b685502253a10c8050a4a55", "0x01589c939e2e3efeb8cb6c103476879101fec7a530ca18fe4bd2f096ff44af40", "0x2a36b79d87c963b1f47590ecc4cd69142346a54ae48bc3f573adf719b4e09719", "0x0eed87708b5b00a42af3e6de58d4cddaf22278be0ee6344f2a775132fe107a0d", "0x2bf84fed63a11695b639727e18111ac2083d936ce64bd51a32dfa9f1b0e71325", "0x164a6098075941c6467319c2372463c3ec7adba6f6db9a58ad59a678f8f18a39", "0x205075ea3558a17b0c51ae3a107d898609e3cd5d82f8df8c3f74b1b73b08973e", "0x1f1e3c76fc69fd8acfa3a9bfd0af695c10c2bcdce6d8f4d1f7b76d50419b4376", "0x0069982a9b25bd75814397b6d3c8a90781e1733be57f7573f2fe44dd35618c54", "0x2f17582941481b5489211befd4bc0dca43d4432ce11153a0fe735e55474a2393", "0x164531eab380bf81f6313f32f5c255a9badbd4edb7767f990c46b0fdbe9fb297", "0x031f46a8b4455ff121bc184a1c3551d4507a17c888931f3e99d356a9a06ef8ac", "0x11334dbaa6f7f4140d1493bd188c77628dcc782c5ff82f1ebf41ca094815741a", "0x0218b1d38a6fd11d6566a52fe136e2c82de229698e5414b36be8997f060e8913", "0x2effca369cf34f74248e37ae3bc74299187e16a75f2ebe40467060500eb93c31", "0x07e54138f828c24b98b3511392861ae9c5876550ff0ee776663c3997a8f1a116", "0x297e1fb7da5497d3dbd0798a146d2fab9ac5b0e7906d8588238187b795001fb1", "0x149016a717fd85cc7df7f039ca6b1b8b06a5bdbda365a33bb0ae228900e53b31", "0x0f9e7a22124bf50d94db9231d63685122f92db5268ad2148ba534dc853bfc54f", "0x1a3519a62fa692b3716d11b88e9d62aaa0e43bcf03c7ea81970b1d802a867b88", "0x2bb67c5d6c48cf458a293d69b2d1d44fa7c2c6088e7b7f9adece3f873dedfb95", "0x1fa713dde3903e41e68f09ac2f34c9b1237a445d5195c5e361c5bca31edfa972", "0x2019aa92adf7b5e795f0e539682e4b39b4e32bb6520c711102aebdd0c1516843", "0x2253b9233d047afa018c40c49fe9ff1f999432a9c7df06621b2504a46f120cda", "0x1cea08c49328f5f053c6b47cbbc9559224be1d81354911a18926a98e047bdae1", "0x123ad23966a42c729713094fc352e466e2646af9adaac20fd8e58f308d2736e1", "0x1ef59a7e266477a644527ebecf0bbbcf92ce5f80d2280daf826619b7ebdf79a5", "0x19ec1d74d7f3672f9bc66be9ac40f5be702b7bac80b4e33eceb592f86d5de3a1", "0x242646c43d7f28cf38c9acaf8c63b1b33ff07c778c2ae68c55d4893a927a3a45", "0x0e2c8a604553db3b81980fe40d801cacccfbcbd79992430fcb50b04a42cbe9b3", "0x2e77da327c869b63fadf3824d718983f2cd1f7f8ae64c88f5e8a500a34056aee", "0x191ca3be9eacc6be4808bc1668d814499742a1167792e33d70d35b5fd0ac2736", "0x2a26e10b714c8c92c42331368736018850b48a0e5de7936b2cf25eee46631964", "0x05aa6b2e25b7ce4c170427081a01190f2364872d01e51e969b14d984930c10f0", "0x07acb3904e2ccd87ac5d9d7b6b7b7bbcde3850493371e1b10bcef4cf32ff2085", "0x05aa9ca5f20dfc104c85eb2bcd80dfe7bfe69d42d1ba4400bcf0d8ad53a18c09", "0x0411a0b6eb09fffbe966876683e86ab965280186985f72fac6da310e80175dd9", "0x1e165682a562b6dd29cef850b2759ebf862caf71e348b42027553ab1e7f0cd1e", "0x2b65e92a1f91e38b2e7f192ebf0bc60cd224ec7c1c67b10d1e5f634fdf526b74", "0x2208ea7d1fc63767b1d3dd1e7fcfd4b13cbfaacb0f9f531b36b0bc74d364811f", "0x1ac718a287105fdd6dcbdd6e3a9f833791e7c345891b6ab4760e6e2bb62059b4", "0x098090f723dea7b927edc36a8eecf84630c92d0138f90dc555f6a48971f50e6b", "0x1dbe00faa3343aff72d37b302260143bfb5d4e5bfa4a0b3d0a62223ed66b4d6e", "0x0642c365181ca2ec3e423d6ce74e145068a43f88ce053575a2ebcaf718860998", "0x245611d0d8047a24db3d78131bdedc67e345efbe3ea7f6c7a4fcbd3c642246eb", "0x091ffe3d519525ba080e1fab546709b2dc62a1793e3811ec5161c800b487f54e", "0x2a617ed588722d3acf4900b3dc5015724b7c8cef458cf9db494d786a26b69e4e", "0x1302868a9ab3b6a36cced0f80f53f1a13ca436e2d7c0f9ada90040affba0a8cc", "0x1d903daf4300755be0acaaf9ebb4414795bc3fb377e5903f89ee9b3efac052ab", "0x0f671792ec6b8bbd0936abbc039d2a868f523a0050dc0122f5d9669b26347770", "0x1045a4241667a8cd38078067970b02dce9c35054a36fa51cd892d5d2133cf271", "0x28d738f79c07b35d2df772d562d54346dd7a41bd07096c36c2204320a6760b2b", "0x2d245b5c1c1a732f8283446ede7e846f35be9d49cb4f3f3bb4e5e1fcd1789d51", "0x25a499ca1907638351edbc836c1498ba7c8f2e14bf99f0bc2b8b86bb89b4eea1", "0x1be3f4d7663b949402307b82b828a15f9423f9be115ca9ac4584d4ac75296bdd", "0x1b67eb51facef5814a30cf5794a95d4ad1151469ad4d851d0c3366ed6b99320a", "0x06ad69201f948e4749ef9095707fdc6591022c78cb6fa047f825a41dd3e495c2", "0x0a4b8288548d5fb3dde7cf4bbd1a0881e5e61d99b1d52d0f82e8371509654119", "0x0eb4a9342e89d9cf0f482c41ce66e40ff7c7d8f9ad1de8d1d8d48a98b0054c93", "0x1a645a223471e2cf776be1bfdb7060185e5a58a6b651a12a8969ad5a0dfad97e", "0x0302c4499d41e259ff761ddb305a366f3e7c2b01c465777bceae1a67e6b412c1", "0x2c17e0b7f901b93630c9da99baef3c5c2f5a644dcea6444357a121bc2aa4274c", "0x0b0e36da8335e243dc7fd59cc2365974d0e0ffa247c54ef9617a80f76d4195cc", "0x129e733c1dda2ede8d396d85fd6bb8b6e61399f2311c09331c7ef2f9beab22bb", "0x2cdea7eb18f6146b67c437f37c13f856eed01d5e464e8870447c5c8b4befc4ff", "0x2ad4f0216033018e7d2a550c2e082432614f407fb60097d4505ccfcb31d67745", "0x2aac4f54256835bad96eec256641a10fc44d0d63fd5860fd475ce818276691f6", "0x17e25132c09ead8dfded691b9081b581f1f76c4a86f2fd9c9c29d2433f4d228b", "0x2ed95e493ac979a091bb6d28e81672ec5e1f1e39f163e5f4b9948de5b4be3296", "0x161ce63d596de69443d7f542fff36cd3c110c33cfbb445c9cf3b70d9081e4f0a", "0x193efc77ea76010547c5bcc600a11f1d5a80bdd7796a6b3d9a0daf66a0b8a4bb", "0x1449a38a938cee3b56f505f1ba2325b186e2ca22a8435f241cfa443c6000f7e1", "0x2060ecf9aa31db3120201827fcdf6b5ee7f1bb93d550187ca2dbbd4a4205a7d2", "0x048dbcdfe2fb6c50968e825a958357646779546c93340748ef2e05794b48ab1e", "0x0302fbe9b13a3eed91a823b0b4d3e3621413408497e6c3c2fa49d9c8aa36f408", "0x03e81925a3fd5f25081532f2986507e0ed91276cbaf4ce0860817ac7bb838e9b", "0x1c549879138d434cf3143517dd9bf2a322224d76ba5b3e4de34b7ec490407440", "0x08120c7ec356e16945d94e55e835ee7e2e91e410315dcf3475f82d270d16d0ef", "0x130646400633005168c1e14ee27ab8d238d8ba7514c903aaa591dcde7bfc1863", "0x23e9b4dd3d1f30c37cfdfb3a83d45e524f54aba1c067ac1ef1ace082ab43479c", "0x285b38aaba20c38b0459f4a48843122b6473162956247894711ec767994fc3be", "0x2559fdf58d3c2200c83ed1fb4f1eed568c2248ca08e5794806d1841f3a08184c", "0x0e33c73626ab1ed741e47ac52be4e9f7f7913b5d81d7da1aafe203a49ecb983b", "0x051d4123632497aa324257ae52a51e2fc1f9ba8901a925dc44c0dc6779ff5496", "0x1fbabed28208178778241052b236f0bc7ae9893d247ca9cd05672e9aff613148", "0x1c2f74139538bd253c3dd45a2ffb96173550a51cdbfe2a76827237fb85beec7d", "0x157767e2a7fdf25c184755b2f47369f2ce924e5adaee5a3738d4f942bb0bf956", "0x0fdf1e7c86898044ddb397feb48e5ede9e3d24fba5420dba8d1ea6d10dbf47f7", "0x0769e84ed17e6c1eac40b5e00ccd2d820428101b2c84b588ee40a443ac9e08b0", "0x2f2a0f50ded1e6ab34f60f8c56904a516dafc8153721b44f1b3561890c02e85c", "0x0b1dc04fe75dcb36de0bfe15ca2d5ad5bf2538aed1333df56e1b2d861928e2c4", "0x17aed8d117c277ed0d1d888b35ec4bd3dc0b823b2af037d3623ea103a2078b24", "0x153140aa66586cee231a8f3fd8605976e6d32ddf431ff33ee05b9f429c0c9481", "0x2ae922e11ef4d41b7b84d52ab835f5bc8027bce9de25c1ce5b0bb88b6a17d1aa", "0x0f818243cc3faecb7c73dfc21c2968be63b7e9390bac077747bbbe167a055b55", "0x1f62838a30bad6eed4ede2ab52866db5155137cce327a27f4b66e2204075000e", "0x2fd97957b9460d3414008cae825bb610f018c5b53309ffd26f39ecf1e7f795b5", "0x2692d11e64695e0d210374b482a47267cc00df2d1b90557227cd49fc37ec2b51", "0x0fcaa78988a35202687ff0dda691b035b4e9540a5308c96e25823d8787a5a040", "0x1a742b2cce21c83d7943fe6b492a9b88faff3990e48866670f52a1db33d691cc", "0x073a59e2c9c1aeb2a2bb89b1fb9b64fc42a1bfeff1d85b6e7a163b8c3bfa8203", "0x04c604d77b356b485d215a9fdf7e5ec3f29648fc90a186c97e512140cfc5d966", "0x1d380aad6383bd9f5c4b9fb4b127e0755d1198ea3a969efe5e3bcf12d167882a", "0x0cb07cbf2019493088e17d16ce9d14fc4204f670d6b8e2b1b501d1f1b3fd7951", "0x166eb6ad5855dfd3c45e27df9154853d4b0874112c4489ff7aa0050e41fbba1b", "0x0372a3beb9db36031b7f0c72baf1e53e9c7220780b247aed82ee2079efadeedc", "0x05bd655204d55cc6b6390bc1650301957a676f7d3d6017c6496ad031fd5f7b34", "0x144179199dba135cc5f9e91b76880f342a4e74b8ee661c27d5b651f45656021b", "0x0e6fe8c96ce98f3cc97c11993b5087b55f3de70bed632730f92299b3c32ba1ca", "0x07a2eb5886375517d399bfabe4c7ce5c03ede836c44ac2b51bb3e35aa9576d4e", "0x0764ec896ba7a374f5fd5a1cbed8a2be62bae0d572639e17bffad24590c3b89f", "0x07ba9ec6781cb474fa4d622908f09a01767a0785c3a14ac5ba29328c4da5f4f2", "0x0c325b498965e3770243012dafa0dd4fb036a4013f2f67f350f3fc9e74049160", "0x219dd3ca3c98d1613393838c73c88a6c6502ca23b3c85b5b8959a29691e34271", "0x0eb2b45fd518f54e1b0d4825026fffdd76489f6260380af40ddab5ffc1c5b33e", "0x2305b8b5abffdc552cd96956ebfa456a36b35d200bd3e43ce165eb38711a67ea", "0x1a7cb11ea9463f6390abb707987615cebe594cf232fb5e8914407a43ae57b982", "0x1e67ce0524d1079208a94dc25483d9e6b7428d40c36305bbe0893e194a25b325", "0x00ffc539a853778970432d8631bc0fdb0cf6020b4724b49ef031190dc4bb1120", "0x29945c9ca4c39d45540c035c10678a3f2f51cadcbf19b332f75ce1f46b5978ad", "0x19cb401323dbd3fd8be1da954c0291d6712487c687dd9664a4b167dc01804452", "0x285fd86adb21908cc4441249fd005cb1add0b2abf706caff421927506619dc48", "0x2faabfd09b63a81c1cf4dbfc64323d8c127ae552d00339b1dc4c59b1cc7ab4ee", "0x2fc7539c406bce26fbe61517b9b8efd3617110c8cd4b2bb3b4a2b339e9857d4c", "0x1296cd089d4750e55c1c01d768b5e8f21d2bc1fad76b842940f293ec0bc2ac95", "0x21a0c3daaf57fdcf2e88ebd4d1d1a44eaa465a40cf60b07cc26549b577a1f228", "0x1acf97f4cacc97d888e4e3b5ad02dd9a8ee511475e21e982fa1ce50467511ab7", "0x0b3556b9eef69e8447d1869d1286e0d15482112d23d0ebd7f8bbd61c435df612", "0x0b82cf5e2db8b88b32b37978b1176f2a64da2bea71894005f4acb1ce6a684b70", "0x2c8ad1acc7636f65a12bf83ce68ac92abde9f451eca15051413f36bb565ae3e7", "0x2fdcc46499cfb1102f554080793658228c92ae49ed7d814700ad1e13eb5bef89", "0x2c8d7b9323fe30ec21eb7b8e0b88248fbdc70f047b5b9166e3dd8a60bd2a8d0c", "0x0d1ebf973c9d26a64362620e65b0ca9f59c9e971fc97506371af9489de93e918", "0x1bdd929216a105b1351c6047b43c53d79866a0b653d0f4670233e9f59cd630db", "0x162aba246750dcd856c975a9a473a7c921b625699202934b0a1d29ffd038fe97", "0x2e681db0e74c3b6cc499a9afbe2229c8afde2932e4b15228679b540ff45e2eaa", "0x2fcc235134792fb4a81da0c1ffd8084cb8cd8099293c3a129504808d3ee39bd1", "0x1eb6661adbbb0a1774c6cf1637fa1e5e24399f6690a55416def3241ceece74a0", "0x174045c72f6848838b2a08a7a011756097b0f3ed254cffab2926ce159e9f5627", "0x02a0575f09f3282fa07e9b5cf5538993fc74c4ee8621c95fbb2ca2e5f2dc3a11", "0x282f62aeb167ef5963da6c6faa8671123225ad91b227b886b6b981aefdaca0c6", "0x1b9abbb81bcff5f1704632def6d989e50cfdbee1d249803238eac244351d7eb9", "0x18f8a4669faf9cff11dd19f3d73c37748fb4626d18339c077a06e5c5c810badc", "0x21af0de4ddfc449368db59be9e9241185c49c8496ee86d1175bdb7a431086a84", "0x0b9a1ec9fd21cb95dc93c0ac1911135b3a68d372ce6da9d455d80a780b15f8b7", "0x1b413f709358008f44c3e60877d810a081d90844f367e3dd0a7bb9cc118dc502", "0x24b4efb5028575888feb5b8b59d40e3498fffcea1f350826359bffb7fd4f31d2", "0x2b11edef3505a9dad6000607ffcbdd02788c7b5802339be9cd74d2ba57620117", "0x202279706096cd42f906239c40c6713e8bd89efd9f63741299dff53745dee8de", "0x207ed9f7ff57bb17d278f833b61cf678f52c8e321cc6bce3af0804a7c159205e", "0x05041c088d4e637431b2a49baa3772a9b0443f3161fe46515ae8d3ac0b0e551d", "0x001b7c7bc15682259ad0881dccbce0a64a0259c59ea3c5e012f99534fc02374a", "0x1ec19711623ebc49ef4d857325aa9dd7efb5fa3cd7ad50f3f44ccca99128c84e", "0x06cb1be75179c19f889920ea93186dff923e2c214c50a145518837a2b01ca900", "0x2712a82039769317c21b225a4e0ba45df63cafb4821303664d5b331d22218d83", "0x1d7d0968738734d0710ae851377e340dbb101428d7200b731adf3b1c220f3b02", "0x180502bae2da039d85f537212bade3edb56fb3b6a5567fab1e4061b86fa3e66d", "0x1c3f1a329f00f6f7115a5fabbb73a67bdd74caceac0e5a4ccf25ae0373e9213a", "0x0b888038bf1e8afa2e444b9f47cebf28f42854d1a91608e39dbcda872bde960c", "0x2a036e70e2987d85453ed7a3d9a68d574adf56eae1214dc774baa10658962c12", "0x03f11abd551e44d9b6a0f4440f47006e98cd9001459c9672e6f96a92e5023d3c", "0x1f0fa04bcd63b7a2bfdc870efbb36966f543e235c9dd5b371c5ea5c26aa7b9ce", "0x0154e2bbd796692b8942dc37abd9534c486ba70bc77be21e74c4e15381e1cb4c", "0x0a0525b3f96a7507890e7f65e7b593886d18cb1474f5db86501a4db1fba04b0a", "0x04a473932e524fc0e604d5ee9cf3ba9ef8d5b463a1379fcd7d6af14dbdeb54dc", "0x21150d11c7232f615628e7392f6a0c9348c70115a1a07b88736d04aeb85e0f8d", "0x0c71b12a8e8a7d8fd2b4ea9b587f1c7227be1c4e9740db36cf7c7c5e8f313087", "0x2d94cdbe04f7f77c5af2d36c37bbb81729d951abfbd791fee0aa3a32321ac661", "0x14e45c5e2b09d6d631cc60c59fb5c24b0a57041aac64b4a82db0b63600f5581a", "0x0abc5c5c8489780283c139c36dddfa39f88ee0601636ed3d6e4cc14bb3b1dff5", "0x0b937ba15135dbef736446fb4923206c8403a42a800c26e6284a93bb233d5c39", "0x13869afcef8309bfd43752610031bd0d155f0f8d11bfe9a7154452e2bf084057", "0x06d42cef5ae2ec34e497c596139ef1d504a0cda240f1762335f02dcd58c38395", "0x1554308cc7124ccbdc04ffb1bb97fe1e8277b386f65ccf2c8b5614e343031a31", "0x1e4fbc4c3e4f57e90ad50bc6e7a10b468fcf9a0a87a290c4873897e49791391c", "0x08d2ca5bcf00e9769dfc868d1c86f288e40a31ca8396852f3977369af24d70b7", "0x1f5bbebe4a188434ac69933fb8df5050ba89070879978fa4b7787bfae7f83b56", "0x11a2dcf45d740445dd1e82ef88829813555acf76a219024ca7002501240a0e43", "0x2a8a12e68b1fcba10e0a6d1a86c14a10d26e3c7416f36d62ce6217cf967e1c67", "0x0452848d3c0c00fe60d721380650c849ced2cf79d3044820812223e146647f35", "0x2a47a54f59ff22745597acf600754759113ca7dbaf11d9c08f507c46a9aac9be", "0x185bf57472562cca45f87ac1b1ae8122aec58cedb831281c51f3799f07e72b8d", "0x0ecef6489e709ad5c587636b3bdd9c7b6e85742175ff86ebdfc53ab588d6d8d6", "0x1608b3e2624ffc2c0091e47e90e5ac3c9962713c6a13683fd5531723cbb3889a", "0x0d3f60746bca57e5c968372ec0e987510a647f2e7d34415ba37989dafa94c60a", "0x098ecf0484e127aa679523cad148ea227237a8d9ff9dd8d8f39fb58162c3bd61", "0x302f10e11c13f3767223bc501a5f9dd130fe517b627f0248f789fb7b30ac105d", "0x0924717fe7babfe9541b3386fa40455a0177c69731baf22c0982cf76278899e2", "0x17382965ba7be709d54d70ca3e13feca23b22b9e6e5a918a9f008f47cdbfa885", "0x20d30010d977f9d912be79737775178aa841d972128aaa95eb7b27e160c2d2b1", "0x0594bdb78b3b69993449609386a251fa14ac536c37ed01608489ac1c721c0706", "0x2ceec6c13c11bbd47664844320ccfdeee402e0af2ec8068796c7c3753330aff6", "0x279fada83f830dfd97b7288e670459dc078c76cf0637a8983c0617f27b4b3472", "0x029d593a3112c3bf57ec8ab687d8398fc276fcf1d462a6822892738533fb450e", "0x07175181f0554da6ffea4a860c03124b8d50c3ae5b59a167e5847ba33d19c050", "0x1280cb7bde9bac1c3d7f557f27a5acead6e4a77be5dc3e8221087e4a6ce23ead", "0x1a994958d44c343f59489056b8cd725491ff551c0f449697b546c8dcfcb90bfc", "0x1f004034e8810c1f1de507b7eed842983412ab8473e2b00fc75593eb4e3f5509", "0x0405fcc7b759b8ca30e9273814efb350c1e52542d338f24c47fd99a94207800a", "0x0b872545cb5ccc73d220bbbe01fe39940e7a8929b084602541230807dafb3c8b", "0x2819facca2cd6cc16a6aea3191f833c2d3729d477c73835ea553be5873ce2730", "0x22e725f6cecf165754ce1a52ffbaea774d8e485d66cba799723253b26b68c53f", "0x01d122e4654861c4b3f76c3bc49529a8c573c7b0d4d3e79c48e3a4bfbd62cd1c", "0x1ed4f564d147f3faa38336a0985022d537d34521b511c9360bdcd1b29f89a2f2", "0x2fad9912c4caea5d440517f0e5688695a4d16b0e77b3dc3fd87f869c83e5b9dc", "0x2b5a8561f0dc586d6e3bb83ed5ec3248ed0c09f9b30352471f2b0b80321deae1", "0x186f4d63b014de8c9ea7ab01a79abe5b9be3808e6ca8344132f60f5595a33d57", "0x1ae5e940fc5d1295d32457a840581c3b8bbda0115b66f7f7ca429824faee4d16", "0x14afe0880ad92f816292a452cd011384632d64ea1839979d3d67d405af32778c", "0x1ac869e754be8b071a3ee9c64af49096439b98f44b15a8c6f4f5ae8b75a3849d", "0x2dc29a1a317499b43a5a4ba1b36cac1508f795bcc4431bfb0ea7028ef2fd32a9", "0x2ee8d03afe43c2b88599f0a35b90926ae6510637e2733ac0f6946d908de51312", "0x266d80fb5c10b2655e141777097040473cd5a4deda9225b8525c94836dd51eb9", "0x2e4d66f6559483f76f1f55682d1edb56c8c3e14dafb6beb3a02390544e52c22d", "0x10123aed5142580dc67408e337d4c773789d93e479e4fb44bd73218cf3db7500", "0x19526f25b7ebe2c461395e66f866ffb80b2992d53883100f0dbfc67f132a5a91", "0x2e77d96a8736e6c38fb67b935a55832b511a4ad8d86621f9bb313222dd37d656", "0x09f2c6c969d48ec291576bbcd917fd622c2b98ec21bbfa2df5d57324ffbb4b18", "0x0dd360058171b02326c9e4c4618c8e194999d6c4480081fa738878c3e1b11e57", "0x198a52b8282cad7eba3a3800b59a794a2c70949ed966c86ba29d9bcc37f29365", "0x17eb8c8e8003d6b93783e67bd14d12a9455684cdea4ec58d76a83a07b428dc47", "0x1fb9c160b09797e9d4eecc79c50e2658ec10d0f38ecefc1e3e8786b95fdf9626", "0x0202c3b6495a8af89ddc6e3fbf4d66d73e6dd13f8aab893174c0cafd78c8a510", "0x114ba7f12c0e1a3b12c2b5291bd8141bd50dfc7000465084a701f47b15763083", "0x019ad3e86ad82a3765aa64ea022d1117e1c230c02a6ac90037895728f82b3347", "0x254ff8ec9eca4d3fb26c72cd63a7d4e989bb1b9eba0d8bfcf7713dabf7f64e01", "0x0be8c9b5aee37efa93ee79b5ffc00e8b772742c601bf8f230252925ad2c9a702", "0x0c71775341a98ac909ba1f26ace40de8a56330931336abe715d2c1eb7d931ba2", "0x0b833ec8305c2cb5002b59beb9e58216a27ab69bbc7188e4302131e20fee9dee", "0x174aee31c36b81a6212b9d446065af8800a60cca5eaa1b16fec85c2e2ff974e1", "0x17831dd406c7785a5364d3939277da9eb5b6dff1e56fa35ff18506c64b2a8b95", "0x121e1c1bdb7e4a3574bfd1c3a4cb3994ac4936ff54b07caa0a7ca53cc09dc445", "0x0fb2ca5d37066fd7292478917498f8788bee33d3ed4904525a4145bce35fff1b", "0x1c131cf8a1d5440337fa13e595cf6d42c3016049ffac09957e69d0b4501e7ff4", "0x070ee4b2f7a90add1355f9cdbc3a557f84aacc648634b0ff48f83de4f76a5856", "0x0ac05c9b13d1f28281053b12af198776f3c9135d48f95d67c9314b2c48ee0dda", "0x0c95a176bf9b37e0eef92426ccfadd296954c0bca794929225cfdc4278961574", "0x16635a13512870b72fa81e4648421a2210c0b29bfa1a3cc9f41470a91884445f", "0x0cdc33eb19f21017be8a4cf0b37b6b12f801ea5c4cdb77a34cf176ad85bfa6ed", "0x0e876459770109bd315fd932ea7c69c96cf314e3403d0f93fdb3afd64a150472", "0x1f26a00bfd677bfe57b879c71cbc54ca913a4791d4b04e30437670966d840037", "0x229a17692c8cf3377225426ce0cba5d61ed5f7dbb5a31dd603eadfa165bccf8d", "0x21ae714094395df65267acb6549d580219c449bf86c33eb4f793e0747a6445fa", "0x2afbdd235c79565be2f6e2cdb1d527bd569adffece0cb39fe08bc9d0ec2ea2d6", "0x0a95c11af3ef7a0c585ebd2068bdfab2a1329821a17baf65a6a0746b38a4ac56", "0x2ed822401a485a621ee0b04f6f7b50adf796d225e3eaa587bcbf87c4ec0a19a9", "0x10f52269c0c47e3d8a4c878ba77b098d1a7e913fcd58f8a1bcd4afb520ae01b5", "0x0bab4900dc219d1a737b11c61bde5da6af375d36401c121e8ffe8535dab67482", "0x0f0f8530f0310cb2f6c999ee2dc694329a957946b2c761c8505ececcb2ff2237", "0x2015cb8f32acceab144d968136e87d67cc251752a9364b7759888eb1800a254a", "0x0660194d882e378a167b870ce7095e5ad119f66ff97465dcc929cb02aeb602d6", "0x0312bad9275ac67f2bb34610bfdf3c6989e89ef18bfeb3a5af5a3deadabde0e8", "0x05cbc68e5b05a1fc3e784569ef325011f839dad380e8e07742dc0af514804938", "0x23e6688ad84690b2fcc1d166fa6721105d36966ce9a384a0f659ab02a7bbe01d", "0x26201713078d367d68a33ce6ebb82ab55b6c116e534c85043fe458cf4d1f9120", "0x2ad17744e079b70e3175ef0cc86ebd7238cccd281148038498c47c733baef3f0", "0x00227b2456b2df3801ed64047464250e81b3bc1d20f3fb79fef34d38faa39773", "0x1936c25ab78e54a947a7452dd65c04739f52df324cb481eb9a13067364a0fdd0", "0x2aa9d353b8afaebffabba8ed09220a8121ef8cd61ad2c20cca4fe8d5d65772da", "0x2c37de8445ceb0e6e16551a08251fd477a57c36d493708f8f1503346e224ec73", "0x0b6016b413068fd8119603ac0ae0afdf94284916ab9582732584857312fc6228", "0x1c2da4c3fcb0215aef82e75f67b62db57f7e261792fb69195382b8ab565b2814", "0x0d9019e067b8a2dd481299ac904a14cb516ac0ddaa177839581770a27616041e", "0x0add8f2e12999625d665e7ec804c259862b99766997a2754498f1c10c708f516", "0x1b04c94fba0160faf1a69ae28901f6e58f265137c4e6eaff003dc34cc06ae9a2", "0x19b58c38a368d1bfb49de8aab145368123817e15d06bf1d887ca21feee481b82", "0x268512a6191579be4c51cc8bb8b9dcacd4663f69e60f295ed750430f6f7fd7d1", "0x13d268b42c3385b68c54f2bcb9f72457d7ed9138fedfc85181a048972d34e1b4", "0x2cb0a99448e388e04f5de4c9cba52f97b9c4b7c7486df3236c8f92e16200941f", "0x1f0101328d89d8c934d72ca36c83de0f0c9eee06ca36c551d8fbeea255cd18ce", "0x14262fa1b33f7ae3d7666719900f64a1387103ed4b3e1d995fdced66760720bc", "0x01364121b3d6d64c4ccdb10584b4bc6b0f747bbb66f30d764d0e60a796d30a5e", "0x2ffda5ed3ea18847ecd8fbbb951e83628462e15c24637a6a5fc443cc6445032b", "0x1b6a9f9c7c09354bb8f206f9fe4a9ca8e95c6e41b2df2945d2efeded3199efc3", "0x2954182782b8a9c2aaae675e5d8c81a38dc9d2ea6462f5e86d081770bebfd2aa", "0x0cad57ec1b88059bda6d41d957f17178beb8a932a29b6162675a6fee7dae1574", "0x29d6f606caf5aad785e9677fbaa1f8715b130e908aa7a5d6d88e08b3b8716492", "0x303a687f559ed6e770c9a84115ae726643fa16f4a9ec5c240f8981699f2f8c7b", "0x2318a5a800de467ac7406848d22ba7e2f2ade1fe67df255cd62a27cdad188086", "0x228ea9efaf3b18701d3aebf00c7432d13a6760e73767cba67dbfeac461d0a8a8", "0x2ed4c42bf04aeb7873c2fa14d564658533553d0cc8357cfd2c4dcf543b229be4", "0x1dafc53a1dee87dc061e12435c932ae1f4d4f6cce57d8e4f030eb7c0ed347b86", "0x181f880921711f6128e2dfab54440c2087ad7d0235beca496dc61aeae235db3a", "0x143fbacc8b948ff561d61cff210e8af82a0a500852d84ae29d8410e4d2dc7e1c", "0x06c4e0679e8b4d1b8249e09bae2238b91616a42094c69be83939570a4751e093", "0x14f7cda89bbbcd7cdd778ff878c8df66e2997ced3fed3091fa0b259c743347cd", "0x21b40bdb3db178afb97e6c8f509a3a54e4970c702a3c96e2a680a3bd9cd1159e", "0x02233afa3456f472cdfe3f610d0612f0d74ad9842d0ad08b826916d3a3b43bac", "0x195838cd762c2a0ac237c6bb111d274bf80900ff6b4956680bde41adfc90110d", "0x0982b8802216422f46f29c0985967102048b43b53e3c8d1e558b2ce81627f0d2", "0x011cbc741c1bf48f7080f491c26d116766a8bc51d9cfb6cd08163e569e5f546d", "0x04c26770bfd30be7f086c9c707f29e38a22ab6541fdd5d9491d613d3fc36d64a", "0x21da2bd83ee80170d4cb123e322f86c4aa2f2ebf85cb97bb19e8d7340ccfa556", "0x1380aa59b03b58c68d377f62ee0b3bdc06c1b2df0c68d503f8b0a95c17239ba3", "0x21309cec6120b32041475ba9bacb7aa507578fc7d428bb010fc06f0ea36d0762", "0x08792ccf88cf6e450d137ed7b5496295f3f9cd6376454346fae4717f7980e554", "0x0aef0f9086c9e942432200e8b59555695a4f531e319fd0d57f1881a55e3a037e", "0x0e0b748d5856936b3fd8f2eb1eb4c2cd2b8b8be4d6318a82cad3e0bac505766f", "0x172fad32593c374ceef1a42abbd708565d3591e8032c517e4595f3064155ae8e", "0x26f5f9ce4d72145d3e72c42c974ffdfc89a48c511bd760b3d9db03b9b105c4b8", "0x10e053336934904ff6d7b672a3bd2ca58728e5149a9582a72c1c309efcf7a407", "0x1f01a98934ddde51f300d542d1fad8fff4117471cab015d4146b05f1deb04116", "0x087cd7a95fdf5fb9d7f0431a0466625cdb42dc6237fffe77f5ba14c6dfa1b393", "0x1f9ae8ef71dbcd0d48a124bd265d37cc0c1018ca0b45e7b43796b045f65a7a55", "0x1571a2b0a25158c0c5d297a397715b00bd1c5435d2686c31618d4128c538f0c8", "0x2322fdf2761e45f7cf265e4d6272519626de08bbf5e71af17069df29497a5838", "0x2ca8980f9fdcdb1b35022e02f6be62f19355ca4b9eac9b2fdcc37df2ed0264f9", "0x1a8881c334f39420d4672c5050f45d9281424eb61545782a6c17040dc7d38048", "0x1f319a0dc0f9b7429e3ee9bed57a96a0f2f67cb5fcd92b1c9cdc97a15f7761bf", "0x2419336f26dc5d498f279af95b4d7d1211137c608eed29b5c9510695e1a467c6", "0x1f514d22f672cbb16363befa56678778209bd257ca117b5141b29e06e4bd5798", "0x28034a6c901cec4c56675311def10fbcd8088f2f68f795d3b35519bb1fbf1a1d", "0x26c2b92118cd2704063241fb919806a0fef9814c87b071d5a11efc2cb1103cf2", "0x03d539ea2ddcb358763861791cc434d1eefe731ad3262eda857c56a06d9cf8df", "0x2206f49436409e8be8f542926d9e299121b43210e71dd7970fb4283337d241c7", "0x0df25598607771039fef577a6f6dbb610ceeaf204eaac7a09b96ad22de683467", "0x283a898de5a21465cca3213af584b7f56413a9e84b524431436d0b136695664e", "0x26ab264e89611039dc9cfd4b216df44709b54f2418df66545c30cb93814e446a", "0x2210d7f2ef43e229c5631d4e701ef89ffdf1aca64351791e0fe7eed428493c8e", "0x07da0affb47d64b7edc682dabe5c6db224743b5a385d04a2474d52ffe8abfd09", "0x02ad8280ae5cf82936069f72e49010f8d1643cdc299f12ac096fd44c501ff9af", "0x267b89f84f4845e3924565fcf1a54e8a3257fe8aeef515f86cc1c0056f46f6aa", "0x2d46f5c35e5a81cd902f418b4b93f25abf802d32d52da054a5edeee276148caa", "0x20ae8e71570f8ae5e655eb42a4f274650226af1fe160a96b177854d736f2bd2a", "0x020b9b29a5644790a5a31aa0a724fb578f3650590ddd164ce5af593f43c798f4", "0x1390c1d95991972b3b8efa1a367383ab97f4714396635e8791395937010ef0a2", "0x04973b4363f1f55da12d4eab985012d32bd80bc0adb90216aed9574da9e97c58", "0x25f7a653fc5aadc4af0fe534953bc88307a20e941d7c686bc53bbe324d184cd3", "0x124d7810821f47782fe6bf64a7c5eacf03d559776a25e2f69de28362be180bc9", "0x2f6f04909dc360d1add503953c11648f726eb0f612f703ac1e378603d33309a8", "0x13c2cf1b21b786238faa93bfbff5c0921899ef1ab29548828a375e4bc00a1b52", "0x084c200f10eff59bf43cf3cc3a506de500ed68e59bce5cddf1137ec7d61a4ea4", "0x053b5ad5902dfb5ca36d76b2f980906b14ebdc4721546a1f5f1e9741644f2913", "0x23bd4498b4c0c9f248822f15b5c88bc7a78d528d3bd3e3d3b27af6033afe1262", "0x2b5ff61b0e1fe18cd84e352c417ab5b836683f28df1c16e28c08bc4fd269a99e", "0x28f774b7936bc5095e77eb655005ab8767aad076c098b8fbba8521f18a2485b4", "0x0c7f6d2ead683772565984ac819dc2c8326cc4d3b18f6339125621262128c845", "0x1e03532e35111565173f76b67ee9c713953757037b272b369b14bb5d22ab6433", "0x1cdae1682f2c10e440de32eb51726d9db76d07b6429675bfad7e778cc0bee076", "0x24de40666f59de97deeff6d34c873b7c2498f022b856c551fb4ba6fe033e4e1a", "0x0fdd0166d15c0f4266ed7296dba4b639040ceaa6910683ee44d37b08679f4825", "0x0318ee2254c3888ce4534d9090448b7a862afbdffbd4470dab55c9fa24f50a85", "0x07a8d19a1979c8fa3401bfe964ed5d3f3eef19d7e4d0ba007f3854b4904c5f37", "0x2846f15a121456f0f74b5072112a90ecc56a48d98a7a07f30eb553424a00b27a", "0x1295ad2de68e05b113031de854959d9858facf448ca101405407aafc1fe50496", "0x2745210ecc2533017a43305fcd13078d69443d0dda35be2ea50fc485ff8f1c88", "0x0dc27f0b35fec0e0ff8cbe131c7ee42a228d889cb8254c4900cb56ea784919b2", "0x09780925cdb1429cc17c1e70b0b43755e2e70602994e975d34c3fc31cac19839", "0x2ef89ecae1006a20f739aa4da6987bb866d6993fa89e4a2fbccbb9ce28ed58ad", "0x0f6feab3215156ac3f878ce67c5953dbc4e5ab3d131ee958275326ff94d29a54", "0x2049c1bcb035cb59a2350bcecc2a62f4fdb658108f059bc38c14098571a87d22", "0x09c5298f6696836b2a6544c9ca1c0f6448e0e6e4e0d4a8c3aa7e635aed20da45", "0x1d48ec8d786be28f71bd71994da04f787dc4b7792fe258255af742b348e4ea64", "0x0766ba3f360f9cb8d27593cee1d890f57350c235096d9d05633992d477ef2567", "0x18893956ce600734714ccfebc44f67036f51c652822bc0c23797d73a93d47493", "0x003ac5e6a3c0373c58379bf38c87165d716aca05e14ce4729ec91496dc74a1de", "0x171f4b3d04a6eaf7db0b86db0ba5be7d4451b4ea0a1333bfaa31be8f50da12aa", "0x181955a3fed4ff19d90d947c2f157f050db34c847f59f5f63ac6c03b55383aa0", "0x15e503ae66cd37b3a58ac65549aa1de59228f5e5aadea7035169b9801e58a800", "0x0feeb8aec6c963774b27f86a55b4594d54b4b30955e358490ea169738f9e6169", "0x0dd9531f7a34f1a001d4ebc74cb4ea4772b95519325d2989fc933035c68ad37d", "0x219fb59ac221747972bce66f78ca33c9bae38305e11ab3481aebdb9ddb4b2cb8", "0x1fd60dc0c476def3b624c219b3055373d73213dd925e940bf55ced88231ce09f", "0x1f8d07ef3e16cbeba789241956211cfa595452801f08c876c2525dc504c520b9", "0x0515741548eba397d14e6269b32566615d09447155bab001ac6ee205698f16ec", "0x2530b37d2dd1b6166039f29fb1d78e90e9034cb6e9b653fe7428d768f8e9b2d5", "0x1602e869d50b280951eccb3ce71715628980d648390e89aff50e55a1bbcad4b5", "0x233887217af672bbacd873f1285a3612796b0cbf7890463ede54882fc774cc7e", "0x1849b3aa9e7053c8e95252858980abe8f1642ec66804753f02ff63f0ff21d648", "0x1a0049780885e0827447af9ba9eb9e658ffd62acbac998f6c1a80dde5aedc1a3", "0x1ca9cbfa808ca9c85559425af31c0aec3e5934b6ab51a2ea2549fbc2e7562913", "0x28a2a0f0622c2a8e4f16f2e0365b72b481312d8d5087e2e58ae89b34b8cc93a1", "0x21d1beed10bff96ca9f615bded99674a7331a52fb3566953e6ddf9eca280153e", "0x187114f2bbba9a993297bd740c2735ef01b85abbdb5b47c41ce6ecf2fc7edbe3", "0x11d0a386775c6e670a360a6fd957c403b434ba13f72cedc39d1408bfa73fc06c", "0x0ff4ef2f46abef24ca15d8b389e02cd3944d1296131b6d2dce954dd11d724f65", "0x20338e47b520d281448f3f8bf008aa743f74c5b63f98a630a00108464bb28925", "0x256fa0fef5853dc10aefa865c5653169397d545f07584eae65e1b3e50fb6a616", "0x144ba3619d5fc9d84f0632df296e8dea5017329573661b69880c38ca45ae3189", "0x298498c8df31dd315380b3651fe9c7ed5aaf4a4950a66134bc8b6029472a3564", "0x18caf9e264a32dbca23da51a3514fba92fb62f78ecc2d844557355ec8a43b0c1", "0x194c812828f1cdbf0c4f0b0486afb4c5d96ccc218b3b90d04bc5f1c8665ff641", "0x23f93e1c44119ba856a10380c2333191b3105f502a61eabdd8b1abc803c04ae2", "0x25d2cc988e47ce70fa99cf18105000d3046717d839af547edc3de931969ac006", "0x1d1083600023cccdc7daeebeb19783aacc6e94226d00c7ca44dafd755614a80e", "0x1943a9ef811abfe657fff92504f2a8914f09dfdd5b979911047bee4b698004cf", "0x01f96db1392a3ae5cbfee4c1863f0bddfd95a652993c8f17ce18869c261bc6c7", "0x12d4814ebb315331d4fba9dfc2ef909cd77b1e7126c9e6258a3c9821d663d778", "0x27a2ad69b9eb5697b85b431eba85dbb19843f3c7518121aa49515a65ee552e30", "0x066f7f2981ecc4c4415da62eabd3230424abfed3567121f656e8191a78c5ddf0", "0x16e298f60b265f06f8ec9227e54e8bbcf2b4823921deb44f063c92430fc40a12", "0x1c10ab39cb04ce02ba72d996049ad688961f60f8d9821d1716c5a6a2fe0a9734", "0x2cd7c8a78dd99aedc18c8d47452b4d5b2e9c5b2128eb373b820ca8beec970a73", "0x23391ac9f29c1a99ed6fbd9bbfbe72b488569bf9a207addbd4e30a3a8b97311f", "0x3041c5599a51eda33a6398eb31232519797b00726702a98a319c7ccba9fed2f2", "0x04e64908d79f35ed77fa8196f07a948c848512b534d9bf4f30ef093c797403ae", "0x19251e907d7a903bfa7bed87eb04bd921dc19062e4ec3abc9e82b7fa4e25be6f", "0x1b39681c2c125cae8d38cc5ef6fac252f4f82374fd5b9059614ecc134f2b29d5", "0x217a54dd68dcd53e336cea49d89925fd128fee65bdca131659d324ae636696b0", "0x2c054bf6f91776020de3fb9705ba29e0df17d7e1afe61e11eda8caf78762af3c", "0x1f88611d6c0287ce53543d87ed8182ba475f6e223989eda35d1ab746275fa4e9", "0x204d5a9829d570e203bde491b862a96979d71e480ebffbb13c4cb3af566371cf", "0x0eac95c688afaa773ace4856252788170baba69a6181071d1d1a4e0dd320b4b5", "0x2245a0967d777ac5160082563d5815b44ed0ff9e4305c65c503e0ffebae5dd2f", "0x1b732905466ad921ab2430cbdf772a816d1ced4dea6818dc3cedfc67ffe5ffbe", "0x08caf1a4cd826d19e1c27f970cad05b2d49931bae369b82c30011041879f2894", "0x27d8134423cd987b249f4bedc7773fb7b7314e8c83d9727f3a21d0f162c561cd", "0x09a2ea37b3d739dcd70862ce62a8837dd267c22a29eb050ef246edd84f48f9fa", "0x1adcfb436b238f7461757a9665d2dccfea1c7352c59e5aeaa8ed24b8530bdfb6", "0x2a2354db535feba0800ad6659761f29aab31c142716e16779583c17d3cbcd700", "0x01031b876fc704c3296bb38110b87476f88f5721a1132ba71ba0dc4168719a6d", "0x0b85e9fb664cc3b4ee539936f885885ae543c606fda007aed20257c8e4ee3597", "0x18067bd085c60da630ab24cdf419afda09778912d5c76ebfd9df7ecff6207186", "0x03771dbe5c3340fd289917d6fac9a154b6d55d63557af13d9bea711aafc5e1db", "0x03a120381b15967cde1a33939fca7830caa1af1fbad6d6cbd4623592101f1f77", "0x040324fbad7390bd98c3553232cea681d4b18be857931218fbbd1d394d67f781", "0x294a9378accf723c26266df89bff1a2bdb710f198de168890dfd73acf786cd98", "0x203d8640466332ce0c493396731a23b85f77cdd95880c457dd9cd46e99bf0f25", "0x0d339481cf52ab1f652ec8967a89776e92b6aa12056794c9dc856fc27ec91ef8", "0x158be4217747076a28aa6f617c7ecc6045c8ce5c484aada197994b618b37cba0", "0x2daa17b35ac2ea21eda36bb06db40a7fa81fe60cda556d73121dbf17c8a05ebd", "0x1a2f7903bd643c61cc5eb68455202f6613c9c03bc3c59a8cd7f8d10b0c779210", "0x1ca7835f4f1c5f35aa1e0054afb114769a82474b2f9f771227f022fa762ba56a", "0x043ab3c95b64cefa7f97e1e8abf9db25d64c2213bf44b01b0005fee067804beb", "0x0eed1694086cdd6dd84002c69365120cc2318283226eb7dbd9c1154e5be774a2", "0x031b726aa5dda456ffac29cd38b64926be57a1b6c1fc593a50e7e9cd384f7ef3", "0x2652cfbf90110f7727750d68eeab7a49385886953f75832be375c37ea9ad6750", "0x24a58d087af381a6f27b0655de795b6a7be734f05a4f4edef0572279a28a3bd8", "0x1b04d3e92a338f6beeb8091382d93141b3bb3d033294413a398da24464272a42", "0x290b9ee02a3a29eda94ce08a6752191c3c296cc2c044edbbe091172360b24c1f", "0x2a012d2f441545c914d25d0cd28fa8104cda2a080845c79cc7d0f39146b0b358", "0x01d4e5bc180cedcb8ef0a59d25498a542e324cf0f7128f707c433eac1eded47f", "0x054659f012ec8b757b1d2a175a9fa643e963238c342264ae9fc39a69d75462a8", "0x19fc0305e1e5b2afcb86a742152ba895ab024ac59c7b57e535224ffb807dc720", "0x21d1fd0c2affce674ab016661a216f0615b5bb1f3fc3985e9d74dd71ea86ad66", "0x26956d93f01776d23bc7f1e3464992581adddb48176bcbb03efa853ab09c3b17", "0x2403120e5a687895bcbe57b5b11fba0d963eb0c863d8aab74112f512ed8ad9e2", "0x26684fa9b9548b08ac79e7a14bc28f8d47650312f0629a40bbccdb590a298cf3", "0x216969c221bdc3daa1c2adb9be456ca19fcb948de9725fc597ac626968715c18", "0x06d4e54362d5dc7cd489ef466713c1b8a703876062ed0366a475ae9ac0776c0d", "0x10c21ebf642d38aaf3de15ac4a0de3b71ab9788b5904a78326ef099a1eb953fa", "0x0a4b8e91b02da94aa621acff16bbdd44f079d29b2034a9e1dd8be270e7e3a803", "0x2b1a5b52b5f1c739f8e167a8561b7c5a567fd449b61e4aaa2965f3177badf7bf", "0x1e858a1edb097f168f10b9130e51d5a4f3b55da7fad6896298f14bb7af4e6356", "0x28362c3ff6abe4fb017450c7dd344bd4e08100afe5a09cb01877265967aafcd3", "0x204e017d42e6b32cff2091368e344201440854761a0cd463766041d7e38dcd44", "0x182307aa6e06bf1b20cbe534913a0b561e310316e23540f35f1bc9ee437e92aa", "0x1ee400aed2b9f1ed67a8116438ccb7bdb8d179868c1fd6a6dd9497744ef9ba9d", "0x288590acd331f4499efc2e7e8aa2656e64cbf0a68c7d928c2220db643db9d410", "0x008634f649b3d25022a2125f5f300d2cce2cbe122df4f1c51296e6b65fff1795", "0x03c462cfcb45169d9cead1d0715c8cecffec77ea449a20882aeafa4aee274e6a", "0x18fd54d4986a2e7804cbcb77e6812c06e7b8e28ca51ae323e56d9094782a30cd", "0x01b9efe04a809a43c624c726e9294bdcd3bd1e97cbded742e2173d3fe9e429fe", "0x109ca591b9350c71a7f2886c6e55628b38206223a57c07b2a4490771c921e2ea", "0x0f98134e9077529768e4ec3dce4b62ca6baf8199d78c7e35f451912a80fb1bfa", "0x2205834ab1c8a66de1bc766adee18eaf689a52beae8659ad4d0b437bec229526", "0x292a6caba071b9fd8fb5f0e46dde4d711bb4a118ad0c67e77a7637544bc6c21d", "0x0f218ac63a89d96ea37d62ea0387c145df2f14957bcf5c7b5b2cb9317a871740", "0x21393e5f2e1121136a25f071465cb85b02b2fe124a8e4ea83181891a710b0a50", "0x06e22d6946484dad3f4ad0da41be11da2aa5451fc7f4cf6cc5898278a6747bb9", "0x1ec8117c5590074a29a019140efd1c627b715fc464f1d7ac9d47f0979a4c59c7", "0x0e6f5d2ef82945dfb392e447138bc94c32bddb72483055a0563444a0e4f6dd70", "0x169abfcb3ee96d7e02f9711eadc0a9e24a47a2f9fb1121cf8c6dacd91a5b32ca", "0x2d1dcd8258d2c559535ec62861788dea60dd42d7fee0cccd20a6ae4214d21990", "0x1f8a46cec465bba964496d25caf9a351be7d09a628ff97eac4fceed7bfed5c45", "0x0ddae5753015e7c1f3b07dae4be7747398c9b98667aa13f80f768a2204620b28", "0x1d961204697279203f4721dd0858244f2cc64c5cbf1a4bf1077a042ebf11af81", "0x2611bbf19addb97f4b761abca43999a4b98d758bc74ed3719bf65b172635abbd", "0x2c93c5c5b057f52c0b3d54338659f05d1566d028c1816bfbfcf9003593b98190", "0x2a926fd3e066a9fb75f76fd02aa9996999a090450d11ee1a87a1e0e65cd287f8", "0x211dcee0fee3f8571fd96f2b5c55de1139807fa69fbe79216563f6c5709f72e4", "0x2b7ddc28b2bc2d2718e9d6b4c790d55834b77906de2d4ce8b301ac35d33bd761", "0x17ba5159321a180ddefe96bc9d0f9ab7f44bf2e55174b6a09029b9e3fd83e0dc", "0x25e12b63262139695e50a1e96b6480353a6dd6a1bb980c20f91fd59e518a030e", "0x095eca3482e28057b54118da6c45a3f0f5ae53d67becc4fb0ca2e96e241016b0", "0x1112aeb9622bd2e00306dfa76088ba87e8d9cfeb83d756b40acb4454e77e3ab4", "0x1b69507de83452ce3977a83e01648114afc0f41974a6ba962f77da7ee03b2353", "0x18c36a227f30ba8be835022cda0891d51b2049dcecb5261c0244336342681283", "0x032dff6502adbf3eae1edb0aa2a142c2387216dd501acaa18a3565112c3cef30", "0x067e9b2df10e463ff4e65fa21d18b8e7b5c55d217941207850d984c264ea64b9", "0x186a8c1ddfd9fb6731243a6c190d74c258076254fc4d851bb67c15c855da68c9", "0x25f12e0904af730ec68920122e8d7e83e6db7e0d3818d82ab3f5179652acf1a4", "0x292a053be9013f374156454727329ca30c50781b7f68371eb082974914cc2f8a", "0x12867bb541ea17c532cde157ebe2ff6f0a3d3e83b956e619951cc99af22e3d7b", "0x09dd2a75726a265e98ab42ca0d013e7ba2e15b26100516e0eab737fb70049b56", "0x137cfd0054dbae6b635b4e4f9e6175226e5c95c45e5b2541334f94dfd93b220f", "0x0d14636d7b7afd1186f0b9d5c8f8ef551beac7bb2d36b25436f04bf7dcb60de7", "0x1dbc81002d8a5cae1fd910532f08a4323c35781c2b901bd722babe0a5f6dc613", "0x241057b0d9977eaa50e04ba893702ba182cdb3388cc632907f4c2081834d8da5", "0x07ca75c9d51c65bfc2ca99c9c773bca2bad7b498370b5d50e275a88cb6b06339", "0x15fab6f34ae8d22bdedd760610dd463d881cef8ce82fe4a0c0f860502f6d3cc5", "0x0cf846e67ab815b7bfb255008733f8b45d83938e6eb0dbd19e6d537eaa581e00"], + ["0x1512df0135b6692589f071140a60749cf775c642b300da2fb4ad5c6e23ad4e5f", "0x2b109ae037ed30361cf6544b2f4ce58f356589896d6a8849482ed3f9b66e1198", "0x02585bece06eff553d485478a19eb149e2111ae4e1ecb1d61fc10cfe1c077f34", "0x01ff896f4c0662f4b2ad926741b481d03b813a8cc343b9c2d2bc4819c70b2f3c", "0x1b0caf02f434fa3d4cd4fbb13d3116ac8b7386a5afd6c67076ecbc3704aa45dc", "0x0fcb7c9f13c85517a7805894ac82b57c06f2f153a6f51f60f8e508684dfe5bcd", "0x2dc2bdf7f43812e39cef210e42e92b4968ad8bf554541182354504d32cbf9954", "0x05add9df20c1898da46bbf74594438beb07c9a65635c90f45c0a08febad13664", "0x21cada6641664daa997fd55ace8b88191cdc4194fbdbb6ca5895447c8a58859f", "0x19623504589a60f058b04489b153324d16ed66667a04df572b103590b848bf04", "0x1776442d850a436a005e02c6475b72fd2d5f84452890c444162848ee1d57dec2", "0x06c1691fd6d2ee98396610f3c868d70874f24eff853938d87face89234a09a98", "0x22c3aba15f3a170a1bd11761cc21794a7afb348a45d85e30bc5227881493f45b", "0x1f77b18f06e1458877c2b18cae4e92c196c0be0f779b9e63b06c48e90b0274fa", "0x226c3dfe7a6a67319c1dadda1b4ef04e45f6b80a78ddb0bd67e363e63b85c546", "0x056efbe3aade68e6886ab92e98a3d28a68ca89d2fb75706f6946a0081f01f621", "0x296406451f201c0d09587b7f4e00a7d0e1940260d48313de807fc2df0f755d7f", "0x2000e0b6012b20f09df8eed25b095bf22e75e2a9c87e478287700b593356f84b", "0x227f3766b6642d44c6d836a17c30cecff654b544ae8636818db8e27db124ad31", "0x2404641b2f5dad9722542bf151d497e9199807249b886c975f26385dfb254a74", "0x037493ac64d1deb34b9b83490f35170c4212d2c30926d4e4efee57baa652ba7f", "0x18ea07488f02c6925f4b01d01b809c9a6325ecc7d9c790922b68ce5e7941595d", "0x11952bfcba06442b3c1ebd959f1d4c51f982f21f994e105c2578fc4afff91c91", "0x12be2a32f27a4e203517ab2028e65b949f896c5becfe57e24c0af04fac720544", "0x23e8097f69bbe45f02faec5e26dc523a02153b9ef9e8bb9c5f179dfe3036c358", "0x0763fc4b7da94badbd97ba933613c3534ef21536ae7085e123c8d3e23235136e", "0x27a4fbd1c43e0ac15eac974e0ce2e25344c46c3232ee713141938cb019b3f907", "0x2dee4ada593d756654dec12b86bfb041ad785a56707611fc4845f4d849e7f86d", "0x0b5151d0ddf61b2291772eb93a4e3e211f52124338cc70f3d1ed95b0e9da3355", "0x2116e26c7086e70c806605a1671397d7c073bd016d370ab3cce7c695a7eef96b", "0x0941849147ab2cd8d189c4f8b17b5a9731e55f2d143f0a76d00023a38e4efe5e", "0x2ba07a6f84d2d2dc2f1b17e2352deabdb5d1e3b92e424cd6597c77d9fe672e91", "0x1aafef7a2d2f0516b4ef8cee33b4e8fa3a1776fd2955a878ef5d227d215a8071", "0x19434cc86e2f53e5db3cebfd2db52b402fa26e29c13bc13f315786d10ea01dad", "0x075519c0bd7a6e6fe4bfbdf61addde94db8427580193e2ac8517349805b6623b", "0x12165d475cf1c4baf662bc6cd8744f9aa4914a1d9e53477b211e853eefbde02f", "0x0baf434f56cb6bbd08a0a58713b949b54c441ede53eeb0c4f9a6a4047bdae7c2", "0x2e295b06bbef75a6d76dd10edba1eb93b287261bc8456ed91c2bbd0998444ead", "0x146567927180cac0a771d5830f1431d14cd2445f5da16cf934442e7365847e4f", "0x231d26e7d3ed945791a52013f46d02f5f4e46c17c3047acafeabe4ad02cbc44c", "0x01a2f5ce4406246fbd42a57e6d5ae3b2219261e364cfc1f2a392948fafae1e76", "0x00661cc8a39d60be9b3c8bcd81d91fa8ebf9aebf9829c253385cf9f0e3e76b39", "0x1f565da70f04f96f26b3b36265f977dda09b43bcc8988930dbb2079fb291fcb3", "0x12fd46d935d45a5c8489ae0cb02c2fc0214b40d2d0f3ce442a28d764a9fb0821", "0x2924153dcf47a15be1fa67f8ddf00ec5c816868c8e91b029f4afbd45fc52ed0f", "0x1d4e61f8c6455809e19b563d168b4bbb87a92674346f9fd628ea5d20eba0ff4c", "0x2c4e7acecaca8e2ea9fd849be562d4d5d955864d152ff339f2b2c7cccb4ec3eb", "0x080300849f022b572d62fa787583b6c9b1ea7520f3cc4250abfa8b4b600ac986", "0x193a37fbfd3671dbfe759399d018df64cde45f75b17733294e87596a304878ce", "0x25e2563688957cf61178a5f0073ab7dd28c6bcd12ebbb9a3f0656ea0ebb87c98", "0x1e0d91980c59a652465ce702e4e8de73f9eb4217eae2514566a39db44a09d516", "0x1391b258dafec594799dfa817544e8a907fa794af4a411f89bf5752f36561fb9", "0x12c30d5f593d4b0b80fc8c967c2a50c44828a4175195e47a97cbead60d026925", "0x209ac8a2abb70eb33f20d5ee2b44ef71f2fb317a4cbf004c89e55a9e37aa9ade", "0x0bc7ad09a98b59dd1677ab30302fdf0c90e54506b5084c5c89691a364d268ea9", "0x1a7462cd2353a35701592a1c54fd363747d3022cd8548ab8c838c8c163401a64", "0x0e251dc6fdd76bdbebebf70808d052504204fab54c4ef63159d064d68ec5f36d", "0x2aaa85771e835599b13e6c43c0228167fcccb380aaf7c8e89b4610e586f8f9fc", "0x2c429c35219ac033ca9ff5436fffc49c3ba01a4eb270259f6e9a3f1c3fb61414", "0x011a5a9e38934a5912bbee49d509564c994be9d2e3eb615468b22a72fc324daa", "0x22a724029f009c75b8a4358aa7636d13eaebd37cc79587497be8ffd58b4b6c0e", "0x229236c15bb19327d244457a311d69f07027cd95fc152a84b6e003b841c337bf", "0x304e4b8a0950a39ab2943c3b68eb6f16850a8cee4582fe4a8828296356811696", "0x0834178a75d083a131ead09424b3e3e969de53bb2d20f94010883f837c99f9e4", "0x105cc405ecb40ae3f79cf5b9bd76a7f97a03f9a076f8a1a22c10f4492063049f", "0x2a37b4b65f08c8addb53e8f024c07e47b2885a065a352a46a361549e1f8fa288", "0x1078c0ee085dd1bd24fe71fae426d7d6b9697d94e17a7258757927a864cfc9ba", "0x1be49bbab70ef67a5d4e1706624a22860cda286dec7c3a2c99c0b5f235ed7e2d", "0x068ca82d18b3e7dbbc769a29559b1d87edd0822384d2d4ce9b0efe2c63316f3f", "0x2d8989373a556639e33f298fb049824969a1a284b60053edb972a059136ad71d", "0x0d3e416c0ae12aff59d8dd5cd5dc509addd3f6390db216742c517f2df71581df", "0x14b2a67181fbd9c813c7babc9d1f7a7f1febf9f512c12abd0df3466a29b49bbd", "0x22cfe9304894cf79a84cbb1b6e0b577d683b024f0d5a855d0c86a1bcb432bd8d", "0x1adfe9a64e8029331ebd2fa3def2961f5c955f5956d61b34c02d0b062bdd2a8f", "0x2751b2da7db871ba5fdb40e0bcda7cab5b157b5555168220cf3b7969d613cf76", "0x057f90a4c08130418250b790236f23f3209e88ffe2bdc6a240a812f3b571aba1", "0x0ad74ef09771099c040c2c546719783c39ebafd5ec2a55fc8399b04ab922839e", "0x0b00c2fa7613b52e25e4a6cf633a33355badea435cbbfef67523e3b3b1b73ef3", "0x2795381be694e0991a369e8e6ce75e7df18d38c43af1bc588cdc65ed8e877b84", "0x09177d18cbff59ce67ee76d3d10d7df12fa0bb1dea660c3ceb006a6a3021de2b", "0x1bc77e5718826efce52a86b8610d9480074647bf4b3b9fa3707b681c1a855a43", "0x2f2d128b42d32102d05761240817ecbbcaa03d2fa45c5cb2f82c1a0c048cebb1", "0x215bfd258ebc79352a7a4faabacb30840f7eb357edd21699d5b3261b5762880b", "0x0e6b332b4ae5b95d518e6aebb7a07fb4fc09235d37a4133a51be17fbe9f8274b", "0x272936773fc1a38aa82f7d3172a2477b601e1015ac0198dc2880a21bbac65420", "0x26bc4d42a17a0ffc93798bfbf2e2b561c15a7460e1afd9c23af7ac2a6de03427", "0x2d093621fd40ab76ef16fdf49a7923d2d12c0228f8edb9b86959684611367ffd", "0x0275ba0e2a2a4c3b1f5d718b5b8cb8dcc4bbfba1b7064b6b38330d950cba0e84", "0x1ed6384ca9de788c235c7fbf0c31a59b861a52bff2847af2ab22592487879daa", "0x2c337c808bfe0d2cab544bd9af01f08f916d94b7ce0729a08cc4efb9eeef98ec", "0x2d3e0934a4371484c958df1e97e7f0f3984b5667539fd10c3e8e71246adad09a", "0x054e425aa02adacfeb729cae9df1907e4161302289467c9327ed08e35755cc13", "0x024957fa9d48f942073ef90a54cb0632c89a433ecb236d18f57dac5aff85ef96", "0x194b561a91334bd0dd4eaecfb94f03ebab927fe5787f1723c2535944b2fe6971", "0x1f5f3bb77a487905e3d39b2656b91e0a8223226a3cc0c7a473cfc4a52c74ac03", "0x1b3a3afed7a0821a684fc0d0f9ad9dfa3b557c6542bf7bbc5cf01bd3369cba06", "0x2b96619ddc3b2a292fceb07e2aa80c86ad636ea7d6d4babe8d2947e069390736", "0x0ba31e2d1e807374a710cdbf81f05af4faadce88ead0a1658b0b481406613177", "0x25d7d5bdcb74b92b74a604d6fab3b2f3a228ad23360e4def3919146e8c44fa52", "0x1ca9f911f0b08d1a6205925cde7aa5fd38b061095621152e8abd01654380fadb", "0x1a90d4e090aaabf652053435e3cdea5dea64527e5c841ea9358825e2191b48b7", "0x0caaf3b76909b0b1e1c7f4ec493f27501f5e6f08369e8a36eac406f29c7854e4", "0x1c8f94286e329069d1e80b45787cb308ce214b04999b3b99531d103fd2577cd9", "0x1acd43271d4b04976db5ec42700e83fb151359f9f260a5b9770873e3cb98a900", "0x046cbdd4dfe88c67791bb0c5ac749b5cdf44a3a87e85fc7bbc19b7839647a704", "0x2b4b03cfb4487c1a19d7c05ca15133be29c9d3f3051e4b01fa4dc573eeebc2af", "0x1a9a01f0040a3bea6124946a77e67fd3aa4fc6ff21ff5fb49c852ac59b65e5c7", "0x09eb5e077a7d0110673a617e59369830acdfee50de5823ae0688e60714292b6f", "0x0d006ce7c187ec6472562d212dfc29f615c5d119057ce0c721620af6e4666fa4", "0x054bc8d659b31001a2a529f45640a998dcaaf2ecf1ff8fd3f206fe34fa84722e", "0x1ca1ff244c5106ea88045116081c201c6323698c6b68738166af8e7f3f8dd9bb", "0x04f254de8093f3fb3330dd7423d9d9e17357ccb34a3c18e94019627610cab1db", "0x18fa6af934100cda0123fee0b5636b693692d91cc832f87c76c04bb20950153d", "0x0bc175cd6a0ad546d33298d27d2ce18ffc6995f153f6bf05c59c09a4eeeab142", "0x2e2b792abb6b6310e2cd5b188fdccf53028d6ca70604e36568b15f3408eea618", "0x1216fc0f6e7ac8f0ea59bf7840fc720b37848e6dcb0c77f253e2cd6833aa3af6", "0x15381275074173542cd250ba7cda6d1be6c12c44af2a00a11fcf0787421d8a02", "0x25aa562c4dfb0a38dd92e020b4d6f9b2769341f381de9c27af0eda1453183bcf", "0x19ac9e3549ff20909488ab728a6e88d10a0f634f771742a517e00bc2cc7cbe3c", "0x13c02339462d082f13ecc8ded6b2bcb26a8005a9ab55ef69a91f847e760bf302", "0x1fef0dcd8f5858f240c8986003e577a276a3526c6b45f75403e814a0bc620a1d", "0x031d9be212424a643c6c9bf144d81a06e6fc9d68637a093889cf3c7fee5e3ea6", "0x1a6cca07ef30d34314047214f1a8729728b8dfe8c0e55bea3564928b07de42f1", "0x2d3b9eda96cf186f8e0b5e1446543281931b260a3ff043c66cf232f4909c12a6", "0x07da58325965bec24b4d12d606fb4563a23a130e98eee7f7766a4a3558b5d6af", "0x2655571c23f7f1cd1be67bb24d4c4e7cc674b884b9c58ea8165d2934930d6ffc", "0x2e5ba95e4a2ce5c433f15ab0a026b1abc2b2cba256c61706b6997feb577a42d2", "0x3000c7959df31ee4bfd1118c7ae22906da8d802d9c47855050117926342bca87", "0x10e13d0881d27b08cf5b64ceef72c428ef1084679b539b058c81a17006abe053", "0x2be2a93b372be664eebf809dd873c74122acb3cf5abaa6c215871601b888f489", "0x21310218217a726cc850c0a7dc919d29ffa8b61ff606390b2eb0eca95d4465ac", "0x14d907f470707542205bfd78df274bdf24d8978959b44dbe9df7a7e52114a7e5", "0x05acfa1e857d8001ce311fd3b5d9eb3a1c92fc6e5dac2466c0af0b277816a3de", "0x123ffe61d17cbd6623ed486af0eb8e76d04de3a77a483c662b0b5cb98cd449da", "0x26368aa29474645edda1e155a5cf0df1eec95f4e895650810aa77f4ba7027af7", "0x21050e2060dceeb56367512af3fa11f3d2e6be9b72731255b05be5fee793f880", "0x22ee0d90c7d715326a0383c7abf6824b9d936af296756129574bc79af2fef0a4", "0x0e457467bae8c132f687fc06235fa92a0bb2c3fde1ebbbee6ef83729f25f3c2c", "0x1dfb9cb0002a56e38b73913636fa56e26a3b4de751939d5eb09a3432a3e29638", "0x06c5f60480c00ca60c016f34a8ae166b6934319b81ab4b27beb44a133839dc16", "0x01284904157c07148e61e56297ff04fdad394a6990d4e47a614a00999e4b8e78", "0x13d10300ac391c78f9c215dbc5d2d461b62cfa5a3ac70a69bd470be5d82cf32d", "0x063d65844b8805daa8fd771b07c278404c728b665eb17202297266c422a96188", "0x15e3bf17c52830ed3255cd5c1149f3618641d6e7fedf468c305d08220dbc8a38", "0x12bf5dd5c3caad12e0875e57e19b10752d9651e3a5dda05c0f66e5bf8faa3df0", "0x243c3b797e831a55046ae8916158fe53648e21e939400f9f5eb67d6c0cc094c7", "0x001e28fa9b34c2c6155b8421edd4de58c99d1e5e81e92345f62319ab96df03e5", "0x2ad1dba5506ee064064963527bdecd823cce0494a86ea452d9b4033623f386bc", "0x23137879a024cbc1b4810ee54c7f9b85046734145f334a7cc1e4a57c740c8d82", "0x074f6fa62972968e22189384563d6752e30235da2275481bc6c3b056937c773c", "0x22b10a5253716d165a670736ee243de0627619378edbf751b46bda0b12dcccf5", "0x0c190040f1e4eaa11b4fc7046995989680849177ece7bfef7b446513f9ebe112", "0x301875852c9ad256211b7f9f31ced8e2256188d32c3072c519d7069b0d10db76", "0x1c0f67d05ebfd650d22dead7a11130322bc1272efae98b85c815db6b318dda42", "0x286e9a17364f36946a3d2c7ba0612fef3fac60b0daeb6e973aabebce587a78f9", "0x2b729468126eaa101f4233baaa099d02db14fe35c48580eb3165c61ddbceb52f", "0x1f30f71406a5da98e929062cb48e0a34e473e832fc0ce811c28f09a31d5416fa", "0x259546f8419fa15978ab360084fe0a13229fc11dc698db8bb81c822e2c832173", "0x06e36124121afaca19887a7ca428e12c0ec8faaaf5d733ecc6960bd7aa5d7deb", "0x10f1ce0bf57c0778bf4de60a1e2bac8892de6b7b6ef2f8de911f731494260be2", "0x177fc951f639fcc274b4ee28f3f7ff560d6ca0d9f930f53d3abb55e6d75ad103", "0x1f34032aa46cc08d68555bbc2469a66a2efba23c56ec3dddc5836e2e919cd610", "0x269cd0b774f8625f5de7519be61857cc9ebe06d10610dc91d9f4cc57111eab41", "0x074f437828140fcfb1ae00b38c29a5080f0d0feeb99d4688ff8871f6349f3c66", "0x0396f2fce8cd5ab3d2601d37f80fd9775aa5e9f56b406f015d9b095fe1905945", "0x2e03afbff73fb05f32f50239907f48aae1aba810a6312480cce343ec663f210f", "0x2ae899455a6a7c49997c82bbe36066ef1d6c22d8426af54d2c74970b33ad2a90", "0x2bfedee3eaf7340a10fc0971ef0003dc87cb997cd687ef9f7f88b30c3def2690", "0x2b50b39a43cf9f1d9feaf04a1f100311e78932a68051e792c23a99ff95139a00", "0x24d16eb1fc9ee39362dc66338ea0d275147f8a7ab4b62ceb26dc3e2b16c3bbbe", "0x1539d4f6178da10200463590c6efb1ca7305bbba935e5a7dec940e236dba2f71", "0x09e85ddcb02bfe0709021dc9b9f4efba2ca7a04075a78c1bfd29dddbc7be7528", "0x01fe7f77ba2c018282073ab4d222959351f7cc16cac7e1c6794611eed06a3813", "0x1d3220cf7ceba197899e792fd2b5165807a83782df55438cc8fcee6ae75659f9", "0x1364bb46fe7c79bc9156a13a8c86b77d3425391f7ed124a035b94133404517d8", "0x0b70eea0fa95971c52b4c91fd9cf6ffb5de97e63e364028f0c0b1904b075b06e", "0x2a9ab96b4de33f8ccfdccd8e86510e8cc731fe673eb289d15a374eb0d055d217", "0x2ec7ab4d439e22d1d97eff2501e94577691d28698440e7b41190a8b8e0c98525", "0x1c1b59ff9212224422968e7616ceae71573b05c99e4bcb26213126fe4dbb5de4", "0x1fdfaa4da540e50d2bcd1a2a0975350f969e3492584085f7dd3fff9d8814cd49", "0x0cc8ef6a3dc250d7a4c94bb890be797b91f08869a99391caf70e2effdf7f0866", "0x09e595faec8506700a42a5a41190cb6b9f79fae9b601cc6567569e8ee9e24813", "0x06047cdc0ff8bd94c6ab60e3ffea21912f0101a60bf6c2e96371be54e63d7346", "0x2e40288a4a681e1ff5318fbfb796e8b7f0b2facfa5c9e691a1c4924fffba4950", "0x12616992bf6faf5144c8ce58355ec2b6e20a7d25c7dfb13460b0722681596807", "0x0a78425d56372af995d8930d48cd645a6e6b45485b4c06fc38e052818b5b3caf", "0x0fe9c60a64dce8b45b53462ca6e68be325d8174d067471295a983cebb1c9a0fa", "0x2e7aa9cee7624f71fa4902971d07cd303319bf41007bdc4ea0fea40ef97cba1d", "0x104690cf04a0666f4921a4ef9f808fb9a3bee6192df0e6cdb15b6f302f476c8d", "0x2e63c4212a402284deddf9ef260bcfe7a395002e22c9a6155930533b29959471", "0x23de0c9527d4ede516b956c9200315866378510615815351bc58d3b5d6ad7826", "0x25439ed1737440d79e4be009403949ec9d32a0ba6ccd7fc5158ec97c9d32c447", "0x14e35080e8da90b17e72b6fbfffe126b09ddf0c0cbd0b226df54958e680afe90", "0x2e0e87ca0a2090d9ae1824cec8a389e001b3c0aff73e81bd25847ff0a45d1fa6", "0x1319e0f608a12fa01b7740a8e14066b880f0b650831d8f424b6af3fb361c6deb", "0x262b82f1d1d07bb18b9920597c3925a41c0a61436b71d24ee7723c7fb8875af9", "0x27773d7ae7ed008296a572adb64f4fb5c229735b259c03d4c439ec2ae468b77f", "0x05a65188ac6d6467e028dbe4b941bac5a81240e80837a519152d6542a5f4074c", "0x00a2a8b07719ecfb2c94e90f8e045b18ec455f67325324c45119c0329195efce", "0x12cc316a669ced0290bec967576e8e2a9e9b6081bb09bfda6456dcd3fd8025a2", "0x25a05ba9a3f7dcc29a43df45efc404bed408749b7d2165038d702b303ebf1037", "0x06bd45d9b13af28e309348d1c06cf153b061e0db126ec59a8af095a310c284d8", "0x2f55fdda2dc8faf2cf83086758c7bc77a1a382934e7168c30a1e9daad2b96fbb", "0x1a468a18b185dc342ac6b8ebe53ef265c69191759e553eebbe674ee9763b1900", "0x031b0f9b6ffcb451f2617ee915cd6dafe17ac99689417b1d92698607ee005142", "0x28f95d6eb7547e7abe25d2484193bbfaa36c6576b19c36fbe06b4455ecd20f37", "0x04f70c340b166e834080afc44ae444ea1ef56aa8d084b2301e62f08e0777420b", "0x0fd721d14305b2fd9b20975775f54e6c4e8069e2c71fd663a9c9cd0d13086165", "0x0e79eb513eabd8ca3fc610965050510879c0d2c755b7e59da7726d0d54943783", "0x2e3636a0f8c3014fd963ff1cfefcc844a1763bfb2de23352ea55aa5dd7bb8f5d", "0x0edeaf35f44f339dafb57e3080c99c74c107f61e3e0de9b8b4c234a321a75589", "0x20e4391350654d0463b6ea16cc68d2c411bf8c97daf1dafc4ae6106ebb347643", "0x1aa0b9abab5c77259b24ba6df035bf864c7e6d573480ab4b2d85926e95b0b9d6", "0x2b582ae7e00f3c6dd5163f3e44f8ae1f8eaa9324e6347ae9fca7c2a3af2b95af", "0x1107e912d26d0c4253496352f14b263a30a09b20adb31dbd4fcbfac0e4ca93b5", "0x131dec28abb0eba0e9821ffce7980bcca06046c12f01413ad00a19b8457f804c", "0x300ed80f4915fcb5dc8d420adacdc6b5417c8ce35d907d95376756d23236bb66", "0x188e211e215ded9c861d3a21f43f1578977938a5335be74325e0669e7edb551d", "0x17d321855d1ca0303dc7b0b2807c43de1880bb66fd6b3abfe5cc2c3a8e6a227c", "0x1528e096fbd27e0e0900460be22a69b7f82ca1aa08a6def3f35256914b050210", "0x271672fbb529a7df27dd20e888bf331f5ddef5c07ff4e720604754739fd56381", "0x2d7d508df128fa96da79116c1491d6d4d4d87a8aedf97b24de2f32e86855f5d1", "0x02c12ae06490344d658455338a0ba557e2a1dadbd8c9915ac402f2378994b3ee", "0x1ef7f571d7daac5ada2f5b94de137402be8a81f9c9fdef9428ff3f46bed81b70", "0x186213e6d9a5ecc85192d790388eafed5535dc3634d8359e730685a1d7eb8666", "0x0370eb6d2e98282ce7eabd8dfadbc46b74beea0f05abaaf67af1698ab3d025e5", "0x104ffffbff2258b1d4a2c661d2d0cbf7896e05398ef373088bc86327b37bc103", "0x206d39d5af5e1e50b477e46c62534200bc043ca985cee17f0bfd3e68bc897ae4", "0x01aaa20931d5de5931734e80546c966b8baf8ad6c279558de1696b2e8b2907df", "0x1f4aa1784a2403f3c0b312e20fffc29f77e4d01e712d43a35b9f542d649488f9", "0x2701a0b09e785acd9711e5e6ff6232bc6497ea97a6ceb82d3947508bbb5202e6", "0x07e99ad5f3317c1ace19b4a7cb94b50900319f645b2b956a34056355d3b30047", "0x2250455670deae50875f75ae9779a6008c9fcfe530b417de4d423aa02ca98f59", "0x260d62893e254abd10f0e4f8be37b5221d15292ff00a8684f5e28b5f2495979e", "0x15abbcd2e0c442449275eca5e4911d157cb6dc045a595417834bf39c558f9f26", "0x09751f79321823f4bfb93804919c64e5cac1907d031085ff8daa9efda95e419a", "0x08b3d82cfbec8cc13f75f77c3a61848aa0cbc0dce4cef8d72ce3a59407b2e25a", "0x1976bc0dbbd83a1a26f9e14aa431e24a728af4e8f5cdfd7d29943dfc29a7b2c5", "0x04f59d201dbb263dd04d2c2fa396b12ba08a48989dc2464b3bd5976534eb38e9", "0x2bb23243e841c564e7add2d7b528d9af03fe75880e9ab76eb4d46a020ca6e30d", "0x2f66b96144ef6c5cae5bfd2511dd2456a1d6e3548569abec7d7a49e1e0474983", "0x29b569f2f67f1c0363f604936cd59c3299453d8233e796a25075c41fa7e19d43", "0x1aab6103104bd50f3a65eb42bbf901792e79eb39d44756caef259268a06d274e", "0x100955f3e56bd17a4eaff6f79b697742d0655371859bc704dcea5ecfc885ea23", "0x271b363c4f44f4faafa02db2752dcc192f4edf5c39c17ad5a7b8f479052711ea", "0x1021eaa8fa200bb0d3d7ef502c5d7eedf2a6ca36e63a37b5cedd98a318a7fb76", "0x13c6a203321170c046d7d44e25f21c4708f58404df6c2b578462f4ac181c5e1a", "0x066691a02754dbd02ada281da41893feebe687083f4ec299600c84657ef2bc9f", "0x16379af37c274e663b7e3c04ad065ee30999c30a05fbddf1a43037a8dbd4f199", "0x2e01cf9813252a5171624a4963d572e1b6e65a2b93a9c990f6a53ba7d5775696", "0x05a4ec77a21ca15f804aed87b98dc3d5fc92aed79c3724b3e9cfcf5c8d35bf77", "0x0032f3bab069abd4a66aa9845e84a3ea1d390a3c2b094197a5591c6b0c29b4b2", "0x056416328cf6d47d3d291cd7259481443215b7d2904c7c5631bb4b72e83de7d9", "0x16c0689d4828c935eafdaafac08e4d909da7bc8776c76c5dcc6b4bd49c7217fd", "0x1d8d23ed1dd6a53d2c18f91537564eb706ec1139ba2240b733ad3acb847f7992", "0x1aa1a21e3784b97843ec620ca8961e8c62d5e12b8e3effbab2a4eed9b8a58de4", "0x0bb54439d4c6f812a70581ab7c1da56d98a08916048d6b48f9540b451b7e66dc", "0x24421b73eeaf63134b46c29646c2b24dd7acb860a188b08a6ed1d00cb90b3c3e", "0x3045c2012f7445890f79f1567060c3c935965acd0ea551a671f1b625e684d7d4", "0x08ec863991a053feedaa5281098afc031b75551065d6d01f6deb04c63102c9bd", "0x250cb2ab9d5579a24a57faaa87f7c828c94952cfb248cc46d92ee60b8c4c95af", "0x0f25b63b5eebc3198122c606b0a5b2de15e6f5fd2cd0f493f96265369642f93d", "0x2ef6abc5ab02c8431de8f7a64ba3699c79e1df0c8f2d9d5e8d65b792dbc36d0d", "0x1e84897766aa9de056bb5d97c6797bde93c3b0592512340206635332b5c22b11", "0x08923f05b050e6e0fec0efef4dea500ff3aec3054d4b2b0a1fbaeb356384d70e", "0x11687ac05e24f50db06335e1875db73d8f379db3a5c1c3b9f57b725b1fd8437a", "0x2755837b80549adaba47e0980907591229f5a6971ee0f33ac930f5be13b154a6", "0x09f80c8230bc5a78138f9952ba6b64ce623e12da019460363a49f5e5efc076c5", "0x104009746d61c0bb6643e64ddfeaa2d4f30872a92416552a1dfb4b75d4092d4b", "0x196e821f653863b14b72b19a068aac434a6013598bf73b28eeb36c41e76fc54a", "0x2c8a8a85e2618452a8d0a9ea592bc495a50672522536ec7663869f758ac720c7", "0x07bd4de2aec5a7acfa66678754ef95eea840dc97fd1679e653d5fa32b8ad6195", "0x2464a17f4353a76d911cc8349f5dd02cbf2b2c58a1b7dea25f000eb9adca396f", "0x26831294e338f44440adcf5dd1ca4d1412a5cc41c93a2037985eecf4c2fbe4a5", "0x16d69ee3ae6b20ddd62dd1a13d279d4d7da74b207bc57a15ac9ac92cae2ecfab", "0x16b55a792f1b19dcce6b9f4c9b61be0e0457a9980e6050da2500a409415f207b", "0x0d49e31e27e1c71c16d524b2a8adb0a64843aea5da2fa4e686f183be95d4170a", "0x1affb8fd8b243d62d5d4a7b07b624f9a0452793d1d1a11ead3bb8284eb65f97a", "0x27da7ba10cb86c06758c55e7e8ac76dc9aba2e863c2deb8fae7525e42c96cebb", "0x27e1be0db1fdd736d218443f56d06987443704d18c42a96f3fdcb7c4536fba09", "0x2fb1dd1f7461d75fa3c1e25df670c1442b001b9275e670d73c81eb61fe028322", "0x0f5f0cc9a3d4d3066c99194feb229f0e31831dcf080bff42ff1d14974f82ffe6", "0x2bcd23585401b0f7fe33fe366ce92e3acd8818a23550f3753decb1ec24405ffe", "0x005c552a02e2a39af0e21c8944b9c4f56e15b438cf346516ba2147356904f01d", "0x0362a8a2865a2b2fe902831c8044c54b0ca94b95fcb79b65f14753c58222b4ac", "0x029bb183a6a291b93f0989746105e33cc669907250fd7064868fd313810faa29", "0x0608f62214871578ed58a12dcc4d1c152af970e6e5045f7913cf4c40ca6df18c", "0x1f8a4cf532f5e835704ed7ca83effb517579006ca22ecd7422511c0391b5c4ee", "0x213882bb31291dbc346cae58fbfdcf03978152e15b344892a94c44e2f0b1b338", "0x297125f6728b65f189fab61c3896016beb0a972dd34764910f059508d7e8622c", "0x0f76029cc3ff0861e048a601eb52a11cf1bfc69f2dd6ee1516a46e4865b7c7ae", "0x05a506ed7382db51851c224d5213c7ce6a22b19c7ff7a7fccc6237af1142bb17", "0x157ddb6fb6d427b97ba69e8798f3950d6888e44c60dfec0a98b7262a977744a1", "0x277aa399e55c3e5cb49c4bd8789f6551351da540cae037eba37543b045e91eaf", "0x1499091ae8dc567f8d050a0835eaecf4b995b5341d29c548da08391e6f1453a5", "0x200bdae3ef70a75a12979041cde33a178ec02b110abd379c2d26cbea9167b6f8", "0x2e6835de44957130dd724a0ac6335b7c35e8afad6acbba6aab16f455939dc77a", "0x09e302222c01cdb2c45e5c3a920edd82da3cba855e15ff634893209bbfe55d3a", "0x0a5b412cccce0a371617dada267bc783ca19cec068f155d6954d279f3959cd99", "0x2ffb034bf2ba629ead6f8a6022e2339779e68ef2c8bf39efda1a0332e63debc4", "0x1f3ab3fbf5fd24859380ab59a8f72cc52dc1ab2479a10f33d7c5b7121c58176b", "0x08303d8ea6c4af050a906aebae492e32010ece609b5b2c6eb137ef5dc2769b28", "0x19f0945d9f71950f6c2b298ad3c646e4fb9e99939dc170c735f407148c792532", "0x1a621a5b24758bb036344639e427c03f33d25af7f7711c3ed99995d983c4c3a4", "0x218a7b745f35f497b4428e61c3b79563752ea6f8c876361d327329579339928b", "0x16ecebebe58dff59a7b0ba40693aa431b899ca7769b445a7387db118088963fb", "0x1daee46cfcbbd63435fa6f8791b36a4fc659f5236e896a4d447ab3da68280fac", "0x260875ca1e98e895c635db3bed500d393940b5654d369c61156db2927de5ed18", "0x1cbf71e0ebebc2d151966acc2be11116788815614bec66f68735914c3b8ade35", "0x03b2a320eaddf48ea570e643f89ef2272bbebdb1caef32aadadb22a918a8a99f", "0x072f534bf07ba555426152c37e210cc1d36d8b7cc42e1dd64a83081357189f6f", "0x17fe62a93a9efb1236012e2ca1064b1b93d867b0daa30dd334ee5ca08d304b07", "0x2ed3b5db7ad2fc083734fb61471629463d4696ddd8c8dcdb1d2fdd460ab4cd1d", "0x26e83b9a8a7c7bd6929f22021fea78088037c25c7209425ba83e998115335c19", "0x1758fde5e2d8b8886ae2134943407d8beceba4be517a01e51a51a9c11c1510ab", "0x233e22ff85bffcb57cf35077fc6c81963590f67e3484a67d846bc1cff2cbe1d5", "0x2bdd734a2d8a75f5e1cda7114a8c418bf5064398045dc7a9a8f31669282ce92e", "0x21c2e28d54733906bd138386d7f05b1cc42f6604df893509a629c351f57b95d9", "0x03ec3db419b789b9a13811dfa2c51840d3a01961e5f884148ab3f6afbecca3f9", "0x04452cebb0cd94f7163266aab365b3666d2a329d634ec53db009dfbe331062fa", "0x2374e7cd3492dde40a21a4111b32313df5a4d1d483ff38c4b0cd49214b12ee2a", "0x18aace16399c7fd6e9d2197c5d7879598d2b72bd508e05d6f8bceb7f3fc668a3", "0x041d469f85bfadec96c07f7756a6735f417bd7a882e46ba06ba075731f56b563", "0x10b3c1cea302fb6b1aeefe7a701890cee0358bb45dfcd6db64f90df964cb92e5", "0x086dff039d2271895d0a8cdf944d75ba54284897d14b2eaa009400a8d77a4beb", "0x072e72d8677f6a51f4c2386e2e830d6648c4533a72851fdba34a5083f00802ef", "0x13dedd574590f362b835c05151d6d7c1a721062c50f14453fbfce12812dec477", "0x0f7b730b9f5abc35b874b224ebf120d469bcb883d4b4e757e8eb52bc26958084", "0x23f2dfd0242e0dd9ddf76b575563e69868e13c2cf3982c52777e6c5339472083", "0x264032c844dabcb025545315588b4509e27717b8e964f60404d2a98e8c4408ed", "0x2a505c683ed009b84ea09e705b1c9256187a48ee96064d3f094d15a931c09d65", "0x12195fb5314e5dca6dbb5301a0bab3741522aacd9262c5503deca09ed3b5bfa5", "0x2b96748cbb6147ef4860f0d7d93c21e42a84da2a5d24c07f2e6990175e362138", "0x168dc4dfaf6fecd4884881fd5f0feb2799adb041c6e16707f9f8701ca3535bde", "0x293fdf5e9741851b6efdd21641894eabaae4e7bd4b4b91d727a80ce850585439", "0x108d4122ffa4a9bed486d89bf9ce7188e53e0161b2337bc5bfbd81c668144e60", "0x1d34ef90f1f5eb9be9a718c2f5893fe4dd422203a306f961707b4a179e8a8096", "0x2d6db62f91949f12dd7df0846c7d73de9d13f571edd32a1a3b1e57efc7967049", "0x18ba73783f66e8f96616221f4959a5a6df06ceb5bd3d362fac4b106111ee2d52", "0x0a17603d2299bbf990ee1a95b5acc089aed11646ffe696ee065bc2ea650cf6e9", "0x0fc9ee6b510c00bf2cfaa5e6122b6e68ca866fce11dfadf427fb770d8c25d2fc", "0x28222e08995c93e38c8389bd32f39dbcc203d0efc4011447c543d051656122cc", "0x07d27a8bba7349dd716d1cf2a9595740dd41313b93989de7e5e9faab97ce9b46", "0x14498b47c4b8f2663e422f7171b4a3c073d3aa17895b331bccd09f1892788a8c", "0x0bd8e776f3ba7553933619f60711184e85c1c6b596b72abbcbd0d1ef0f067fcd", "0x20fadf38540e1e46da22ae56b75324b4983031b9c8f5198d32c50d5f25b03a01", "0x269997eeaebbe58b6ea9f9e7fd79d185bac71585073928a74ea6f594dd2ea05c", "0x287d91c8eb0d2d0882fc5764dab5404c8a8fff1685e7ddf656debc7b3b6190d5", "0x0878d3344a7d147ffb4c047b7d6dfa85a864deaa4c16a6753c1e72454c2c630a", "0x2e3c4acca0611112c29b18e0f9b59357f7c5dcab7a8d5f9abe92d7b2b2aa67ea", "0x1e288d37cca3d0ba558ade49cc5220ef629ef5436799594edcad6055c5bc6943", "0x1a1d7f65598460c079f75ba724389d5118d1420f958be0348fed76ec4f705786", "0x0f1a6c587f154cb9e0922c5c4d8d277e66679ac37eab5b27ddff668615ccad88", "0x2d782792e3cfa8411cf6233e5be30dec0df22d36c9d207da85ddbca5ec747197", "0x1bf4dc59b31c01ca9dd2d9a70520ac09d1b863b4e76471da01544f06d78a9be0", "0x29abe14d44a7721ffeb528360662842162b170818106e544ef147291047c3fc5", "0x02f4b020edf60204c8dc75abcfb07605173cbc68c4d935d0f7e654f104696fa8", "0x1c692a1214bb6ae2c5b3482b96ec4678c2f7956a82819e3a9c853df4606b9a9e", "0x25cb9034345fd345c79824069a5b9a05b77b94fbdc24eb5782d55622db5afd20", "0x15ba65b32365befa2f7cb0c5210eb901aa409689c9c74bfdd2538d78025a632c", "0x301a02d45faba3c161f8250a2e7e280d56090f4cec023448ae1199fcbc58aa88", "0x2e95c6f2a67a136f5124345e3a43ef22edcfa806abd731c91a4c3003fa20f355", "0x0a1dc1da90f177ad3abccb3513e1bb7440d8e695f2cf080fbb83e61ed285e871", "0x26feb10533a8b990dcce9ec02e87b7cd30753750d1156a52207b82ce63a92c51", "0x190eaf914232f96cdd1de4bbde137a2b8aa7ba817d6d4b1dce5dd3f03a841d4b", "0x1d441c3fc47fe77a1883e06966c8980e5846878e97071ee0e99e560efff58b23", "0x27028a819695508e70882dd56a022e912e386db46dbe0d8064e11c8ae74a2122", "0x0a26bbfd50a68ff9f1622e344e20bf890c2a198b6a58bd822c722f7e42ee2c53", "0x2551e3511c114035df498e07d8354c042df31b0bd3ee502c8c20ab8bca826fd7", "0x17c6203deb0a803272043d5ba927b5984c078c00a29002e6553a625efcf0b0ac", "0x0dea4d4c52bdec214ee4e0b88bcef03e062ee2dddab6d050b1450c0b95a51c7e", "0x05e660b1552d34ff3f62dbc5b1ab67e8e1156df506c39c0ab1d6dab1f6f9a62c", "0x0b9870c2d17bcb2bb8b2259ecb2e54ee162362cf9b18243c886421a90a646c30", "0x0d83ef93bf551550434dc0763cfeb5c0ab614d47cb0cb3c79180ce551849993a", "0x2bd44845898d89a005f5c1bbbf5f5b8e985d48e916285a64e676a811d5733ba0", "0x255721e12fbc82235e64a106731c12910920c71bfeb39be6bc82291d322e7f34", "0x11b41910ed33ae016c7d059a373657f56ab1ed3afa884f6aeaac3e8657b52d6f", "0x1634afe1bbae1766b7ff7b11b011ef9f88ff0dfd8834fcb085968a35870c96cd", "0x17e992284359e923536eed41bd61e308285399a12b6c1df22f6570bd00e5a237", "0x19808c7e543688ca243719dfc2da130147127b0d441d88dff53443d3d7db9d90", "0x2aa19c14548a4fcee170c0196d363e8865064bfc982225d5946c7ebff7945979", "0x2e6a2b023ac766e7485bd83cbaba016a130c00a731134bf66692cd5d7460616d", "0x04e13213097cb24a2a8b3819019a0b676bcbc81d2ff49af4da8c7cb0ce8d5125", "0x0436db88b4f66de384baea73c505b871c79c2352600f5859b30e218f07326ad8", "0x00c97e95688ee07ffa790567816e31d6ab7bb0e6e8f9d3e9cd09a9b1b16a9094", "0x2f04c8c72c8a00180ae6d0c29f2dfabd83d0d660ebeb5e7af3c6024d3e577747", "0x15070cdd99b9b5cdc0694685bdb06489c56f2c99961e1ae996608516cfd08791", "0x134e38e18c1f42b857ba214be75ce4b5d33155ba10f9834e95f3a96e25e2f70e", "0x1711629053d5021bafa111ac20ac85161cdec854fc170a064be745471ab5deee", "0x0d072e1c8ff17213b27848557a426701aad8bf3501c6a55ef01dd4b21acf017e", "0x0d6cba818cc9b0f4e2323a073869c4d4b4e5dd95fd04610ffe27a99687fa98a0", "0x1bb7ec720107065b5d75fc4539b3b91af0d95eec0b51ce06f6ae3b40f10a54de", "0x0f4b198af2aae4c1f15035affbdd30647ad04861de3e653a767efa5036bc59a5", "0x26bd5d4e6a15ed6e2ad4caf87762a8e2533158c689ed2e6b14f537f7f8af4891", "0x1db762c3e18bc6c00dae8124eb13921357a9cdb2a7d8d5af899ce5c8a304ef4b", "0x2421f2e7882947e068b590493df453dd22a3ac41f9a81e048fd5c80119ff62d8", "0x0bd9d71697d6c92e376850493ba687283e8483b529a57bd6b8f3240947310cdc", "0x264e510e5a7eb58fe37c891194e7228737e2c0ac2fd9e7ec416e84bb44835025", "0x1a28efe15e5ba6bc2ee602ea858829d54b1ab7154cf94bb948171ff092f084a5", "0x14a206642fa9a6cbe78d6994d4472aec2d66e9bdcfeca4cfc133855662a0ae15", "0x29195f6f5eb29605ebb51348adb72b86e184d5af2a55979e85d8c37d5fa377c3", "0x2becbd1aa2fc1d6a0cb87a7432ba18070d4d8d87c7c5085cc57a36872cdcf496", "0x2eb311c7d96af1bbbeedc811dcd0cf3b0f3a0b932daab80580ef19f2eca4dc7e", "0x06b13b0ec69efec0dda80dde05a22982e450da4b719eadc02e8e6f0ae8a9c8be", "0x2951569586c452e57a16deffed6643b907327ab830fa43c7616c6bbd7b337fa5", "0x0f80913d6a98d68e7d203149083421598790bd17fb71aba3be68235da31fae9a", "0x0f6c6ebc152c7142355f365056108ca2752a939343f52d4cfaa1ad0f9ea80627", "0x2651a3545d55a179b95c1d5ec9f4790094ccefe991b43482d3accc1a5e6bc41b", "0x19ffed697be990bd22c33a3152f1b61d924a88f25a682a604814ab0f83fdda64", "0x0514f51112b2131ff7446bdc8e6035f8a15633041e31caccdae57a2cf2e6e30f", "0x27b250eedea12787b0e74c67fd29ee3d6f3103204b0ec153bde1b310ad8ab960", "0x034e3b092aeeecf9fcbe012250071b7d86f50ddfc68b5bf59e57c5f93c71e1c9", "0x1453aabd4ab309ce11df060b36906f221e34ec457f3e1186e1ea3369be4b923a", "0x11680b19c0f622c3aece37013d9d9c6b094dcb5e74c08e22f170fda744ee17c6", "0x25121ba4a0ade9a8b4ddabdc337b09645ee6c42c3fbb6c30ba0fb457bca33d99", "0x3010c1d25cce64f6dd36355891cfa681dc6e2eed6daeb368f6678ccb41b08350", "0x1d50c97e2fc85017040cc192d199ce96cacfa54189b6d66af5d759fcb6bda79e", "0x15cdcbb1c5317192281df60267008a9ce8db866fef3ecdcccc3cfad29e7ab2aa", "0x0bae86292d004b61dea91dab5addecd8452e4dc0f664cc600d2cb6963b7df87c", "0x0966e0ae7b6e52fd18185266c449aca139d76048361592d38632a20c8d0246f7", "0x1cae92fe86f9a7ef83ba0419a261dc83aa12a12656250bf6cdb92909a8510867", "0x00a2cb83a054988cee1a7a847c228c8006686ea62a6f13dd9535dba248fcbd47", "0x1417d0b749fda05bc8a36f41f3f714025f2e4acf02f6f6160714bb4d86d8a7c4", "0x052c5a70723442134e3532806e57d283a142046d2a83291da792cfa54b234782", "0x22a8c9d3df25905c7bf99c0697e139882609c08276a171c88dc02e85db49aecd", "0x1c388261e076a0643d5479187cb6ed2431b5e1f531f91cdb5127baf89c83c73c", "0x0ab262c3215d90263f02d9cf1a2350d9d5ab0114a1ac7826460f34635a55c7b1", "0x21aa865cd024cd02104da176215444188f992aec9b53b65b9cff6390b28ac2cc", "0x0b048e05aefa0fb2c192ec55690d16ea6a969d2475762b9d21fdff8ada4a0bce", "0x1cfb664fac48b01372f86f107860398c013c2361dc5671b98f13855c15732ae6", "0x1c63978d82984a8f5b105d597d65a437c8298fb4074ee140622e9cbdf39cb479", "0x068727ddec782a2d0c02028fca3757fa85e61f33afcf5cd35986732216509c77", "0x0d890582cc215340d3476b50bd8d22261dbcb63ee7c6ce19a411e809b731a563", "0x184cd8e67d3346b0b1ed513225df4f8811f22b25219ac6cadc08bd27444c59f5", "0x11aedcd490fc770af451bb54a698ddbd4a3ce266715ea85b990f01027910000f", "0x296da6e5e32c20aedc69a743f6a45e4bb8d5f6604897b1cc751bc426ace0de83", "0x0ba576970da392c54477158abd25968b60387158cacf5f08288954e11133f8bb", "0x197e9d5129d713e382ae5ce666cd1276f88ddaae7dd50dbfab07019bc425f6df", "0x298529230c8efca126f2e5f127eb577c1f8dfde4f6132e61b26933726cd7162e", "0x097ec32e1e10cb019fa5ba87a78e31b4f56387df2dcf210639c9d9623efb5041", "0x0a696ad199a61dffa5210f5a67ef797951b25960efdd13ae477852993d9743fb", "0x20e69110246861565203f2b3fefffe68667893cd881bbd0adbb07306bddf4ed6", "0x27890f322bfd0fabc9682bf60620d1fc0434475394ec120d77088043513a10b0", "0x19df61b7b8dbe8152c57a8d9524609ad5fc58b95d9dcbc6aae0fe50e5a3f0671", "0x1f159a0092e8e13753d9a47082ccfd4e9ce23388fa7f48d0341e184beed4df69", "0x03ef8afb36ddbabdcefa9b43d1e5557e89159576e54c7b1a177fea5a093bbfcb", "0x1ccdffa3a8f918cd338b85146b057f87f8616a32159842f55744cced8fb463b0", "0x10c6ce580770b491e04cf22221cece5ec710f9dc7048a98063fbca9b0e9ee3a1", "0x155154344c44bbae48882ab681e1e402f7265858a6a499924f961e4241d7ea1c", "0x168f28d28a2797945e7b4e7b585dcab192b1fc073f6b0e62afa8cc9161748c0a", "0x25d99c080a836ecf0aa7e1299a757cf7c5d0a96b5812547969b3f09073d33a6d", "0x0955ad1ab1074db1280c78753ea4343ad05eee42d0bafbf3212c656c305ec55f", "0x08d466d64b8949e4bd175392e4219922973eafcbfbd965cb2455ed3f2186f33c", "0x1349923426749433b7e0014e827b3540c03c3a7323e7a25a4f8abfc14d492b68", "0x15792bbe2a6f84147f008f84b591b583e6465cb6238ef540189f5e69412dd9c9", "0x061a685b4ed05b65843a41c24b236a2a7b72ffd0602030b63b783c1e23923096", "0x25d7f0dc3e0a9e71090c72b48b051b8d8fbeda393d95bd8e9cfbeaa19efeb642", "0x2301c0c319cfd5520bc7f972b6646661135b2ac6cd82b0e8fbf7c814a9f38af8", "0x2d6992f2df7b56bc9fa14e65d0070763dfa5c6d70bf2fd88e428ad1df73fb523", "0x01e6621a98c65ef7ebeb275f696d11110d83ca8031014576baa10ecfd8411024", "0x0690e58eda24665799a2a1566986f05b3c342340a2855ae746a9aa6d7d0be2e8", "0x282924ad2ab431d50d479c2d43940b471352850f32fc7b75647a537189e981e7", "0x03983afede48f8107d3c43d8ef20050071e693e14f75835e7ce3aafcf2099d72", "0x2d3e2cf3dd17405faa9cabdac559cab5c4b88c053ccf888161a702d9d08314d7", "0x0a4118cb11e35af09c80a762b665cfd915fb9cc105a6439859e8d09c6aae3b32", "0x1f4f2acbf7868a099c0cf30ecfcf254210c0a9b6dd952090027f65aed87c2701", "0x127456c9cf4b04c64ea3280f18b4ab9e1b9640762704c9343c5c93ca26dbfe2f", "0x22f606187ade91dcd38f9cc7ffbcd51753713d431c32f26bb50f1a068d92b70e", "0x231cc62f25f6169d570976385132724cd5aafda34f955f2fb5578c8eb6fad2e9", "0x0fc97d0e65f7aeab397cafc36966abdea922157d67dccdead1b2315d1f008cb2", "0x2a07cc4343ea1b38982820bc9f3d8df014bd2be58b9f9d556aa1b75511cc8b7a", "0x205612cbc125d00b4a26d5a2c748cb7b67f7f74e5c1a3af99d2b53b21f904527", "0x113b94fa0bb37a7ce20e747694e19c4e197af3feb03e27e55ce1b6da8c7f8151", "0x135f57c88890b109164b1f19934b0e3077001aa3c399b46cbe4b3d45584aecb6", "0x12fec523a77be075ac0c47862f2b18cc5e5f5caa1dbef3d907c92625252e2702", "0x24f864be35ef6057de078a85d1e96a6b6d65f5f76042fe46c8a028016c99163e", "0x0032a288d270185bc167bbc21bf43bd695578cfc4dac4f59ad26adff03b41df3", "0x012a7a229b6de329cf40d61de15118d6050b9b235d6074565c93938cf9b5e564", "0x058b63645e3963bebdb6eb639106c4e16c0fdef2be8263e23b8603fe2004241a", "0x19a5af0c2b00b1da07b9d4b535bbbbddf052fdd09033541683fc54fa7cecdfcd", "0x0a2512fff94ebd00571d056704d5cd4a3d8b024c36eb2f29a03d0a6a69d472fa", "0x17775fe72d1785abe11b76379bdb3541c88dfd6bbeca37d2c1e6acf28a00e5a5", "0x144777351320b13697917dbba1c252315ff85fcb9e5c10f642c41f906c8c2cb4", "0x0cce87088d369ea25cf20315db73239b31df897915b70b38009d083111edefb6", "0x1c83604318f78c187a80c78b8e2ef66b48882a091380583f3c14a5797c3ebfbd", "0x195b1051102ed693e26286faef407469f0c233ea68fb74be5b8b801df4fe3972", "0x2454f53ba4ff1c09b2a650cdfcc32735105c03116b254c20bd8a196285cf6ee3", "0x02d0fe154a855bd683d4676c3607774c505ae33b0656425e2dd21a61045c4aa9", "0x1a9c1aa65d05e90763237b686a59f2d738ac1eebf433993e27376bcdc6da398f", "0x0380c6ffec35d91b268052e8575072da510b5fa976400221113df0adc2283e0a", "0x2f4835b7c8938e6e3d5a8d853cda5e24c879a5e0e7a79b63a8af8e3c02359769", "0x1278111dbbaa46ab94479485683e473efdf45be249083c3f65762dadedb5dab7", "0x2f6d0e205916919cd7c5381ab9263e9bfd975aa7cfa45ce9eb4b6799ff903538", "0x0987b79561d0d24c5fcd6c6bf1189b13f13aa0aafefb98a6c11305e7068f9a15", "0x20a1f94ea39d9674beb0e237b74d92706b8f1beff58f420feb1a0629938ea44a", "0x046624944f67281a6082d30e31a2d78225dea00bfa55ff2ebd6b4b6a4bbcfa0d", "0x0ec86df4e2404b4d4c5c1c7f2b7cf4ffcae2baaec96f1c93b5718c46e32f4b5e", "0x17a988b62f34331bc23c5c66fe5555dc2af680f9175c4e95269ff265641a7c28", "0x2f933a4009c38406c103874cde91ec02d622067c7cac56890403c74408a1efc3", "0x29c60a6ee7e22c0b8d8a51cf87215d4e3dd52c23c8c513a8c85c21205adaf4e2", "0x1e2e3cdd712c6ac039aeb3d4dca4e92de5124a1a92893a8f1b8b6dd17dd020d5", "0x1cc0cf1b5a677bb56afa928d7084c9e31d4f54691a9b90a2f48220fb26fb534e", "0x03f5f53cb34ca5b6476f61d4b4cc01e1d123b90dff98e0447c801007e6404865", "0x264f523407a076b04f72e26834ce8bd45b8c90dc4a915fa551f3ae56d50db503", "0x1790319745f7932afc826f8c296f92b2c0f7f6b3cfdb4bfdc763d0a1f28f370b", "0x03099a72a9c353b329a1bc4baabb784501c9037ba736c49806f1da48291041b5", "0x1604aaa41bce072f44b6adbcc0757542e4caabcaf109eaf7af718ebacb090fe5", "0x10eeb59a16fa139267e3c45cef01b53ce7dca8f8808ccc248fdb5728a799db67", "0x12eab8cffcc06cef8d112bbe5dfba7e75534f64c4461d162fcb3ba06715947e5", "0x0c58e04653d88bba71e9f539b5030b937dad2405d225a30b5a75da8ae19c23b0", "0x1b157f2ed740cdbf798af092aae5833bf52e391b113985ca6a30eed588cba4f9", "0x0d0837d097cee0020345d038d3656de14ee4c2833bb9cd0da1aff2399da436e6", "0x0a4225a5d367e0ce78a1255c9a69aa626ed22248763d190ed9dd0f3d35934154", "0x1f6a2819a67e201a2576f0affcb09496ed7feca0b85058411d09a6e756ffe8e4", "0x1c674a9b9fdb49fc966e064ba3da32c1ac2d4b6a1b4d06b96f75e31605c38cb3", "0x20844cd477a2921e8ecb26eec231d8c6d9b846dba93db5eff2200acce3dc5312", "0x0a8fa6b656ac797be797f42e294b3ac4d9ea7d3d52125b9fd77f8d44cb729864", "0x265947fe0877c73e0c65af54f643b0f3844a4b74de709fdf77156f4c338c8007", "0x1f04e4663f2f9937cf07d3c2fe5f06e85414b960dc77a19e8d6e38c5bced7d48", "0x06d020f03d9dd918c985f1e7d5cd39fad63f6459055f85e1b8d65c257ad64046", "0x0f4fb8263bc813190c44c383d548741b244d213df4344c3dcbce797969873951", "0x0e3b1e6adfa05450afba7cfbe8e8a08bbff6bbec099c68d5755f096075c21025", "0x22fb7c00042e5e4ba4b512efb900224bc6bcd53cb1224f3cccd425331fd6f831", "0x19375dd909e5ec26e7274bfb8b402c5d58ca19317505bd446ae80dda553ac71d", "0x11d0952461edb9d24c6bb08afd369692173a72dec287f6b19353c3bb540dd34e", "0x1da0872acf3b35eda099ccc9e9a5ff2477889bfa122b5bc54b4be05e898702a8", "0x1a74a3b2de9a16c14c026b9c511152cc11740b9b9d99b6bef9f44cbf757b7376", "0x221b345ba4b49dcbaad49fe51917d928c533cdebb44b095080064a93e6ceecc3", "0x0de529ef32404116fc0dd6041c8a9d3f7980963143c3e275f29ec6386c9c2bdb", "0x1df03417e70bc8a58129a73f2bfed475f59cf6940ba48757c860e4d5afe912bc", "0x01a6a6c5e41dd7ca162312935ffa4caa6e1681769b10291fa65fbc362c57f7c4", "0x26be4ab855efa2c395a0bad51338e24283883973d0dfeb2d8584bb3941f7b92d", "0x01f1c7d227986e5a9a329bac19a23fc7df52609360d366e0afce5913a809f932", "0x075852ae085011a3420eef6fc4d51c8810d40f57ce4c54569e0349bdde64f25f", "0x2e69ca1551e48a93009319aef40fccd78b8ab0eb3e6a75aa3a7cdc2ea9510e18", "0x21d1d8183e5430aeb1be773620504ba994c1df4ed550a87505fd6889bbc70940", "0x11866d8bbb8cf8fe585de19d816f444097b0d5eb88071c2785ac3a757ea5a973", "0x18eb3fd0f6793a01b4e4a35050555a79fd43c7d9b305f42e9b676ed7855086fe", "0x2874e162935850eb2b1e7a99847dbe48b39726bf75a18a99892b2bb6dbb141ae", "0x043164e5c0d618af751f9458ad6107cc2c18b4e24968614daa909f3a664fc898", "0x1c7fad75476d7966314daa926e188ac033bc3c0e9d754db747659d9845285f15", "0x001cafa60986645969073ad8c0e29d8d46c4911b3336bd15a3895e10d0a39378", "0x059b39a84beaab3bd16e649114d507aca8b49740ddbc4c7e709af251f7e5c002", "0x2ef7ed14755d43e71ea6eba6d478e4197c5368cc9d7ff7c427e3c97adceafaa5", "0x07e262f43947c3e4380bed5989b35368f6ee10185e911e2991845730df2acd78", "0x0f54ef80d9664876e7b9e9cf8ce300b9fd82929274f8ef4ba503096752083517", "0x17b19a0cd7597c0b95a9d1b1f3aa38fede0565e34ebaee7c9957696f92a3fae3", "0x23724db078fd410f494e5381886a2848618ffd4a8c088fd51133b0be784417db", "0x087f6029159cf77cf228c9cf137d25fa4d842a084fea42fcdb2d0a16dc4cb3a9", "0x2c91b436e22203f5cdf3b1c2188626007312b7e80ffc2c70264ff06560f3f52d", "0x08b9793cf23fb5b0eebd2647d2bc7d4cc901d7074715b445b14fb64a55e43bce", "0x214143f8421174ad70d3431efe9d40bed361820633e27b91cf0505a8950b3bed", "0x1d5b88560517176724a85325f6279ebd9130a2ffa28cd00b07286fe3a982214d", "0x14c9577c063d4dfaabc8eed7c32b99a187028d866e2b991974e6e63b0f838fa4", "0x046273375bf435bedde590cb2bac88efee89adae8c6e27b01f7792493074bb34", "0x1fd89f063226990387b017ebe985f55d4f6b1e5ba5a2bfd6f2273d2d6bb6a81b", "0x0502081f3b1250555aef587cb5b4b307d730c1bcd151adecaa53302fc2ee7bfd", "0x10baa6c318c7e6a3a3628756ad42eca66a92be51f475eb386f96c026772e1cb5", "0x01dfe4501e8b2ef4184e1a4d0f0c9cc76a8949766636308b02c66ac9823edc65", "0x1a72d320faeaf05e0cf44db930bdbd8eed25a09bc14754665e7fb5f28ea3fcbd", "0x266b33340a8bf66136e7999ba473455bd90f8aa53f455343339ed5b5320b0691", "0x02448e52e069c6b44402d59573822c3b5703090216d607de4bfb678e1357b958", "0x2aa25e459065532b65ab2780b63cf6f03d872ea7596647bf9517ac628b79a226", "0x00b1d54e7898b63a3adafee6e3a36b2aab81e39bf3a15a9b1f479b7499b2efd7", "0x246f7f7d8e5ee80022d45348a5aedba8612c3cf4623a6260ddc931952512c4cf", "0x027907ad369fc4b8372c78e6ab39d4a3faa44551f00b83d24a9e33e01df07ba0", "0x2b67bd277bdc4c08c7908bb15ad397256efc62e0325327f8190c7ad9b09ea5e8", "0x08a5e948d1db145e20bf0abfd419e70708b2017e8f8b1170459c2c767a7ee354", "0x0491c93811381bbf080cddda20357bbd01755d50eb869ac50ebfb775b49599fd", "0x0bbe5810c339505f191659c51feeac4d6dd8bc8396f30c1e4b3d89884035946c", "0x03b065bd291e288a177f161e35c3652c57ef70e46e1742ef750ce63d22b24810", "0x11f25b85db841ff7648ff0e35ac0b6c463c714fb2bc5f288970608ab353a6aed", "0x2f14f75123210cf69d38f2f32b833cae0aa310e763486126d0d36c29e68014ae", "0x267179f1f050aa24d1777e348a99dace45aadbf16420d828e91f7d8ba5d6b6ab", "0x02d760a9ccd958f723e082c804dfc2906860767cc3aba88b35d47d95551a1283", "0x042540133fc254876967d2739f1014934695761da4647d330b180728d9db97c1", "0x00d4fcd586135326975e12057cde193244cad1504c4e147115610c3affb06557", "0x27a2352f8c5f88f643d6dea7251b027cd3aa04364fae60e3e714f684d05a8966", "0x1c7e955c7dea3de14499e1b00c64512b1d0df603c5492f1d75747161c2112ecf", "0x050e7bcbfd9fa9c1c4d29415b03c0d00a51c2bccef5b1c441d8301fdc7335956", "0x1abb6a8eadef0940704d611503c9f295715c3c4ebe023abc608a8ff3704413cb", "0x0656203914995f78f4a1d5f2546387ef7e8b51497f5796521999bf0e0d1e80a4", "0x1a2a69c7673f072aeb2ecc5e750c81bd0af565c71cbd0d3367efa7779eadecb5", "0x1599622b5b0b75fc66ccd9ef20ec559bbf3f51a4a4ace856d8f687f6845c8926", "0x0eb54dfc23710746af102dc417a3645f5b1b87d888bf8db5c8cfb4b45eb03a22", "0x19e1a6f91e97deb1adf0d25cbaab09a1f72006ee92a36eb59f32cf304d889864", "0x201081529413a6f1f49f3d52dcddfc74acf146c6b32f85beb35149479c891d4a", "0x20c393584e2857f57c23efeb7820186a50440c935bd34a4a17f2a5bbff287f1b", "0x179cf0461c98a99f70c433f74f60fba50e7c2fc9bfdbe500a0a512f6be936934", "0x138cb76d3780d42942bfe0043d625bdd4d6e91c83be4cec3da085bf250c18d81", "0x0e70444af01939c62a8ca5ff3ddce46e29b1e45ac6aab7d37297decf2063fdce", "0x142b10f58204bef4cb15113136fee579513c126a168488c376c21adb62827961", "0x124c8c607612b5fbd2af84ac37bee103eee11a4eb711e11fae7700ebc6387fb0", "0x143fde70dd6bde8b26a0859cda512daf557c452fa5f76b542426b9fbc94f7446", "0x24694de53a139a6435ecf716b4139ebd01cb403a2d386d58ec733736cc21692c", "0x168618466211f05e88a1b771ac8959fce3a6352cb647d47346014bc486f9c0f2", "0x1b9be7105266245e707a46e2ba3de8322d4a8e7bdca43448ab05a7275e74e43e", "0x0fc2c8e1f54e166049d5ff37f6b5fad79ae76d7f069f98f8fcf8f367c0fb3b88", "0x0c6f5833230640ce8e70af4dca674821cee720690bd349e645f0d8f59684ac48", "0x24560e4af49ff08a2226a7f095e44890519c9b9976aefa3514c0b065a052e340", "0x0d61f061762684231c5f469ee0ac33f41d314add6a79d553c642dcee363ea047", "0x1adfa57f4ec443e497de3046f64d189a7cdbe086d98c94cb1d003a59265d40de", "0x09fc22885ab01975ba9aa4c8692a04d75e50971f7dcb7738629505532272651a", "0x1c01bf8f85c8bcc035cce929aeae20e5bc95e1d36160e286f5a373032cbb49f8", "0x2dfbcc48d7241a6674803aa64253bcb3210db37af2e9c036c47978c9842ae7a9", "0x27b945d4398db7c68d13576a8928aac99aca88a180b31be985b85fa89d0abd49", "0x277572bf0b290106380c4bf58959da217f9e689940d9db0fdbe79c1a154a7f89", "0x0831d1b88af8561c0eee6964bd720c377d04361f9af65ced7f0329e7deb715a1", "0x119459ca339e5c8a1b36593a8a091bbe9de7c8619ff83a8d32a566c2b15336a4", "0x27e8489bc8ced6a9f209bfe83f6e664fd2553ae84632a8dde85774f86a714f94", "0x10fb6c8fab6b135d7a50c54f8b1fb574eb0542c05b9bd84aaf4ae89328d6f53d", "0x1dad3864816666ca3a5d1fcb0dff07bf12d352f08aadd1d4a14b9fa9b2ac057a", "0x2439afd2542a9c564b85fa68fec6f9fd48d54c398cdfe14eecb7ed7d9e09642f", "0x2bea4058794d8bd725705e650875da2153b829dc245970082770a03546636a4d", "0x292712ecd08d349bc03fe610ec2a0e7d9b8383e3df3c13af7e57365b48d985dc", "0x241c1f77219d178d4d61f50838a69b6d7029ca1b36d3eb348a0b1a0b64c43530", "0x21919178d0ca9874c90f875407e6de742fd647a7679689972cf02c2863db6e00", "0x303d796d52867e994221af51b2120ff3822cd8a0637c9096efe2e9aa3d2c7b53", "0x1f0f30243212eb4bec6bf9e8b794989abaddaf1357f7d81b79f227314e9aa843", "0x0c12581aed963a169ff1c33716c8bafc6be9a8b6db13a25889218223f850de7a", "0x11459ddfc0f592b264269706501c04ce7bd998547979253ecdcbccaa3f54007c", "0x0f2b37146a0a04ac53e7b630871db252a1dd84331a8d39ea02961f938b5efa1a", "0x21efcae659790676b5d9114b81d60490eb551d6b21f65f362f08208eafbe4d3d", "0x1e1b56c6f76e3cc26284b04a42b5a02c5b9db9b842272100245dbbe7c876184d", "0x1087be4d0c47bcf20a815f60ce803d5fb9216f1d0b474a781c85e8ed1478eca6", "0x20c7a2c101e34270fc18b4f05d2b2f5a5a1298a2592dbf3f9b698e4a791d9311", "0x2d4886f200b99c57f4f09c0c362fd3535ae906a11cf011e261faf48734a3b07e", "0x2de6da1551b5f1d178de4dd889d03aeee464024fc2936097215c05ee14924f5c", "0x00d90348bd745e5cd779a6a6b5c4b625e1b86559d71c55a13b4a92aba2187aa4", "0x141c3084044d2bcfe9594da6bf8175b950ab36b4433a7e61b815b6101a5bb703", "0x067c3241799e3c89402d1048ba30030283b507553a06ca6b37a3872000412e28", "0x148f39fd35a56bc7d20ba1c8922e4ad5c215660dad8d446b0f597edc42a1fe07", "0x1dd1fd608be4764ee1dce05067899de53fffc6b00fbe475a2e0222a63c68c54f", "0x15bb0f86dd0a37802b115a81d4e3f68f9a1d3fe589e5848bbbc5f5a5d77beef4", "0x2642fdf5df1faf7aa6a2f37b33a665f163a7df70c86adaad87dfab06493ec72b", "0x25c726bb20a1ba08c73808e00f829bd3fd95381e78c88bb1d3f347dc7dc543aa", "0x1ca5808c3d68b51afc586ed44f44189a4f4d0e56cb496cd10f5de368966b867b", "0x1cdaaea17a2d78385a56e99849637edd7e75d8556bfd8f241a11fd903af4fa87", "0x255b06d48523f97d2d30bdcae93ce9803256a0723ec161b987cef062877948af", "0x1cb3ff20f743a845c435fd3e2d10e9312f61da413743c4a79e67ab6c32dbafc6", "0x047a32238532a7a734ddabb15024b8a154455fc2481d31c3548d1e725488651e", "0x0995b210131910f01df8976ae742e95e0a5ab490a4abeb30fce348e54dcc4e78", "0x1bf16ee530c9c94a408f2ffd49ace7dde635099bcfddc1ee41def1d86adadc98", "0x13107a5ea2a3406acdb6563a5e3f0809a1c6b7ea9a04928533266275fa6f521f", "0x2d562cc0650028df6e30c07bdbec07f73eebe766a192d130a6c737fc9ce3db39", "0x2efd12b5e4fa102fbd60bedc120b1dc022f8c43a2fce8642893698df53c23529", "0x110098c916b523211e18b985f8fcc7e8a804bcbc762bfeb6c25c810ced552162", "0x20a9d5216caac17db5ab45fcb6b45dfecd60a708291f5c86ab84da22ca596ad3", "0x048c825409094d056259dd3ca7e15a08594be82f488d66f91b43af660dcf38b6", "0x1984479ffca6b64a3b950372747c1b926ac36a7dd4f70e47e188bf7b410ded20", "0x209cec7ee37d47a8a56f8484b94f5db20535b552c11d5fdacc80305fd825c8f8", "0x2da9a692b08915b7b61930f011f76b09beb7edcfd6a19c48cde742e99cd49308", "0x302f50ece4afa17d552370a4e12c25a3b0151a43e3982ef5e71a38c74c36ef59", "0x1b46e081e756c42c783153f73a64054ff4985073b9a732153ab69c929470283e", "0x15103e3988d0baf626bf9de54d75b0301a2d3927c65d70b72391b062df7cb4f4", "0x1564e70062ed6c3b3ff272dea80ff3dc57ca1de688b1de481e7c0726376aeed2", "0x1e545f388b9e05a46dee5160c8706da80cf807c6c10260c85ce04ac3d41efc5e", "0x088cd407f0657fc8b6e8acf3ee2b0473e50e72bf58f54ea91eca40df80173dc6", "0x08b8e42fa1c4104467d67c7a3e384a3c0043e1c1d537d06beed997e0b52abcc5", "0x14f1b3f9e72031ba74e2e032804da7868d37bdec65c7b4c33133dce2b1990846", "0x1619c0ecca142ed142f88a2fe0b0381220b10d3ff5c20fb67a66badabeef018a", "0x10f620a862c7ec986c3ee7e92ee431caa4e8d3182bef22175d29542796c99925", "0x2f2f73f3953af6ecea86f5ef29075fc4e01bdc083c03fe6ef89842cb81f57936", "0x124ae93fdb1b32754036196428519c8350e699c10ae783b8efec04f6d0e4d40f", "0x23bba8fd9c1d888cc9f3268fc54eefdf5e18d60b41f5794117c800ea9564f579", "0x1da248f4d90e0056b683e2a892876fdd8efe474fb511f46955ad3145341e0d33", "0x2fd8234511e54966d00f3ea4a65dfcf0a6aa07d09323f994339b43bcd98ee670", "0x1cf83450d23c5fd64ea5ed6003ed6503737dfe249efbff2d05f6cc285b4adbbf", "0x0730028703b63880fa47aa0b948a2a956590f9d2de022298c0350636586dd7b0", "0x2aee39a51669c14763094fb8c42d649064985ff1e175d8828f4e0252e908110d", "0x236a48fec7f4871e2a0fc6305b4ed35169b942f9e8029734dc9a5f450b0a40bc", "0x26917d74db7165800ebb0bb05afd8cdc79b470c1d54a5eb1dedad874a4a77acb", "0x217279c9d9ad568bfde19952276e8a757021985b2c6c1967dcd8c3a4198a38aa", "0x1f84a26602f83970a38afdfa335e740e24b8fb974dd9d8b0319c7cf6d3491e12", "0x1429fc9a53a6937f151562283326d9f9954a2ad824285e563b67d2838e5dc265", "0x253264e5b4725993807f799d6b066d3850232ecd10dbbc01e9a0d52f81bbb7a3", "0x1f193de050e1e6fc55939e38c86903ea03252b489120d0a74ee2aa203b587f23", "0x0b179e9fcf3598400ce988278421f7a5eb6d5adc36917fa51649537396bdf99a", "0x0dd3cfd2e74ac6443f1089c4c0884a890801c608c1a53b503eba6153819f9016", "0x11e4f43e73c18df506683d89a511b493fafbc4fee14c34a8343eb03d1c1978ce", "0x07e9613f5cf6551a97ecdcc24d8810e378c9b542bb59d79461a4c25493571eec", "0x08f250aabaf2b7bb58a09c6cd958e13c0b86c806c33e60f4cdf06789cd0241c3", "0x1076a7855f3b7d1ecd5bdc7c0860391c57ae1ead3508ea994c31530e29c5a242", "0x1b57606bfd71ab8e3b2ea9cd32a78569d00e8a836b8a2f94e165149005a2204b", "0x16a0fec8e2bd755596396f1d1cfb79210796b85bd3bded82bcc2b8e6d4a61c5f", "0x2fa939b78fd3589160bb09b35aedddeb43c10dd40c2ac6471598c4ad136889ac", "0x2fec4aa75563f7b8ce369ac2d239486a7e2e593c4cbf7474fc20e5154227d91e", "0x0e1158e63c9b7df32d7c3f32a97e8e415343f54c62977e28f6be301418d8c3de", "0x0e11893c32e63b42a74bed81dd71e6348a9bcb55bf5835335580be1eaab2fee4", "0x0fc0701b9435b305b610c7fe0c667b33de7bbd330ca940d71d5ccdb7332452d0", "0x0fee4aa70a97580a7395d67a37f55330b908470fb803fd004d434ae664765fc4", "0x146742f4531fa49c48480406498c6541600d2a303dd8dac971b7b920714ee131", "0x26f145dc528340cb9335cbb6fb1e70d0c871849e7475e7f9c0890b907f9f6bd7", "0x0e307a3d20bd16381e2cb9d0b802046f3d33026535f1b2b7c03ab075b681cfb9", "0x037518e3a0fd47c9a1e33a918c30fe9fdce4dd04dc0e938162d2c3a541394e5c", "0x0520c4f6bdc375ba8ef5e4f4d55ee73949386a813c60718db08ca3e8aae680b7", "0x1a5ee091b74dcc7c3962590d3042486bb4399107600c5f6664b145b7eb8c9a2f", "0x1986256424084fb797529cfab403b2cbf0b6626d4930abce17b1a64dae036314", "0x03867c71d3cfa8039ab6407ab46053ab4b7405276f483dc98319047b951a156e", "0x06d563050f5097774e456405b8c40d1f65b8a0a9de14e2b052039700bdba23fb", "0x10767e56882be4809328a58d747c6d3ff85de6513d50d09c2e337d22eb11c20b", "0x1017176674f93d48207e239674d99ee39b6cd893ebfb903a2a41f28ff0b56332", "0x0ee7e6ce359254247932f4e03d3113c2ea26e51a83313e4c1649cce22366b3cf", "0x26ff82c65be4374fccd75b3238534dfa544cb04228b8b17fde68bf54a791d63d", "0x07e88a6fce601c48d5cd2ec5945e24080fb840c5ac75084146d4ba1a6a6fd617", "0x129b8c69e8518bd16636ab0f1a3d7e39ada28a5de79ea5fba1b6a7d13550b85d", "0x0d794f086bc4e45eea6337cd1e65391049d5c3d3fee8947032c40069aeeff68a", "0x2622b4fa8fb07226532b779e904eea44f6f909488cf516056bd81dafcfd60a07", "0x25630c8d104693e7a5fe41ae65db35fd3f4c63f8f51ef9d0948ea2595f158a26", "0x29023fc4f33c9028cdfa300500337f668de2a543847a619b6a6dcf7c64711b5a", "0x2c05672e9a763ea209baa0f7c31ec56ebabb34c45b24b7097c841bb3cbdab46d", "0x1f501c00c1ba8aaed173524be2f2b217d6b6ba00ac262ee58ff6220167ba201f", "0x19ba085b36795a55dbf040e54c356e70321b81fae29be0d71d777d49c4f4bb8d", "0x19b51d2fe788314270e14d1bc248c090da8605a40f7559216fb86482fe69022d", "0x135565fdd6d3e651191d7ed1ab010433782f9b07a41dbe14629bab713c229635", "0x22461ed7ba44596bf3a7402dcaed5c247b09835c534a81ab365148e148fd1327", "0x0e09c39935650773975a411bc093718dac77e8d7877666a85ac3da15805cdf8a", "0x084ab85314402a0b68cd3021e1ae6790b27686c6b0ff2e4948aae4ee6cb5077e", "0x143b5de83814814bc1553bc7ec9bc4756bbddb9d31843a9dafbc2936fc8cbf69", "0x2a9b9ce26f0b8721be06da85ee1474727580b0237cdb08135baeee610a460522", "0x0aab3ea72f43d0064b776a4746ea6e2b189b7e06fe8d49ebf452ca4627a387d7", "0x1656ffa30c037ac4573b8a0726888d99228ad832454abefca598c2318a3ec653", "0x014a2aa2a598b2e2370d14210dab5c5eb758b0c9178ceb7ff3fa681da5c9bcdd", "0x153c93de24e01c07ccd75236e4ec929b6efa0da96c687b5dc125f681850567eb", "0x141707bdc7698398e59f4ad04ec44fab8b7f4f7b20096f78020e948778a90f55", "0x021381259d9cd18a837dc34fb95017a3f32785bd91cc918589dae4212af7b979", "0x1d5d10c13222b1716d7a1def6b384d727948b0fdeb19e723b2bfa1292d97547f", "0x136ff9edb9c0568cd585b259aaa562ce3e24b30a6c4660acc0b5290d30a0da80", "0x2f3ab4418bb0cb7b859675b9ffce8c488f16cdd8cea44c14de0432e6e2881464", "0x2f03727d0894a74dc97e60cbfe74c7c7311b05d020ca878718dbf561db8bea39", "0x04ddf88beb916a6628e60a7da981781dfb0a5e1076285b24357f229128fe25ad", "0x0818519ea2b71fbec6c6bfff87c978af4427e7bcc576dfa5c15bc4fc9fed263b", "0x1154d1aa344585c4ecf9ee9390c84668dce99231c0f427e8629ac905234e9eb5", "0x0304298c6b5e2144ae9a508cd4c9f4c8160c37afa477b3829afd49d6a49fcb00", "0x13650a58dca9fdae806e76454c94a2198bed24df36d694a7a533147548ad0234", "0x07ccf19c8b8714b18d280a4c0ca0e8cc68e217516d1c54db6ff73582bf4d3263", "0x1b28476e34df146b4f9d530b6f59cd03abe281be29b3246a50feded647083d32", "0x1c58347a64fd5be62d478ca9d8fe383abeb3fa30d876bd5025ecf0701257b73f", "0x1cc9002d4119596aff974310da5bc62721915092504126a6ff3b684383f9eaae", "0x13d99de748b4fed4476bb2d6e9a4ec72b8b0488487d65822895a5267b35a5772", "0x21a780abb2efafce61f4d67da7b8bdfac494839e8c384f090605a94e7b396da8", "0x0d9dc88bf3861f705b9aaf1f82df9d53870a0d3f8de4fd8b8c965cdaf6571886", "0x078f3af2d13ebf855e840a8c858a3f2f14316ae520ab12fe61381c0d2d4a0469", "0x062f5b577804a423ff3a473952caf7f052f22c8b438f00c32ac888d00c99713b", "0x25a8c33d7adb7ddd6a19dd8307a935d9148f2e962475f241ed67051bec38bc7b", "0x0431652b03c94333a0ed76c36f1968d509ac73b8910df407b0343b9dd03fb56c", "0x22123ad39910862a3a25397329e3dc149b50289f9095e7224a81d5f2d39987c0", "0x2b43334743fc38c1bdcc7cc7d36ce441ab3be01674de449b15349a75cb937b3f", "0x2d0a0bc92e109c5fd70afbdb871bcec178a69fd1e244195e2ddaeaef5ca10dd0", "0x299db5f9e49f4aceb760a4aac36abc37af72e509ad6d21f6af1a267d2fefc6b3", "0x0c813f6de081bf25808656d58811a88b8ebd5fda5b1365a54f793ac2bd4dc0f8", "0x0e32673a68ba96aa959b25e655b9422d9871c6d5b615d14da978d104132fa938", "0x1a9e9dc3dec2e712da952fb4ce7f64e991cc590a0a3fcf2463dcef92b5edc389", "0x159ae72e80b1b65f43b5074ddc6642379e09c46769d7028b9d68e979abf59442", "0x2479b211ad9e81f8180fa2d44d0675f8de36046df216e254dda9c043b34d076b", "0x062f8b312f39bb2e5f11a786ea6bb051e5373763329dd904c5199ea19e3547dd", "0x22963c036561dcec8e1dcfed6ce50a7270acb2e415fb343cddcfccb77906da55", "0x04440fb323547f46c673d0de5a4fb198cfc8b94b64e0c776442fb1f189ad23b4", "0x2bd6e08f96c7801d3ec73c04ec706e3a56e10e90904c29a5a09654d56cc39f88", "0x0531d0d6dca62ed2cb479cc2490208473ce78e2d63a2c1d6deb6a15f7eef493b", "0x1611c38d07cbce2b51577b64073338f50af6af8a7d4e99928942b6a687340edc", "0x148604fd234d2f542477c7a0c73a59fd9a19c5527e9feb4165e4f711d04d84af", "0x0ffb01eb4752741b05b51b6331c2b1a03bcafad4adbf57fb621f8ffe3eec8e02", "0x14af647ed36be4e16593f8a81335300459721d7dc9ebaeb1c9de2450bc7d2199", "0x011e2a2bf16b4b70d91546fe3e9741518f14e2b6ee75d59640fd62f0606d6c98", "0x1fc2fdde6c5ac257f4052f0120335407e533730d927809879de0d023726fe4f4", "0x049e892045b8d924d757eecef66602987c317ba55b7909b5fbaa4adf56a9a075", "0x018b84c59e8b5bdc9e4c55ae91457be4a66332b5869a9bf4928124e170eaa6c1", "0x263c7be5644463e12efe717157993fd58751cd755ad31a3a75b7f52420208b1d", "0x0cb27cd239ea5d6f988acfb4b7de9a95b0eaab0ad0cec96c9bba0e6a2e459af7", "0x03634831e8b0e73bb4578749a7875f57643914df478aec0c457f62e8d1550027", "0x221ca9a31e8a11788017591eb067b1f87bc35b362e1047386378d85c24d26a4b", "0x08d5dccfd2d2164c0086fbdab916a75527156b82ab4536120ab6548dc99adefa", "0x1ea22f826469f0434f9dfe6749427fd15781564361adeea254850458ad482560", "0x16259979de9e13b79aaac6ab8a02ec0ef26b0b1690e682ecaa548867fd161a27", "0x25616133ee91e772b020d4c4c5953c05a8cea208b0162c82b57f9d07a5b6bcdd", "0x109451ff7ee8fbfd9563b8c2e7df834f72422cdd68f9372759c3a31b514d8704", "0x29e9eb61d0ce33c89954b0530ba55771f3b650a9ca00d0b52b6120da4bd97885", "0x176b236b779aa963de6e283bc06f4d40b2119fdf226bbcc4d56f9337ee940df8", "0x16a033d6c26609b062f9c369b06ebe1edac366e8534a33b62d0ec919855520c3", "0x27cd66a32dd969ba9fdb038201742c8062507ecad62e8947658f466f2acbbbc2", "0x0f90038779e72e988033ffcb1fecab087f302ef61751a6a84946c997e634375d", "0x205f70b96d6e7fed7449ff0f70be698cb5b805c7573d7708e2c68e4bdde851fc", "0x1ba89c27c091cf85f997ba0e3dfbb84ba95d463d1a589826f993bf60d8670061", "0x182ea2d905630567136f83ae671ac63158db9efaae71b5bd3ee0a3de9a9f9eec", "0x06509a885fe116b967ad2cc9999d442106b2f0967bbfff02c849c5272a100481", "0x02283f7d31bc75e8ec3c8f1db4cd383c04c02dafe42a6cc83205c0c1653aa855", "0x17faf24d23b240bc3a43066d218db8a1d8928714641e72b41b74febff037d4ec", "0x0a03a9fc7aa508da326142e62c7d4818f593dfc50e14b8b834ab893431a2a620", "0x071cdad090dd06cea45044f25a6adb52971594f3e161f62f4129e0b72a7a9407", "0x11f176589b8244f55560096a18423ec43451d6e99de165a29775f1e056bae3b4", "0x259f50c13a176f8513da7744fc31afecae0e9a4102a6bbf893178bee26a53d08", "0x268070c17f66e82a1219f144e97ac1a9f6f926d8d606bbe66c2bc7c051ea538a", "0x2feb1ea6480d6caaad0a25a3b660d0163b701931b7f73751d5e86a48f0aef56c", "0x267a8004c0a4a65b4ac33b8658b1b683579ed784647b378772b4b66cc4c189f9", "0x25d67a760f2a17a9435e5ba4d7486bce7a0010f771e909dc38cb40117e401308", "0x1e14c2d3209d43e73f72524efda3960e16c8d16dac6dfbae73c7e75189f20d11", "0x1c12410d09b3364340ac571b40bc1d74a9b42ab1001f9eb89cdc83a32656b448", "0x2797b79c67a48c4e5210e93402f7f739d1e4f443664e6981df1b4232a9916f55", "0x2f6fee780ac5a58cdafb653ff250ac96e02c6713fdc53ee530111131afd2dca3", "0x0096d875d77642579ca91708c5bccef61acd69fc941ce2e126c3ac394ca5b1a3", "0x09c918b1f1284e123af4a4279598dae5c44e5c201475ab083daaa270e43599a0", "0x14c0b0619695bf075a237947bc425adf17c35be75d444e54288a3cdc85b8ed19", "0x26d8f29cc41aac3e0e39e354547c53b30627ec26e4fba33bd8d60979be27cb74", "0x09d9f04394b4b2f5ba5c2e4f83e4f0f63e4c1791ef011148cb2196901dec70cf", "0x1704c408583e92deb63655c36b90cba6a9a2c403261fa2201b4fe6ba10dcdcb0", "0x030702b64d0a76cb0c9e651eb579263718b35cfe62e136472e08616938ff0ec7", "0x19decf83dece35005309897a3eb81d5e25cbce4eb5e2fefec5cf68d90383297f", "0x038c625f54e4d2ec49c3811c37063a1d108c0d5376cf97944ca1074964f7ea95", "0x0cd726d0859a55c8063056d8356ad29b410b1e1dd1ed0e282ae484d6b94c33ea", "0x0e9a0db14a18282d439947ef7412fe1e6aeefcc96b4ac50e7f430d980b47fbd2", "0x1d3b00e67012591f3fe5bddc1eb36574de7a0357a1be28359c1518d07d5cf985", "0x09745ec5d24cf1837696f5a867c3c6129a0d44c037d96612e99b82eef3dbd87c", "0x2dd5e2ea41588db7b01cc611528850114adfc8513b37b17fb2a46f2b09bf6b1b", "0x0b3dad731b91ed4c2aeeb10410c51a6e925360cbcab20c3ddecf83dbaa7e4c97", "0x049998b294f8aebbbf2fbbec695e4d2d56a9904ee051c84b0ee1fec9798cfb42"], + ["0x1373c771cdf15121a224f330d84b6688ef9fe0038a3bc26a28e3196578a0000d", "0x29f9fbda3c999836017f76e121af3aca5ce78bb48fa867a6a95e5b9db387533a", "0x1c7eb5116a20075c169b786d9dc86a24ee7a2525b565bbc262209a8cda490528", "0x21a549eb554f0f859f61d68f1b6bbe9aa3449a6238546bbdf2a1c308c9cc52e6", "0x0b53fff701347d1b9df98b46175800e0d3250ac6d4a1afa71a349ed195873508", "0x02129ac4742415c020db2473999b34dfdbabba3cad4713718f95e6346e1583b7", "0x01d28f305e8b0ec88da37c8251b0c8d230b68bea9401a15f5124d64c5454bc29", "0x1ed301e02e3fc930999fce6d3744c23596700c03720705939d61cee451faff93", "0x2edb1832966e34eaeee0903858afedb13dbba9f7c802c83ee628530d0e26ae1b", "0x123daaddc930c65fc67bc77ca8bf4123fe81fbd0501e8f89ac31a698756d87d9", "0x2bcc36362c90210acf67d5fe21d53104e9d5478d057141d3b17259fed8e4a8fc", "0x1fa928cab5938207e898e61d99c7d616269144f7900815b17095f7ff76e3c9d5", "0x29c2f1cfa72a0fb8f53a631e84cfdf5cc18fb426c254f5a905fd3e831fc7c837", "0x17a732ad13f1b6a1aff42664c390b9017c418210273c7d048bf300aa7be9c65e", "0x0c18c6e773ea7eb43b98cac66722de9d135484c6cfa084c2a512ea1977a60268", "0x1954c5c238d8a30c9f1ba4fb963e091acacbc3ed7b498dcf6600f530b6545e49", "0x2591ab77813f34d8a0e0b7b0caacd6ef179dd314597cfde78b74869d74dad600", "0x179db9fb8aab4619e67a6a8667c7b4b32f40ed848d8e33b756c9a794b5932fec", "0x305d014214b4107c11fd83870458738e04fb8dc4e747077c0e462f51d1c59575", "0x298723d70694578fe291635898762bcebca9ac4563b12b90e1fef4f76f9b7bbf", "0x02b336e9b38b504c412a683309ae8024d0802a45d06e649a5e53719aab29a913", "0x08687e699b527b1341f9ab7f17113d9e0eca0443251ef35f0a905704f155d339", "0x0a5ff9f7d45b3ca9b79b18d79db4307ee7c4ac4ddea9a8da1a36ab3be057c9bd", "0x20e44747601319223535f4566cdc86ca54324c5657265353add7dbf4f2504656", "0x0254dc31e3afd304e85c9ef8fabc1a1cd1a4c7b9bc860ce9ce436c33a202a96d", "0x11cd6492dc520c57dc3e55e33f8a387cbc1eda3a1490b6a4bcebd94e0742cbf0", "0x2f98b10265a30475bb0348d4a787cfb6603119a1a4fe15c36dc986cb4f8c7cf1", "0x153d814e4e55ad782bccef998c974250c073465ef7077550246f69c58ba989fa", "0x04db11a9ea014aed2ed08e46c06306e87131744d65d289e59964f930d13b9ed6", "0x0e9a9a6dee9339f5de7135ca3222fd2230c3f3f3e01eedd3633e606aa0b1a1dd", "0x0e6d8e464bfcdb8f9ee60fb1f2f33079911e7a073856faee78398811cb976757", "0x0237fe2151186437a1cf1901106ae25aac16e9846f9d41fd68796d7a28ed728a", "0x1e3d3d1eea8b7615a9897ef86229776cbda1d848aa5a680935825e73f1f5aa84", "0x09724144c7a4aec0ddcbba9f9a9e9ec9bcdf688ca3f5870f1ee6e174179fb440", "0x11139987e1147467d927db25eec88f0c1e0232e3486cd9a014be3fc8cf066129", "0x1524e5becef72c2697e34c8055ec81974af04912d7ca1df83e65a080ea96269d", "0x064d1299b11b1a6bb50b3e5ac7592a054fd72380afa4c092ce28ec8c31e80c99", "0x12d9fbd27be24eb620b7743cfc5296567cb4804091a1803dd977788a9f588e4c", "0x088d226e69e1b273eba31d4da8576085cc0fd0daae1546bef30079f84b651bc3", "0x15126de187213ebb40dce5da1ab3adc58a3139920c19497c3f47119baa50670f", "0x1169c1fe739bc528eac16a5263d22dee4a66a9961f01eef51684ef792126859d", "0x2a7006c683094f6f84d122ad5774ad2f0c9fa80b6c963e2fa3a1ead3d74f3aaa", "0x2607c22ca9aefe8cdea30fff05b05c4fec7ed8e9302d0f950cd9405ae94bb258", "0x24530b086f441e3834f36c2b11ebc0a809dbdfdd8317a384465931c1c58c2638", "0x06354e02d8c4de97a811481e390c26e5c93fc29a2a1a84824ace50467c9aa652", "0x1f6fbab3e2ea2791c94f5ff43ca128943640692151b295dcf42cac0d8ab0757b", "0x1747ca45b7282ef09928f7649f5cc8337537e2834e6c8905c1ae69008df70bfd", "0x03efd4b9b4d41974e36884e3b1055a705ab4ec3fb1c8e76f82e035991200a633", "0x2d9cd189d47b0b1b32c9a2412db6a59b1b475dc91ebd2d685c96b349c220b4b6", "0x01c9982650aacd1a449ed04605bd65fd75ce393d424c9751814fd03541b4756b", "0x243ffeaa82f3c038481e84b728b459eb221359851ae226c1c6d6a7ba1b1ffdb4", "0x0650daafd003bed0bed22bada31bea709491a83b55caff300339885481dc65e8", "0x16d20c619674228b767fc625aac650baae2d0cd15c1f9d0164547082b3099df9", "0x05ee8d5d661d39f15be923fa2944ef2b29da3f4831eb1e4f2f1c1230cf5d149b", "0x23ebc8fc40feec52402e18f881eacebfe441de256273ffe551eee0ed7e4dad73", "0x292bb59e7a6c70116ad7b7e11951c3b8b6b1b130f35bc6c428a9533c003a70e8", "0x133d42d9f83d054db43e4354d1bd7ec3a89b8cf94703fdc12950d9f3c21a63ea", "0x1fd6bed0d347a88e46fcb42f3397aeb0cf07a8e71467e6110b94c90f9323745e", "0x023b091a0c1f0822c8156747a907c8a79b8c1fcab4a3420622511c867f79d776", "0x075fc73bcb6ea2c158e721a9aa6c3f1c4d139b5cf1b752c87d96f44420512eef", "0x017e3bcba0b2d22d27cdabbcb360c8020e56c01c079cb550e3f169fb2a9a451b", "0x194299f0fb7951a80ace994a3ea3123e6e0cb72d5c46fee296ea6f8e73ad1882", "0x06f0e522924a4cf25d9011d477a2746c77e8cc77150b87b42c8c118f1473b514", "0x0cc91c18c5fee1b579da0900f04e5a6c36d65f0fc977993203d4b311cbf5d0ef", "0x1abd94c2a5b28e661310e3315b67adbf563fdb06926b6dc4e4d93d04165ed309", "0x24142c9001a7bfff363f3f67f4a2bd128efb72e846e3ba10344ffae655e56f2e", "0x1931b9d4523cb3f78bfbcf6b1dde68c46012aa747dcd7a3af382ed781252e478", "0x2ce3bd1161a012a572836e97ea8f0694f93c952d11fd11a8e8f9a49dff9df85e", "0x15a09fa373041c239e8149657c98b4f3aa30d192c87c03cce47a2b2453d5a48c", "0x0b1dc38f74a71b7d909e5ce7fe5601768738417a5786898da316f528998af665", "0x13ea22f9316bb5694d69024fee2cb95ee643c545496df0bd1c25490e34d0f1f6", "0x1ffe58bd14b12b9fafdc365e7081a395a9614e022f7f4d7bc7dfc974b0aad71d", "0x11bab1f186cda03c01e85dfedd40bc5d406e24ca58b305a6257b7c772bce2447", "0x14007eb2d1440b7b8e0936c79672051ae6f5ca9fd4055b417f00c9632abe30ec", "0x1037f0193d40f682ed9623a772de679f0431873e8e0b5004a1f242ac963fee72", "0x20b18be760e87d7c6149b810fe496abf77a0f840ee57ebcfe1cf77236338fabd", "0x1de835e6623f426711276dde7a2a1c20a61b910bf6fdcd33b34368cf96e95a2d", "0x211c38050b07c4a747c5dc44939ce1f76b0820c4b5f07a47e8b10b05e7a99d4f", "0x0372fc2cd832015e119c2a12d3622fd7212a4887e4bd1275c205fae2e17f452e", "0x01438dee77b0825cbef6b0f412e9a7277d4e5dc161ce9816f020ae4d1410d0be", "0x07f2ece16c12c9757aaa60953dedd709c513f6f8337e22968a65cd50b0d99211", "0x0c57a69d09575d8e1f525e012d73729bc89649b5bc4260d73e4324848452510f", "0x1c8d0a9db77f14f835309f2d3c6821b9921a366468a0d15efb308f57ce658513", "0x169da093e7a5b39bf088277072d4fd58d80215b69ca262cc2d12a5eb30c00b8e", "0x2f3034ab20af0fd83ac60b0236696866f8250bf2d765b10d6da2e3ef1e2d787b", "0x0e31b4fa627dd0e5f2dacaf105865a77781543620f3eb28ff7dc102656583073", "0x2a9007126f67e1631d29512f433a6a0bcb8c95a36be164be5fa86be9feb8a594", "0x080af40215b6078be84fb47acd79b59eccefe8a92b6a6033e772c22183bdc0d7", "0x0de8a234d208861ebb05ab3812e5c4fdd39e7ada9047c926efb88e1cbf2ebb52", "0x22aaf24c0f1e3f941606a527376ddff91cc6b0adc062efe641f96e3005af3659", "0x1f4f5b7709cf584bf0704861e94234cd8909851e3b212c64a0b3051ffaa2eb66", "0x1296d46427eb2e38816a5e817133565d4f6ded4eb72b5d0ab559bd57667aa2f1", "0x03fa86767c1fa2d7b4eb45b4a255b1298c55d045c69627f5d8adeb9683a129be", "0x08022805abe02bad75306d226478e49d25facfbcaff649364352d4a88d928f38", "0x1d58b33a2a9638ba180cd36029308a2e8be7ed273441d5d280456b2d3b8d8a0a", "0x1f8cae7359c800f307a625b66ff2154c6c4364e85ca8e01911a634aa4ad657a7", "0x039ca66f2fd7f80c17171a4ed8c82ae3c3bf0462d1451a9f5a58748958717bf2", "0x074f7e13e74f2b7b316a3839956f4bf2541eaf2497653b6db1a9335da6c882dc", "0x1f63cf1148c0efa656d5af850cd02a0d879ad7886cfcafe1ec55fe6bf4ad5cb0", "0x1d9bf6ebc0464b9cb47583494a27b45763d7a62296ecca17efbea97356a73e23", "0x076492874603b021892e5c2a03c706979be557fd4ee2e040792da16e28bc8ac6", "0x07012338c5c626e267f76d428388940b900e0085c785166d27b7ec8960825238", "0x09c29059e2013d0ce2cce0b24e3946765a95f040526c3c9224d2801a1bd4ff81", "0x1f2de0350981ab374c9ba7ea1a69d81b287c2c9fad9095205ab21582ba0ea641", "0x0c52bab86e259a3bd8c061197028873b801b4c56ea8036ff95a67f434f3b7425", "0x2f262e06178670c4ff861f670c7b51ef9e629213a6422032dfcb26760426a3e5", "0x2af6aa2335400114453435e97010dbe70786a691a5d972ea211af12d4ce384c2", "0x18cad65567f0322fd6f0626cb5caf567a46faa122d30c37380b54b6b5d01ab3e", "0x145667e19067dddbd4269db6ca76d0c0d7e57f1945eea251f8acad86e849858e", "0x2ebaa7e10194cd2957a13d1a358fc93ce54d8bd3dbed06e215b2bf2623b21847", "0x28b85b95982ebc76c4762654f932db031ffd5376a1299b45ba805c4b4e0754d0", "0x17cb0c473841ed2eb1f1a1ddf021b74f73f34172e065b24c9684dd3cffc340a5", "0x24f46ecb8583ca97c5b018736d227fde7c39d1978ca63c97e39ea06588db07b0", "0x274b5c409ea9809bf7f04a7cb5ee4d322d1a95a86c1d0961b15d4a24a7185dec", "0x2cba8960d543fd9846377348ea55b7d042b3348524d76101836646627ded4477", "0x27f02e416dd70b44907f97d7ecb945cebbab1d4dc73c8a18c00cfb1fb2469988", "0x2ab21865691229fa440b6528ad7c39c41693b1b939ec09dbeedf26f37724a151", "0x2910da916e438c04837ce799b81b0e9792c1ead008d92fcf9ca867b165f5e275", "0x0f03ce98366111de12ccbe5a1121c9f8309519a7e52300e397d9d90368207afa", "0x236b0371e7ce97213d8aeb6683f02f44044a1fedaca3d151edd3121a44fa19e1", "0x2c50cab6a867b1e801a36ffbcee521b83afbc580be1897dc4c5b6cd5df3b350f", "0x0cbf8c8dccd837d1dbac09151e4ee378f93e8548d923d8a49e6df81b9c3f277c", "0x1d18a9fb001245c1a6a17f7cd24ed820b0dbede9ef479830d0ae483346e54be4", "0x1476bb1c30603f7f94493d2e016bee63283b2a7efd999d59090c434c88837ed3", "0x24d565fb578dd252f56a7a0d5d8d4d1c5d727d5234ac4bd9a9600455ccb5ad58", "0x0c68e7e9567deab8e8b95051a7788443438e0f5fbe0d7de436fa3cfad596369e", "0x1ce5b25a539d3e1c0c5dcd1ebd0f4ee716840d44c3ae109a669eacddc4a35611", "0x2d3210e66407f6c343eef28fbb7bae59f626db73bec5d9ff06ba9d43ba84e208", "0x118ab3427747ef1a45a609cdf7e7102afae6d411392de254d3b72f1d450ad2f9", "0x0b45c70d2856c7e5b3fd6f8f0fde1a7fcb14a2acce4fdddfe50b39fb97423b5d", "0x2ce7c2bad5608153c5d1e40ee17cc33ef1783d9b1cf0153e4a2918894faa46b3", "0x0854bd46fef6c2e6480b3b0998215f55f4e090a3e99e03a5a64742f98dce5af8", "0x15c77e7600df711f58f2f0fa88b7d435770104a196076b74e6f5d7a96c8e693d", "0x2a0a3ee38edfda0761bb9b3017924d09309478b167a6099e54d2f5a221724ed8", "0x0e8c14fd43b9ace2b7e98e1ac65659cd37f8de94198aee42f5be6659765a4ad9", "0x163276e836c4ee6ab9466613c61fc6924faed9cfdc0a458bc95b59ff381e21e4", "0x23d1584a5cb0b74c00071c687cddacb4a632b104de4159c0e00c5352d078ccfd", "0x15685bc903a1c4c031ce016c093860a2ae2aefabfa47d1f290eb5a628522f5a0", "0x1b33f50e90e90b5dcacb1a158641d63311972457efd9485834b83f0fa04260a5", "0x28380c55cd667894c638647e6aa14b857d3f31c0315ab315d6a9457304f21dc1", "0x29d108541f3b451943eacf723acc6886aab18c8e4485808f4b1e55a73cda6246", "0x1d4c2cba59d5551bc3fe976ae5ac09e5b728d305bbda193afc259c99932f95f0", "0x16a8d69970561003650337aabe5e4e5ddfa4b71c1b9db8cc7b82780359c70d33", "0x289e50c1f0b0bddedc98b7e8a35be62f14f56dd5d7345bfa6ad0d2e43bf92e43", "0x0a41765a5352ecbe0b327ca7827a9fc6495e7b6c142dffca003f58383c6dff65", "0x24c0d42378a0c8a613c0402ede6de9bd3527ef2b82ceea6006e7f71bf77666d4", "0x277cae5057d5b5ace72c47e60cc4b8e113ed706b5d91ea4fb9b13fd19fa4d47b", "0x0a303567cbf94968090438a23e2fd2ccb8a7f71622bffdc1c1684e8958c3765d", "0x1f7ed8c267a29a69d9450dc74afaf768a884e42c37e0e6fb4d4385cb027ab949", "0x086c4b8301656b6acb8a735019556a278a60313040f236e815fd22e8473bbc65", "0x27b63fbc29594760dbffef8d30fef49afefddf1504bd487fd6282d9e3d6e3337", "0x00b9c0a45621716f9849af8a3c9075b7ab839c282881ede8b0e5a9e723766d70", "0x1b5ba2fbced922c3796d57b4962fd253f5ab6e2b91355d2c0a8d226040652395", "0x2e1ad57ebdf932603f51bb1ddab204dc026e13dc4986791f54c4030cac6f1938", "0x2f865e1df1169a35771f617046485f8fb17afde3b2b97d1eafafbd1862ac6e16", "0x0062ace5be380c5e4361b209b80befdcad052146b869d50dd58085ea65d9d141", "0x2dbcbb1b4ea08e3769844bed522b92ee01fecd5b3f2379c24b45d59842536337", "0x1ce3d90034dfda11e9bf7d92b65f810483c48b26cca092747b4ceaf07c7ba847", "0x086583a59497474b0d1eb0c3cec4f1df596aef3db638fee1895d3f5a5845252c", "0x2b984d5c91b7b320f7f297bddd68789ef6ca88cfed3957d2c5e8a6fc0e78d76c", "0x08edeaf9ddcd25a730751b32cd43c630da831101eb310399356e4b52df11fc28", "0x28df39cc7f96672569cf86ee373623da9f1c58ff1fd66d930cc234a7e959c41f", "0x15af6a84c6b142eacc58137fb371799bf3aff1780455c32d8d3598cfb91b24df", "0x19cf0dca22781a9bd56173491ebebd18ec8446d6717563bd3a80cc52a1be6961", "0x04e0e0b52923bff8b67b1210f23a11277337996ce50180eba97775618b003558", "0x15ab0a5fda2b5191cc2bd0485a30c2e75b540bc397c3436d2e64b6a2da9ac49e", "0x018e83f7a6bbf457fde7b8ba4fc53ad4810ee071941969f87b62b6c6ea8f55ef", "0x171b0539cf1d6e8519789fbeb31292b6be60c3f93e2b45309ab559a854e63355", "0x2ea76a14e0d177f355f681c822de2b37142ae6e93712492265d2992473da1021", "0x144292627b643b5180c710eba6d74a076cda5d3ff836576e983da9b7d93564b3", "0x07ad2bf37ce1ef4a8fac5b44305f1a5d2127d8c6ff173ec42f0e421ea53f7c1c", "0x055514dc9b01480ae57ba24fd5dd12f229bb5597edcffca145156af3324b0d84", "0x0b05a45bb9377e1597507fde0dbbfa2d642f6c358e233ecb8ed7e575ec6a34a5", "0x198b369f024a0561af9ad7a0cf7ac107042b42f9301bafe2e1b4c2ad9e46fa86", "0x253f82b21addaa86724677bad4a4c464ac5ec75c78755fbec6f46d9ef73c2f04", "0x0ef256e9d5e9e3da1f56d7d2115fdf10ed7674e3cecbcc9cdbcb46c7cfbc7429", "0x2d8926570b080260164e6b66afafbad3d925a464e995d7a1d02f90c7264f7b38", "0x19ce4c36c51210787f71cbb080cc340f2fb732cc191618d525400b2fdc516896", "0x059df907c9fe5249d484183f2e89f102e1f9978585c88b57b9a87e8d8cdfc6cb", "0x2afc27a41832e0bd3bd8e947284d9acd1ac7050295b388b6b5cc3179a842f803", "0x06e960a5b2385417429dfa89cd14d7787c0778e4c5421dba2eba694b0854a21b", "0x1e8b790ca2d081624486acfd613245efd710e7a7a908a233ec5afe1148476098", "0x2f68d78df4e08b23c96fa9597ab7ba5a1785329a370053300d792a0421cf3ae9", "0x0a2e82f0c2f9e345689b2f2da2108d018cce3084ee85dc83d57937facf3e56c3", "0x108b2af65d8a2b8ef81434d73646cff6c25fe8ebb88bb768dc435caa19143111", "0x0c2f90eb77fb2855d39b745a85d3c960c3d0c1ee740d8777971c936ddce26601", "0x03daddc5903de3d5302c7a07d4c546039fa84c3da6cf4eac9c2b9cbc94db005c", "0x010f4d48188805d3126738d24976ef4c80596b3c6380effb23cb3b3eac954134", "0x06701317708659ce74515f62f9128ea9a1cff2796e18eb9eafe9c2ec4f9e4280", "0x2dd0349f0f0ef52d77602037a211e5c565e0091e01072ef08630056d907fc6d9", "0x1b15957d8c8774076df16d49d788b11a5ad4690cbd8022437f402a6b25eb5436", "0x02a92a1f50c4658b687f2b6c8afb5323c9b8e3dd17fdcd5c40e17db738a27592", "0x0d4cb316f072fc8e2463a4a42d168d6dc04e0b137fa4b57216d1f2ba5e64ad56", "0x1cf0f9bf90e207f3a0aa5fc108538c641c40e0952c6f66e6024fadbd2248e16c", "0x0b81c03e6806a49a8a5edfc3db4bf78fd4beb80674d0c88dddeef543d3600ae8", "0x1dbd32d049764d6ab6f677b89c408f9f4d3f29b5a18148cc8d5740e48ecc9d35", "0x16d52bbf838448b0e44c2bf05229c3f741b966790438a2997be9cc660103ad90", "0x2c8ef880d5788e5359b97d1be554305e0cf5bd55c293991281bfe5401b9e35de", "0x1f007ef167c9b99e948007dd8060857192b9dc992127c235aec46a2b323f2f11", "0x0cd33683ec08207c56a80210d9929731d2035264394841b2b6f65c61519cd842", "0x0af1b0f70f93bb8f5377db6517c4482ac93ddfaf6051e68fe739f161b4380fd9", "0x24d03d522118e544c04d49d38affea789e49d2eb2fddd171613e69f4eb07bb40", "0x2f1f0e4bf9adcd2a4f1aee5cef4c2d3f27c9b4824796953025027a37942428eb", "0x248a412f287cd3b3448930a1039ab32281958f99a2eec0c2f1a52a65b3e589b6", "0x21e374b45da55c1d3d89c6d2173e11469992b81beb2d3d4cd4d16038dcbab231", "0x1c2f85c42f6a331092ca033b4ae06ab667cd8abef24b5458eb10e53346694a65", "0x29eb555ddd4c74ab9031084127bfc25036f177be8ed62d32ed35973d3de94e76", "0x07d30101df711f25364a955a7002fe48f47ec0a7c0acd54ba0cb551c912ec6e3", "0x2afaedc7a657941c9e77e728f202d568e4ad1230f91d369a961b4dcd4e15a36f", "0x2daf426a65d37cc81125c3d1cca527cb29e9451be0a5acb7e4fc81b2afae5a83", "0x0c774e81279520eeca70f8a7b3d7799bdee8371a9fcf902d43533e649c7bf48d", "0x0308212a0a56cac99561515c83f01dc3684be8a37a25197b467acdd367ee030b", "0x20fa9447e92e4f68025e1bec51f115fb653235aba484fa0dab9cac4aa744d295", "0x2f4f647ef450cdc4b3954ad14c7cb1c3e08d140549bc36c82f739293ce8b6245", "0x25a6d02422b9e00b1ca5e1156b87b4cdda56cbbb341f82b4a63ecd41afc79bd8", "0x0565834c7cf03c8e542f1c3288006ba9f35c56c95470bb86b9668d0063d095cc", "0x24a6f88d5d7090b24a151c68aede9f347fedffaa584aa431b2d0e90da3cd4fbd", "0x014b0d44ddf5cea576cb82d399c8e4a53e78225b646d25c97b504e63dba4ccea", "0x251d320b7603c1c86b6102493219cb1f737e4ff9b84cef7050e37456e8f03acf", "0x238c2bec6cfad388d477c55c0ddeab2d3268155f3363bcdefd3cd8ae5f63766b", "0x1337d778bf0f0bc001ad9dbf9999379cc08de0ed567568448ca3c0c3555da9da", "0x269ae35f7eb384ad1965b82f8c9e8b4f65d3cecfd767ed4408a025ac7ba97448", "0x2b01d8797cfb9616e3471921b610dc78c64ae9ab2fe48701baee5e7853ea1891", "0x1acc5f89dfc24a03458156ff7b156b22f4270746900d71368b1e8afe9a684cd2", "0x0a66d6f919f7dce7144ec8f66cece8dbedc62327e0407abdc7bd71060f8d5b78", "0x17978e79a55cc077d4bc92b38ee5d357ab4a6c62146b2a84acd9af50954e8ca8", "0x11cbbbe66bb4d957813408009843b2c96cd7b02fd4b449db1895c833a64ad04f", "0x0bc7843529e13dbe304210922ae9515a2f8148eaf5e83bd0686112dc646fc93a", "0x23d644fab01d806361de665c8bc6e972d9658d29a35e96208bf53f8fb4ca770c", "0x048371c6200b923b1a0ad3f008310dbc350e1e3c470d24d3ad23eb41e3d93b3c", "0x21207b1d47a4bac52ba3ae9078c265e5cd3b11a126547f2144e501c18a656f66", "0x1ab86eda61a6bc9606e65f455c3c48d4136b03d8cdce695e750c257104564704", "0x0471b41c6418b6afadf0c9517369b01f62ba78d561941c4beaa1de9827676444", "0x1f67ab3d71646c039ce09ee72320b2ad755ffbd7187eb43d5ae0850c923ce6fc", "0x1d78da55a4c0c3fd78ef34b4316eddd7f36d5d8db6551bcdbc836ba7197daff9", "0x14b37257c1f8852aed448036afe59b3a12159b89afa5e2ecb35063aa91c3b791", "0x00b904b1e068cb7712bb63b1721dbf5adf5b6717e6b0deaefff1f2a988b3a5a1", "0x2fc100ecb79693aea91c6118b70209fb445c5feae4f6d1c5886018a0efe4a8d0", "0x0a9d77bc8f430233b59f6737b9c0197aece2939a3b63c5ac24cad31bcc70074b", "0x1f4bdc685882ae1149affc74fa1e4ca614cd9499d75027a6ca7200000a539b9c", "0x0dd11b1befe293110cc4f6b5c0de6fae3a67edac4e84b238facb8a445fb73fd3", "0x21012864a44b6479d44bdb1e2e97764067df69e076d1e1c310de929bcc1ebbb5", "0x142cea93e5949c06c37dac88b664ed36a8bfe1abccb4b3145d0087410a5cf8fe", "0x25d074e31dd093d43fa3a3a6b5c044177d43ce7739acb9e5818ae8339e9335e3", "0x152368e8dd72e9bd3f00fa47ad0197096599bb5ba3f63401ae9b3689f5afb943", "0x224450a6f24dd8427d8d6f9dd985630313eca57d57479ec98ed3eebe3a23e50d", "0x08ee8bed1a5338113308a32cf4b8f0a42b9c122cb8ea937cdc1e31878554c81b", "0x068471f745758670cada7f230140e09acb0acfc237cf7f31e063553bab156dd5", "0x17dceed9a861ada2970318ff8b9dc13074a1113f3076ed7ddee67845662d5594", "0x21c951b2849f51336da12e1930cbb2cd407c5ca0bdf9cf6e2ee88a8e6cf36e1c", "0x0aeb15bdd33d09c780eb1ab6848dcbc1a18a5c6a1f250cee87cf506d46c36e36", "0x037e66e0bf7b7c7f7b00bb5c067215562220044c94bf788c40b4806fe86a08eb", "0x2705d297db4ab693a65d4cc73ed80ceac3a6e10d57123701a52769095647bb00", "0x0df821b1a387e78f8e2388cae0294e88d0c2dff811425a940a60e0285a71b3c3", "0x2959ffca94642766a46cd8340db08ec9ada915d23540688ad1f25e34a9ae3afe", "0x0e86b8655306bbde01748175b56e66ca36410f758e1bc02473e4255d88120a43", "0x08f94dc12076e1bd3900705e880245a6149ed38f87baffda0a6f4b14264b5fcf", "0x2968e4762ea9e6ee5013d96babb250d95f300fd80d86d22cc095de9514590506", "0x1556c2665a0e74cc056fd454a85a3fbecb57a23a879dc1cc95b98d9bc497018e", "0x0ce86a48c05d429be480b9cbcc220f3a29c6ec865bed10a07835c6fe6bee34e1", "0x21e6b5e9a5a5c57156dfb8cf5a8785d2117599c247af6feb577bb44e7524534e", "0x0444c6559f15a5d6f3781bc392e88e8ac582e487d60de12cdbc357c9623e4ac4", "0x17cdb083db2171c7621198f51b7d189117ab80e4aaab817656342e1b0b3dc1f4", "0x0c4fcd32fbbbcfb27be41a9492ec55425969c9142f365351c7d23478fd68b3f4", "0x037a47a18dea6fc765e6ce6ce7bd59e3d1103ab69cbf9206d1c2ff4ec0389576", "0x2c14bab17a78ba001537e37a630357abe06ecbdbd2af7424ce1225d4a4414b5a", "0x10bd8cfbacd505ffd57a2bfaa757ad3e45f63ef37e67dd541ef07e957984e7f9", "0x0f2a0b6a66486b55fd8273a453ef622f4c1d4e3d975c34d538cbd8440a3ce9c8", "0x297b4eb48434dc5342e4c9a262c200331480a02109163863805bb70fc7a92614", "0x22cd3cc552b8310954b62b62d4f7a91864e6b6cf79f55f244d384804946a77b4", "0x05cf496eadc8ea0ccb36502f443c99b347bf7023f2d7fbce512e1c58045fbb2a", "0x1e0ae8b082d3726190a6878f4b8889e0b6297d27de3f183aa9a9f2cb2abb90d4", "0x2b282ffef89e1c3a90c359bc7c80133b9f634215c30c1db82a095012793c7c1b", "0x13bae7e838c638a41a9961ab81520f408c9921070d9a02a7fe5bfd1da1dadc4c", "0x0cdc320eead70bf0db57965b29f9cca28826f6c44d824f7f122e430aa4e746cd", "0x1b94ed891e3a73e1bcd6b7a9fa336b485a5a83e52d5db08b704afd8d48136657", "0x2e8d765a70fd39533f1c456db12b420cac0d7b086bf19596c60cd6406b076c67", "0x2f69220fd9209bb41b0ef942bfeb31137088ff9a338ed283de9ec3a8850e96be", "0x1506e9fdec14a9dc03eb159d011f0baba652db364b0020f3485da40ef8079ebf", "0x2e43093a060a595dc13213ae7211c041b29d39401dbbd4e7fcb0341914492a08", "0x17426eb02415f1d682735382450efc76a05c6a0218671ec4fa3ef2d03980db21", "0x22a8a8f47529433cb471acbbceda9b6dd4e9e57121745b86577da8d106171e3d", "0x10d066af04e7708e512a382310bd9a10cbad751a721c660ed0f807f1693d6826", "0x1322cabd21b8f9826da84816f3599f20a3324bf47b44abeca3d8e6a26bf64c8f", "0x0e9033298b7fba81069ad708a401ccaca713c122a7907b9d2eec39ec1e5834d3", "0x277a069d3fc5701249012a0fc2d96d70c58b8f0bb45a1d3932051d4541c9be8b", "0x2b6a4d2b44646516e0511d03595b94f5f31b538c8445562a5f787cb7916238de", "0x1e9b7e897f636c286ac7592181135b3061cf02de5eb4c3344f2b3246f17459d9", "0x089d5576bf0677940ec8531e33761650a38edae669b73ee5f704c018310458bd", "0x11d91cb6a7c91f3a3778a457bfbcba977b28eb08b850e47260dbb3d205ada63e", "0x079ebc334aa377cdaf2bb057017b776ad150adeb27ad95031c1e6d6e4585b9a1", "0x0eeceb66fbafe2552212467fbd7ee2c535244642c87c54efaed43be19344eefa", "0x1189bb18157591e582637275139eff1ff180217439babf0369a7d6afda53af00", "0x0a104e1bc5aef5ba3362773b15d152a34bb66fcad5169061e4c74f42f8082ed4", "0x12aeabc55f0a0a7394844072432e9f1095a79e2a7b8765c0e7f93721f5eb8feb", "0x2d5fa7e448eba0f3f75b82d155d2bfb467c11361536d61cfac1e9eaebf9f9960", "0x11bc382ad6f3998ae12761764e273e8e57de5244008964ddc1ce7d887b3ea15d", "0x2f9de52e1164d578244301dc0f52c09dcfb7b12499ad768a4c91af37f1fe999f", "0x24a160dd3b3f19071f231118426515e7f75fd3fd4d98479d855e88cc40f2a146", "0x2562dab01972dcd2307417f8356cb096e5a52b39898d7700c9082fe661ab5aa7", "0x0c71fc8544d8bfe1eb57eb8b19344825f2800e7728874c0d4aeee09d37fc8018", "0x1c38cee709ea57a5433ef05d4f3d8fe85d27595ab5f3bd5b1e818a76b17edc8b", "0x1602213816c60cc200e8b2aee509da4de8952ca6f775f6951aa176a6cc78d10a", "0x09a046c67b9802554d315821da1c3d1338311acaa29182226455685b3a6a1a04", "0x0a2ac73a3b40f2e8d93b888e15ad9695a07d56f02d172fafdc326e99ed94475f", "0x26497f1cb3ed83f61c32795f5460e2320a0b056117fe2d4868bfcb691acc9d23", "0x1b1a886b957b5b7af3608333c34da124c68e137697ee082e21d6e9f534adda3e", "0x1a1cec97b3e63763610f3fee9e5f884313d66f3fda193985ffffa26388a8b536", "0x24eb5865c2393f7e9d6da7a0460f9fe0a1112c41137007f71ffc53e90fd2cd5e", "0x05ad739f4ae7385d18ae961990fdb8ed3e808de0108cae743d7995a23239bfed", "0x20ea4df643c31b3aec0c8c2cb444ffec0f2351841827a82103a36fef81c2b5a3", "0x07e426d7cfb8d0ed8f150d76e11c42bd7d0d0be868f7cc80740d14d6b6d985e3", "0x0c284170139a3d32feb893e2e393be22fc5712b4b134e117c9cbf91c06c7a156", "0x198e892e0b6e96942779fc23ac86ed3eaf5c68c79f8f881338ddfb381bcab3ec", "0x04f7274b4c460cc0d5d78d6391700ab706b188d6a4cbcbdcc6ca631c617a4146", "0x257a207c9af017f50c24c8286e99a006f5a9a066997fea4d63cbc4479d153cfe", "0x2f9195e87792cede31f827dd408160697c174a84a9cdd07cd69b4443a45f0c81", "0x02c32457f1c8a48108f1c16491e8da1e74ae1fb598642acebb76d0210d0af7df", "0x0d16062ea9a5b5184ae022c568e887e2fd31c2d2f1320acd915b84df1cd77c3d", "0x273821b59fc23f585f423e16c5d9571e78b428e446adaae789c159866c15a9aa", "0x28d58138ca8e1e1f410146ec8401796f7cabf49d41e59f4b8ae942dc6fe0ac32", "0x0cbbab4a22963ed50150ae37e8ae9cc139355f83de4f38f01179735633ae3f85", "0x2f29b839fb5759272d1519a17df03310eb9afab12540693b781c9397c0da489c", "0x212505f1db73adadfdea6353b38b8574fd52de8ab3cbe3310f5262a9496a575e", "0x0511717ed104198d0b67387b576b020b6b645d94f205f7005ebb04161ea0959c", "0x2cd17a3fdff1b2ee153b65554fc06a4edab7cb2d870c1cdac0e9651c21593d80", "0x2421eced65e40f5bd7b7ce147ab0845888853ce9d9e90242ef0ecbe4df94f4a9", "0x2b7bb1c13a605e06226271b1567d8070576b71fbcfbe0e8a0ce6ed9a60be4b60", "0x20de93b09b10f6f40d2960f3ae7f703d4aff7d4e2a309481635693fc1e7b57cb", "0x15f39da6947d0700036090111b9463cd322712f5fc0db38a8098abd4d3fded43", "0x055a10c5b2e1c3d3ac97853d37acc7ac3201c3f69ba770c90736e59910299486", "0x0f86f85857f2f3bfa5fa407678359c5e4bd7f68e4f8e4af22314df5ea170cb05", "0x2d57680dee104eb6887c77345eca7a8c131022a4471f88c54d4db9bf7a18f475", "0x01d25e7170e6b92b2bbcefed98f7ccf94c20b97a546408d962e48f6adfdeed55", "0x11dde898034df5d0a50a1067fe3a5b6e9d546b4268043f5998befca980271e07", "0x0d96e451da1d5351d3848643cd82ac82a91d297dba610e196992d08045efc565", "0x1ec50e2f05af8bd16955612b7dd0a22ae046db692a340f0b814b472cebefc7f9", "0x12e7a565e645e185f7c9e00f06ade71736d990052e72c97540d79391224c82a5", "0x277d5ebf33d14750cec8a5df484fcdb392db7981559aa350e2ba70b3565632ae", "0x227a8c5c6b1f1a259d5fceb57d7dc834257317a8c1b94209c3fb86fd94846a89", "0x2bcc414a720c85a42f6ed14bf7d1e2ca7d3aa5f7d61c4ff5d1bd1eedcec09f7f", "0x1f7864a729e70f77cc1b5cd86c193cbaa9410070863d5da37742d665e2de3188", "0x2add533a1c14b4ad2a4ecd780397391ac9d9ac8068584c3ae69f56a9e4d72ebe", "0x16198d9581405334a13e109b04d9d1f5638a7df278300e56059508f6ef65460d", "0x0a060a2599eb696b43d275c43eab0b3b04b461cc4c436cfe8b1748d65d143379", "0x302e7b6c0abbf4f44b1d799791ae0cc857007b28a3748798965cb4b281822b3a", "0x2b8971547ff17281a93943ddecb489f6c091e96ce505b7ba30c148e036b30963", "0x21f67c406780578d1e13c001eb36a4dc2b5624dc3f12b3e4a6a02570b3e84cd8", "0x0caeb5041b8532a723d9c68a990c083909ab94da865e673120f48846ac77bfb6", "0x0d576a5ddac69399f06fd5e247417ddb73fb47b533400bc79a35e18f0a51ad86", "0x06dcc4d20da7204e7e8acb7404b6b719cd1536af3616e994887b033125614d53", "0x0d0ae80d2c03d27ef6d6ac6edd57faafb88adb18cb43cb3a34052c92a8a0d6b5", "0x02217b24cd9e573c8fcba46d3046d830ccfdbe8f69e43eee315664c465fb6b5a", "0x1b037d4657b2b3c4136ff83f2de746a1f314dca33ee2b92a806636e8509694cd", "0x2be7d85266892fa4d49762ce64ef84575fa3bb6212df994ba9fbd4e2c3591f45", "0x2c2ec68b3fdbe4b10ca34ad1f1c9ee5296e4e418132bfd82fcbaf437210dd417", "0x0356ae0ee778d427d6a84545bf241a684fd562dea92cd30b0b75bd9a7880fcf6", "0x0ea67bcd02a935ed5631194f06968434fc9822df791ff6f6ad6c402a0beaf184", "0x188bba4674c2e1a2b8d1f1db4c2b3de7ac2f572e984804acd579f3c22e0e4ce8", "0x0d821e605046e0b7efc627e1f2dd84177a66e62974bb7bd3ca79e142f70742ef", "0x19bbb44064dac933d1074ebeab991790c637a4a34c33d1c9ca0ecc9559808659", "0x0b3f351b3bccd96bbca3453bab6d10bf252380a1e3b3ac2867b214d063b02d4d", "0x1f657838a4ddf2b0639961c92619eeaf6560243c0115152587fa3b633bc7b14c", "0x173966b03236c921b1b6e4e4e77fba43903f2b68bf83ffd2b00b2974cc4f4c24", "0x255adfccf4dacfd943393fd90822fb3e92292b150ae2205f9ee3b6837c687c94", "0x2ad9b647fa2c5d97d6411a5684ef18312cedf6f69fdef8f68afe434442487a2a", "0x26c815af9baeadf098c8be65a9b66936d88a90f47c878e46d55aa41fb23a00f8", "0x215300316d98fb3bc220cd379cbcf4b54133e613ba42fa8b48984667efae1053", "0x051ac2e037a8cb84449738040cb5d92bec1ebf64e1a65138c7f2d862aafbbbea", "0x1b0cfa4c9f7b4aec9c6a709a106d177fad8ffc6ac364914aabf33627d1de6a32", "0x0084f5b80cd3806bfd40f7d188bde0f5526dec4a77bca0449f1101f00aad4a4d", "0x2fd6803e516e8737c45bf2f40736831ebed2b6e7e7e643e0d4c67b5e51099d17", "0x0b17f732c6d938ac7e85bccf9a8dd401272d7d6d623a8e59ec3ea67e2aaa526c", "0x01b3fb88f6cab80f3af974dd496c9fa5f905da9a079017bc5299080e1d5d4f64", "0x2319f57279981d0a12b06f2f7541826affc4e51a44e1990fb3015ddf9a183715", "0x2f4dc289b5e7f23a370b0f61053bd82fe4cbfc7d1d11d13f289efba3a3c54121", "0x1b679b734eabbe6f8c42ad18dab54de081c89d68c708a81f8fe61438904c2ab6", "0x0a3453c08842ef3080b3af74ee8e799bfa236790cfda0023b588eca466f19216", "0x11c89d2f5498a788416d0042cefa0d5442dbe55f21226095045168139344f0a2", "0x0b3f2c98ca3061f627213760506fe76ffdd88ee755643788837c18dbffb68ce1", "0x2575c71fb8acabc5cb513bf66dbd4a4946f4e21a7b2f1a4062972a08425a03b4", "0x1dec0944dfddc9cffbb55c1902f845725cb92e09545749de3f1a118d41801560", "0x2532b96a8b50828cc619ddce80a2e9930dd8dec6588f52ed5c3e1980ee030642", "0x00eb3e072e9fc2bea9aea03cf45eb481c4e6bd67091f59ffa1f4602fc399f21b", "0x28a6e7466dab1f493bfca1991bfb886c2ef920770accabec486b96422698612c", "0x18b72ad6c372bb8b3b52ceb5c65e9d78c04814e3713baa81323f2a1956957b8f", "0x2fa98e48794fdd4cdba8e11d0cde18ce5b2cc9d0db7f65aa1b6c8609918b2c63", "0x022d6d05abbab403b1327edce33024fc9183aa514f69d1672d49ddbfc9e063f7", "0x22ce0a2387a223228a0a86b942f135a59d6bbee9f1b96d3fb3a151023a67fb73", "0x0a559e751dfe1415e40d0227d7b3dd1f188d99d935596d3dec2c033de5a22d2f", "0x13202360f125ca22c281a18e21a7ac10b196153236f86c5968b31ab50c282056", "0x1e85baa376985015ba63c3a38e7817ab0a39cd28e237233f4c1be35632fc72d4", "0x2450b198b045e4f0cd540b0b74de5ca56d85da5fe59816af30806dd2e036c5cc", "0x1bf04795a7979533886f7fb47d5a0b7edd2edcc1091255aacb96efaac6712b6e", "0x0f126ed9490b69935be97110c476118d00c8b07c586ba04cf81ae699607e62ef", "0x087ed4752046c22599473251c53f69b817b08a90f431417d9bce87ce4fd2bc0a", "0x0015185030c12d8cca42f20872de699989901e25569863a4b5b3fa2682dbf9cc", "0x1b424b9546d87ee6ca28fb8197a2186b6e001556b08e19002298e05f1664dc84", "0x214ba23a67a222ae9e33b4615a31e7b09fa911e18880bc379dfd20ed1177eb2e", "0x186e0edc096c6253b179102a7c9ee1496ddb6060c993fa9e83616a7daa6c2243", "0x151bc9534ec5f36cbacdd7bdf6176a60c9bb7b6cfb26859c7bcc0d1f7bc4dd0f", "0x28192f62ad97323e6cadfcbb9a99f5bada68adddbac3a4ddc18e69b95239b166", "0x0825b1232e6831678f691e7e1eb27888439e12e7baff84db3d18b7bd45172b18", "0x099e93500b62b10127609071e75f4c54cad78732b48596d16b44eae459a59fc7", "0x0dd5cd3a64731f803da7873057eb0a49a2ac15bd7057485b43d47340a202abba", "0x1d4cf162651067f82fc2124f6d674daef03adc3da75822bed2b0d8b690b6a34a", "0x23a86b440d5efbb0a26a76a9993b6ec01c33b46924c3f601ed79a87f9c464068", "0x2c983302ac40a26cbb323eca868e9a757e2a66053bb081bca55f55635168884e", "0x06e98d3bafbdb42dbd2ea2fcb9698273980bd1c808f1f7de799632a90ff09b36", "0x0f2ebb91192276ca7521084cff7a025fe53e14eb884989381d79c06f9fa9084a", "0x0b67885ad9dfdac5f5369f6e3181bcc79081981eb6177db27e5d6f6d851d5021", "0x1c32e21095beb791e1bc785043bb33cd94784b6231ff8f85a9edff92f91be4b8", "0x121818dfa76d98589c3274fe2d702da83ad88ced9df449626506be1eeef83264", "0x2832ac9bb20b57ecc969ba4ff5c713c40622fa6b4ebed066c655be21da02410a", "0x0917180fbd7a19816e8fc3a45fd43b435bac6b2de19f516b37641a6b1c423434", "0x1bd85f4c4b11ae715f45a17ba21ddbdc7d1c3ba680fb978a1b2ac325bed411a7", "0x0d0f2a86fb0d48dea88049d2bcb667030a29d721e4c1776d42d783bbcfd22af1", "0x0460af88f6d11afb5d191e488712fd79cb96116844491b4277ac0b5ef19b4432", "0x0bc1783c36accadd4fba3d634e9f72c5e9025f7784bd3efb8dc72096e2c56032", "0x0eefb878f6eb1589d7a687e94813d9d8423fa50db34de8d5ebaac1302e6f45d6", "0x01ac403196501f0054fa8d4b566cffdb7f81f429538db9b408a3dc20b92c11d5", "0x1d5bdde7d64a63bacc2585b8a14082d8d35f3ba8c1e857df1f729c52e6a7e5dc", "0x0799dfaff2e7d630414a7ddb0fdeea103e1bc3ceaf3ccce077c8733869e52b75", "0x0fe0f816efd74a7eba5c8dd5e7a8943889962492f14353e1afc78efac50ed96e", "0x072561c67ad2fc0793821b50518d4b5d8ac33af26da6d2ce77cebf80292bd27e", "0x2891352ac60ffb09e9c88660b8449def9986f9463f5a81c615a7cb9f4be0724b", "0x206e9efcc46cae2cfc7e866cada0a4c72c29f235f044d56c8244a92e882f464b", "0x2e7c4493e77005f49407f2d5cb46cdd6d04f22a061ac8fcae04d2d93d7c8dfd2", "0x0b9e944d5bacd889beef5909a139f5e7b7f23a1ce7a1e55a6c4b9c382a511524", "0x2635b8471126523448d0b1bce5d8f54ff5bc988a0a6fe53dca721304f8f622cb", "0x10df73bfddab994cdc079216cb585ea8530c13da58d6381ae0c517f2ddc88e02", "0x2da54f7a7bfd78f40c98e6ecadb665f2644b0a9539b27765df23eba241fffd7a", "0x19ce35c6a104ee3975d4a94908f5b1e0444d7709bda7c5fc59a527cb2c166509", "0x1a47dbbde2d5004a1be0ed7c21f57a388a1c86f8b4666d4d118ee99abc115a3d", "0x2f037e73c7888cef9d7046e58d9988837be8faca34c58bc50f021e8734c5399f", "0x27ab727198d9b7a62e0d99b2d1112710102464c3f5fa8deff2762af8a8699e7c", "0x301176359be9b665abc8dda6783d3bd7730c4b4936a1bd83cc5574c694080668", "0x030e87204cce403ee4e92e0507e8e99cae309599dce18929a9430100fc5c0869", "0x218e8653761694cf49a1f3e275ece28866a6e9963c3ee6eea46c2b193688d3b1", "0x2b219687a4549eb17e29db9fccb5796a11ddb6fb271b5a547946f0de32698a36", "0x221e784939d29eb5442fd1612b30a58b9e555a398bae96d6a2d6d9a616ece0ab", "0x080fbdb9bc4b4e8a83b2ad89383b25526e330678c057f7c34993f27eed2e14c4", "0x1601e657a22b8a280d4452d527beccfdb9d8c3edfcb7bd0372d0df43e93e9123", "0x0652d1d878dad9d7f854e48066531fffd4773e8a5c61301f581651b50e359751", "0x10db881688e3db58bb608ec993d36ec8531ad3ab580e65d537f4f37e4da26027", "0x1d8a06b51927f0379250e7359f9dab93aa9ccfaf764dd70acccec7177a4c7037", "0x19cbc2ea50b7bfbf009f709d159aa9ef2a2c0f68a5cbad1f5e1c99ea2ca2623f", "0x1a5279e38883b53f313f86ae7ebb07d7bb0cd658be590aa3ac3b413415fe3e8e", "0x1af136d53cdf676c284100705d04a976645234f4397140fd85a2d88a484eab0b", "0x0db8af764eef50bb1ddccfe0583ff730088f3e9c2c555278a3c9a7376a893232", "0x1613c14bc86f95e25e05f8ec72c8ff6aa207bdbaa33f912808ac693f137d5d51", "0x0fc47ef92f10f79d336550ab3e0a7545c74d2d3e2b9f97bcc43e4783d1d98cf9", "0x0f2cbf40b344707cce101e7797d137a9e8b011797c66fe6fb0474d2b711241db", "0x2efd5777f8ca22678839ac60c1a308703094a9d2be4413c817c751dcf56d8e1c", "0x2ab4e3413795ad9a695b04695db31b6b0ad0bed91bfc33739265bbdc2805b180", "0x2e3b6d8584e42666829c0e195571c50d7fa7bfacec12bad7afa242744e00c039", "0x1833f151de5bd86ca68d264d5de5d353b8128a96e3813ed2cd00e322dc91c8d6", "0x0ea82c252d8d55499ad63c61c47419c8e8e423257732f9f686f6b106d7daf0ea", "0x09857874422693705a7c9806340c6da0777f4571e92174d5f82c07b91f2c85be", "0x2772ac7928af0a79931f88a87e634dd61facccf610cb947724e7a2110d501449", "0x2e62239b790530756ca329c63e6f4338e2631ef4e2cc67e8046fe2e886f6769a", "0x0265bef6b92cd962298621e2609c90162dd587f88139bc60d74bf363c6712628", "0x24484c0c291379917d2fd8b48439fb3d70b05b155e8bcf330a56b5027cfdbc30", "0x2b2d449a3ab55ab7ee77d37759db58adbc91d0d50936538cfb0173360a2bd8cf", "0x23663d1956fcf1a723085825cc67cac82d3ebbfd0134f861ab5529e2a4c7de57", "0x28fcaec0fb6cf43a573261d10ed32c1dbb4b9975643fade00532c1bd1ea0e411", "0x0145c6e2418185a9ebc72cd8dd0f53dc537851eb5a42eddc04caa52cb3ae8abd", "0x167376a042099efae1cd8988e02c66e8cfda378faa64e85626bfe4636f3c580a", "0x0cb735de0e612a615759528eb278b1b34107c4a8df58ea674ee7fb719d0dab99", "0x2d67bac6616cc0464d4fe907e5f68f0eced070b8811be72905bf7758f3ebe884", "0x00dbd2a2f8d7fbf3ac403b1115523112b7f010a0adf6ca584d7ae03f947d216b", "0x11a992d7e8205757ae36bbabb544e843b010fddc7bd5abaa82dfddcab3f85c7a", "0x230d34341246fb715b784797e9dd8bb7307a4c46e2f4470d2c319340fdbe0025", "0x09feeffc218aafa614e8fb7dc4ec786ed25150ec1d3507b3a7170b9266ff6941", "0x1208ff94f1223bd249daa4e3a0266e079731f7c3f998b7fa707dd9fe53833f82", "0x260ca3cc820f873963cd26df1b8ffec4cf349fabe16e81f2f973663466802da9", "0x12655e2c98ad35ec444a134e55cf68dcde68f14a7b734b3834725308609bc854", "0x290097f2c047a3dd6600b706377d0e1c46145f3a9e9e0ba6d7ccdaf7b7e05ef9", "0x02c62e5bd65381e0972414ce0090a96c22b0555bf7ef8b2aeae1b984808d4f81", "0x233c642308dbf783701420788b19153dcf088a63e8da765c5182649424926fbb", "0x2b7328e368ed4b7a62fedb9cbf50104557b6c3d9be5d0c2745bcc76476f8ce50", "0x1738ea94cd4331c7b609f42f27c4dd57d8db78b70a95da0c2394c4ef18992855", "0x2e902d182a1fe1f3d40da28c358c7e89076d2ddadef80e31b9895eed02ca21b8", "0x1683ff7e84a5a4f1dacb206fc44fc92179e666450c5a65f54354bbe8676f585d", "0x132958454e01c1fd2bc43e02424e1296b54b55d3dd3ed1e1cbcf382790d6254f", "0x0deb48b7df7379266b123e0b6d83a1fe031807f1ee37f7673738438aea64eb00", "0x2c683489b3065e4ae5d7106e18f4553762d58ccde006ee96bd691f140b15f386", "0x1d7c17b521e158ad420c9d69237f4ba6e8152541d878e24876415572734ccf32", "0x064dee7f04cf564333fbdc610ab8bf68106329eeeac1b1a59614726561db5bef", "0x21e94e5d9adad9dffcc186e0310ac54ff38b0a29d3849fe384777d0048abd660", "0x16ee0a0b45170d89c5d91557ead0b253c39a842db804196bfa07044ae6e2b4dc", "0x0a7009f825b6fa180455fde8a901d42a28250e9948807e24a62805388cee836b", "0x08d5a34853ddfb099fb0fe1df7460ce4a8e4952a148da641d0e15f71efd2cf68", "0x0fb198531bcad7bc91489abaf1345a3ebc5f5ded5b21c1d17237cccf9b1a4812", "0x0a91f50c72a422f3f0c06cfb1401dcade6cb99c285b0705542fdaad40e0b5124", "0x2db33b34e5d9a988af35501af4e137c4717481b673292246d98e7728a13bc924", "0x1b745ff9c6e53c275d378f0a69d6c0d55d598549cefbc7669bb63a3d4100ed4f", "0x114554e3afc96df3b663c62243045e27f6a24a5c26b875e7344014b2a9858327", "0x1aef968db4765b450f098d4e1a6210b7165c53ef336b3d96f55fbac58a542bdc", "0x24bdf5ec4ebb16db47837189172e8a55b36038c50bf1f38cf79055279225be52", "0x2ae7c4a1655975ac7052d101d1346efa10fca5b0f13babddd62dfefa980ff78f", "0x165cd429a3966d1bceda614b06d459e7a0e0cfbe46d63f25521c9af74028a8f0", "0x1bb3d4b2f67440a5fbe410756945b7bddca2ff1ded3fe2108d125679097b077e", "0x18695f0185440a5f35ad74a5451da6337eda049d50b9a5d7bb284d52f9033d2b", "0x02eb1bdb4eaa3fddaa625344ea650afc460306e0e3d4bc618f81e9ed73b43a0d", "0x1de874e713e5c68d2f56d518f8eaa275229fd8fc8a7e112d7d1a24e604d3ef83", "0x1e5a6feb4dcefc2b68a5b2c3d0664daabb1f0735ff2a2d2b68430f4d39b109f8", "0x27a4284ee0c6f73ddad02f9d499be90fedd32ebd7af86f44ac50e354f743c782", "0x0099d8e9546fd891bbab547a0ec1dc838cf62126788d85b2759774d9de75e777", "0x3043a7ea89d1e4fe14f1f91b584d00c3ba79831ed8d8649b5bafcf75a00cf759", "0x0e7aae04dabfa34859024d075a3014e78c9096363690f53eb0e99b7d628897ef", "0x10fe0a11c4030def725ce7684fd8724e06d6cf0d295db09b4199eb3b6a9f06b8", "0x168cdf6baf5e970e1e6bd7809931d487654b42e9ed5d8d92a48f1dae8d2b4c23", "0x0d241d33c552c85556e62a7afe49e5a7128fe8aa210772bbae5957cb60a239c5", "0x1e25c0e00db77c69b87d5bcb95cba934b776ec23392d8cceb6c392afe5961f3f", "0x22b0e52f766a702afc38c2c60161e352d8803f920431acf9410f7fd11e9d7d32", "0x12ec9b91f395f1665567318bd3fced7a752ca01ee0a088138c40549a31164fb6", "0x299c8fdca8918c24daf876812258a75527f1b5d1741abd71a82eac0e1fbf20d0", "0x0f428bf91d4d31184f35d770a5475debf4353ce7dca9bc22763b69943344f235", "0x1be0549a5470c9429f0e1b6f9482f3c4e752e89c203c25b624817f523a79e9e9", "0x0fdcc3ce028e96b21f91bc87ad052d78e44ca6c96179ead64378cd356dd2acc6", "0x136a6a9843fe104838dc085992c0eb8e309fd3d169af68af8058dd8b605eaa13", "0x0584441581ce63a4ed2174db35365bcb01b93b2ec02fed5b6ced7314a127e66b", "0x1bf9ab90b1f5cf6ca9f0195bd4336e68135a5ae26b6b3511cc906156b621cc13", "0x2b0bf6b3cc9cf023ba13dc6501f00a742d44d26b66e9bd7bdd96abfbb33cc7b8", "0x19d18619bb73548590c00c7d02ec94b52bb8bbf1aa5c2ee06e1f8e875991397f", "0x14909f8c8920f79d4686a14a1aa6e03a71b84d3d9169fb7673317aa6b28433fa", "0x2397f311f598d249e6ccdb9af6ae5beb6f097f5a350886cdaf0691d0a8abd8f6", "0x0ac2f7a3c2e4a6fd58f9e502f9dfcfc904608763d69b94ea50288dd7b63b3842", "0x0abe36a7048a34d9110a463cff2fa23b5aa0966a3c58d3086ecafa112f5001d1", "0x245ae4790107afc9b9bd1f14c20f10d8a745f077eb15a960e5d7af379a18dbdc", "0x14ae110b2829126250e1d694f08436ee0c56d230b489d08d32bc3503e73bf4e0", "0x20a0576ebdef08dbe219160fdd1a7e75d838770c780a628b1cc720f027f61c6c", "0x23a05ca5b721e48da57d373df376c5252f66e9f963c697d7d8e4ecdb55ef833a", "0x2813d89a8a9061c300348cefa9447f1a96343f329f65c4e165b5b1387c4c64c7", "0x2bf7ee542e32e28081fabedd92f4b18191bbae48a436273dc04916ae09a64553", "0x25c148fb26cfe4c3d977b17da068fd67ea89cc51079fb5d0cd3654a9188b1385", "0x1d3dd23e6048866f0855741903765842756a627897cf47d91f9f2b1ec8ab2bbd", "0x0af7996cfa4b51163b4ea8ff49ed2ebf8a5e56a44687a8de351efc172c9bdf50", "0x0370dfbd98a73e24952f0208eb7e5bfa83ac7761d8c0b4b53ec669c693698730", "0x13aacdbfe05a0647fc158a1306803cbd1ebf8d995d5b27bc5c3a92d0438240f8", "0x050fb4ff23f5677d7f42b0c8184c224bb69d4f30579a6b8e9da5d22a4f7bfb26", "0x0cb2f5cee85cc6e0f9becb391b7edd42cafff7c34382aa9e19de473a2c67e393", "0x0a146430a98a85f906d31e8ca7b2757570996dbcf40a7aa8b6750667b96a2ef2", "0x231efb23ddd7cc3485b8bca812898aefc8095078e547151662abba0cce1f627d", "0x2ebcc008ed0ecd551829656c73b6ba8d8b0eef871aefb94a21a3ebac83561350", "0x1d2902e8b627c0443bea9f8aea5601b21dc0a41dffd98a1516761d400f7b379e", "0x277358dbe09c3bb9570889293f795c41d9c2c90425bdf1a2a566f9e4ee46819a", "0x1fbf692e87da200bc4ffd4898893cefb65a43fca504f6f675193f8d63c6039bb", "0x0f3b881fb65b30fb2f849620e74a0dbf593af33bb80a15eb7fb88a09d97e0faa", "0x0a116fa32c97610866b3a93be3919080219be6057a4b75bca3a7bd7bef88baea", "0x30384a31b80c532ecca12d2c61ce4eb98098a754079a69b0e44faa0a3beff23e", "0x1403e729814addbcf809e49a5465ed6ba6e4f0354a986cd27e9d03aa6a9fd181", "0x11794627e6125ac465ff2ed71d959c31860aa2d8eac3fa411b68152bc381cd24", "0x070354e3713899b38ad74a7f5e3154ecaaa27314b47f85773b6e066fd4e63dba", "0x2d1e01fe7b49660ecefd093b5ab269ae2030fd7827d6430c2bcc53d2800631b0", "0x11a01533e3713e1f38f94c3906843323c0c88bfab803e135042ba1b8bceeda3c", "0x058e4bcb4f7463bc6d02d6c40d7e858b0e0aacfc3a88dc320187d8c5a015d159", "0x1b2ad38762c6918201e093d2bc393f9fc50fd5f45ed943a8f11b269783335e74", "0x05ab9d393a4bb7eee00723e8de668b2404a162a0e17577a6e55b8025b1814b0a", "0x04058adeb5ade9a9c9e3d869edb70322278b09ce1219ba45685bf8f6d69ced77", "0x21a1c7c62cb8ece8d3bd434f87936c3a1842432f2f1a6c66101b1ac8d11c9a19", "0x2028efb9d44e5af38c0c1ed35f9cb843f38184ee0fb9f1c42121210542b00100", "0x24b0792d69eb31364cdc8b74c109223c1c2d244404c64a41d516076ab0240ca0", "0x2179ff52ea2032efd95ac4e7a37a9c0ce5034d3cad366105341e16ec7483da19", "0x29cbadb37f773c6dc580cc0c2ebf2926d598a19fa41f881e12cf4a5edfafa13d", "0x2b892f09ea9f60fd7204852f6bb995e20c3510648bdc400b97dfb7cc4d7fbdf2", "0x13badbd0953e09615a4e13d4b340f4e1bf2a03a2df5e6b8faf69d8697990c95b", "0x2b8fedf8c3662b0a10576cedbd720ced69f862124feb62eec83c7150d9936411", "0x02b3d62d6efea0a22e2d968f919a8bea56791a37b9f21d03f95185d9926c72e0", "0x07037bac8b6690794dd0907f7e315baa525edc729833c89c660406df21bfb652", "0x2cf9ea47493cb7867b86942e353487cd4f4cb3cd33e310e9fd4bc3c3e6b5242d", "0x303f5a8faaf2a6aead780f2a13937d75fdb4605d8f5a65522426442906edac25", "0x091b628bdfd4d49333c2a9ed84aba3ec2eab336a8d91a605b9dee9af0af44f26", "0x01f468f6ef5c35d3c95592e27b1de7a213878a653685abfb0d2972fb0f7f9e32", "0x1f5923725d991b36de8557d299cfe27d8b076c640cc4cfffce57e9c7477b89a0", "0x0dd5d7b1d0d52266c387c7e111fab8eac4404b207bc5e216ab64b7e10414a6bd", "0x26ea3dc5cbd01be1c06cec04ef328a7d266afe33f76bbb26da8457e966351444", "0x067231875a3d536b4511d0a0b21b7d24958a4bf1cd1eec4c597c25e3a00acb36", "0x0724bd4d523a70054c995241b67f4aea4e669458add9a6779d89cf3d3bdd9da8", "0x1cc9dbf8aad45d67178c5b91a0aa44701628b24120990fe6e29026a0b21e9ba9", "0x2b5841453a6653fd30c05d2581dbfbfac5ba89bda78842208e24a03c46fd32a1", "0x25a1bd92c9ca10226bcf7fbd9b1d8e2b227bc2dd4e3d46e133ae268154674f8b", "0x01c352fbd922724897ab79a60e47e5bbf3c4b714a907c63f4efcc5bd5cc6e827", "0x05e44830ec170a4a5dfd9de846e7e422ae9cb98c6f499bb67681fcf60f7e82b5", "0x077c2736ac2d0a070a1a1c6e45ea9cc526201d668ee404096b69dc85086ea9c2", "0x0303f34f6aa229a5228fec959544f831ee71a1137dedb6a4b76443011eec3149", "0x273011559d239160d463a2b9890096ba4558eff7b6637291082c5eaa9ffb153e", "0x0c4dc5efe016498ea823fad5e12d2e003f2cb4ecaaa7f0e02919626e58afa7d6", "0x1cb990d809fcea3daa8d03b3bcdf147a692ff7a0d8f0c114f6a080daa5a3ac12", "0x1a0a3d386c26c3d467f50ba733e6d7901a59b7453a4a34056e92e771b6dd4f6c", "0x20d81618c0e6ae5ec303cfde54346271041634cb3cf22219f999a54bc5033b7e", "0x0a39ba8f57c793fe65b66907cc656a97ff523817cfceccbc2c2de5bbb8dec0cb", "0x0de056fb319526dfec15d502173483ea35e6057e64949fb6e7690d3c25923f6e", "0x03f82ac12d5be639974794fb3c2322bf6e61a262c7b470ac5e97d20a4a4d8aec", "0x0835ac61001ea7950d80e32fcc20bc0c7197d12abb0b5ed99392101390de2a46", "0x120efd9c0663e0ef3b6c596414f018a73cb553266fbcb1564452df9016bb4975", "0x05afc3602e02391bd4e2c5ebdda280085ec2c1f356a3a5cd2fd2372be6f3f259", "0x0f885829358024fc29d041eb29a43130ec403922c4479c55ab3b346536ac159f", "0x09752c21e2a9c7d6d5b89634288e119a0c6406abe9e77b4ad1b8f36c9ecc8f1c", "0x1d6bb32d414b8f98583849694ad7ab5785d88ec70bde4bcd750287016afceeb1", "0x07d455cd69ad00e93b09ac44915f64a7d5ea3c4c1b3d176bb51859639f924b54", "0x118886890f7d3dde9af1204a9590e10750c9a6035e66b98bbad1fb625181abab", "0x245e7b3643a7766566395efde6e47601aafe307378fd000da08facc33dbb043d", "0x2ceb6176073a98a6613b40f768654dad8d119ae64edd6cc84e4b34370f9409da", "0x1b4e4d410613ae837b7f6a7f5206a03e9eca6692fa970287a53317990ce81148", "0x080057b8e664ad580ea5f385105766fc0e3a2226520cf523604973da274d10d8", "0x1131ec38d8960567a7fa9bd96dfa7fd5083e14f2843012ab36e946d4b901b0ab", "0x1d278e62c58f3c17e14769fe3dbd6c6b9faff11def7d003066d8e6b0fe7fb1a4", "0x0710431fa88e036f180f0e4d46e8ed78a7e6361a239abd787b6ce2f54615ccb1", "0x301e86b0693c07df60f8ac15ac6b1caa76f13ef5175535d8f97600b8cfe3b5e6", "0x25870378c0b7068041b92a7f44b485605448458c4d2e7a87a26cda94ca4099ed", "0x1176218d48c39ce7b6cf46e760d348871266005cb0074b9886eb2c4bef5be09b", "0x1e1efc3b03fefb1c972891409432c02fb0f4e9b6f6e32b3fc10942387a9a8125", "0x0192ce4fb97eec768607210a2a8fb1cb29828d4bd840236f14327e186d3946ce", "0x09d944903456cc43a43e9827368755b938a31d42a47cc6d910ca0b04ee10fd8f", "0x18e4179357588f230ab88e6fa610d882442a89519ca71bf10d8ba64fb2aabf34", "0x25d0f7bff22a9e99775d8f388a74d4ffd70f9df71d977a07d934379fee629378", "0x056ce0d47418e2c1ed7ea63d7b06dcb7e7068abf79478e2b53f402d584f8014c", "0x20dd7949307bc2ce53323022fcb6765379c953e8551f878c4b71205387a17b41", "0x04b97cd5a47874928e8e3ad6de644226493ca3a87a19b182eae89812db3aa060", "0x09374a10aa6cb0b2cadaa21e9f10459f79376f8ad0fd07830045b6f1e9452600", "0x2114b5f038cd400d24959916f83d0cc8273f7f7a51955bdba59df3ee5ea4c95b", "0x2751d812405f13d21c4d5937d20a981db7cd5933822124189615611ff4ba2d91", "0x0cd90a882276ea2b8a7273eda155a6fd9d63dd094b965024411281ae2babbf77", "0x0283bdacc14757e28398e67d6e7921529951edaf0c9872194456195e9781581e", "0x16f179d4dc4f2101cea8d127a6dc09e4f25ecfe4f79fa3e02851fc06108fd498", "0x286f91d1b79d9e681d6c540bd14af83299cfe5254d9a1b3aa634e5456afb700d", "0x15ccdfad34d292269d6734c173e241df98e2fd75e86e61c61369c6f59ab47bf1", "0x0ac6b90c6b7a47a1eda9d4a6d466b2adfe078dc41c9c6edd0a390303a9df210b", "0x25497ca515dafc37c125efdce7ee66072c8d4c152a2a30f81e195fdbec764982", "0x280948cfe3eca19e1cd0fbbaa5fd23a38e6728547e648fe80ba947c475827e2b", "0x0cdb1b6412b6db97dc592bc966c6e1a67fda70232ead9a157f27f6014885473d", "0x0c438d5abef5042a0a63ba4318d78911fec5373fba72bec6fd2f52bcb386682d", "0x219ec582c9278e78e48798023c5340d522a0f7e639858de4ca01199c4452060b", "0x03a092730cc3b1eea8a5a761259dd2bea4f586eb09a7beeb17c29a625bba8173", "0x10ebbfc35233d7cd631b6204cdc89ba4fd932ae0581a856a395a8a52662339a3", "0x22ce0890d9ef4f2b0ef4e69827dfb68f3a6ea6c30a24a675d51b9e199b6d7c30", "0x18948f58035bb10956bdf6d4667c2e16ce18442a19b8c281d49b2e26534fd8ae", "0x2619ceedcb834ba4008853aeb6a8d6144e281b7ae3678f1d52d352f04a9f0df1", "0x0244c74d793f1a16f197a2fb001bdd31e986f094a83e09d58f2bc5aed2c8beb9", "0x16ebedd4b23d468b9f36cbdb35e00187debb15668c180c8ab339ee5b59c87cbe", "0x2bc41c9eed9f63523245f4b412216715d29becf51d660c86bdaf38809677bad0", "0x009edbf534745f8c735ac87a602d806b99dc68012eb7d6c2c1d4c38a0673ea23", "0x18dacc8d13202bf232616f3a175bc021189a25a296efc9977880782b31407989", "0x0b2600a07263e83ac076bb1c4b07f48f2c2a3cf6bf7be4af77262d3917354ee9", "0x27f6d20fce0e747cfe43774331a19cfe4c234e99d180332893f70584a17f116b", "0x1050ba20c8f4d797a1aeec9de46fc7f794cb691a9b16868a2deffeed1bb3f62a", "0x07ddd2115a1e35311b052494b9c05ed47ff8fe2d418178ec600487ac8e65da20", "0x152a65b5478e0f92ec3fc360143e6a1cb83d6e99668168febed37160adda8a2c", "0x21de44ebe484523c17a9ce162f42fcdbaa71ed4437f8cdeb885e3d4a205c370c", "0x1be37644a1d3a397b6b549810568ec7636a1be4d7a64ae23f7cdf07ec93a0111", "0x18e7b112693223260a25dd17c71e431be5ed4a8ab737f3775ef61489298f8759", "0x0023f7f710bc05777402a21bec4372e3b648473f3747f1eb28a78c7e03a3dbd5", "0x2470de23677a016a0004c6ef292064ceec79cd12cb1fa49992a3b9bcd0a25de5", "0x1d1fbf8b2e41000803ef6a50be409987c6f52d8b53b617c4055bd24e7d27bfec", "0x027f5fe1f4bedb064473be4b6eac1ecfd656ad2086abc311b67f3ac8b8c9f367", "0x2d53af0119dfa77c28dd102b2828fee80af9ae651db1014c3f39fa5b9b8ff852", "0x12f19947c2645f4481c89113f4514641f4afb74a8c43e0366036e80549a71fd8", "0x2f0073674bf4fd79d249638ec64786a9445fb590f1088ebe4a4f01fe5f4c2513", "0x28ed45b47e0c45c29abf03b265d9fb7500037a95654eed4b6cf4a185d1c9aeba", "0x292142dc76706392f3006b8f5b45a451f3c37ecbad9f69b2711211178683be5b", "0x17eaa9eef3dc9a7059bf6ce3a51cea4a45ff03b7cc605cb8b05c3edf2b9d67fd", "0x1a167d224f703b83f20a9ae1dc90be77516a977e6f2ed07da85b06910a65be56", "0x084eebe766b141d7a2ecfcff08750b04bd6fea80535b2a0e30ae8933d98026ca", "0x2ec0f402c6cb9709e6e3817e2b364285e18cabe290bf8b8387e9d1fe8dedca2d", "0x1657e26c61a0eb6f8bca74c5bbf34a947772ffd6c2c0f9b62836a1e8ff6f4780", "0x1f8827beb7dac86958edddea38b28f99e77180f3c3b959979378c47776616ab5", "0x217a07d6592fc0001fc240be44f71c017f387006131b83f237fa4c9668ed4fd3", "0x0596d9d6c84f745470fc9997c5a1ce9d4e3904e17f16f139e1fc6f0bf27ada4b", "0x0bd2f1e61a7ed47726482de76ae4b0d7b41738eb06c9e98ff0277fea16c2b0fb", "0x14e4f14b2a7bbf9dd8c3a1b5260c3844519c3bd5d139b7344678f74a36f4e4aa", "0x0980b0b3d80710a167df147f9d475a28dcaf918a6aa3c967a5bb55d97a8f6dac", "0x25a6def1f1a79e8d6356671df1ca3350df855069fa1b5e7e86f27bafdee60ac1", "0x2cb242a29724740e63d8488ad7dad6c5d37e9e5d0915582e7a71c53e536b64e6", "0x06b32dc0408b1782c052bba587c379ceb352fb29579b21c6180cd3fb39ab7afa", "0x09f20a1375f56e6bee5326ac7563709bff6e90182ac092f12145ca088fdf3f47", "0x3040281c47d3b6edb8314182a595a1f3e6764e662cc0ec878b638826dd3db7f8", "0x0072eda160683c3ba9ca0dcbb27f008505e83a85eb5ac753b7a67a23d245518d", "0x1d0c406bd40bb8fe800ca737d501e19f158fa205d9f63a30b487e615f4721400", "0x2e1b6f701dfbe38462061a91d5f641abcc7406a5f463822b717de79344c8a9db", "0x2918d3fd3323723a1ce75dc1b1f82948d298da146366cf0167ad082f5afb2aab", "0x04a8ede82ea0c561443858fe08d2c905dcd445f51b11afd41f4676673d74af0a", "0x262f76f5afbfdc84c240e686362f25cd1f3497d195c79a40cc997225a4349280", "0x0e983bd202a424f24a83f8173737dabf2c711ecc05204e1d26b4f77f1f107526", "0x1a8c8a3b13837a4a657c26d0f804ca7ef83aac7e7516184b4c22eb7afefa5169", "0x05a16f27f460719f8b75c49c1cdaf348739ab5a216a783039bc055ec6f0aef15", "0x109a4e202a5d6ee943b2138dc5e3c868188b02ba57ab158a46e033590deb1d02", "0x114be636e12060d317a7f08c44b856144e883dc8a07af1f62caf300d23412dde", "0x1fecefae8607aeb2f109239e061d1839dfca12634a4b001bea1d1190e4ec8029", "0x1cfb5006b6281147b05dcb8a08aa54a7fcfe9b121f12bd36e989d2f47cf809cd", "0x2c2e31ca27197590bb0d46682ac10d2009edb57e0a88b4790d731cb34e926d82", "0x18f2a0b00b5449f4bb8265d9bc2b03a31a1ce6abae5eafd9eec2f3745be561ba", "0x0431b6c629cebdce444b0af77df0808506106f7657209a9c96c73f6b44da6b02", "0x0cf33fc2fde1e171be151ee344595705eec9d0930341489adc6433fdb9941f93", "0x0a0743877b28a2a675966e6ad6e2caf32f78fbe830bcb0187aba4c21fe7d9275", "0x195b9d285a58deae30758a177e20a4cf66350cf4becd8126bb5b89e672d39fca", "0x2c3eac5d52faf5b46fca54b5e7c16cd9503bf62ff1e3f7caf95149021544476f", "0x10008396ed7e26097d6384716ddf29931bfa8cf88d0f15406b7d3e30146bcc2c", "0x09d6120d8cefd8db99a2906268fc116f5d31339c11908252ec08fd39aee66c7b", "0x29f60fdfbe0d77c1641825b499e2452f5fca3dfb427be07a32201bcb38019187", "0x2a77d988433dadddfa317cf1a86c2503fe0194fc1595e7f8427c0b83f90b4180", "0x0c9650f149c994670cbb966f3903e52a637e956b5792fb69a0d7376e732e8113", "0x0cbfa17b2347e6821f788e9a44255c13f5032598d1e215a822e3e7ed9b757cba", "0x167c4c995f5a20357496678fc1ac33e08431127aef92a9a00644c61effadd079", "0x17b09378da9ad8fa77b5d10db6cc7b522df95666fb204aff23c0b9a9eba37951", "0x15444b346a2eee40220d5abbda30324fd422b12bd062507887a1749c9dbeabd1", "0x03d08a26f86c97f31c4cd9a01a7f68fec8c208d42ecaa7ed2cff73b74dc18656", "0x1c539c92417e0e11b263d99a0fad8fc61fd1c065e70399aff512d8777d7cf1b4", "0x19b9209e1055f404647d2f0bd4817e798972967e1f7688877f4e857400ff8526", "0x014e73253e3b5d2c90f199959ebf071b189326f39d1772986de1ba79db72f0a1", "0x0f76aa8a09cd042559e21edf64495557e806592a1d72dfe8ca3d583a04febd06", "0x07e97e1977f873a0581eda757955c93274a87454a65e6dfef9440bbe12f01489", "0x2fd534af9df31109c948d5a5d9336b8d7bc51895c34bfcdeac48f8b56dacb362", "0x1b7971c644b7fd517033b8df2325df82fa22a3b79a9ee0033237bb43fdf87723", "0x0c830969ca91ef87be109af46d0ad62c93e80b1ca9307d72709508cb1fea64a2", "0x1fdb86f3412ebb18754a1f9cf4df3096cb11ba89e798962295cca254c565f2e8", "0x2c9a5c82481cadcdea6bfbda30343d9815221e29ae617a30f950d29834ad2654", "0x23b19abc1dbe34a9793537f1f39a3d81944d1b8cfc4f26b0639ca4faecd98d2b", "0x0cd6922f3304a4d038833c697b0774147972516bdc8f96567b29a64769715483", "0x183212f2e427fc1080c237bfae4203ef12472a06c827f93dba5d5af24ec336a6", "0x04417a0dd6d3d8cd6d2ef81cc8333322d70f264f5100874a4c1603d1d6f839d0", "0x1ee7fd86ae6bfe916fbd87cf0a72a4be433d4d3f5b3b96707eda0c47a422c3a2", "0x0e386dddd870f8041dfe619d4dd8eef851a6391cf49eeef6f1f1443eea173d10", "0x0b31a49e957ac3bc7ff0f65ee6fdbb4cf4b145dd8a234f0d7e6c0639bea00747", "0x17bedf9f13ab9ce8a6e28190479939cd27863b892ffcdae05478a0859c7eedc1", "0x1c28fb33d99dd1b3ae37f884f3552546a4f5afae562f4862fe1e92e702409e15", "0x15c6d0a394166967cbc39280505eb9528cdab0ea52f1595c5e7871815ffd02cc", "0x236303150f9e76503ccf1be5c90c3a485f90f7c1ffaebb1c4fcbaa82a0519bcd", "0x1fbbe0747bd2bbc3ccbb752ced9897731942f79d9a761d3aba4a169681e30fe0", "0x147146fa6f464f7e58a1304441d2b7f64333e21779cd71f880962a50ea6385ba", "0x217e02c928941516f5a9a78eba51468d93bfb278d1c79061e666df4a32092c03", "0x246013b423cc893a16b68c228b01b9380b47b0afbe4dbeb1b4340f5801ba4c1c", "0x2b5225496c1e6facd5b74f12705ca0d4a7b77c30c1c8311c3c81837167ab45ef", "0x0a950f572749b6fad6d6c324f40568d7219e75a884f9bbf941b20ee81b42c022", "0x1a71888e664d2ba9bba5aa22fbc380f29810d0927d286af59110769f07f9976e", "0x15c5c720ef6fa5b02936376c298394bbedce59824d6ca9fc260f5edc8ea5fabc", "0x1c84983cab32fb96ccd0276d25fcb5a978edee693520c0b1ca097792cbd1742f", "0x10759b7a744e81322f8368fffa6845102867e21ca6893d97b463094ec72a1e24", "0x1ab43f1acf28763767e587542a3f399f0998b4d20f532d1f5b3935ef2ca3fc6a", "0x1d32f2e0c56427580de962f147633899ae7237f4ccfcdd52e0d9b7b037ce20cf", "0x2147506e00fbe0f6458115126df9eeb1ae4c331a4a381915cc195bec94888d65", "0x04e95ed8d8a554695f2a8441c175f22c61ab041aa4d27e4821062b02f7a29ab1", "0x2cc181f94de5719fe2cef2222777dd98aada9d4cbcd076a2cecb3ea78f8bfeae", "0x1615f6d5826caaa678c4e5c01cef49b442448157d2c651e3b1c99d32b2c51c0b", "0x054b0e2491d3ebd17f7fee0b0dce67b82346d224aaaa477d5d98fde2bf5df5d3", "0x21052fe17f3f83390ad8aaaece48b7924e54b8070b6304f4b4e8ab9f89493713", "0x1b1d8d905c713958dd315b0c84a65d479f6fb8d8698630e7f096342be4f129be", "0x08765df92141cc7b51bd0873fb5259a8acd5a9b5082889ae550bf3ff1e8cfc39", "0x1dd1e2c068b653203542fea3746329eca954b9e28fdcbd895870b32f34811054", "0x050582affdfc4e5c3ce73d746680b830a843939561216767e4ee6342502e2a18", "0x151572a6d1f57de2fa9e4aaa545ffb842bb184ad3e0b0bde29271b55732ea2d3", "0x18d0aa380c379a8e7000532a66d561410e8d118d2eafb6c0d6d3faf2dc8e85be", "0x2424a586bb57c0883ee4ca4ec731969c7422502c8a219cb95ced3a1209b05fdd", "0x0174d6643ccb632a14b11162fc35700604c59399d3a007f5f891504bcf7d77cd", "0x182104c94166052fdc748d49799011387915b299e04a80e33e612740706e7a6a", "0x0b70c1185230e22dcb948428cedde9d7dc9c967ebd45af4d9cd62da07bd522f5", "0x1db44b6e0142bae1070f734522bc1d40b99cfc51e62ff6dad389fde5dc68eca0", "0x23779598119faf923336a2e9fe15a7a32d4600a8b1f7bbc73cddf10fca81aab2", "0x0d310d08d48c04dc78bda687d48a00598bb963f09b18df3b8b8d31629b7b8a82", "0x2a8bf4e2d52476ec48829a99fa53b47cb1045bc3fccebeb252218186161c7b3c", "0x13cbb0f381a6e6609c3fe4077dce0da32138966e7ba2812896001837585b2eac", "0x2ae412652e44172733e1939fd32eb7804647d29768a74b335036b24553571b40", "0x03f426a5c7707a7da1a8348f9e6c0e6d5b2d507bbe98a006f715bf2f28c14333", "0x092fd1fd3d9c5bfccbd1581b4a16ec0a80915ed2f56a3d4099b239a9b4449cd0", "0x00b1e816dfb839a8b31ddce51963f3521131a5aca1cfcb3d20492f9fa4ff2b8a", "0x0cdaa3a637ae81ec5fc6b4f592b5e04f7fd8f1f67b915d7fcb95c9c5bf3d7c73", "0x11fed5b9e736562938a571aad6c1bf987895bd25d53efb5e93a89589d638d0fb", "0x0d06b9038f5d041a9edd114b3d6346ad5e11d8817dfa3e74034fb82fcfbc8632", "0x22f79b3d9df4256fc835f23d5e16c8f963eb0f80d76b90c47af463b7ee49af2f", "0x2bb2ecd74be3c847c7df14a1c83937f8b24a3ba2744959a2f3733dd4cb777e6b", "0x10bd1d611707ebe4a82d2ca962e0054bb2b7631de85e3468faf005adedc2b931", "0x2f4035fdb1622d23d1b9cb82da64f9f7071d09732cf17a53ce842eaa42f365c4", "0x0fa7d8c17fa7018ad14f089eb8564bc9a7c157700bbd07c3a64ba258b8e7920d", "0x0b8ca93688bfb7c1ae365aeb344630c19d0f1e74b666dec2b00436f496bcc5d6", "0x10d685614a99a405413e3559d826175205a03fffd9b037ced90bef0af0db1a72", "0x068e162c6a02caee021d6f4461fb4e1ca1d6092a85d90044c3eb14e07c4e4a83", "0x2f6d6a0c4ee21296496f69a965cb8fe239b91ea81767cb82064a8aa5e27bcc56", "0x0c6a439aed8ec86b5ba5f2a4a045faf2fe48bb442d9f7521bef498d057c2137c", "0x1e6b0d4b88e393a9d915c013b4fda5a7c3b589872c06dfdda207e1d6641aae2d", "0x1b2116f8a7de6981e99425446c1b720cb44955dd4bd46fcc6c522360e1c6bd8b", "0x05013f00c86773de39c01ba3cceea5c0cdb0d882f199569fab37c440e25a8e56", "0x083d430c489ec684c164dfdbfc5a0556dd90abbb11a8ba1037b92e7c3ce42cd3", "0x1b0dfa5c2f0fa739b03b0bff40616c9b5ab246c29694473d6e23ba5c5dd98286", "0x0553fdcea1498f28a9c4a586d47b0297b237e59c2c0e7034459f79cba4b29045", "0x164c272c42e1f907ba9fc7af62e5a9dc836e9e7124eacc6dbc5cfeee3b74e5e1", "0x2eeee949382b74229a3a5f86420c596b8224220ee9c1d093cf965c2003c773db", "0x1aa7b899db428b649fa1e4672581909f15a091c301c527ec4a54c3c093ed6003", "0x2844667092565157f2a88a0558450adcc388e6148d2417cac3dff95ebd707303", "0x247c0d8658c6a57ec482adc5e9ee6bb67948d96c781ad98311e279b81f67ef35", "0x21621a3b3c6489991b000d1efcdc69b0a540d09680497d61e96284e668c9abad", "0x2daeaab1259ff6596d09ee4b567cda64ab0fb88a31783266e5d14048118e62f9", "0x1906cafe7df4f4a8359a4818a4ed5b6769cada0a2e046e2d6138bf8f84409f4d", "0x00c2adb51600bba92fc53dc2165f80f7053a1350be50f6268dbe18b10eba2b31", "0x26b285169225658f8ccc3040cd85c3ce1f447e47eeb7be8e3b6df38df3d44bcb", "0x1c2b7e2db564eef0909dc7753604a4cc5d45d643355e3c60321d24a80ed6ccad", "0x2dda3e9fc09d2c2e6d52a76bda84df106ed236ff956f127a804fc7025bfcddf8", "0x11919b8f4797e0ee89f05e0428f57833d8b5e74104814a6ab664de8a45887ef6", "0x127bb2c1e855294058203de7a73f055c6f42601a2475b1d75f9395993ada7b1f", "0x2c59318cf432b8e499a99a0863c914e8c7836a23b31bc758028182f83283f61b", "0x13b24677e68adfb873ed0f23b0025bb5747a5fc744353025d2128d447017ac7e", "0x2628fe26b4d2bc5f8e90679f798cd9de5a47bd2f0486514b6db4c70cf3c247c3", "0x237cd160a1d6ae30ef20c93476c9ce0d6066c0e7a5abd261faaa4bccceafeabb", "0x1e1ad584ab675d5b5a4aed3ca5b804d62c29733574cb9c9ada2577d876b99c24", "0x0fbed731a82174de7be9e047985673580ab6cc4194893884c9f51ea11ffe8f58", "0x0b441c8f1423a29a71b1dcb16fdad0316d5334a298fd4480125e6085dcff1078", "0x214e573a6c57ff7da396c0aa15efaa21fc0930c59984cf9c8c74dade3af961f5", "0x1b6e4364576e33a3cf54bf21c10a91c48f7eddbd9106b505964ae8e0b48a5dbe", "0x2cb60dc30aafc3a99f1f439eb34c38e8a7ab265de46f45003cf2600f3a4619a5", "0x081c0b5c56711e541bdeac150b0644a7cee255102a4622dd990f3410d16853c6", "0x1920f847ae83969af5be395a459838984a0db77310b2c8c533eb602908321444", "0x1bd14cb5b0950d3b4783c53d2c733a2ae6e914ec6015517039128b154746aef7", "0x2ca16700e67134be0eef329f561fb057867ab0c66a7fa1dad6cd60eb3c0d32fa", "0x23a4bd6bef7f4d21c26192475547245663fbdd3a251afca27636ed1dede95365", "0x0090204cbe550a36f11c9d12b2a56a6ae7399cffcbc1682d7649cdfa12b5b3a2", "0x1ae99456d0e8b238516a52067559e599207da285d037bed5c748f39a6f94a04b", "0x2c18b3a0fc4bf35beb9a40064a69c7d976eff45bae2c1691005cb835ac07f44f", "0x2dca944b91011ea9f224fe5e0612ec2021e2e311dfad8d8d52376b60dd2963af", "0x2ea90ce7f34c864596617fec562b4cd9fa0acb71161655957ad4615ebdf4645a", "0x07d2a16fad795f38267999a70ebdd9b2b24de85aad12cabe10855c2bd71bda2f", "0x2364415fc864df4c341a8e4267a1f3e832ea5143a4e2686e0d8440c044ff862c", "0x2f5c88b96aed854cc0049a9ba476a6ba61789e5692cf2d7d8d9a7cc7b9d0cbb1", "0x29902aaebf3e38f0ef39c37deb5e4fb0f32fcf23b74511a62146b3f79c25f6ef", "0x0e190e057ebcf02ce0360f76fd5b279a4fe2ba80646ed69cc7d568411e81cb51", "0x23097b82c0c75e53cb8084869e51400bff9e1f0d75b5252e988abe3562702f7f", "0x30180e17530b860901b1fdcaf23b2efbc13ebd49574e69aa6df159d4a9dc8553", "0x11ba605959afb5de92d0a0cf68945b5e660a59e6c9dd2ee4838a9e52dd37a09e", "0x19f8beeb3629ca17720e83269c010278231a330319beabe793e9af41518a34ca", "0x278f39897cc83610330db265f6f959ec983fa13838ba88f76aad034c2f90151b", "0x2349cabda83ae2bf55842e72b804b36435a49e0b2f8501f00856605e24dec382", "0x07279b75f7a7c121005c3b62b7d19dacab6e1543f12bd3665c31818c5f2c7aa1", "0x006a49cec0500c059bf61970d3a03c4eca079f3bea76bdb652c9c13eb3a57f26", "0x00877dc29b504019644485576670f38ca53149695b5aacc5c4d50108e2683109", "0x29494a499fd7cc4e34730c48b22a629b24d74a728300696f523befad8a329f77", "0x062086a3a24f3dd07219b38975c451b48409e3433eca86c0832070c82f6dbaa0", "0x2b00d39eee2b4106a70ea6184d95dc19991a0fc21c472717740c3276a9a9051c", "0x25c788dedee36b381925503dc1bfc81f09876364b764989f86b9a9642c92eceb", "0x0a339d7c3399eb0090f9ca887196f55e5927dde8682c37fc9e85005d0ca14e5d", "0x010fddd4d628eecc6bb55ec4ed563c9c9fbd76ef45c591c221e08b66f44c9575", "0x08cad7f09fcd6d0a763b153a6ba13d09e4fb910e98a745707095c42ac32f7cd5", "0x2ba8cf3a07138c08643263e2d4edcf9a4a47328bfda137edd4115ba0b3274d78", "0x280c5aadb92f1863c0ab20ca14b01b00201b21dfb71c1ed32959b212dde8e8af", "0x243c43be625885bfba5754beffdb8c4e2718bd1ae38bac39b66883a20324547d", "0x1fb8a7db96d88075b7ab36e71669568b1a88c0bcc572ab1c780303c569e4108a", "0x0f7adf6a27eb979d0a147b417255058e3dd399f254e1d1571e5a6025d85d593f", "0x2a9c20bfb0234dd219ac5933e7616040ff98d6f099b53ce9dbb76b7a21c655e9", "0x2db11a75d864992a6df56cbb1eb569da36927f43362e983de12b7661aa91f465", "0x29cd63ef57ff897ac5b7df3ba8ed72d43a24ff18a03caa4d99f1e53190cd239a", "0x14d0521932e873b6db85e6a3aab001469a168e978eeb4c1a9386190dd74ede71", "0x026a3e834054cb4736723d1d15a241869f8f23475d377e69e4a3731689cded16", "0x08bd8277459e8e0a8359ee5323541bcc1465b27b9685fcf0d77e4aa73f4a5ea2", "0x19f6a1b5a8022bd124d262a77499621114c87b1bdc8e8ac715f0d906b5f571f0", "0x1f99477db5031b0ba723b1c0c6d156fe88eaf78de09241f1f59e0834f91c0817", "0x07a87edad5067f361df3b764ef37fc31175e017d9635a6628cef9158f63d44b3", "0x264fe161c98a2c04514b92f20b75c21223b2c22655e8fe2f76e4ce8d2563910d", "0x25bcba83915954bfc6a3fe5bccf6ec56688ec209cf1f976a48454dc6ded0799c", "0x2742a82c41ae2ff68e524803a43e387e425e943a2847fd729227cd01b707dcff", "0x0a4bca229eb9cea967db5f8650f3a9213a7eaba0664529ec48cb4816a32f3e40", "0x162dbbf72f31e2af5a8c62975d6add0dd747a86817bed09d690d2095ac1f302a", "0x1d90d3a9705c5a9a1e06c777c9158d78603ad4f9b10cef41aad2b8008d86bfc5", "0x2e97da108e41920c71507d3ffc4198f4e403fc080e3193b63471e816d3aa655c", "0x2bea7cfcff46cb79828d1bd5bc4d18a375765bd6927928bcffbea2aeee454519", "0x2e5e54e0fc642d8a0a21df48310fe89d3ecb81bd2d564b2b12d37ea41ce66374", "0x2df4a44be5efc0c61c496a8cb723e9fafd7dca85ef9c5ba52c71a78ff2a59d9a", "0x1dda9c60833b52676cc9476ecbcb34ee7f5b759fc0f8229f1d645e38073fe051", "0x2f91eee054fa514321dc0aca21ff25af7381ca3f4ef09a2fa27355c4fbd886cb", "0x094327a79722ee116aaf8196c4844e442e7f36444ea9c816948410ff111e3503", "0x0e0de329ebc013684671aa68f0f5c56a65a3c7e31b34af28d42e7db606b2ec4b", "0x0bfc1bdaea3997e63db63e94d43074ea379d5d5f9616edd9f19c1787e4875937", "0x2d74256d470e8f893f5a6a127237c24502c9e10567b892f7714983d142d007b4", "0x108523062a51a8b428eec2a66284bebd07dc1eee904f4347083fd1120649d616", "0x0c5a805d2ec7e6b3201e4954184dddc7a93d39fc221fd8674b33b68d65ca9e48", "0x172a06215673e0c0432c98acce1c426cfed640850197e72fe848b33efbc8808a", "0x0f65d03fccc7537eb1f4fd6c5cd05fb04b40396e99328a9e9f344c5dbd2a2e9b", "0x20c30ad3d6b572577a8733996093d5b939fb80f2e7caa53f0cc967c334dcd6fc", "0x0373febde10260fefc6ce9670914a9cec5c205a75d23def62e22fbf31a61dea3", "0x2334bac29b92db769c06308b787943375ba7e4560fdb741aa6569de8d16417db", "0x0a3e20c8a61c8bfaecbd65e43b13a59382b021358cdbf7a99805d65822f437ba", "0x00ea78ba65528ac7035e06fbd9be63a50e0caf8d0628f33c7b229d0931aa6f05", "0x0d1682fa0a924b9b3511188fbc8f21dfc6f9ef8eea1891607f22b1f9167204d8", "0x2844a8efb853b2db634a3cf36ce7cfdc331e7f32b0035d6705dec154b824b4cf", "0x2a2a574661f939e6c6a49f90107a2b54a0002022f963c20c1bf8753c826badbf", "0x11cf62ee06e4ab926c482f35525a5dd300a259bead4cd8fb9496ca06aac9065a", "0x29045c7fa9c73fc5b1e13499d171a16f376bc8b812f2654908b5ecd2b8261769", "0x057e44377642d4f3c7c1625dec2f3f4d22e915c7e90552879af016f7a1665f21", "0x258c4640ac1da995bd0525fa9162d7cb3a5d9b267d044a8c3c3c4310e68971fd", "0x095ee6ff5568fa535092d74c16311e477b7c62bab5fd585b7d4f1bf65ab4cc6c", "0x0806951088d6f83631a371948626f66625800d5b61eeea63d0d53f1c46ae4e21", "0x2e8cac5fe2f70b026d84f39f1bc80f3ebff2093625a1d44d8c9498a3172ee2fc", "0x112aae3d8032ae80dfe027a70961c04d17c99609a38c2a6e6a609ebd312a114a", "0x07f1bd289aaee1f4c2832bcd88746343d2128b9826f18ff47a02c604e04b256f", "0x020fb251f294ad1fc3d553cf9dc532cf2105d28b419cb3379be54f68384d3656", "0x0a76309ef4f35a0d942d2adb40042103117f8a92f8fa22713e5c8f4630a33aff", "0x02e338a6e276394e620855137d23d86e73b6a9c44713543e6ef0ca373032b662", "0x11277c021f4bb0566112a62d02989f306be3d6a61a55d6c2bf32b9b2d6eb488e", "0x0e416f597798c242813d07f02fa3f5afd3cd23eee8bec05ccf32280d2eaf0e85", "0x1246e80a1e90daf8f50c8e70a1973229c1c0476a262df79136087b3b252325a7", "0x02e7f56ac53002afeddd2ecf49250b5234d40ed25924ce04da52fb13d8197db4", "0x0b383f460b713d1af2c2721ef86ddb9ee97b4d51281993edb77472acee552822", "0x014c46b4a3f25b85a2d1085cfda812c8ae5586600b476acf5e6b6145ab449c52", "0x0ba3a95d3c28b392f3957569179db635593a9fe5eaaaa6410259cae7a66ab635", "0x02bbd2ad310bbb5d2546328872c54b64e25ab05e3477e04ce1f03021ef31b90b", "0x1cf0637ff2abd72a4c5d8b24af9998fc29d5f2fa62ab47914df14e897467d0a3", "0x263acdf45d079d43b1436625d9c3229e58d82daf3a40bf89e2672ff6785ba580", "0x2811eb97a600f13912348f4e9af47d30dbe08050ea0837010e174ec3f3acdb84", "0x15e681960836851b15c8e9896e91d65ffb1bc247794c5900e68ae82f1cf732ad", "0x1a1bf5d7b73d6cb3ddb0fcd106550674cf8b492a86440f90994543471d554405", "0x09137e8736492afc6d714d854ec1bd8c0fe63d4029ae840e6ca05fb3a8b36243", "0x10075a0236e3c6938e8acf35759f8c19c8630260bd8e58716edea970ec02ba58", "0x126344b41cb4cfdd9d78f912e02ee47059c09159f97c42943c5d2b735b6769cf", "0x0472a9ac7f6600881089a175f3287ffdc01fee5780a38e1e088b06f047024c4f", "0x0e52b1a8dc66014a14af480b80c8b3fd99592633eeed6cf9506e4f6ca9bbb8c6", "0x190e307e6626ac796ed7c96932800d3f155ca89d84c0392bb48a60b009867540", "0x19017529213e1cb331a1d076be3254c8ee5d9ea4005e9395706ea0f918491384", "0x1889decfad56cb14a6e2928091550a4504fbabcd71a9f4e3895367adccfec767", "0x14b3798bb27713b3f92fb086492367335424c56e0e7bd9ac39b5585fb18d0067", "0x217faa0b7866c660a700fdaf3ef0438acf44fc73cb7eabc5fc190b64ca97056d", "0x2bf465cb5271fe563121bb90877a821d529fc815fcee372474ec02cf398f9bb8", "0x06a83b6f33415934cc47c952b7911c5740d8d56de6a34837dcf8292ba823811d", "0x26bc4b7152ec95967de18162da0400a2b369c91088835659da957d1ce2b49e7a", "0x0d9bc3639ab1e9a50234c10d7041ea2220bbe7c94163188fab1f79e656d13b18", "0x13152f0714ede97bbaef3a29d44fb441aee818dac04f11e4e5c6a4dc31c8cb3c", "0x1afc129a674ba4ac7552dfead9ae8d2d584dc7e4a2ff2cce5d3b6f1350e08d27", "0x28498b045dd1b9b56e558065e0d7100675fa16284ac0ced1048e07c280a1745d", "0x13f8baf6efc94294c82829f59da2ac86191b031bbe2b2fe332cd302cd5d946c5", "0x2b0314eecfcf61ad7d4c6d8c7b95ec7fc99ecf8a648c21e23fc5f1946432f790", "0x2bd02329f573d05bd14eb5971f8e6df9438e8ab78b2d37a68ddb1a845d4cddad", "0x2f121eea462e2dbe253184030c4c1a59fd50fab1ac5c49ebf621f32347dbc0ca", "0x0b11ca165736db53fffd72e0d939b16fd5bde07a03678dbb6fe1302dff3abe2f", "0x244d9d9b9bdbf0a622193df5b53e533ae146aeffbb95815c14dd44340e192b9c", "0x02dff8347e64c0966cd327c431d42bbfa8e43ed65d58d452d2486f2affb4fcfa", "0x22362991babed59c5de9d9fd96a339ac988181b256bf1aec52a3d0cb8952f717", "0x0b5ddca04cf6621a6f22b94b90395a58fa8f1cf296fe5beb4049c7565f4f2a50", "0x03b3edc6b3744cf0578b2ec40d13a99debdb6e71973e0a40d265b99a54d6310e", "0x2ddfd9a5dd6daa9051779120cb17ff9046ede5daa24b5c33368fb84b55bee38d", "0x2e928f258564f11bd72156b627f0374bf8a557c49f88598ac940227ca2f59833", "0x0f970b4e284e95a97909459a34a03b90dc9703b24f9cf05fb5250c1a24861071", "0x027a802eaf2f9dafe4845f9b30907fdb39fdd9c44c5d181610f55882b7b381dd", "0x04ac7bc03182be8029a8440ef875a248a480985e693fd4eaeb92637c73e89e31", "0x075f3191afbd21d51497a26c524665de743157121f093c120d93e180582eaf8c", "0x0bd3be9213121f779c2b2b0a024be82b518e1bbc134a65f440c4476a9eaf585d", "0x0c9bce95f2d5967d3b58f93d7e03c93170917ea53b5f8b27dc70a1faab474cdd", "0x1e3b04dee6ae6635722e354655f6032d1a5ca2e6d7afa0c77b0be192f4f0c6f2", "0x0c1fc33b93195f2aac03fe6eef3e4110784c7c48322e30ee51cbd78f6ce9d93b", "0x2ab604267dae12494550e1ef273708dd11c17666770ff0cc7c077c935bf2af8a", "0x1c69985ff78559519a0052ea05e608e35cace62db7eccbbcec55af3db9156468", "0x16334fcd421256398cdeee08a9345a527decb71a01eb43524f8d3ddb0db24d48", "0x07ef8dd7665152f85d00939cfbabcfe37e2b1ef8a77a84568aefe01f1e9b5ea9", "0x0dcc426dc88bdec8c2848f2d88a200571b8a012cd0870fc6ea0b981494f58278"], + ["0x304c29aeb6f1873847879576d30f1f6e8a3ce41082c15c7632df920d6db5164d", "0x2b7380d8b25bca649b3f8bbd0a86ae417109069be27066f46fdd1c7c87d4c40c", "0x04c77200e5494b1cb8a3d334f69ae5bafa7e8775ba1924e563efe591eff302f7", "0x06c0b8966df93080c3ac1576486e61ab0d027637aac41bb35e482bfa10e34fc5", "0x24c73f425903904f40dbff590225f251ce1980a5a5ce2d07ae436e1d090778d7", "0x23df6f6f4448273c745ce53d5d7abb5d26c46724a58d68844d3c3ee45e9b924b", "0x1dc1b1ac389280188e937566071b84bf8189b955d0579b6de5ea8a5136bc2ee9", "0x27f71c5ca774ce20028b8140f144472043917cd4919cff64d848a745bd569180", "0x22b2ee53b302ba2e836b98783e15eb6de9d15a72cc7caa374e61b51dd0d2e2c7", "0x254d85065f87271e86d7b411d6acc280f9ed257c098c9fdb04a2ca4df7c7d766", "0x28620793f378bfe881e098bd2ec62beb46899f37a54abd053cfb0b3bb8d5e754", "0x2c19f26d0836635b04f38fa30ee5c648fa0ea1b202eb0846821acd3c699cf061", "0x0f9ed87e9a1ba7ee7c28bfd7ac38ff3ba10849fb04d3322898ba9fe0104fb445", "0x0d1deff42263b7cae8a123a1641b7258015476161ab881e1dc20e165b3f04579", "0x05b275e07a9e23f477a9f0e2294227286528ddda6dc74484d76e6aaa714db5a4", "0x1bc255052aed9dce37765bc5a95de779273a96f4bf4013542588b09783ea7fa0", "0x0ec2286cba99984d38c3dfb80cc08aebf79a4af8ecb98ffc53ec4abef79ea6e8", "0x1b05bef71fc396f1be97c82c082d2f7a4d8b32ecf30c19875409050e3ad35886", "0x16e93c7eed0dc0006958d1824d0dc740b5cfb8c986fffcf1b61d100f29eb69a8", "0x1ac49ebc00e374fc647c65981dd93adb8998d6128b917a6235aa5623ea461282", "0x0727bebb845f6d4744d3ddf12c2aaf6f2c2a58e04571ff17adfd905cd57c60f3", "0x1d5659be4fa9e713d3e428c29d34f9ffa9ae0f2aca3474543a20d6254b2f0199", "0x1316e470b54f0dcd5311b6a930347bffdb833901e02448a9419f127f8642fd77", "0x1f7182906e184bd88594ca2589ff849eb2daa30caf8cbf5213ed3fa4747e4581", "0x1319714ecdc7e6bab2b7cf57d8b088094a003f2d4f88edb0d0bd8441b4cef318", "0x088c106fdaeb323a76f94a0912add1b66be216084a42e14bec597248e017d88e", "0x0fb8ab5bdc6168d1ad8769225641d0b5eb4ff8fb5c609c661da8ee83ea2a0488", "0x2ddedde404858c4f097c6c8ddb66a00381635c4f155014d3012ad1daf790345e", "0x12d92b7c7a88c9869f79fc61e4ea1c1c881bb1320c0b7787c6437e230b58eda6", "0x21cad521c1abec464be99a77f0c0f792a5aaefa104bb7c036b6c8a405050aa4d", "0x11047fba7de2a553c3ec55251768314400708e617c9bdff33a49663ca2deb319", "0x2904529f4fc0291449c3af18fc9f54722ad2c751620d8f6e0e1f2a1382cac5a7", "0x121fe62c53f68475aa2ccbe28d58aa74a2abebb2658422cd6f145c2662cc96a0", "0x0ddb1e4ea7a6f367056eedacf793b94a5d37dfa020e655e90711306dc7142d19", "0x268b44875f19ff58a15dd84f4bb64ea8bacc7dfc04d1ad861910fb9942a371ed", "0x09c17828425de5e93c9eeb82d325f770935de8c24584591b744808316590319b", "0x230144d2945f1475376bde7ebb437cd7358d501b9c954f67e06c0a6e90ab3c44", "0x05851a8847cdfbc802889ade3444a577263d93718b2038a05b05bbe890a98891", "0x29b5ad2c6282954ce356aa7c31085eb91b6cc49ec6bf139422c39fa54eff00b4", "0x265fa1838ae2f6d591b8f33deb78d3d7c9ca14014170ff650618b601443be916", "0x1e87cb86588c69bf4f9eded33f03d497c15d61b0e48dd04594df336d8793a23b", "0x24594f115063f9a063ccb1a580e8e9f042526c8ccf6e4bf2a6a273afea167f06", "0x1d052b0dd5715c889194fe17e83763ca6f7bc79a204c4c40073bc8a516f934c8", "0x1e7bb691e67410a24507dd9a5cc323c0f86f97b842bc13ece75d88c800e76049", "0x2b7558d08ab870d30b18663ef9c710f97ce4c49454d34c4bf714be8865b80c76", "0x14fea23fd7fadd53c9faf43e1e30c1e426668d0080e706389f5d44f8d0cdb448", "0x0d8f85ff6b797e9a28f4aba6019337412d7a778c3b7d7ffe06d4e20864491add", "0x15d72cb12a8e6d3c9c800f96fdad51cf24527768c9d1334c608084d5a0728cc4", "0x25f75e361c26495bd9e51468aea168f9f097874e562d727f030a8cf5d8c5855a", "0x28623a688686721ccfceda6c9d786832e02654859b8150e21cf036fcc154192c", "0x0031e707664a432be639934c2b2daa575750cc41f840459d85a6d6d7d8abbbed", "0x0fd555d5513b8c6945f97bb6f3a5d3b1ff2ac2d81a7612f12eedefd222bee1a6", "0x2a1fe11753b7a8d0977038be1276a355857ab20cbe4484b08b150a46c8e392d5", "0x22e7970da1008db5772bcfba19eab45385538e2545fc20d950a60f840d9702a5", "0x1541fec85090b07d8856402ea224e1bb2d8a8a9d1192b9a13dec81b8f69682b2", "0x17c37be74622c608e70301092edc69ebd19d17be9a0d44bc78944a309f221cd5", "0x26032c97bbbb5c920e1208592a4f5246b11d4d78d63aa195ce386285bd0db4dc", "0x2e62d73cc8ace5bc12f5e5aa236ccb730830fda62d6dd935c6a3c420fd9c40eb", "0x2f026a82b15872385978b49c6b6b487659e4f5cc394de6e6ee4aba26a104e229", "0x25d29761cc1e49b6614ac429444e19c070b6a24ba90e7ac726672c7cfc363270", "0x1ba97b48605e1754e7e17d1af7ee496e7750fbe6165caba1529c89cc67f27911", "0x275e5aed25464202f1b713852b4730275b1ce92153d025063e0a15fa077b51c0", "0x2b363e45da3ff37132430409c8008ec685b22ebfe8438df6d3ed4a787a762e65", "0x10ada3d922f994d88afcc40cd9ddf995ae2119961df6b1daebadb62262f43f2a", "0x0a39ed164286e39b01282d6519cd022111dbd0ff83ef1556269a63a010083341", "0x1c37d6085793a30c47d92caf677c0ce0caccd2982bcff18078a46b1148cf6310", "0x2552caee804699d4d6ca75bef4a58f7408f97ea307b448a5c40d311298562263", "0x072529903f5a556c8c51e143c97853540a956bd3b9502b1a43fdfdbbc66a5b2c", "0x1a9611de6b18894ad967a44f129f48af82eff2bd0fe40b0bbee63ae07bc8ab76", "0x0a014cbedf93be2a924b9aa3253e8f832845a8562d459ac932bc831e042524ce", "0x08642d914725572bbfe7eb7f7b45d917b2d1debd3c44d3636cbd6617c129b24d", "0x09f8138cf03fdd6bd110149c68dce4ded8d45206e8016fc7d3ce6e2b66f743ac", "0x1afaae2609ce7d15c7ae47509767687a58ddc2115367151d6f38d2ee3373016f", "0x1e273929c27ca3f6fe04fbb488fbbc1d945431fa69207100dbccdbe2610fc984", "0x0345fe0b8fd130b8e3a3b2379acb34ef73feed141b806c074621a4e051c149a9", "0x17a3a98a7b70a445a3aef301635e8e5e8b277eea1773061eb9c5364f1f76773b", "0x0b124c9ab4def719e49619aea6d374bb2bdd842d5b8b84eb55665334c1439170", "0x20acb7a69cfcecd60733426ae5a7472db9b886e2f11369aa9f0f9270440cc1ce", "0x137ac68a78893aa457ce3af79f84a52ed31df7407c5feb5ab4b4d9aab3d479c8", "0x2822e5e8243c20edee38cb142be3e7d7e005d274fc346522f531c1ce0b0560e4", "0x19c53be6b70cb5c79e3e420968b4548b3ee55dcde0ed28075945b2ae8f2331ee", "0x270a91c925ede45c008bdbcb162d9d532717577a01ee948e0a9913ecd2ef9d2b", "0x29ca3e6811d8037a309296a3fadcd7371e87abe21eacb37c8f4ac7c98f1d48a6", "0x2fbe832874e6a044a4e5ee1b63fd7da24910ed685e1dd12444b80c95f959b91b", "0x2b10b943bc42b1306ae3c0c962fac147f158d9e2adfed079f4a8b7cb836e998d", "0x06927353ce97f1a2c75b57aa42d742974a60dcbb13586f9999e52d42b7bca433", "0x08819fee01c9b7f8f1d987fc3f2cc70de7854ace6de0728ba7a0e7a5d721917f", "0x05504a16782e9c95d1870166d6ec853dcd2859d0d4cafa6d320709069e221340", "0x0a6c9c3c69e558408931240885e4edf91e5448230aa020a59721e94ee19c4b10", "0x1638a245b63546e931ee796d3ad7f8fdb1f7373169833aa6ddd4ca0d3499693d", "0x12b5ab3d45071d84539be772c9f468c8cd6efef151a3f5b2b52b86c47c9480da", "0x2f9d04c7aaf854180b7c9943a86ab766f1c61f8265bffb8477263b59999a4ee4", "0x11709a242657e17727f2429c6736ed1bf6c756dbba899aa4eae5ecb6c845562d", "0x029668f5f5c4a3246bc3a86f22132fc0cfc625666f99e640dea0e1da7a9b5670", "0x2b613d4804feabde47da71f26e13d61428f2781b9ce1fde088902decf515f322", "0x25f3892eb57862f0087557ea0e93867d2bcc0220f7da2bc073ca276d750ad83a", "0x2103f7a5214f40e2ff64474583cce0914d2e9a4efc022f07ce5cbd791f543271", "0x14a8711072a8aeb4e3c72bf7685120f2325b64f906e2c1ee31f6afad6c815138", "0x2d8200110c740dd51bd22f4267cab97934e5adb86daf1c2f0405c2781bda7ebf", "0x05b299e405131bb5631072396c5b57cb87f50d070f196533bc3f0506c8ff218b", "0x2595e4e223f843dd01b550c5532cfdc51931fdc340a11cad1019fde0843cec87", "0x1ba92bc78f26df3148da920c7b4084f015ee164662a5abb3c94acf36f78a957e", "0x092caefded5f804924ccf1e63543d61dfd570007a1052abb764983233cc63e4b", "0x1c0dfade3ec3d45119238c75c700b826a422ee02f45431ec110449f1f75675b7", "0x1da05eac4674e99b9546876461369aca20e289e67d052cce10fbf418b0a0442b", "0x05086928cbd0d49403bf4ad6f4c626cbd48c1d9c7a22957306f0bddce9da919b", "0x1d32f71e4dd99385a2929a02b92912085173b482548e1bc06efb3ad96fa31170", "0x18fe8945c081f1a9937e20359578cbdb19343ad0ac50435f26dc8193cdeadbf6", "0x0c27a1469d7c1bb60c6923587a81bfa0517587a3b0d3356826a45c3ac8afd4d4", "0x1a0bcdb274bad54e1c3eca1e4e14eaed3bdafb0846b4fdb41c0cbc6efa4900c7", "0x18c15a3bfe80e4883601664288df62171afead7dcaeec0fbd959b3e7c6a8f768", "0x23af2addfcecd8cf403bee8c4dca81fb7c978faf147c990f260f115b2d3bc8f5", "0x186efb35a6b23d406efc6237e175dae02de9c44e5dc2897d5633cfff571c939b", "0x0ab171e95c605c6d5361ffd31e76ff8e4eb82ff2da56d659c66902e9d392879d", "0x1226226d5541e6086fb775843787ca537dba5a9684ba87ec0de592cfd20e88b0", "0x246c77e6d2858a34a3ca29d3597611adf328a4a2211f74d5fd04dceca9830c8e", "0x0d7495cdf807ac3d6184c18dd9e858b250fbb37c11a29e6291c12540d5e2bda6", "0x230853ec47ed72d1ffff83abef03b5ff7678f2e104b9296d8d29430140e89702", "0x141d86088c6316ce0dc3a560961a50f0769cb7de216689077cf65c6245ee76a9", "0x1fd4fda571ea5db50bf9a375b7e83ee18dbedc37914b06646014a50092a81e26", "0x0597cc1432a973d83896fabe991e7c2a537045f9a8ac612ac766a37bcaf9c9da", "0x16dc93239b74eab89823aafd91397dea7a5c2fea07e12e562afe2a94e7f33cba", "0x15d73eeee6d48102a0818cfe70ab0f2add92ebb7c8d847922aaef02054280414", "0x227c8330e2d7a7de907eebe9e82f7264c16de97fb23f4bc0d563a7874bcbf578", "0x1b952fa7b0d9dc8e9f3c52a957468f492a2aad45cb2d4a5037a474a6b3231afe", "0x2dfe192bbde5da75c175ac3265857bce905aa7ecc585ad20f4997f67a5042e44", "0x18ce1b58bd3f2bc554b746e90f188a6705f842be29f85b6a672309909fec2156", "0x146d5f383b2efb9962e773afa4b086c164b0aa5306e537745f15680a85f6a1b4", "0x05130082aea77203ab1e2819d4704f0e9d723d06c4579b1bcff7b9e70cf1cb26", "0x0122d2c1c48550ade6c88d3498d7ba8395d44776319f12648c14cacbada6cc30", "0x02be0dfc2a9ec2844a58563f8f0115944e9a39a8fbccfc3d79830f4a494a429c", "0x02362b83ecd5ac86a908533a876ca1738c844425822fd0f5e0646c965e94cd99", "0x27343a0ca83b7cbf4cd78fec7c2bfbd6452859fb0f7b5c14f62391a8fbb813f7", "0x25f66e4c31aad3d3e8f8940302a771de770c855cb7fce3fb170162449950059c", "0x1728135861261e3f1995b078af0a0f1236eb457fc6201c5aceb8c93f87217b63", "0x153b4d75654c5fe604fa2fc96bbb6a0ef1240c8281f8c0b6432bf1a529f50eba", "0x1ef294fe797568f55253c2f93c4a32ab6937a1332bb1c412b8cc15e74b3b8ef8", "0x2a5f302c49a8c8fd6e4dce1e265bc6ec0eef34cc46136f9cca664273ac3d8eaa", "0x23215a1413633606a8c8f22ba642bcaa8fb559f7cd322cb08aae796735bd5270", "0x1329f0d6fa9d80e536ed120858dae6e51376624c7daae3ba79795a5525a6c484", "0x2664e9a98faf74e1416aa645b64589ddecb3bc2c85f9a89688af7db70ec60285", "0x305d940fdda525f49e235ae6d25f9d4471e396e7bc3a133aeece1e56eeaa7382", "0x1271af6fd004b867484dea1dd43cbb5d58d731dac6de8dbfbb3026c17331ea9a", "0x231fd9e11aa688e3312731a6a027ecc1331516d00d7e30788c63521aa9326251", "0x0e19fcb863828bab9d152e0504ce09fa61faa3e0a23c02480ef6f866655d575e", "0x13030654176b06afcb611203a2369a442e863b3c0d1c88b89cd4c7fdf4f9ef06", "0x1fcd60b9a522c7405763bcc95462d77c0a36b4e952c461bb2eebf1e842854559", "0x1bc1cc4f122eca17b951451c773472f0a3f6a57c185319ce1d2de0d19ba1f21a", "0x02c0318563dbf99ae636bc012bf310175cabb7663f2a6764cfc3d67d186a21f7", "0x1cbb1a2a490b61176f9045b4b0b60ec03f12b15b30555a3932aa3c1ffea6b3b7", "0x006796f10e9ba669dff948e86fd462dc5cd95ba8079b02c2b2b4ad1e62fa37de", "0x07e6a8fe4a4397ba709215c5ab272f3c541465cbd8e43653dce2f59cdef8dee5", "0x284e093c985657bebe96bd671120c92995bdbd2c991cdd4909309cc3722b5ed3", "0x0d2071dadfd269cea8740cc0299323cb6e1a64bf123dfe1af98a1787a6ca3c04", "0x1945b6f5b9cf94b95d9341fbb6b8b4b7b461b96386c1e9cf3c7c4e3b2f083550", "0x1576a69840a50e47e5ab4f21ab39d53190038594ec599700415e12c4692b4678", "0x1d9f7484194e9043958d6ee7c8a552c0d25f9587e66cd899d2cf029179641675", "0x1506003f39bbe412e1a0a4f2a57db29e29af2ab61006382f6a1d4ebb8c39437b", "0x2245f77edf9eb3e22d647853698be8a2783facf92b14b8392e7368a459da62d5", "0x1897e74c6f1bf3139060eb8049b95328fff4e9db9260eada1e55346dbbdece3b", "0x209ff86085273e680ced957d0e4e165c78bd9670a24969e83ae8b0db12638c3a", "0x0622ee9d23b0c61b05845b23853e40d88d73593ab851e8be3b338ca7ce8cf5af", "0x2ae0659e9e749a47e3e0d244862ccf5fd6fd6e1af0b28894b4ec72940774bd9b", "0x02c31714e2c67c045454653f1bdfa47db03928439d44e321232023ff4d2fa0fa", "0x1c4a827874bb4a455d790cd7a86672634038bafb12d3b8954cf3a3faa87ffae1", "0x134da7e19243eeb08e0f7e68eaba7641e98ec35f8ab77f134dd10a8adc8499af", "0x15f65369e51155ed42a0d50c3479d7b880cff87e81765a97ce8ad28b9de6725f", "0x1081dcae10fd7fec12a3328a60678c2d760133860cf30f5e45a0fff5ba95fb14", "0x28206b5cd44cdb7bf177a2e3d60ae385e3ab2c7c8ef9daa9b3dae35fbb992678", "0x05d9355306abea7a1494b4875f06fa9f81f4fb0b85524aa61b03aa053baf43aa", "0x0869ae8683287423383a2317ce58fcf88433bb546675d6971ca292a0f00aaf33", "0x0b07d8566ac61df9c2fabe8d4062d8fe46bddd15d08734a4eedeb91dc9873891", "0x025dd57a9bee5a30ef1291f0aca75d55f20d11f8e0f2e69704013830f26c22b5", "0x1c9e2eee7d79b79e19a01f617f37eb8fdfbe0420f3c5fec58491ff136b459f2d", "0x1a053731cddfbf2d58d723ba5d50f874125755c8b2c236b11a2fae3eb15d154d", "0x109dd67f06c490940396df6410636f6535ea7f2b8eb9baf8e3be3ae1da12b374", "0x1b8e939a3cfb76056a4793e85b1b42fd38059856c1a434ae7ec90be0407f80ff", "0x1bb4549873191701fc74397465ac489ac5adf990710f9ae59fc7685c489f2e31", "0x0d971a30765153417cb648298e392f4f61defca06a05b4e423b97e45c8ce15e9", "0x2c58f7231642e86db82dc34a11ace0e87c24f9a1bb8e9cd926e073f74a96a3e5", "0x1797d37d7ee35e50dac62ab43434d3c103c7442b00891dd3f8bf0dad7d7f44a4", "0x147b1cf0b44efb08f03bc4924877bf51ef5f7a4cf15e1adc57253a33f006c607", "0x097667a035e3b304702995a8e51a212813913fb94c8db886c6c4fadd5261b744", "0x01d653ae96dc57c1bfec7cc425b328e4f4a7e017621b6f528188d2fbc5ac8460", "0x1b39cd9f113388364c77f755bf1fa42b706870d61dbdc416838f26459f4a2630", "0x25cbdefd82649ce519688b4e4f853341c11e14eca83b70c6bd27efda86352931", "0x042289f519c5c7e22728b74ca92afa8ce890cedc07a70547fdb8fb7e467c8466", "0x1cf966e94f1d7c69613fe1871f2704d239e1804179dc7ed1301dadb0e10ee728", "0x2804d255b571b9ab3f54011b69fefc0772db77f529cefe27eb0acf1e4373511c", "0x2b274b23b66d9d561d057bdb7ad38a96341b953943a4bb361ac57f816b44ab98", "0x1637057ba7c5dfba78dd8e38a2e3a8a4141ddc2dfb41598923f66b5ef886cb71", "0x1e55cde5864bea5d60d7c1ed34e6036c007d76d91d0929e81e1929f6305322b6", "0x1690e994aa14899d93ff21ab98ffcae9692d7e3f00ca258684268c06b7c80632", "0x27df430f854092fea91a08eb7e40570382563b16c78c12b8e839e7e7e3d723f3", "0x262c27865c6ccb2920d7a8d7ef181136cd5f7788cae7ab9be23c7498d23d9e0f", "0x14d8d4ec65500428ebac44b267b322e41d5cbdcabc277ecdc3cee7838b0877a1", "0x1d2766558195a3ae3031bbfd302439b08cc85d608bbe36e6d8c9aeea2ea0b66d", "0x11c2be8af313169515f4a855d0d71e80eb6167bb88d3533b70f818eb0c945cc8", "0x20c9692f4a3fadfd0ae3d2f7a78ea300a4417696e321503b0b6aeaebae7e4549", "0x28cd4e2e7c1f3ec3343e44f6cb1786c25dff23decb785302820d0dbeed3302bc", "0x11f34dd9733bd3d0822c7635dc976b2cc2f6707eaf4178561ddc5d4f563a27e4", "0x02d6c790965582a05f8e3abfd1e069e414a1df5d86a52db0fb57de9201d9b964", "0x305025e1c03aaa1a9b43123fb9f35399c6edcf30dff7398320a78bda920b1ba9", "0x1f9a91691a4a3aa765c7303f4b7ab8ccacd4d834f5c8e680687053eac7b86323", "0x03f134e018dad8b80ccb8dd780c808d3fbb1eb2222c364a0a3129048259d29dc", "0x2d9cdc3b3ca2467c237dee666f37b7e2dc58dbc59e0be477248961efd6782b20", "0x0f437d8f3cc4dc487e8971b038a11324b7a984c85cbf698d2823b2c3b71f485b", "0x12413aa63de038cc0427b1acbd24ee2ce6cd19b37149c6ca761504fc1e39904f", "0x1e42cc0b2b4bf580173dfac63ba6210d195e078880467cdad8774980a186756f", "0x08d62b4ece35499b60d1beca4f23a9c3d39bd6798dd9818f95a9f02e70757ac5", "0x2924988422b3cf13ee98c513f4fe249c3c3fb944805288b50864c26c2e398875", "0x0a797e9016f8f52786057f1b2a3cf50fe20f1fcd98346a958e4bc1c50ee8b685", "0x063d8222baf254dad1667f6bdb24c860ea17a33121763908e8ab1e9c3ea48fa8", "0x1815d8e9cdcb9c3b7d19759c898b078a33dfa3a38f3c22f1ff4550363603cbb6", "0x100541e3ea8bf5921eb66951943b5fb44530076330d19c6ccc49d5fedef81589", "0x13ed4a0f7d5a26c05266535f8eeb1eca63e346fd7ef20db88edd1d1b05ac1fec", "0x217fb49a601d07a6e772122074f7bae116fe2061315966ee39e7b3cb4f51e2db", "0x1eb9080e0f7bb6f01b3b05f9c60c62e0bfa768276e9e59eeaeb63bbf06f5e127", "0x0211d02e9d453de842c6e2744d5ce6557a3faa6467cb923755d543abfd302094", "0x0cbd5f7cb609c7e5adcdbb25f6f0cb74da626a4254afa409b9d2c1961b4dd4b5", "0x13ec6d0550258fa91057b0dc06d8f00a47d40c05aa124dcd1124c59f4e22635a", "0x1258ca1e77cf9d67a8ba02d1f665bb405b388553a5cd9d6c43037d0824ac4bd2", "0x28c5a7824391b529e9adb062d3983826ee1e7bbbdcf2050aa24045b2d5acf8ef", "0x19cf73a54ab1f2e4421cf88acba44776de1741a0b317cb5e1e2012df57287bae", "0x3011455d11c4a1433e6a9f6ea9ac559527d7a17a0191686971b7836a3170731a", "0x17b7373ac5c3f3e20d71b349aff449c73d41f34f1d008140ed5829cb265548e7", "0x204a96353538fe08da8072b3fd97d64b245e064d9bc901f0c0a18efbaae0995c", "0x285a72987d0f0f228cc694d10def85d22ba358e744825522182daafb14f4c258", "0x2474bb9f91f6f5401fabbce0f102f974cdd061a5e57a782d5b239cf7f8925a96", "0x1b45841eab52a5105aaa42cf7f6d8acec5c06ea8a8b0ee13ed691477054cf5a4", "0x0a3a4b8bc77d458c8eb26352e92b685e00602a68dd4a9f13cac10e88ce972ce9", "0x2cab4c359d890a1dec1881d24dfdbff978218003735a10392cbf6049d5cd382b", "0x0d0fd0694da677f99a809f785ee1ef067751322c28613929a8fb7249d3e6787d", "0x29e4e09d975b50201c40a8bb9750d31f30ca3601e110d17bb21c5ff860727a50", "0x115efe78f8b2a72e8a213c24b1f5c6efe80f63470439e678af721a0f04221370", "0x29b3ccdf150428583feaa28461cf1ff1a4e49aa92f90c6f720ee2fa89b589031", "0x2eb754990f68975867e35e9589436414b88a25440bdc0886623f1a568f516077", "0x0989335bcfd41020ca856ccf61af50321eb1d21ce04d1581db0c62043fa209b6", "0x208a9857b859c3f620169057519050719043b2d42c669ffd4b681a1e52159150", "0x0e7f8469184f41a9eec6990459221b111b01c5dc0fad09a985e31576e0000410", "0x25dafa7bc6be0a1f9fd21cbd71a64e56bfa46fc7f27b2a7b135904a0f7672e6c", "0x03da2dc2049d07c4d185a16a29800f785bcf6228cc891f1ce30156fb3175ca1a", "0x047b5ff19a973402f4621e51ff3146513505687f720e2ec080b6e44c46881d3a", "0x299c01d6095a1d660d4e001a6821f800e50efa1366c25656d144cec3b0294c65", "0x1662d7fa007ea31e89e692ebf522794e2d106cd844f8f0dd5d0b5f59759e44d6", "0x00fe4cd065090dfef40d074039bd06228c925c77bced4b25c6eb2985ea6da5e6", "0x282e49e314c31b6d337f417e9da54ac7b686fa6cfc1fae8b58273353be658678", "0x0e6cd752537a9180b86fcbb5ba8571814c7780b2e486697b18a8dc3a159d9fbf", "0x0cc70cf2866f123a2cdf2cb9e8a238813b0112de364fde0552d38062320bda5e", "0x1aca51b94c7479850d3f67d07a710f55ed784d4cbbef6f045422b80b438e5d07", "0x2670a1cc090bfb1db16c528c1ad51478b58db66adb1ebbbcbfe69f5ae47ca844", "0x144b566d3667faf0eae3ea9c8c0e4be553a7917bb6f8c45938036611327559b2", "0x27b0264ff594fece22cd26e6092542ed28851a75d1f15310a4091bdbfed36fcd", "0x1f608a88e8d2dc5bb6cc91be2f474eac4c3a659e0bdd373f9c6dfde4d6a0add7", "0x122d0509d2508c60e8a2a6a83f770f27d24aa528a40427db069093fe8e78a064", "0x015ea3777f61dd2f8d4860b202d3f4eddad0f6a5ac5089705be0ed60135fd988", "0x0f0f1c69e52b1e410d49a46939eedbd48129808923ef9f05de025f993741a4b5", "0x16dbd963fa198fc9a3c230caab4580b34d25c6223d611351c9657702e5168545", "0x01d85653beac61609f08d4a988b85c581a5b574c269821e66b2815b31521285c", "0x09ff09f0cc9a53c87802865299520b8639f59b6a5caf06cb80cc80fe960950f3", "0x0650ae88754b4ed48d3520aa7771f4ff9ee40280b85d9e767d3e53ced36ae0d3", "0x091741b2a425d5a56b2f914bcfca7699e385c734bba606d394261b6367b10263", "0x2ef48108bbc4c7b67f1d00e045eb30906ede0032a9838e68067580f22c15a386", "0x11bda846a5e5868bfff65e9331e0bec764a72dba5549ac66179a4524fbd6e3ab", "0x2b6b3bc942da684a5812478dcee5f2bc0138395cbbd0a05ac6b04b6e9df0826e", "0x0e117fc5897aa6d7ce2025a574c8e4f1651fd95ff1e63c32df1fad41f2830473", "0x0d285c64565bc502acdaea74795a0a64a46a148b904ef986a7aeb3a9e6dc56d2", "0x098141a57c9c6b72eaa0bcdc98f203359137fba1bde27afa94181d755823c723", "0x1d113cfff2cdf12cf8353701521ff920e8d10489f477d57536b59c600812a023", "0x13bf98387944aed3e268d0ad15b281a82b280fd924b8d4eb43a05b23e0f36ebd", "0x1c84249a8cecd1361a4b66b6d1911635ade640f4981ace2cdc4bb85ae7199173", "0x1888f869addf2a91230bea0393ec80b7cfb4a4cbe7a2a049f74401e7479fe4aa", "0x257341d8632255d76f29cd7b33d890b0c54b0e97b8cd6897886b6e389a8d2305", "0x1df9bbfb49acc99c43203403c99923a6fd9c8bf7f9aa6cbb91bd1a91aa4d7e92", "0x2a288ce4b8fed1b94cbd37adc8b6f814a3254feb0d0bc687213c1077648819d4", "0x23dba7c996de6b3c227c23a70785079fd4232a17f19d0311d561395d993a4bae", "0x199231edf22878bf880df305412ffd8a3ce6a555b1e7e81c7c3c72aa02b358cc", "0x2cc3d9d1107e7a5fa6aa9497994316294c7d31898d80ecc3b782573d81932873", "0x1847e8e68d4c183f3094888dea15007a6bc6b35daf79decc9f0ce88b88dc3c65", "0x1ea791dbd9aaa3d2ad56e590aa7344514e45684ea3201dc9bba200a046c3b896", "0x0a38e9e4712de317a533e3c929d6ce749307e8849137e3ebfa2a4d0bf6c080cf", "0x02de42647c0232f7870c412596bacebda08bf27fe124e16f1585cfa9d1f61bdb", "0x208c7a7f4dbd4c02d11bb6840a3fd96ab78ff9623cd0a39e3df3accc03fb5dcb", "0x0ddd22d2c7a22798707187615a91f9130a66d2c0d7d7a015fdc35a68deb8e388", "0x2a90b2d586a6c041362cf2667d131fe7c426075013c33923b0c62e3ffa7360cb", "0x298ab2e353df6ba628421948a02952b2afda68c463bfa36050a7c1418a026643", "0x08da6d2ca619829672809813a61cc5315f02460d8b1757dc014f947b729e5803", "0x065c9c7619f718cded1a784f0373fffea114170310b3105e2628eed621a2561c", "0x25ceb8bfda01132364f07044c33afc4d14755edd1bd6502528c367497c2e1db3", "0x02facc79173aa070593579d64b0f35841f65cda3b47c4ae4e675113a9eaba231", "0x092f157ad123e65d991404a2704a91b23bcebfde142a1e20d88e13e8fdc599df", "0x2e47ea8e1bb77292c06ec09029c1d1245949fe39de87f4101338417dd3f72bf3", "0x1e39369419393b8ffa389a34392449d953a992d7afb0ba34af8f2159f1396536", "0x0ace46ad0dfcc316211a507be4e87127b2180a16b2444fa8917459961c030590", "0x2e25fe7c19d848ac780af912aa4299cd59a55cf679625fffe9c14d4fb994eedf", "0x01d8d31d97fb5ebe90c25ab3fb433f8a82ba9fbb4443af83c7549d2b7688c17e", "0x029561c80c9527ae48a5f605db61e69b0892e43741f27e38715ebe14554776c2", "0x19104cc8e39a77156a55aeacb90058a42b001e74298de81f2d18cc617760db08", "0x1cb2e1388605bdd6583aa13a6eaeb2fc9ecde1337ade0e56f3e2e3e3f81e25f8", "0x164b7c0e87b3e37cd027652e2fef38b0897675ad34baac7a777a78a5928660fa", "0x03a2c5c52f34b9d603addb63238347c204e9bb1e65fed2b2d8cd09428ccb0601", "0x143107befa4803b1a04269d030233f68d927676832011c7512bbfe2b22c35785", "0x0606ce26a1a3b7d8bcfadf00f30d4ff0dfcbfeb1437ea0fb35f918510b1c37c8", "0x24cf1337b43c827ea97633e387c7948df90a3c42a8f7f27a1efa5e079036f982", "0x1c26028b3ff7ab73dd2cc99df0ac3caae4a9f81be4091ac7fae5767e4436da87", "0x1e0e4d243dd982c611637d510f43ff32874ea6680c88246a053121fa0e302a8f", "0x00404f39181657306e1eae8acd510212389713698606b3c8c656b26cd4f2bb73", "0x1138aa24e42bc883993d4c5f6eb785a8c59cb7bb1200186b5193afbe1c2ae478", "0x23b126fcde502df569a036f9d65e651805ca040b0e017355c6aa990e1f48e8a6", "0x02e761239a389a531493fa699dccb3d86125533a4608688ad2f159278dcac908", "0x18e087059de0eaadb5e3c5c4b9279cd76dc3f6d8a0d060558b19c3cfded6a6d2", "0x27364f27770f58b6dba3d3f1666e504aa45e867b30aee59144a53cb281528965", "0x0fe00ce1679e3aa5f4d6b7b80e8e2022bc2f8045eb43a4f8fe9f04cd4eaee94e", "0x1afede9489f5ab94671d20d1ab49a5ae0aeea4fa29d38ee212e0a9cafaf5de05", "0x2fdb0d7e75731eda93fc931e8d8f59762e0cbe15bcf6e0a3ee1da0e899546a50", "0x0b74792ad4e5624f94cdaf5228d8f7b7641e759a25ef4e30e802e3076ad09007", "0x0407950b2453c974580b9ba314aebd49d89052a1d8eb2a606fadb4052f2d9ddd", "0x29b8d1ec888f27ddb52f8e366cb07a3829a821bfd57296df667b49699e249593", "0x25d0c20a9006bbabd4f5160fa9eabc648c7e41552a0762b5d350cc151d6c4020", "0x2f3540ade2e57f26ce36acdbbb4198cf0a17fcf04c6c926bc3283a11a661df51", "0x14695ff8da20904e07fef545ab104fdf0dcbaf5b69a3b83485048a0057e58312", "0x16c7f28531a7dc674e8f240e35d75b08c6673995a46ba746bc718f42912ff69a", "0x2e2c2616f6bc0201be908941c83c38dd7cf79c47805ff93bd640ebc552c4ca0a", "0x063bca2d89100a11021bec39f11590ec08488206e016257061ccfbc613357060", "0x0f8c50aba399310f30c201d7be6990a7b5061d52e1dec5dfb59f69ec93d7af9f", "0x10b6435421a2edb44d8045a51332b050f137e26b37d4298dcc33213225bf1452", "0x0da21a08e5f73a231b94e20dc513f2681bb15ad12f33bae3d5f71a4c0ecc97fc", "0x238fad1f6960d619947d509d97efddb3e2ef3e30f18a26642e282864a7ddb426", "0x0eb8c17eed2e330329401b5ba5966bbace115ccc893423b26f224fba2af1179f", "0x197f1200a29e7fcf3537b187554dce9edd225cbbd8031120c57fda9a2a2d6cd7", "0x007e59ef9a273220fb6709ec8d1b831069b32169caa98e7f32affa732b55b827", "0x08798f412ce2aecaa57a737829556e5c05bea822ce81f856f9cc095c6ba65747", "0x2c43f8adcc2b39e262c252c3309e5ffbd6ed736bc0ed1e45973aaf52f7e0063f", "0x08c1d017bcf1edd53e4dddc010f9b9979f7a0d0dc3fed34dbbd8b0efc49d196c", "0x21ed2f1797b5183a2719257ff3eb1d3bfa896e6119929dfde80fa34197627222", "0x286886b6067d627947891e65b36f8d4b7c81c5c716ad95ff44e911b0341eb0c4", "0x1c0ae38a58b0cd3e5df96c8e5fae5f9b19b7ac5dcb839edc4213a5fa96c95f60", "0x0543f286b8254edc3f5323bf6ca470ab50eaff46a75e096ea9a215508aa4f7cc", "0x25bcdafb4d5b6dd773d7b3cfcba40f8cc8db7675bc541d187c21537fc2c0a340", "0x28a81071826eb4f16615964306aa7b1addd0336e6158b30dec2773dc4fe7a662", "0x0b2ae92d96d1937e5d1b42c830388254dd27e60d512fe8c417b85fca8c9b03a6", "0x11aeb340ffe89088b98a4fee7204585d7db8423fddb1b41064b785aad0a2878a", "0x14157e2dab04208eee16daa67f355bdb04f7014036d3c7586cbdcc6c1430b82d", "0x154035799252f5d335eb15af6bef9e12d6f37e33b43d4c099e89e518a4187c42", "0x145ee4885281330b255068756690f8af3c52ffe3a03c6f53c101a841a7ecaf83", "0x08c60b040006eac8f019307afdeb00aa9314bb8306b8fa60f8c1434c00d2ca8b", "0x1e0aabe003e834900958a13b47914ac4cf8f89509c001c7f8ffefa499f31800f", "0x12a0d132f615b78b0777aa9136e679b8dd334137027ffe5ebb281214ebbe4a83", "0x03a7748c591ab7a91d8f25859e06e77c66cc0088f2bab04e919508933e84d98b", "0x2815a7d428f1abfa2ddd7b67c2e916e3cc8b2d6950739f514684e8115f0ef0fc", "0x2a4e69d67391052f8e2d9f09cf09b0f25261bfc0b0aa208b1532e2eb2573253b", "0x28f42bb5e8069754d72b97f2c08ba8acea2ef1c21b3aad642c5cb04dcb4cee6d", "0x20fb72c032f2cdb3caae7ff84a3892097053ad8c2ee097fce6b247450ecc3987", "0x1369c95af38ec514dda67ed9ea6eb0e18e0e1137f70e869528e37bed1876859d", "0x1c021f2449f25dc718673ea93e652012b14958fd9b0268c30fef793429b73e2a", "0x0ae3815ea26af43c33567e41f83e305d0179a059f89a228e824db1684c54964e", "0x05bd2be31565865033475b0e553be2f47c0f7b1216f739365469174f67f8f982", "0x2368da2866a5dd17d187564fbc2a4ffe8682afe7140a9d957046c2bda1a0f669", "0x213784bff6ef1d44d08cb7c33602666a4002aeae491dd58196b0bc9d731e3bfa", "0x1dc824be3362a184ee8ed97489333ad2c5ec8ac80fc29cb1a3fe93724eb5985d", "0x255b2a1c202a2851250ab9d1f41427e8031b637aee29ff6a41d2f16e235e5d2d", "0x0c7af6613e1ec2e006780fef74b37a1039dfe29c76f6374c811ca923962f1de2", "0x015536861d874742904cbc356a66f3033a43306e67c3379b3c397b8d73979713", "0x2549c7bfad45cb19310828ccbd3b5b80325893f3f537bf6900b37d96cc10262b", "0x17853e6a2be92b752149605e938c59ed5b98a51b5e298dbf0a3f42e785ec611c", "0x22fb9187e826fbc34056155b64241d195a021c199bce96140c45a066b755ed04", "0x0e01dbb02d04ded9921511ee0b41d422a47df1acfa85cce84341b3a1a415173e", "0x13ee7aef873f8a2b2d7612cd2ceb88694d9dadad37917e8d323cbf7ff85dbf13", "0x06728405a1d96e7e9121047c6e9e4fa91965cd569b8a55c98acaa8c7990586e0", "0x1b8d4c1d90f139199df8da04f6d098b38e8f08ff0815c7c50ec70f0f221d6b86", "0x1bf50f97a290f53dd99387bc9c3ffdfe2f878bb0ff7b1e4731dc38f8806d469b", "0x0708564cc6c399de0e3b96dcc06ef877f839229aaaea1526527b8abb7e8a1c72", "0x061cf4c2260afe2472093e2b18d5b7a63e023a0dd2332fc11cb9c77925369e14", "0x0c1012dd2f4168a4ee6c8db5c7b51c8f38934e9ec835d0fd12bac1afd23bffa9", "0x010d2c7b272f6b1d02160bd78a9fbf556fca6cd21c7bc86e23abd7497786ad20", "0x19a7dec681440da95b1866760bb8a48a17b491f71a61bd48cb7ecd9f0cf2a2c3", "0x2fea37daf7c788558782a2d4636bc8b12a021d680655e16d44194e88a2846e1d", "0x093181302b44dfbc064feb7ef479d1788c5b9c6e76f00247bcc1f4f28d87364e", "0x0d562f7dcc8b1a57b47e7316c2832470447d46b1a05d15fb87d3550d52e310b4", "0x031d768025b65139dea57c8234259faafe28a1a4add5f4de09fef5b0c53a800a", "0x0c8c252ec1046f288ec63ba23dcac68b914795281ee2dfce5c3128afc6799391", "0x249923ae3dad26470f071c56d93ea8a4c45d9ecbc335c18355e0c8961a8f37b5", "0x18feddafc99611ece003ae06d7ed3ca7d69a7ccd5adce377b9eddae5df20a67a", "0x01d64afdfde99be84d37faeb3740ab4844d5db1798346e3e220e85424e4e0318", "0x0fb8de6ca433e586c7b5e1cb0a380769e6bcecf78ae4d9e1c09879fd9e28247b", "0x0d5b17c9447052c898a2f4bb21ed827eb9d36eac34e49bbbe1830bda935f038b", "0x0f2b7d51ec7ea6577b2e733f03525ef1e8fec6bd4f25c1f579f7f655ba9327d3", "0x2b23d5be39199976493c64732ab655589e05532a79a5197d24e046c281c0dd1e", "0x191eb6a33f3e80fbd227fbdc436fb8b1e3aa37b03617a7c87587a2cb068fb2a2", "0x0bd19b84791c746fd5b810f68f10ce1f514ece00a0e7749537c10844ffca11ea", "0x25a91a2714a79060f77b2503f0d3070fbdbbd187d34d6097ae283bcbf4d65c0b", "0x2e507aff9f00820e21752e75690c619b8a03b1e2699ec7bc0bd550fac9f6313b", "0x0b0b051cf9526c4019612dd0fd2afe774a8b1e828db2e42fadaed6d26d51ea17", "0x156b4cc0466b953f9f389eff9a1c7e261e902ac034bd9d285559e9c58eb5129f", "0x02f8887dc7c16c111475131c409f22cdab1440eea684fb76148fac7f33aea4e9", "0x1f3a7c2e46bd4fc1786dd949ded2e2d33ee5fbd53130f87235230209818346b3", "0x1102546f1c65fb38431152174613608dfd17564aeae1764f1570f72bbf479950", "0x00cb2b67c1f4aeebf54e927ef903fc6aa0e6acf0d4b1427040e981a102d15f84", "0x16f7924c29a61d1790d23da54fa4dcaaf1e264e46d6882c85d4fbd86f2b97c2f", "0x1a8977e7f9f883320104bccaba7b6920d4fb2b3e15d5134184c8c06ffa9cbb5c", "0x0038dde93666a06ff6df51857a40218b6c34f368e7bcc52d4504b85a9eea9994", "0x09af8b7ec74f96740f8eda9f69ea72c08f5e2311e78c0633bff78876646d6ec1", "0x0f06e7643fa6fd0b016904bb1234855dae0604472aa1f9e7b12b0ef594780f5a", "0x10ffb0f0d659b17cab58b2e7491212a734d45b41ddab889beb65518cc2b2a3a3", "0x08393e0581bef9db272b5512d3d6ac16289a6d51a7e8fee8f0ca854b7e7968c9", "0x0cd919f11e3940afd0fe3b7d687ed7117b40100f89a60ba1fc7cf743962cf97d", "0x176cd2d5dd5039afe4f9c9af84f1920de7c83f1d663a3dccefaac3c0acefa46d", "0x1ccf20b79ddc78dc632e41c11e537e599b418d4cb9ab88a74101a27a668cd46a", "0x1f8cb61ed38061411c750acb4c313d2fd167fbadc588a14fe6a30dac6719a12a", "0x2de3744ef2d7114fd6bb58fb03d0969bbe92fbf4db49b636a2a48764183b679b", "0x152f8c47e86343d9780324c37b0844681b1a6c5b76dc7aa3a57e957edc0aafde", "0x099e633a5f55fcb80e3494c20e6c607ff11cdf92f45acd6134011ef96e23d4e0", "0x18f88c7dd5dc507f63264610d668b8da3b1c704358336718bc68ea22d5f731c3", "0x29e39b42c32c642ef36100451218da7b33d7cbe7bc5882561a3a4c2f30b90c2f", "0x0dabe6781251df0230a700efbfdf25b0776b5b55e2816be9b614c3433ea26c5b", "0x09a1fb48c7575cb215e981afaf6fa4e0f05949fafaf7ec3f1ebc1a6b2e0d61fd", "0x0954ad0d0b6b9c663b1936b4301194a9cbe677f9a38ed0b544122334bc509f12", "0x20d340bda271bee29f093f2a5e2f257580f7d773afe3fd6006fb5d9c9461d337", "0x04e175a9a568c9a3473226fbf67f3c8dbdf71891833feb516ed8f1dc952d143d", "0x16efc53ea0c960e6bbb67a4930b7714a504dbacea7850303d662a56189688c9c", "0x163642b36df9c9b99d6a5350222139406ff558c486445a57a8c200065a3f85f3", "0x16885f2d67dd2eaa6b6e6e4a1cb778fe5b38d249d1d668156c033e36f8f35bce", "0x2154d6f24acd0cda11326e279ee9f9e84ddb4ca4bc11efd7136ac5d54573a933", "0x162cf98c08205fb5f4a0e9cb76c65445b300800021db1ef3b2d7919f9c202fa0", "0x0a6fb67c2c0f3320e22b4124b4feb76ce1330f85dab89c4477acd78214f472b4", "0x26021cf74a02b192f0c4ee77938e4f452985f021c469b6e84f7df3dbd86535d4", "0x2c8b9704c6b41769c9059238f51fb3827a9fb146ba424e318ab359358bae0d77", "0x28fb6c843b7e89259c13e51589804ca40a10f5b97fc4185449b1a61a6321518d", "0x1e234c17405876154e1af71c2ce4033078099705cfcb718866b347d80ded098b", "0x22836e37162efc88789ad4a5615f8e32e16a05fb2778006490a2fafb3743a7b5", "0x28a70d2aff679df7246dba5fc5d8e401c7261129e8a1965c5c5ed57f2ee5a7a4", "0x20a5a416c4101fb1ccacb4f101ec93c08b8ad9f4bcc0cd34c518d6bc136d4d62", "0x084057a3a39dc92da1f3da1a1bee29679f343096287d1044dee2fe29cc88b068", "0x0edf44da29ee4186c3ebadd1148e1011b508aa94a544915f9746f75c57df777e", "0x1f75f3cb325a537b11c16002c927ff5d8c75189c632bfe66793252d242220d4b", "0x020acb68f015bd689779de6a6c70189e40f929ac4843d1df1d78e6cf25f6753f", "0x156c068f32e0d7caaa30e86ea973f7ecc4bc2d53049970c956b0aeda3af888d7", "0x0eb5c66c8630a1c3b1b67a287dc32eb874d7b8944f7e2e4b6d5f81ba9a86351e", "0x086432ca6c103cbe76449ff27acdc0c72ef5535b3df5eb728e1d4caacd3867b3", "0x2591a12a1bb2e85526f2b0110b0fda970337bff3c42b0d0e0921fcf12e13e91e", "0x04ddc8e152142c57c766b50c4c8baeeab6813467c1cbd43ae57c95b0f4b74cb2", "0x16bef300d87c6582954f0b2e5fb74bb04b7852b2d09af537dbb87f4c037d114f", "0x22bb40ac95127ed05da2e9c37f14eda92586b50485efb61bb57e7b058a5cc5dd", "0x2152a25e328616ecc63f9f625be4ad4ee37a296e5a584926f1c1e6a99d335fa7", "0x1bc5d41bad17b44fc5aa6950aa643ede01d373b0aedc703c26a27dfa6337d04c", "0x19993e2352fe907ecef8bd33e642d549f9784545e8aed512af7eea0a5703ea4f", "0x0a8e009ab829fad34ecb98660ba055ed46d9e19a5457fad0e571346d83207276", "0x0e5abaa3b20ebedddbde163027514ad22ea8b6452d1e0fdfe5d6c92ca18bcde0", "0x2dec3c17312746988f783b14f92fd900fb3bea137b9da241e2d6858dc7b691e4", "0x1a05b78180f3bf45994f7844bbb59f02538dd3a06a1f462b3a8586d45273ffce", "0x16d22b879334448785405b6e74e823fd23ce82e68db2b392bfbe3ca740c141b5", "0x0890771aced399845ecc5b9cec64a6fc925f28e39e48ea0cb473f2ad38b670f0", "0x2530f400e734ed8b165b590db1658060cb45178fc4a3b6a96bdf62437c4215a1", "0x15e0290d7ecc55b275f623a63521d3979777442a14f18914d1fa8361bbaec66a", "0x2047fb78d48665b96c4885e5561fd89c6ca44218f4aad4adf202f32a3e3435fe", "0x150507a482c9b02e9c8884b33b154f4d856228655e7b64d0470eeb92f070517b", "0x26098db852bfdb0733c07727ee94598b5b75f96170f2cea41b51088d4fceb8bb", "0x1969394fb4a65784c3ca4b1fd9d241648e6aa58bf45dadb5848b9b55aeb49dd1", "0x2ccd5ba044e09902e540bc58af998861195b8d1b96bde96f059ce2158b8f4d27", "0x0e241a1e88c1676b2cd2b48ff54a473d3b5e8c95da39c24e84375e74f7640eb9", "0x0d64f55b84a0a5249d7452cbbcd2657bc2cede899380169ef36acf73c6fb42aa", "0x276cf981b3c8485a7f6e8a85a0c37bfe9485eaffd46796829cd170df1d25f5de", "0x125ab705a0f35a6c9e70e37cf82cbfd1b74a47ce4dd8c636520ef527cfd4996d", "0x2edf2bcb182b6c165d77946a219a542afc9383e9976271b19e585cdba3b4c034", "0x03044593e5115c8bf4b42bcc7374eda1f336b1d00cf30d0c6e0d8b8a02e70b17", "0x2c9288d07b86474cbf24db27b74421dd413b90870cfc013f00ecc0da9d880086", "0x08096ddb7dac5cabdd02794e0653def787bdcbbea73661915b20b233b13b4938", "0x2ca0c65eddea643c6cdd2b617752f71c5b36314afb56e2d7733c54ed7dfdd8c6", "0x00720ef11b7868de6172541965560951e30f9eacaf95da183e793ac4405c7aee", "0x15775168211ae2c9505cdd3ce6188782d031648cf812d9eba2b24ceca36277c0", "0x0dbd7358505479eca3fe7ce7b3c75615018996d00992cd43bd2736bd8ee0fa6b", "0x151a6143a0bd9763292a6aeaf7c0992ab65ddab5d35f2e713287fbd672b9f6e9", "0x119830a7f1e16e539fd97602ddc967e4119d9a48d6e84281ad0e72139c0a54e5", "0x166d4955f6c7422f53e750084462bb82ce565161c78a71f68c06abfc80c5f578", "0x2bf7f7791ad848e6c8804113cb78a0a6dc5f1a947341006ddbfe84dbf96ecbc3", "0x09b2550da955c2746eb3a0014c116e67b061402072acf2cdddc84af76da21cc5", "0x03ae24e58f82a3e97fac8b390c64434722325b338c6de16ab07ea83da7115b89", "0x22ea98db27502e4142824a333d94e297e0134757f316dbad2371cc2f0ad18d21", "0x2d42020b8f02617d9afd0693dd8cd09000c02a94aaa14b35d8ecd808edfc1596", "0x0d948c0328d6ade9ecff1391cc926da7311bb4b311cd893a9fe917640b26e7c1", "0x1ea1c2c8c2824809bde63dcc62f6b06a149fd2b9bdada635a4c35ede26a79e82", "0x2e90887277a6e6e8d963799798c9993b41e1d65845c17840bc1669c3432c64b0", "0x0c850a86697d9a609d26f02a99e116c164f3d8395d3bd699f8321f7628077165", "0x16d89099db9c32d90e67a74308b85c8867d1cdf0ba3c97c7a3c050322f912329", "0x122b8bb74a1b8b229c491ad31632da8e0b90c66f52be1cffba1f50bd740148af", "0x2cbbb2da62a9525283fda5fc5782e4e11c0f4ef559c7157b83c599fa51c11bd6", "0x1644c2d0af390c7835bf9a1fec01ae087bddf1a21a3d988a75c9c5da6006acd8", "0x147cd2bae2e9b717963ca623cf2f2b7fcb95672d056c1d73d2af372d8dcd6cf3", "0x0baa4d0ce6331d92b98beb9c28f6afafa0b9c2ca2c194b9f70a6d3b628e3ea25", "0x046f9a4aafb654f4a6b9103d20814e485b0a00819f200f8b2fc4844eeeb9b871", "0x2e6e482813494b77a2d153f8ce9ac84f614871e2d6d6410a7e9e9a786210e9dc", "0x219aefe0530bf083338865d59e42657596ca68ce12067fbc845c4b906ae6d8f0", "0x2b93eeb5f5defaa2cdcf165c91dc4b2c679f0a8275e124d9a45e4ef49ba78419", "0x2f5270ac7581f2186ff3bcc58c6fcbe53c3a8912a5e2b51d073b0e3e2a5e0489", "0x10cdbf5f96b3ff7196f8a6caa0e8745493277fa659bcc448efde72b71e8323c3", "0x2fd3890b8256cb06009edc1ca614e5b89896414190c4ac912ddd2fb0a54547ed", "0x0e0158a776bae6cfec58654426a8e0874d2a0b51580088682628d85b8f628ed9", "0x11d039e75730946e1b43ff6b1a36ca08cc68efc163a44afbbbd181aea1e3f760", "0x071e4c48fc462575c67463be4de4c67c178e690f7da3a02555f124f722f28c09", "0x221d11a98eebbf2aee536ea32d02ac18d539ad54ee9172e46a232a010017b2a2", "0x00ba4e4f69c3496368a277ca36f6b2d8e740295843219e90cf7cba25187357f1", "0x300c4c6484de03cb35ff858bb199f7a84a414f0f728de84742a88773642d0aa5", "0x1c508d314cce78c25d37c299edbab30ed7524e1902b335bb4c9386f596ef3f72", "0x2383eaa5db4f7ad7418a38459523b2b795a4f151505bd796916c5e05c0b7b721", "0x095007c9bace943994fd0a9f9f2bf09f8e576893256aea86969d1bd210f2249a", "0x2ebea4c9470c5979655c311724df6a0e451cdb84cb2efb05830374b4fee99a71", "0x24b7e73f62f97c13ee370552f0fbe6ef0b5a6e647f42d95f3c66e31e0b0e0226", "0x0803599f8035ea689063376c1ab9acff62203f5e0c1ba15ecb8efc30fc1cbdba", "0x2ab4c0a9e9115cc1303530733bea83654fb3d8a8ad4adbbca1b37ad21f8d9b35", "0x10f10b0d5b7a21918f84263cd64adc10e54f8767ada0a7fb59d7191c31d68f4c", "0x238ee32e5ca6f2911047e0797f4fd2571dcdcd775a81bf945787dff83c1fcb6a", "0x1ced6ad5ba466f3efddeb749c7d093d5a5a24348c9bedb513de6047627ca2d29", "0x28429555e34e7b9d39b0f9b8d68b09c89cbc0bd61dd301aa951da42b77ab72f2", "0x1b3a4e3db4dd67a5df83035ba6e55aff71f517d7e6692238091ffd1da89a1655", "0x13cc2082bc604551ef4fd01a81a52261f7979dbea0eb84296f2f6416d57d460d", "0x263b9e3cd8dc5a4413ce8e8c573a8116de4af9642bdaaa35ac342ac8705ce5fe", "0x1ab39521acbdc88aabad582fa222d6adf5633cb16fa853e6f4ee0414dd8143ce", "0x0fc133010270202b550a0322e569a9653a21f034a8b305a61819c26a9cb538b9", "0x291875d007b5cdd415acbc76c69b6122c86abe51c18eea30136bf66571588216", "0x2e2f9329346d920a98386f2c0a367740e032468696fcd5ac6e2cc6622ed81d6b", "0x0f093b428c6244578cd070ca16e69b36b0b8e2a585dabe4af899efa7c5f7ab34", "0x085bc13b698239310b05501cd59a78e9d1f3aad161541bd43080d9fc867d81c6", "0x136222a91f1c9487f3ff320b9e3baa52ef2327895f414c4d4b2b8ccbfef82d0e", "0x2e9341e5aac4da39b3363dee93af0482244b47679de4eecb5a54655e11841305", "0x28988bb98a34d5195384445d76cfbe9a7cda979693d25caf6819739888cfda7b", "0x13b4e0317e3f9cc2f3f49f7dc14c971372518f2b053de35762225ed265cd5b36", "0x19eb35c7021e14e946225fac7aae09481548d0eabf89304a3f62ce915768a7e9", "0x1d37d1e1ec0d7f119bd33a5116e19b07ccb42a6bf7b129bf2aa1dcaf069094fe", "0x1652a1124b3a6fc2029e43dc24de0a2e306968b12092787e3d578ed1d851db17", "0x2d82e3d62258db1a035e60aecf90cfc35c2a68abccee846d6f30dc7be13136c7", "0x1717bf8ac6146ab14ed32dc7a340f8bc0165bdeee55222d4fc0d1b9b8e87313f", "0x2fea8ca2751b165005fc5799cb9c928d3f5719fd377ac3d5ab988cfe7fcd0b96", "0x13122020261638533ce1db1818eaeeed3a3e5461925dfaf4d1ad253d00c0ed96", "0x08e63b96916fc88aab33140f6ed477424caf1b792acd7ea43c32848088b35b61", "0x1faad0336f78a518e2209d7e85823be53ead506dfb0eb4910664121f4db6d7d7", "0x09e63f2c7fa18fdb6fa1c263ad5f6cb0c39e75741a94bf9f32c5984347369172", "0x0d5812bcd3b13051f2a5811608cb30968de4f9c36dd7c4f6d38fcaa9aebde1fb", "0x1cef48b1d61226b8988148159e826f942e93972ce36051f55d0dc019f9ebd106", "0x213d3f4a801784d43909b5479cd159cbd628baf8b075cdb2cbef556dc12061e1", "0x1377884a51544da78a20bca27c033d666c05179f6f0c3b57a144a4d7c154fe8a", "0x2c2028206c6a58ea6b3fb8bd732935d210439f6cfeb683b7fa0b5f2d9041f86c", "0x291c29c826514d2807fe656bc2eadb0a5f264411b1381b0d85ee215e4806a4fd", "0x2c7f267d39069e4902597c9e3348b84a950f91dc7eee91a8061785de0c231723", "0x1bdffff475973387eb8cdbdcb9adc7ba1c9f63000a333d6b5a77c5b9d0efce6d", "0x108504de6c323d7bd6c6a54b3c7b2cbe67e2f863a483afcf8cec4d66849e2822", "0x143830758702da287919107b796f3e2c4208537704b355ef6d7d4af3b16519c6", "0x20cba0f444c54b7d446e9546034760bbcb21e94f64d6b4c9aab41356da39fe34", "0x0d05f1101da898ca8034234c57c1b8d90a84068cf4242d3a4dc3ec6a71b56a91", "0x0d58c99e7396f36791b921ef6b65b06f87c391b66e774bf40da42af79368e78e", "0x2f0d35b918fbae52212674d2c086ac35ffef289d3bfd783e761838f119866214", "0x2cf4868270ba3c288f4de29e985d0117ef8f2032235b5039cbfacfaf95b9f6ef", "0x014cded55649259b92ac128bd6e1b1bdb71152644c4d818c1d9a3a0e3a46eb2a", "0x0f16f496633341d1709e144de29846f7fb1a40e41bb3909f41e791b749795d49", "0x02076608271804137e0c9f68c1b0aeb571e4d34da3954e07e60670e31cf4d691", "0x21415fd472789e80cbc15fbc4a5e3fc96567d552453049f3ba8a0a4158d8b293", "0x28d80c9d6979564568b87745409fd0c33e38efe056510874727cacf65e7f4068", "0x07fc32882a7484c03cdd3a0e24abfe7587ef02c1cc52b11c55ae3b626f8b0701", "0x2d8dd2efa9868ba55ade797226fa74ab88dcd0cd6bd94ae685f00d42383e5f8d", "0x1a986dc0a9c125037fa3b30ba0bb49959d21ceb20ac5d336b09597c422537ae0", "0x21f392183eed36e011b851311afc2caac6fe76cce1eb6ca42b9813702bf015c3", "0x14d56f1ce4a77333e61e10d44964474bec74349d22c209bd4c1e3c0a3df5022a", "0x2326ed65301ef1c24feb4e9603860caacd9c6f80683303caeb0ad7f26cab0970", "0x2a3d9fcab4c508b0725e9fb8520ed06b6d29b522e5e8af4e4626ba281ee85718", "0x29cdcfde40f6fd4b84b8e3678b51ed546be8a3a0d0025bf892357a9a2375bcfe", "0x1ef82bdad09b9fc4f7d84b1d355f0931b096ca3d0db7cec8e33daff2b4093a86", "0x0bcfe28aeb735a664a360120b09176863374c387d6c0fffea5870bc0ea877cd2", "0x07f3e3ebb0d7fb60bd576ad9e7cb241aa310cca0d5d45014964197f7594bff2a", "0x2ac56c23ad3b8667fb05469317023035cb87ba64ac066fa035c73837ac8df1ef", "0x1e2e9f7e3702fa82feddb16036b94442ef1611ca1a2f1ca2f47336f16db80f9f", "0x245d55eaed831cbeafe45ad8ceb4fcbdbfc9d0ef8ee6ff03e31068d0832398de", "0x1ea295decfda9c0a400df14483ab3dae5bf43987ed926a02df2e7cef2bb64ea4", "0x05bbf568249f3ccae4c98e2549dbde639882927b39e4f39bb7d05f37f6af0d0e", "0x1c1291aab9893e46d2762beebb1bfb97465d00f30da6cf33e860785874cad7d9", "0x17634d1ccd51f9433152634c359773fcfc9f93f80fbe65baa59637703646f7ea", "0x14fc8f7234f6912c40f82a1bdbce93fa1af8d24fcf7abeb0c2d4f5a98ed71c24", "0x27efdff5ad6678d5fc5bd1da7143b076598b90db77772a8e9cf5c5295e0af7b2", "0x046644c4e7022580e83eee330c7228469b7ec8afd154a47564f0ccab9ba89872", "0x2c00d457f72e3452c86c1ae3645e645d0fee2d34f5d502ad1b3ab4d0ee3bd431", "0x03d24d7d5f668e0c76330b300b3eb77767ad982a878f643ca935a00742a21ae5", "0x03de941df807fb1cbde0f88b9ec89b64c11252edddce5123d2443fdabdfec534", "0x13968ee75a666efbede2dcdc1cdd9a5e15543cbfdd3d045486ecabad362df82e", "0x2a49f11f36030eb28dbb1c123c00bc12491a461126edf2371d4787dbfab690d9", "0x0fa680c08661ce0671847eb582b5ebb305c69b6166a2d3d32dadd35b73c87fff", "0x06d5a0ba4f63840b7dbeee170772dbc060c4e7da78580f7f02dff8dbcabe2adf", "0x1f624813ff4e4ea551b18a754fb0a852be6ade91807e86ca6def238cc0f23f20", "0x104988ebd6577839a2b07a037ab4d20e2b00daeb6451e21ea61028b2b6acb296", "0x04e71dcb7afa2e832487ac7f13b79eec44d7781897e9075b9198dda984d7f7eb", "0x236f6b011d7b96496fa7baab4c5dbe743276bc974c0d2d17a81ff079a483ff20", "0x1587663e2b5d740eaef59e36292d85686b5854082cf903e4de4beb5340e015d5", "0x11d45895b6239ba0bf7d68ed7790502aad8e13c8b45d313e323e27432e2cbcfc", "0x253c79369fb2bb163ad88c751e81d0ed903e0fe6f15e12c0fcfa9a06eec12476", "0x18913458b59d37dacd0dc16811a34f844b7253e8bf4d7dbecebf97b0549c2b01", "0x08d5bca196a8ceb1ddb165927affce0e3e57e42b22a130392bc52214749297d7", "0x0df1eb022b44f3c8f358a7424021402033eb56d439bafca09201a463712f6bb3", "0x1ec99a4a3dbab58148f9cc3024da287f4083d70a91966a5c76b46b0a27bd651c", "0x1cef3c619c6c700bd295937063395501cf4e208182209f6718d57da33a23e66b", "0x28006478a2117dd3500711cf843ee17b97026884681a5bed0621c157f78a13b2", "0x1f8db17184e9aa39e5ac0306e471408a83154340ac6f9c585ed910d0d897ad61", "0x0b4dd727de06a0a5946961b6f5fc0bcef0263f7e2e5829ddb6e49008cbc1b16b", "0x217209fa8996d860daa1f9c210eca2580eb3f1cec5aabbb56bd901b3d9fc871b", "0x0f68b53bbb8bb4798d191608f9542849c18697dd7402db0b5f30317d2178befe", "0x0eef36b6a205fbbe8be6815a1983e6cd146e42295eca46dbb316f976bf0596e6", "0x0ea89f549e8977b2ca99be52e9fef5713a73e5a06663918c83d22bcdb017f15a", "0x2bb5f1827e14485da2183c2c00d624ddbc01deffbc3235878f07a04a47bed1bd", "0x2f630711a84b9a470356b3cfc2ea0b9e09be16dfc9a75086b4b5978b69e8de4e", "0x2d1a64e0411d666c0ef9f06b3eb1f0c442913ca621a54307961896f61fe74646", "0x15eb85dc380a0cb81f1511dccfaff8a5079ed3100907772ef076f64bb4fb1f8c", "0x2935deb4412873991b6220aedc3e923c05eb87d8fddafdcbe1da6ae476075aed", "0x212a58a5f2ac5530a2515434437538885218522ac412496ce5f85a9fefa2d074", "0x0dcb873fe2bf8ffd64fa76001023572997bde0937993bc9822928476e735561e", "0x0e39308c1281899d7150092d1f116e41b981232c9d096111d827592e32c5ea5c", "0x0a5679d09418466a7300e8a0a964f4d3bb922958885147b5decb1438b101cf84", "0x038a8f326cc8a51dd41092f40ea3aac4ad722a8744101f4068139c5d9115ebe2", "0x1dc0fb391c19c979337f1983b07d90ad225179d1c6bf4fd85601fcef1c1854ae", "0x1ffeb0fdeeb9c720e7be5842a019527689b3b8f5e3d63a3de2505a964223a292", "0x2cd6511bbe7dc9d2a8cc050225b73d69f7c2075a623fd6ff4bd024c2a69ad268", "0x21d4706590b1854d962bec4cfa56951ae8441cbeb1e4175f5d3b61b8db79f68a", "0x12da59528ab92ae9f0268eb1bda47594920e4f5a4526278478dd9a0107bdffaf", "0x07aed9e16edd41aace93c2078ba1333457676697ceb8d77b5833121aea63f06a", "0x13e9c52761d0fd356778f2c9ca94f6ac1c714324435e0105d419e112d3f42c7e", "0x288cb3c2e45d353233d2680366d4913c125e7f2cc6bbfd65069538d89f4dc477", "0x016af712074445c8af7578cd68e6e32e0f88cd9e99b3f46c63b84c8392468eed", "0x1c1d9b10584a446463b905d7194c780666b9aa00a781ecf1003a6a0c81685f7d", "0x0a7c876f83ab4efd0d042493681e993a66420f23b0dc6337fd8e1ff0bedeef7d", "0x1bb8435cd2e6fc9c768446b13a53fdecee056f79ed8d0d1d36e3a784cdbcf255", "0x2d90be1ae182c3f440b85fd6da69e21de9eb2929e54b7512216ddce08a7095be", "0x0c9de3a0dbd2d14270f8a16c486495ae5ad2d44c0322f0d990ac4a4e024bf575", "0x1e397c182116d4e00a53581aa108e5bf880f8fe0736e98124aca92873840399e", "0x20a611d4fb392c94d85684590ea0aaa38e4800d027650f823bdda0e8083ba202", "0x1ea1b882a97d732991805ae46935233eeb424f9363f9e5fe864d30237484ebf4", "0x13f67ee6e8ffc6ff26648bc6e3106b834a3354ed989d351f4f08f2796910d1b9", "0x035d6e11fd71458caa1c0a7f76828e3360ad2af2e88a7aa8e5e5fb2a6110a56d", "0x1254beb4738a5e8e50f45fc7ad73c512165e0c20c0c764b1747dd24da4b5186f", "0x1e0b231f595958977dd7571e0e6988ddacc14ac1fbe98ac784f8684a101f417d", "0x1d787be18d93eeebcacf4eb98f2226645cc1aa4354e6af4cebeace6b44001963", "0x1b629ce1b52348a9865abe18e6c537f88b2455e0f0de338cf51dff14e09993bb", "0x102b0b82afcecad50b6cd976bd3acabfd34ef4f57c78f5fe7b57127d166504bb", "0x2c4f4e1436d85e914162bd51bb9d13bfcaf9f9d30ef53bd75d8f659820124eb0", "0x0e5d628e75b9cdc3a9898c4722023bcd26c2307dcdcb74d097f4fe00bad021d5", "0x1898efdbbbb625982db0dd512e8540ff986925bb78ea970cb5d044c53dedd4b3", "0x2a586ae0193dc050c68a6340d6387b5944d21cb79566610ca15cc0afbbebd619", "0x2c8df3a839ff2b2e1071ff973963e163cbde5994da3700d24c0942a1fb8f3e81", "0x2c40e73f41f7ada9ce46fed754b987d77c7b9c9be1c866cf0e50491785f9aa86", "0x10a44419a271043be49ccf50d187302f300027363f20187925db8bdd0aa9cc5d", "0x28250cdc61eeed8b98fcf0f9a839b0cb299f4a80f88534298660902932b1e8c7", "0x1b01b6d43822237fa886bb86fa5d0adaecde3b834324e93a02571202d39c16c1", "0x2b780386f9f3da9b23f88dc7fa2615e3429288d9c5de4803d42ce69ecfb64661", "0x24984ac7b0d3a403500f0a88a73ed082f8762c1686f379d5241b64c6d1ca26c8", "0x2954829e72a69347f4a05b5e4bb3a3e6e5badc6f7b963fedf95c52ed5ecc488d", "0x083607f9e053a5c77ab95343c1a4620357262891d282195bcc4ded3dd788cecb", "0x27cdc8f0618dd378a7ca6b89fcc86ceee70a7cc73d29367d3d4539291b73775e", "0x1c452a7426b31ef9c186906b2528de2b6f8b264c7083d07195fee3240f0cf082", "0x2a70b8f7a4f98c94dfe478396c24c0c73445153ca6a63f4135a61a7a7149209c", "0x1ddaf2c29060384a64f142964f68c38ea9b2ddf14c9aef92b701a00f4d78c967", "0x18d763f5955669c75685d78bbcfd9923b1e28a6fe22d19e53182bae2e387a4b1", "0x15487b28b3f0687448c73f432cfca0db556501a9985db9782ad1f16011aa5584", "0x1cd157f6023cd720180e59db9dcdd1d6d6aceff9b6db1ac72284c0a54157bbb8", "0x02f2368f8d046b18934dd27f29bbff29c909bb480ee0fdcb7705273766a189bf", "0x09d13a02ee4793785933ced2ab70bb0334e7a6fe653e8d4ed9783fdbf9a5f1be", "0x0d66c61f8b505a8efd06a8659d1f83910a781182a4383b9c734f51200dc4d62a", "0x2d32aea4cc326f82206b91c986181f18ed3c3171a53177243f2dfc7471976b72", "0x0afde5f85a042ebe32889c6a3e00fb40c40d9a1325f2f418916b1a46e3e4411e", "0x29a3c3d0caabdccb6c7d358593bcff8dc2e0518a9e41ffad251b50d9b397cee2", "0x0322c3386bfcbea88f4c322edb06aa6d5924122d858df34efe6373c44b7cbd61", "0x1438c5871add7ac0d3a49acd828a005222ce8c8df43059edcfe399d90e281363", "0x168bfa7bf400f5bc0cc14388dd1780550980e4134701a2f21fe0eceeba59c712", "0x1dc073a172aa9728c523545245f9160cef1a76e4cf74b6eac7d113fdf911963c", "0x26c80f81e2f12a302e630e9e4d3fc4aa14a7ef41508e4b35a0b58f3a63809290", "0x2dbf4afaf4c5ddfb04cb3ae7aaaa6bc6244c57790a6939ec0febe2c17bce532b", "0x00905bbfbd61ac42226f3d9a1fbfd2e90eb04dc665e023ea2395e2b1cf79d436", "0x1c1daa03e2b5bce3607ff15e37bed1dcbb5e189b073b6c20c27ba16ee2aba814", "0x1a2f8e8d55339623c11340ae1b135454635c71cbd8d20b6a536a39ff736a5243", "0x18535c592e62581176a3464783cf099f6b90e5cbc6d80f12398708d7941ef453", "0x0029f6bc49dc5991c8c89c9236e0535ffd6ec13e23042bd27843a51f9fd2b369", "0x0f99bda8902bc2630a41884a5c477fe8ce7697fe86a28119d5a17bedb9ad85aa", "0x2936f41a19816dabc413275d943ef09f3f961b49e15ef9d671d119aa39e2b4db", "0x2b3e5c1fa1bca2cfe43fefffaefadee5d8bce97f52484ace59b10654909a3c2b", "0x2cf54da2864c28dc6817000aa815f4d585821780bb27fd6762ac6f8c2ce50398", "0x0318d4abded11ff442e3295eae5f62b9ab53c783b0509643843123b802d2549d", "0x0ad5edae189c9098ae537345a1d3145b442a7776370ec6fdb6cc33cea6789c6c", "0x0c02ec64e912a52f98bc967f67d74ea53374a195e6b8df2da1c0abf95fed1c96", "0x10b354fb05e07b72d7d655444cc964130e3ee7b63744981e3c5a65279ae805f6", "0x18135a3547443addb809e56d299d6ab71600ca6a67d73fb903c46ea1f88a78a0", "0x169b2d1c9533fde28f5b61725eb1db2df523c8a7f326816a48a06b492f7d0971", "0x0706cc6846991bfa50aa52747c63ab1bb357c7ceaa4b38a0b6bdfdc48cc745d2", "0x0f23a2df079a3a7f3909ffe89f2a2e5d48e08c81f56aba869b8a073b134c2766", "0x1bb2ed4cd681047a7d449a435b1412a1a54576d1a299d8307c9325d0d9576658", "0x28d41a2ac7b3c71974ee058c7223a0a7ce0bb5a1e485dbd2686bc1300b47e21e", "0x25ab50f20dd391b3bad83fff0ee9692258536da228190b723073d55310c4bd1f", "0x27b24b346de16f4f286a056a24239895adde11187ed5c7d11e7c535ba5ca6300", "0x0ff16afdd9da02815b98fb92c5763b49b0ebfb16bced629b8ff2d6371090c495", "0x08a1329feb54f08092d18db2291e91c4e17c7c09913fed4c0130fc8e7f75c9b4", "0x0cd6bd732307ec5314a14259d354bf7d277f05badb1cd07253866472d7e90769", "0x101bda1f28311c2977cd3b452df6aa429424b87cf47c92366cd45d9926a0abc8", "0x02c39319445999f80e7b80b5a38639a0cebcd5b0766f64230227f6809280ef6e", "0x23e7afffd0c6fe2ec95a394af2cb724aeb088250214c099343289bdf465d46f2", "0x2176e7a545a244ce4bc1a7c2bdca95312da62fbdd2bbf8dae347c611670ea7da", "0x1c6067731c77d01d3fa867e8dfec2b88acbc17e7ceadd706c58aae38254ea2e2", "0x1588b2582131d05ee20beca1ce405c949fc16292219447d2b73c628fac00cc58", "0x232f65838476e01be1287b72f8897938f0783eda92b9f4c1ebe8202eb29dc889", "0x022b6f2c624b637e843e74a76c325b05ffc2ae4614384e0f3a0cc18565624676", "0x1202e2c0a73b8a2b43469495dd9531dcc8072d16e63adc02923c50b141a184ee", "0x014e203ca64dc05735b33078ad83b969421b96aa9e8347ce2e522eb38886db24", "0x040923212b1b7e37c937793aecc233f202d6b7578fc6f52774b165ed6784e471", "0x0fbfc45be7c5f3901abdef853d2e6216b71835c365f0f97df2f341f0f049e92a", "0x27310155192b1726750c5bff7117c4ebec2099c98b0de8c553f58defc30ba318", "0x19c2594328dca95959c2af80bfb179d25adef59eaa4a74f15ed3f19340a08cc2", "0x104796be743633ccc53f728144bacbebf5a09b5bc0717ba33fa69def3f31cd72", "0x1c97f91df1d79a0e5b7803b2a59f15ab176a207d1ce3f686f2e322314bafcfe7", "0x0a24aaf916ce0d22fe01afdc5f96cb1c40b49c48c99669354fe2c280a33f8cb4", "0x17dc7a5303ea797184fb650273faac447284beb23e29339d3ec9d91d3f8c76b2", "0x2e1b387ef959f82a150f807dfe5a3480faef6e7f79d15ec65f924d0aed280a56", "0x1153c4ce1088b51359d71725823d163ce69541317610e049beba015f256c1fba", "0x0d8b8924cba44d571ef53912455227a5bffa46057018fb68314dceeebd088515", "0x151e868f5e19e96f6d2367228d388afd8c080794d0d5c77c763beeccac9fc0b3", "0x2fa3eb12a770e7837a8e690b715f5a811f4102f3f14bd30a308a13986a92d7d2", "0x28318e53a9949641761ea87af6c8159a0fb94915083d1a1308be8bb05dede389", "0x2bc3819053ad9a6656006fdea87efa94e4faa379e89c4c1d38aa12d0a141e9b7", "0x1c124776d2bb735283d4aad14ad82bfa8e821ec542aaf7065b47657757ac31d5", "0x2a000712e4a9bf5b395edda3092db0040d44a0346178aa0128997459874c4bc5", "0x1e0800b41ec9c392c2efbe25f5de7ceedadcefd12d437d874dc46af997ae0087", "0x2ab3b50a1e176957dc1f08dd47185f0ed0d9aaddec45c5cab796dd2d991e9e18", "0x2190a0c5576267156ec9081961338a471a0422d56035b8bf3a8afe7870a3196c", "0x03cb7bb7d3a38a7ff1abf8c9282298a5551c55d28e1bdb6c4e7377caa034961e", "0x13432d180a4b815ff8c3f3afb4250c99e89c9518417ce5e147440df80d93e730", "0x1596f4d7e5a9b9f5b7f5e1a4b6d068b6aac9092877b820ebe95a15c59830fa9c", "0x2b757032499016fc85df940d7ea78a6b6c8a1bef0417c976554640b914dc9b75", "0x2b1528bf87a89c542779e1d6671a269331a2b9a64b56501a652bef0dc5bd5099", "0x2fd143194441382b4daf486d159def58f1c9869aa0a3fd03abd5d9c923dbc601", "0x084e5bd84e9f5a3f8ac1a0be4269e1cab3bea75a651eb476b23af0a9436e9e10", "0x26c737750217a4e394e063815275f3e99bf87a6339e437655ce91f99a3f894e7", "0x0011d44a14a217454b7cb9b013a7ed9ee78d380846903dab930a9f39c072a54e", "0x2cff02f46b0ec806c47b7c834e0c3378172ca0f7719b62de17f598ef8f047731", "0x18d2159e3a040d8af39903894bc9ec51d49aaa6d5776db31f1cd4dfa616268d8", "0x18f0110ae1d067eef4dd057722e96be6616b6c5edaf101db529b049a4e6126e7", "0x2870e7ca2635b5c3f898656bcd8dd853991704e07ad301612f4d7bb174bed2f0", "0x2674f59ed1fde5bb303cd010aac8a91458bea65a29db9a163ba3ab313cbd6c76", "0x03e34b2f33b176b37d8e88dd3501772a8961f02a5bdb29814588a44988157da9", "0x17944c0c7d9146518157f9200092bc82bf2c5672dc8584823659b07a0cef37ef", "0x1267aaa77cd7199c10f7c2bc5581a42f3c7b08371e3aaa60bb423ad2e2729830", "0x0efac3cc0daa23f1e378d1dcbdb2edd6a5d84954dd00553fac96416259123831", "0x2872ef46fc5700461f9af029c3611400a0a80497b58520afb43794da71326a97", "0x1abf3fb66b933fe5c436b2e90dc1dbc6ac2ffa74cf60bbd15d183134f069b42e", "0x093da890a6a4163a094fb0c3140683ba9868fccf8e42bef0a51e7bd577bda0f7", "0x2520ca8de344289083f5d01264ff76a5ae776e69d65d671442f52a680242a44e", "0x08f3791175eb454942ba5e3fd7f00463eb88900ee9c053d105f9c838d29b1035", "0x04389b9fcf9b26a0d52a7a86b11f50e4cd49cc758ff9c1c9352481c2b7cf55b5", "0x08bfac675d4d1623f5486662b8e9a72fdb4973064d5cc6572a36f8691574cfa9", "0x2a8e53108a5e6fa2b0bfd2e01a859323491aee5cca45981d7168f1ad1dd42a5d", "0x1ea97e496fa619c52c19d5b33076ce84d51ed947970643b0a6df301102252a9b", "0x2921097b063365942c0d6a534e2a92aa408908b6897945ee787bce67e4574ced", "0x2113f871b713c7ab1ed7af63982cf46095821e2aaef61368eee133aea6245f27", "0x0421c9fb1ea7d058c01c2537e22d1c717e40c0396c643be3e7c029c055616374", "0x181c57d9013554eebd5b3e9a9c4a89a7fd55e772eb2fd4b2f47e5f015b52b7d5", "0x210fbc7fae49a8711b72744a25878d1ecf3a88401dbdc87e7620ef080e9b1b55", "0x0038a73037d04b19c3cdbf74c32cdbff1759dab57fdd42954a3afd9807537c8c", "0x1c4faea527a5a146170cc3a85289479fb22e5bb5ad2c1900999faa9080bbbee9", "0x20bc74457f7b36956f2759ad6a18b00ec602a039c00ca7929304afe1aa00678b", "0x18dbed8b1ebd14fcf2858ff2c139d26fe901ce4e8b50f28c16ba6a56cbd6c3df", "0x290e5f918ce5182793fee062e0ac82599a6039cedb0327c69cc35c484a60b52f", "0x1270f1c49bf05b5711299838acb2d77e4d5209d650de540d000fe0b636957250", "0x244bf00718449105a612fd99f81f8293bdfd43758a8375aac6447d67afa07d4b", "0x253c1267e1697769dc5b914a341b02ead358261047fda749eddcc3e6496ab62e", "0x1f6205923f15d6674f8fa3f5dcbf9b6ae3005471afbcd8571a0b02535246ff74", "0x197d7d842654c8e9582900b5b72a9bbd5b43155c039140646b08fed032afc7bb", "0x0dc5162814338dfbdc374e6db2f4b541c598de3a6832361f44003a8a88b13f46", "0x118c03871e753f7528b2c0834123ca8f43ca7ab37eb1fda534bbb334e94c52bf", "0x212a8c29677a919cfac2b9daada92346ae588bee142654fa836347239d23144e", "0x12bbf40d2464fac9e64dd04d65399fa6ef74f8528cf6a3aec23555a82af23856", "0x1e1debb4f76f3d7ac15633e36bff09da18df1f9ea883af3bcb5ab4d84b4a798d", "0x00ce98db1da5431b8dcd8adee704963f8e89a35b3f020e696d79068ae3cfb02d", "0x21944627e60ca87a770eaddd5486c15ca5e487f4dd1ae6ec2104de83c3216e86", "0x223ca483774a7c5d4f1ce388320e1d5f53ff95dc5ce53442aeed94bc2625d392", "0x2501b50c7e7f729c7f4d896501e294dc91c266bd2a6dec0cbb09af8a13fc37a8", "0x2e438c6ef07f9bccb0218649a91da9373870a45ac4524c6cbf073319a2194fff", "0x20eb17b53e680c2b60d9f3d55b9dcc8b5db59e04b62afcb968cf6147e35a91c7", "0x256118253984eb71f26d781504b84d8288398293cc419aef59e8613c9fafcd42", "0x20bc1706e7de27b979166c50f3b4b713aa07a5b868f5fcc9da4faf7a066feb44", "0x28ba38a4827aa8ddf9349dc4640fa8017b0cacdb456a901065aa6cd3617e17fc", "0x0561f8d6997b836522d4f18603799cdc60381f5f65fcfa7bce7620b8fe8c7462", "0x0914871465b2f0f3c83c416535a525082f8e6558b54de301e5f4edf52bb6aa8e", "0x160e0b49d6bb20368b2a48a20c55da0d2659a94ab59f174de5dd4c13505b04d3", "0x0971ac2fe1f38483d27137f792f6bc0ef51108d2a87877edb01205a23a18463d", "0x0db36e959b2089b379088932fa5251e65d4ee1f415ad497f5677e69d620c3f3e", "0x260e6baea06a53e7947e163f0fe833e512802f7862e8708f575fb6baa7ed6ccc", "0x0103e7c9849aae12c3642ba73872141c0bfb65be896a6ce0f45ac9ac8d746ff6", "0x19853a0ef0c493811c3168e292855f690100b73069bb50dd32dde06c96a4bbb3", "0x0e2823849ec0077c2e8cb25046f6a38780e943ca3affd973c883809e227fcd9f", "0x15669e10f37a3d252b28f8c05f66420a4bc6e9baf7a6dd7032838972bf7cd9e8", "0x1da3b467c133912c54fd24e00f2916a91d533ee46e68fff074d1a1467179bb9f", "0x28c8aaa806b13f8e240e947d48be89c609ec24b42ef9b1b25916669eb613f715", "0x1287309126dcf2034cb33aa0d01b7e5e1b020a8a08ace1bae33530d5db8cf15c", "0x273d73d56fc498d1be414428870a92f0082658d381013de76cc13c80a2cd8de2", "0x0f73e29149d0fa5e27ffa53e4851187a653f2c5b310ede6b9598e4cbbd35a5a8", "0x11508faa2ff4f86a4ecdfec774e9d3f904e04d0fb9ca25b99be310c23dc74bf3", "0x08ada36165c3a78cf93ce4de9c7e13bd9fedf22b0222e5e70907c176588e4966", "0x1a649f2a76121b00a1fd7d4945e391fcdaf3bf69443b861fcf15d923a45658f1", "0x0c7fb8dcc2a5da940996877b67908497fe074a98aa8d6008041bdb1f4dc6d6fe", "0x0a6a254a2574b86867bfa9e5055ec61826368c028e52693242f63a83153abd3c", "0x00286876e2f3e95927a7dcd76f37e4c937b4c5e274bf123801f0569bfa6fe34b", "0x2095c2d2a9f23395d77f1a86179c512dc1301d549996a3250080f52b9704c8d2", "0x2ac90aff52b956782ca8598cbb2b22a3285596b5891a1f60e141012bf2812ef5", "0x114e912fde21fbc12348be91e0598b057430bdafb0b4eb9cf93e67f7235749a6", "0x301fdf0c1ff5be9807b51a91614541bc0696cec7fb16a503029cfb4704d9696e", "0x09a579c36f8bb8fe12c0de65c24ef587ca40796c850053c022fb015fc6bb072b", "0x1c6f93d553f9e4f96a575325aed9682a53dca61b88507723b6d2adf2cd683388", "0x000ed419728fa31c55c5946db446b7fa783f8af594158ec60ad8c1f66893c17f", "0x19411996cb83bdd95e61aff2e6d4a57be99120783e41fdc495f358c98226890a", "0x2a1eea5321ffc604f87d055b650ee63503584495923a451b32fc241ac114f2e3", "0x21d5fe87e3905b6c19c384d4902bff4e573ed1df960100fe2f630f5ac7249636", "0x222da21f4b7c807ebe8f93b67bf507df715f53c3b2ba7754604bf93aed23a7ce", "0x11bcb33294e5f8e82bfab58152eaa2b91ef6352a9d0ba55bac003dc735172629", "0x15f62b8e5ac177e7c52faca91dbf24e6a90edbda53ea0c54d6ae7c38247b24b0", "0x1e329eaeb402ecf26259a1257fa85cdf1078dbd858394c06dbd1e47b988cf257", "0x1fca943281035ed71d898d161ebc246f9cf04135c3255cb87cafc6e11e0e715c", "0x21127d56f6dfebd40f026d758a4bb8591d3e1d48c12e28753cc71431a1db1ecd", "0x06a69dfdeb9e80796a63b4a698266093e1ba7534ebb7e2b0f3ab58751d0cbf60", "0x2c0a57a5cb496459e547d4366e34a9f89adab821f418b9a6c70aa1c61512ce66", "0x261858f737fcd0820151966863a110343b6065926b133870912c595d0fa803e8", "0x074962d54f26a02909f99bc37c93ef70043e7cc51e773a5e873d3860c57fe9e2", "0x297eb20bfffbb3c3dcdcfb56f0b0e221ef28fcf4faf052a5284c04bf776a0873", "0x1b8c711b0a6109a9fbaae034c0df650c32dd80cfc5981816dba5a2d3ba884246", "0x1872c0cfacf2bf6e42d11d52d28c306fccd53c2575a9a2534b83dd27186213a6", "0x09e802063ab8c0b001265ccf9e5bcd9a83de0f56fdebd385ccbf5cbb5da8566b", "0x2d0177d9e97ae16ea923bc29c3b34f43b9743bb04e0af385fe4010eb92b3faef", "0x20f64ef9f3b9143a4dca77cdb2c11a72f8e3bef8cad37a6e07d156d982d36ad9", "0x14085e315fd11bd4311613b563658e194a8de5dce828d0b401974da62a8f5953", "0x1eae390777228c03ebd563fc4cc11ee0ded718d0ada8ed327d4cc09a3307ede9", "0x06472d3a9addadb7ca55ad8d286d7ef0630ce84fa631832009f2dcdadc315da6", "0x00fcdfdb353d3a99bf2c213d9a687d0321844e2371a5ca48bd41f7b25e96b6a7", "0x224c451f7674579be04568957daef86aebfab8746b8d8d68cbb5d4e2c53019e5", "0x0e378f20b71ccdffb0b20149df41e2832c57bbf385e953f2c8f55fd541291a1b", "0x005edeb6a4ca7a6cbff5c5d92694bb46698d2d476ecc1787904863f49914e49f", "0x115bdd6b5c9385955a8a20d244c4062b08eeb78eb692ead7893482b00beffee8", "0x0f6a5a9c39e7623c4583d9b7215dd4e3cc97e5a8e240ace0e8c5fa8343060ef5", "0x2aebe737741ada0dcf9980e84f021506d5f52f7a4082f0e97d37940123ad0bf8", "0x1b1ce923fec61ff8da2ac4ac5d3c2792c9a1adf90395d8c761aa96735a38a266", "0x1c221671ca78f00f58d5d5439c0d11bff3b9f74b62e40770a798dae970a5db24", "0x15770a93016e8761589b6d6e5bc57dca84cb91156222639139acc6f25668ceb1", "0x0c530d9fb0d84a2b04d4fd5d2345c5c587e860361f808e5d5e60d7f6175b31b0", "0x09c928ddd310f013a0176e314d2d76e9487c5631082dc4c832b183b143630782", "0x075919a774265ef6248bae80704929456314b2a274a44d8be22c1a1747ece847", "0x1cc025b3a59fbd993318dbd65f22b4418faf8a597fbe9d9c46262f5b99fe104c", "0x10244f0e95bf93e832fe52e49e1c05830f10fba9136227bc7bee9ca10ab72667", "0x27fc48c5fd8fece4851eb5fab288d4fd41b3eb0cce56827dacc7a3509e4fa4c7", "0x219404cf8c7feef751db9e5d2c4db1ec96ee66701e78422f57b736faf2593398", "0x02c1636d612ee048e2df1f38dc67920abd00676a977af875ae66ea5d5277a134", "0x131e408587a1b372dcb79c84d4a9327e4d1a93e225e682f5a8c1e6ad0f79b0c8", "0x164064b05249b6cc87d1edafb21c8e2bf177f979d46b68b2bfc6d2f9bc636a39", "0x1a32d386114cf8ea9dc720717df855af4106533ab7e427da3d6f8091ea695905", "0x26139768d3bed1dfcd575cbd5c61fc57dd2cd45b8f725c25dbd87819129f23ad", "0x1d24e974d3c14d9a37f65a36ce2a2a593f321cdec81a40a58d65f12da202c3d6", "0x2569aff88e4d3f209061cb023efa93c26a627daee66d1b67b99740682a057fd7", "0x10b621d20c61e70b3292085937120b9b28c488875ecef4bb56ecb134e427d5aa", "0x2b4419af0353be507f3d3121275f9ce9a1a3c84003f47343972248b5c0d2f1c2", "0x187369785670fba473da72eac6a6b825fd4581b5bd52c78420cb246865845bf5", "0x2103a328f4a2673a0c329b136fb7f008d1a1f005ed5e4ca26db74d4d7f49fbcb", "0x0799c7bf30075758b400e34108557143c4d713194e2dfc6d8a50089b1cb462d8", "0x20aec56c0e5b894caaf4e537d708ca7f8fa1e8a1de6009a7a2fea43a70519234", "0x2b839e4cbfc3bf9594e893e041989439863027056db91887c2dc09373f80cc1c", "0x095c1c06a5393a5995870dda2e65b90a20433dcd97882587aac02cf8fd0442c1", "0x08f2cf7886ffa7811e14cf8b4f5ee8ca28196b83478ded3719c2cec9a2b4de7e", "0x1ea2763d97a919bc44c3fb92e61437fe4093253c47bbfb2a9e55b252cf7f9f27", "0x0c8e9f9166ac72edd6d7cb80e80227cccae1d2d2056d6a856a90455f56fd7067", "0x057bb346af28bfd4bc2341d64e65b1a5734034adb3e1099cf9fcca79cda9c803", "0x070f630af25efa8e4d8c5e35861344889bebc7ddb790014113c1c2a221e161ff", "0x11d35bb72abd9000474d448fe22416c8ebfa152c08e6a0ffcfa2217fb86e9c14", "0x2e486100284930c2e91c1d00add9c6c98c3114739b13f3b3f811717372c25a26", "0x08c39ff6e608dceb35123f2d64d68b23c4a81681e5b7d0b8b8407e9aa1c50ad6", "0x270aaab5852da02e7c1e6c8167739b1d719f2da3806118fe66b08b510aa1eb9e", "0x08b07ed9445f3d4f9d5205530d7b6490440653070c6f4c3e38968e82b93ba584", "0x0666b480472adb317f5b138a92a4d295127befcfb83b7660681d41b96c408ddc", "0x2e06985058af9e113eb22379cc55b67a15e193613385bbc4775a68c6c526b6d9", "0x052319c919c1954c4d38a7c77741949a839b3f188619f74093e3180d144c725b", "0x2f8c80a8c321dd74d85f2dab2cb172a0824b990ca63765d6e17b483734c4a4cb", "0x229b17fefeb71703a7abe80495ff7ddb6140153f77e751fff2900afbe19114bf", "0x0f9985aec263c3be8667e4c93dc0d8812f874cef6dc321827d66fd92681ae9ce", "0x0af15c566b682c10cc83c3bbaae3ce621d1bc3e0b45108126cc0df99c6225c78", "0x03177754c13726a540502787f03dea917c9c0960fb205478714c9515d6a10e87", "0x22c84885da685ac6b74e3914bfe2668fa08262ef24f1adb4c55ddda0cdb580c8", "0x113bb87961b449ccf5595cf68329cb19309e8d065d013fdb009ab0e90645186d", "0x2abf19247afd7fcf68fe30989a9a370b99a1f12df9b2fae30b6cd3383f8d6914", "0x2fd4fecf4e46d2fe72647bd708f4bd4809ff961d89dcfd2ae91f812e0a3b9fa8", "0x17a17efbbc358c53fb41930002768de9e1398f39df32a8b06e23033114c7f9ad", "0x02288e2ab2b87a12d55a319b351d9874c32ed44cc16d93a6a63e0852f0f64697", "0x03ac39f86700b6611f1192263d9442e900d1100f26031bcb8a8e6255ed1a9f4d", "0x00d5322a34db3009785366c0060c47d29a618fe0b2cae945def9a35f3ddad1f5", "0x09d9a76e376e194d053554a267346b7e034a6d13447834db68d1c102367b92cd", "0x2a1e0bfc7f387787b93cb39bbd51cd9f023ae0e738abc43de81cbbf122c13e5e", "0x2c9ba1265abe8a7b57f69f8b3632bb13ae772ba1cc98ca033d5369664c40f5a1", "0x0e82b784df5473936515686de5cf8ea1a86455a68b3b55abda5857bd5527e3ee", "0x03ec77e964b4dc113afbfa1dd2eeadbb676f73e27899f033c6faca223802485b", "0x0a6f9edcca76c77a5d699a217dd7b62d0d704485236ed912ce6b8de2293c1e23", "0x1b628084d0fb8fe76d6353bf9482b59af97bf748a6e8046e8eeca9a8a9fb0ca2", "0x2480fbb04baf093bcc1c9162f78214bfe14c3649500d798e87477ff71ea99159", "0x2c92c181e91624bcb26fa27b6c0046054e80aebcf342de822df775333e2b1b33", "0x22cfbcf84ac83392239762dcdb03e8477b261be19ef57e2322c043c08935d271", "0x09aa0d0fd0027d58acacaf20e551e76434bd8216eb1ea6b317d1a6d23a53b1e0", "0x144d8e55408c898646f2e0ddb6ec192b5e4169bb312591d2c758b97207409ac1", "0x0f1a39ddc785cb0881420f42eb4e6b5ecc10c81f490be17f815f9d7f34e5e54c", "0x1e873af18a55663a04c84470498b245b46ef6bd781fbb2e4bfd4333ba143ab46", "0x24a4779886a1ca1aa57204e1fb50e033e31c7f99b8084d285b0b9a933cb0b3c7", "0x0e73aedc9a4578255f1d0f8527708f9d31131205e1d6140ef9757e8e07d593b8", "0x106f27e82457b91e9fa33358ed95a1fbaf86aae5d4ef9954a04dd4635ddc4fce", "0x1a952947fcb77c0ab07ecf32ebf40d96d40ec7fe87b24eb92b4c9eb16f2fcf7d", "0x197b9ed1a8ca8487b72d1e8cce502da9d2ba78c3f22cf7c05d8314722fff72e1", "0x1608554bb309772cbc9a0aab914c4e2c400d72f9f2e5dad466dfa1dfbe05d5c8", "0x0848283bd8201837976d43341d43578f9b22609ac2e457e02664d34830671e36", "0x14beb77cfe2854019e05160b921f96119e94d616e93a0607936b450a3e033b64", "0x034a1494914e7698185d58864582bfe82fc0b7de6ad63f931718abf8238d2805", "0x1c319df3b2680bd8c716696b5d2cf503e0eea5b11d5dde8e95217f4aab6abd0f", "0x12c29c95fdebf01463121a20eb33a06425e914aa9ec61bf665bc01ca2258e1c7", "0x1bcdffb410b009efda67f405fa33fd128fa7cff3730b3860df29b2bd561e1ac0", "0x2e8a9b80ccd2b4387f0ec24caa0ddafb7b0fee1cace342ceb18e91223eea76e0", "0x23149eb655b8640b7fe76b1c0d3b486c2749e647a8d20f29b5f92b2fc64d7aa5", "0x2a650695e37bfea8acc998914335ff376dcd297583262384e27fb805a2223f85", "0x290a2e64f4e1f17bf39d5d4519a152801ffc2d2035d48bba0eb1a8f8238e869a", "0x179786019d36917e8bafa6829471c581d532bf10be7da1e8917a5f70a7724e13", "0x22bc68c0855eedfaef551448da3b639271008d0633aa9e783fae52404e7ddcb4", "0x1340d5b6ce060075459a84ff7f47920cd5318f9d127f9e524dd1f7ac1d082b8c", "0x0942c9ad7de555dd976278aebbf1d22f1beaea0e5ca2bb5b0e6e679f2c7b6b22", "0x0e65bbcb5ebf23a40d6e25703ae029a31722b64a0d210496dc17c9014f9df451", "0x0112a919bd0ceb8455775ee49e2165b5291b9e4e400a75e977ca6566e6a0bd69", "0x1b91c4d8a544369b0daeeade27a0c2966b741a2d46131d3105741f31df20ea11", "0x02dd85797e168d21fa7e5b96622766ec0c02246bf9ee328a915ff2e2c8d9742a", "0x16224724314147d479ae0cbd26a381d4584a8acfd3185d4439b527619d3ae4c4", "0x2fe84e5971bfd3a919fad04214acbc50d07f3015d97c28405dde92827c0253f3", "0x2cb6734e19b3e02c46a803d5616730ad6343d3d923fe9ab98492921dbe14c3c8", "0x1a857e17f2ec1b4c210adfb6ab70c7b3dd0ce6ff603b7741dd2a7eed474453d2", "0x14ce63a350d29e5dc70f9ea2e1dd0912f8d734d32833723aafedabf41beb5b92", "0x0131d2e152c7fc3e65a89f4a22e737335ed4f68c82c5dceb438b519c352132bb", "0x1e410af2e0c4f2d213cb346414d9169cbf481e9ba4d4431e2359119d796710f6", "0x2c93c1454d0cc86eb41df1224d9869700ede7836475611eb1f06a0360702d1e4", "0x0bd5835813addfdd7fe52f4c8a3b10b157ca63073ee2782f74f43506ab58fc52", "0x20944de1bfc17ba91e7a4e57eaccb12a864f0f03f4979bb4a31a84425cc4c0e6", "0x21787b54ce543e9a71d11be03e1ee3ac9ccdd6221f43ae0d261624adc2bd982e", "0x225e74a0bc023c80bb25adf111d52ab833ea4e46967281064061ede0f3d70e3a", "0x19f618947300b561dc3d46a3cd62a9d25f7e9b33f301387d81ab1209feb0a541", "0x233a46287d519ac568adf99bb8694707775b999a6d0a3abca8d6ca64e0184841", "0x18d0dbaaa98db673b472c8ad11b490fac76f62089e10dec1e25386e3d04dcff3", "0x177aa6be86454adb4e45f649672423189eaedf3443933ca5d8cf2da4bc086fe5", "0x01a02810ac6a7679e40266f2ba978c62785fb467b84fb15da6b03c428ea1984d", "0x1ae6c70a5ebf251f5f7e4a1242096a326ef1d5514c38433f0128fdc668357505", "0x02214ef17acba28a71587476ce775f6ee0d3bd3fa5edade9895bb5e8e5d03558", "0x176948698048b89edde8c41a02d4198ff463d76881a3789b4b0dbe8837bdd612", "0x2fa8ea7b2bb13415e41758f04b784973ff08f48be3d5dcff9069f489ded8428f", "0x0144cc7c6ad28fa2e47eb0275a1a4beffea9738cfa8f8e73cc8916349d1e22c6", "0x14f9aab5c16fb02c9ac8c143a41d7ec1f4968f48ee8df78ffe4f87b79a1f3c5d", "0x21e7fe0f38fcad374f525a7e5aec05b47a33eee997097d7b674cafc4a06cddc8", "0x28b0a91e448abe0905876f7c4b7cf7e0d582c3901610d72fa2fd3445339f89bb", "0x1a16874dc677554af43683ff0af81aea7c37d0c8a7d48026698640f69447f44c", "0x2422891d43ab71f8730f1c1447320e50f935213f5036da1d2ca308b84a594ee7", "0x1da66525137ce8f72bac9da36ae4f666c3cb7a3b29dba9d82f7b286b44c32fce", "0x00c4731825357ab15f49be8be8fb61ba4aa49bbc66b9ea889de7433e88c6d549", "0x3000028c4011daebe4e6f64edb1fd3333638af69d40f0e95f484165868c9bbb7", "0x29bedc93abb3b62569dafc8b8987f295de2527006fa7d1ed0fd2f1481fd6687a", "0x0cbe74380509c8ac7668895899fc2fb6b7fbf752aa483e1d9dccc25060b960ff", "0x22b694bc68df2bc4689a4800531bb1c9d8a536287cf1e991a03c0264d009fc25", "0x2ad8e28c2e4bf73c873ee8463eab2f3baaded932a543d50bb9182f246f394dde", "0x0bbd04b434a55d4c5cdab684fa2b8484f8a1b83a5709985668e2d4e0c739c802", "0x2bd154a6074a15b651b61dc15a93640a887bd9e11704263464ecb9fec3f0439e", "0x2d5af17ab25857bdd7604420bd00f1f97232db937789672d2ca927a082046b92", "0x02f8e794e1b2e961d3b2cc77ceb684ca45338be65dd98f4ccd12e77d34708ea2", "0x24ea4fbe7f9b9e66c41cc0cb1bb5e2ce337611e360925dd3cc94953432a233ce", "0x0a37dd5bcc98bdfe4fc6d0fd0ec4520c6f449af5a8bbe4f813b5ed5dd544168f", "0x086a59235fe20dbbe10cc603f69a78b796647cb0af35bc7206c541a48876721a", "0x2bd74d6c3dc977dc2309a0a7b0c7cdad09d54bb466b2bf0caf198218dfceaf00", "0x1faf44bd04babf5ab2e71528fdbccd5fd91db2c2001da3f5e76162313608ecac", "0x26ea7fff86fe56b7712b59e70e502ab9ce09bd8bea98022363816b726f374145", "0x1db2370b5f14be48485e1bff9033853c99d8073cb18bc9ec0b078c2cd90528ff", "0x24f5bf757d1a7c28fd53de7c8cabec5cb62e44c373a2a32f378da5aaa07d19eb", "0x0bcbaced9ef9e0b03d3b87eb09c40501052c4bcd5fc32e4b2bf7b75e21148ade", "0x1ab76daebbedc5f1db440788616187c9fed43b1cb2668e53de5151761b39277b", "0x249dcd5ba6d7d23473c2a169c76eb581185399f9216aacaddd2463e0519fe6d6", "0x0c5da17200b90a0b125b039ed922b6954d34b979354423743e6016b5bc5d8023", "0x2df908878c9402fdd0a3014351b0928f1c559790a0d416ad25a2616c1a073cd0", "0x21ce2e33089951b01af45df3816c80e2048686f1e8014c257c95e2ef3e2753f1", "0x1bbecb607950c54f74a627369a9f94548867778604dd8de406483e21f61ee1a5", "0x23c175479965b3b4a9719cfe6be6a610c0c77670e586c2ab0cf083501e69f101", "0x2f370d158d15b736562d6d0457c44706e671be9aaa524bc6b3bfc34280996100", "0x0ef11cbff50df1e1d36be0c8f35588bbbe406bbea31a3bb6e69b7f7c4f4ea1a7", "0x1f2ff117675d97535c24d19a58baafab0390f3d4114a965c43350c17ce095aef", "0x14712d01c897590d2eeaab6e98e18e5ac1958692a04c1b5124ee06ae8628cfa2", "0x268e361752c72a4ad949b2ad1ef9e6f2e806375946b8b9e6336038d4f849c2cd", "0x11de1fb7c05eb638a4abdb4b4382618529b99978acc73f4e8563c2831cde12b9", "0x0d2a72343a90dbb53290239581b2ff31206a02b9cd98bac6667fd247ad909544", "0x0fc693f9f8f5cb6a1b8be6689dbc03f5031f5df4a30782d8091f738dc7e1e9df", "0x0e41e2a997fa4d0f8b752ecc0dc63b3a121be81ea0e242154dfe67ec049f5704", "0x087b2ca8d78931f6fde0837ce4fa58944596f3c9cf2adab8eae30b44944e1788", "0x125d93accf769d4d3514b21d4c663b1539e227e9cbc45964420361d8d220215d", "0x1f91ac718648cd1fdaf2bf6f11aeeff7bd8206cee5769d8817bb970339e88eb9", "0x29914ab6cec465fd92f8f2c869e1ce9d4dbb3f883b29685063f339588112659c", "0x02da4a10486ef6d0effeb26f869bef99f6d50d8feaa1ea1c8bde95989429e5d5", "0x082557d3f50fa517de2710e0498a683930db5b9fb269e8ab6a42771d5ae7dc33", "0x1d20832e960f550d7061872f6cd96796f9cf61faf4f807df0c3734a5e839232c", "0x1b57a822d34e4ad06cec4e19dff3246bf846bc3408036dab02bc2b12ca38e044", "0x0bc798c8dcf79ca9a7c76cb0e8bb7c2366719fe74092e61e6f40e8c4087fc0b5", "0x1a975b179649b114e3c4559a1b14125e35e3630bf1f8383faf9af282c936700c", "0x0caae9f4b66b45e4732e97851913a594540730f26529801539c4d44896075fd4", "0x08e3da8124c621e070e8a41f0ff1f1cf75e2211087955392d85a1723bd2dc41f", "0x260e3155148f892b7f96b2d74e6c79b9e2c1a3cd9cd0784ae507875e4a267881", "0x2e3ed8d27ee71bb41e5bc98fb466dd4ff9d0f8a668861b773af825d260ae3943", "0x21d0fb7ce364e0ac781b1e11d89abfea006392cabd20f0740d156be1e45e7eec", "0x0301a1aacc4f86684e3ed7a0eb023b92cc75af6f8214910f840c627c3da3cd71", "0x11ee53beb1e8ee4ec10689f4fe40ebd93cd1c9fe06d812e96a583368435ec2b6", "0x01d42d2dd9d2372530c30f4d6122732d1cef8dea9e2ebfb3b2679e9f0dcd04c9", "0x0861e448b92ffe738e18ae67a143876d55a58c162f74d8e556714d1f7e628792", "0x193793bfe5c7b90c6d61475e89cf0d41447128f280d8c6c5dd4be1fc9072ef2b", "0x0126b05ee124c85aa2b1c1273c21c3cefe7ded39b305c5e039a35f9024cc1256", "0x0569dcc226c2e215ae697b8c6001011cbae7ce535f45a803dc60fde9da50c83a", "0x0fe6172dd5afe8ff0e7e33f6499916fd4c5ff2fab969637ae32d8e4cfd3fefd4", "0x074ff2c5f008060e89d30965591260679cd3f0f5aed33162ac9ac99da10bab53", "0x086e65444d5366d82133d8cad0a61c20066b89be1c870dcabfe453648d2b6b06", "0x0b9bcbd52b7b899a651a02c326e064ac6a97be7457bbce896e465d73e93afb9a", "0x0269e035c429c4bdaedc393d2a87978a1c2f8ca0b25b085ea44ce5878ec506bb", "0x09e1b7724583b0e16a79ba7670636f87ea134a19e20dc3ec70c01c7b94664dad", "0x264ca5651ae7b84f43d8841cfb296bcb5f19fa5a06a2c4d2184b54c3d6370936", "0x24e4ad8c2f38fffdfb503a4dd50575c5a12426a5346359e3a5654af0188f0aa2", "0x0adfcacef6ab262f8fc9d2f614c0fe4a3273c82a9e7335e5e0e0800d81e87875", "0x187addb97c4a6437145866cf270df4a57ba705970fe1e0619a0f016933065d2c", "0x0710702df841d4ef5e0cadab7197a9ef19d7524808bba56df845a2e8f141bcaa", "0x2e0664aabc74b5c54d9d047bf5470e45ebc784026159273f1d2f5e4759c00651", "0x271cb7aae9142ad71842a770cc65df19d7d102d9235454d7c600a735a1fa4da7", "0x2ff475f9d52241c2261b9f520d2322f52268d289a028e974742d409fd8bb3b06", "0x2d3bb2cf8530e698b771ede66578a0149e561b366d502a6e79c23b33c500c2a4", "0x05c80b5a16b6a59e1e36303a59ba782cd71407f83273f37c19ea54a961e0cad9", "0x17077cca69eed28f21eeaf0f0048692cd310e6ba87b65b7594de5902a829d7af", "0x2edbe4d8286962d91cf1a93175f925b174cf53d855928f2f10cf46e7baf1f994", "0x2f95757a62d1a5289c6a087e5c829e54d5bc2e03082ad8621641d82f5758259a", "0x0c2ca1a4f1682da3f56490d1f154194ebe40ab4419951cbcd508c86005cccfac", "0x151b559773edbfd4a49a453c1732212955dc9d5ff614e80e75ac63d065dd0ccc", "0x3043ae0869eb8d13b810178b96eb37caa27a8470777bddab85002384b6e1aa11", "0x01a843dff9621487d353b70ce04d9ded438f76c5013f4780798063a4df6db7b1", "0x0eef8241527784cbff33f551f6e2e53d16b744589f50508cdaa0842e05eca01d", "0x1ae85b4527017d45d805a25b139e3f424d3745841cecada4658d97b38cefc4c3", "0x0ed437f0f11932bf16b0cd77f4983af1511e57078427feed328780828b8d842c", "0x17de9a117161bae7f824314ddb7a49d59e2443cd620e0e7af082e7246a725e9c", "0x12858cea51eeec2e4fba5072a9049318de40ea9a4179fa74c7bfc1e15706801f", "0x08cf404091f4ee5fdc068ff51a27e79a18f8ae93adda23b412de37eed164fbd5", "0x07638f755834b05e6dbaf1b992ababe1b575897e776ead3471a4fe68d9e70f7a", "0x246105558f45479e8cd5497d9240a6dd98d96e8111ed4e6fe8ae481cc221394b", "0x2994e4de23f47371c68cd1f602e71295a36a365b970704c70b22f8a816850b5f", "0x22c8d3bfbdf3637a9631e9d1b08506d60fee6945b0038eba8f2da85f10fef0c7", "0x281c2faf2a2c449bb40a4bc4738ea64efec118d34bdfb38652fc86e55297a33e", "0x18c045cddaab43389344b4efe95254dce7d25f7d392b05256c2b949e47caa3fd", "0x00f89a7f1ac9fb37b2753c758ad0265c94effe7e7838c5f03696fbe1ea19cd62", "0x17aaaa6bc71b2d1aa0d884b00934f1283c599011e96efd46d4d602d95d869f8a", "0x2913457175241255d94f002ec50a51838616f2758d69723a91bf0adc46fad0eb", "0x12eba34c52c9376522f8008a66608ab4f08401aab85d16364791fdf91ba661fc", "0x135e9379693f4edbe9fc86844938a52518e89db9fe13e457591328728f15dc08", "0x2f6bb4e91820b1e1367f83134ed632830307065adf75aeee1666d3a59beaa76a", "0x13543a98e58b1b6df98247f452e000fe071ab3fcdb0b3e6b1a919ae352352818", "0x2fd81f7d844b99ac61e8f093dc65fe0cf45dc2a5cdebe96f00b0f43bd0b7d9ce", "0x2d5552222ced4e20cc80371a0210411e95180cc4b310eb66209c2a46681a7f07", "0x23c153388be12196bc1c97d88d9a18dedae099bcb0f1ffa576985379022a1b21", "0x07f0d269eb34dd69addd5def5902b9a7a96dcd173bfe460828ed398efb3a3afa", "0x0d511691b6ef7b32d6b64bb70e219826d105c0e3dfb905a8b88164b8e33f2ddc", "0x287dc3609774096d2b9d98c6f2530946900d9dcd05f003de1d2f8b3cb8e7d1ae", "0x11531b14ddb49b066f1129808f043e3c9d3f32089e3aebcfe29ce49d93d0d759", "0x270c07fb85871f3017c468b3f4701c42c562bb79a2cb74a1b63f857090933181", "0x091cfd790d49049722d482129211f0aec3a10af3d1cbaff1acc674f598cfbd2a", "0x2e1f9b5465ea5e84c8cb259ba5cef63c7f78b04477beaf3b612774add6325cba", "0x064d5ae70d4b8574ff3077e835fee488017cc317ca8af262163fcf9f134868d8", "0x18dd9456a767449c657c3d5663eea71e54e5eb5b381d4e0158c71ca0e3a8fb29", "0x0150f8b58e0635bca8e54452f3e31ff5979c2122e2ed6315c75e2e1efbf4d953", "0x19c1f822135fbb5932baeb862261d37f58613c1ac6ecc6d1a985a546a52e6142", "0x2ceb2ab2576b2b66de64c9a8c564869f79100a783d4aea41e74f436547cfd630", "0x289ef304a10023e4f2d4e47caf25766079103e5b7059fadcc41a475937ea47b7", "0x106455ac17ff5b1625135663f28627d919ebae910c697c940e967e917b66e3a9", "0x27e194161a1d0de454c9f47a47d86289a1324f3069e346a0a14a291ed1f50f78", "0x03ea3ace131a580c737ead77275aaab1fbbf35f957ba5ffa40e3190117ffbf19", "0x108e136f6c0a7016aa3c91140178668f8be92aea8bf22a58a60401bf037f38a6", "0x1384b56f69cae939300958285cead5cfeb1971f42bb735852d21f3f3ff2e6bd6", "0x17afc5bcc3ae14f0ddaaa0ad7f068785c2a88672ae2669ca68d553f4b5611da7", "0x2af2b4d6e48590cb6ab37260cd0628c305e9571a104aafc5a30086ed36eb739e", "0x04965fc8bb9707daaed207994c88d236a33cc0999c7e116512fc36c3f3c48516", "0x1aa274f939ae925bdac809179e60547ba9176d0cc4d3b66ec61ea59146278704", "0x02cbcff5d0b52769ee0fecfcef4cdd995e66417094e84c9479856780fb1d940e", "0x2513f2ad59b991b9015b8748901a37026d2e511ecaf12a716643810327bc2349", "0x23fe312e7bb6a30fed6cd00fa0d98a215e903b45603eec14ff921352d6944da6", "0x0ce352c15bb81b39fe0e7263846b9c0bad0f9adb2935c112a4ca4f58c10b4606", "0x1784a8e161be8cc852574a40c64862adf5ad640468f451ba11de3fdac35ecadd", "0x148af66b8d3a06d4da4bfd09121cab2045cfa1a96e89ee1e23dc61445366f1cc", "0x0d28295b17753024395c50f80bec66890afbc458866858474f5765cfbe75af54", "0x09bc568aadf25c9a88404da27c73732817b6aa6c9bfbd4ce851e89aefd1499de", "0x0b0ff5b9694dee9cec669862d49825b8934f73deae404c9e5a601652af8fd4f4", "0x0e7fcee5bc529956fb4d31e98da1376276cae79503906dd5b3f987bf423ec0d6", "0x057903969900117c287b29cac4b315297d137b29ef2883e39f17edc318529a4a", "0x1dcd75635c831cf3cf5beaedd5450ed63ffb17dc35db44ebfa02078fc55c36df", "0x0f235e7fc34780e8005c242cc8428764be6e488c8eb8604bdbbd7e0644361701", "0x01d84ffec4654dde04de9b0a09385d509cc2b2021624a59d274fd0e063b3899d", "0x0802cf3684ec2646c535c018305bc1377b437590aad654951519c539c30d54de"], + ["0x148d9e4542066b125da6d69ff3fb676ebd27e6a38a1ff4281bd639c97af6ffd5", "0x0b60a28805324295fcaf51bb88d9692372cbf4eef1cba8b85cbc059346691a88", "0x2d38f812ad1d7ac79c32fdd57a56edb861885f20fa4bc6d0d942c2f41e8e4a7d", "0x25738acd1163580033367fd8f1ee199d7eb3c37891e06bc20e6b476a0357588b", "0x247f6967fca42689ae8e20b5a7a198d63086549b78c1620a51f5d36824ccf43d", "0x2e22813077a668b2b75249b8d515a3dcd93502006694245bb087ff0732708b93", "0x1523ea89be61be47e1c36b0e024068c28c48da74bf7069ab2d77389c83d474f4", "0x146695ce138230e087b53ef1bf81601f2591dd344a7cb509f138939369e0d1c3", "0x12d05d9571fa4b4171886d9c2cd44c7d7fc5a4125195e7d28c3c47cb5cb5b7c5", "0x242721147084d4613543788977111f3fde6c89326a556e35bccd2a2e73cac68b", "0x0fd921ba8395a5dde833e6dba4173385007b38d1af5e3841a345c9a480c9d292", "0x0f0bbdc7a39e5146929f2e1ca9fb4a63550cea8f12109c1d82e601975d581f5d", "0x000d65008588b2ee1a4dee0313b6d4396952d901385f2e1afe6a0a0def765dc2", "0x0aea567be31e1c42ce33f589d903363a482f21c1c3d8fe50fa6df018a2dc7c25", "0x02fa334757b03dec6be1df758ebe0353317b35316ecfc72934d069f182346bbd", "0x0017322782b3733e379c8909ae7da94655c46dd2b6b061b9253d787a1eaa9b8f", "0x156816f48e3ef988ffe04cc77ac4c89af8fef8482604e7f93b75c1fb1164d60e", "0x2c8ff977a27352b5d7d9ec103fc8f0c727b84a778f41adf777c38e01800afdac", "0x2cc225cb5ee4ba2b7053f98af7b3b488569016ecf6f4943d64ba843092c59229", "0x0d34d7a8b8f49abfa48c73b10f293aca19e09743a8345e9e1af9f2d63fead969", "0x2a0355ab04bedea61feae083561067edf1476b20725cf5e032db806d33edc204", "0x2dcaeb4653a0ccad1c0872f76b103bf4fa38f6d63119e1437c798203d29768c5", "0x22d2e63907fc0b6564850122c8e924a972de827d7491e92dd84397b2ebca7770", "0x1593a5b503df48305ffc360c4f49ceb02536c73d76b4f2f774f9da3d5b8dce03", "0x22d45f1203cc11e52b9155749a7c0a0a821da4b063cddc820580280e21026ebe", "0x28f01a0adb5f8f85236e1a129ffafb2cdf86aeb4056eb5ff5a06951d64c3d4b2", "0x1ba602ae9d3c4cbfadd0ae2ccf8fcce759f83cff29bf12b53d6050a7585e6aaa", "0x27bca061d815778ed8719c5f4f54063213c5005a46ed7aed0c979d2ad1557c33", "0x25593be458b75a5369a4bd6a86b70ae79876e95ab93705d244101d5df3e45700", "0x15608030e8bb2a8cec5f6e69489064cd21f9b3617034c9751c53056cc113c04b", "0x14ab657ef52773269b4002b7a2cc6d01ea66ec8eb51a97e0bde8ef9f593eaac1", "0x1af18589ae90058d0db1569f4d4ecf74154386cbb6fe90564311b4340b1a11da", "0x1f60106f88fadb4d8f97ce9ecc24d0910a4575c5a710002504b48faa28fb91cc", "0x0066027b365d51255f99caab82d5009ae066db65ba103962f7c65f2f2daea562", "0x181301fa387e521e8951a3bf77c5942c5bbc4a8fcc6c395c34b4f491a9068ab3", "0x2dc04cb3a80a5239a13299eea70ba026593f40ccf49cb8ebd73da29a76413e3b", "0x2ba55e1d5cc09043027597e4fc546a18922baf85d6ab0ec6eff1cf13922b5592", "0x2d5b0f0163ae47693ce731568cd67c54b82f249f2a429e585f65400f0c7adde4", "0x0374ac4769fa6fd0b8166fd62a112357902308a127645453d72f5249ca5c9368", "0x0e767d617dbbe410968708f585dba04e995a8347ef23ea101fea088508403aac", "0x1fb38ef3ce50f158451e37bf5480ba70a91f8fcee93274ab021dfed70f2e2822", "0x14e239aa73b943e39c9b48abb205ccaa4ff59d68f9d325b717791666177db65b", "0x2712d94019540f5f0d61c11c2c16d3dfab0257385896be59c31ff97a37c6555b", "0x0e6f524392452ebad40973a980e08f69abdeb214e5eb7830f7284c1d13e36036", "0x29470b692ab4a550523b448684e197e6be9bc885b9d3110c281575c1bbc67ca2", "0x23910827d0d4a41ee8b13a711ae19b5ac604401a221417172c3018a49de959fb", "0x0bf5862f89a9d3687f2fb246980570d96ed258e8414aca7e0c9df7cee833dd85", "0x00270d4863fd01f27b0558468bca95648bc8db3ca55aaa5feb27c286aeadb27b", "0x2dfabec7671e1e932b07f164ab49e69e63f173513f2d4a015ce8de3e168c1bc8", "0x0bab26acbc48f8648d736366adaa29fde492480002f5020c6220fb187dae8891", "0x2bcdf080431544a4ed25c9db868837a2d17876fd7b3001bfcc22bcb686483bb1", "0x2064a7ebb7e6ade9cbcc596200eec97ca5e2f9beb2a26acc673b93a218f16ac7", "0x0451e58617ec882799b2b33aad34bcaab6a871538c20782009b5da2a377b91aa", "0x2582f9576b56b22907c4bbfa7e4155b4e28ae03876964cd40adb0e255b6c1a14", "0x1af73515b661bd03915b5c3b5d8cec060b490d742c4f48d43ed907ac65ea6c89", "0x0eeb619b01645cb31f1f5145d2d1aca045e69f9a89742cf85faa65a8f30781c4", "0x1b4ee6b9a81fbf0c201d0898a6948a0995ebcd080e0cea83ada3d8ed6182ab17", "0x05abe05399288af84efeb848ec61d53dd0f07439982e04e3a5a304166ac1730d", "0x2cc02c9ccd63f23dce9ec2b3587322da4a4cebf9cc9246c700db6612aa769674", "0x0da64f9355bcc3ccf87a9696b344e5683cad3f876a5b9e5f715a0d70a973001f", "0x2d0b3f3a901f88ad88c2012c2b32f4eb9f02bbdaedf4cd1e37b84f4016feab7b", "0x1d566523ed67e71b5ff0cc5cd17a325d3092bd66a52773a537896e3c6df86c76", "0x037d35446e19eed662a2b628126b2850f7daa087974e21fad3d339d7e2dcc33e", "0x22b59547c33c37e6c300a3556f87dbba667bda84e1b8ef87430a522a576de9f0", "0x196f8d6f851f5bbcea6a1614656b38a30e5bcbff261cef19f6e34066acbdb74b", "0x0576d6d6dc692d9ed7232005e63f954d2da11c77e6e919b2b9dcebaeda11b507", "0x09dcfd5fff0be2df5a5265856c22ac231cedd81a1312304f5896f0909cc3e6a5", "0x26f792286cdde888e454c1ddf03592d6d62f4be4843823526509829fcb496163", "0x299921dbb6a9201f8aca7e69d8190238d5e4a82dda743aed85ca235cab80c163", "0x2863a223856bdd42e35069d206a5088d217b5ffba6fba0939ca22858cd770dea", "0x0ffa5609d1b9aa848721d2e1e2ad6da05d43a241e8e0a7f59508ffa9b1ede432", "0x11d925274d8fae7d518dfecea58a9a57d88642062969e67e457e962e3ed4a144", "0x21c219204226bc43f0db2448349213a9e563e94d3fff28b2e692688d0f5b2b12", "0x2c04ae9f250ba0194bf59eca9404e3af6dcd64dd38e370a038f3fd1e397f5104", "0x223cca831dc760db7b954d41810614ba6e2c62be31e94884d4c7e5ffa67da5c6", "0x244b3894104e51a151a671ca11fcb342d1ac225f43abee839469743457133d81", "0x24f71d5a0ac04a387b758c69782449df7b9ccedb6163a7eedb21ef401452f450", "0x2efb360d9ca0e15f52aa4033f4c423e0fa5c175cdd05e4aebcc278a7b8296b97", "0x29ffd7ef3d018c95e8039c2e990e4cfe66ff093810ad4508c30e28e8bb970620", "0x267ff75a53212383ecccac4e8a3bf2fc9e982baf37ec44478601cfaa6f417233", "0x2fbfc4b2ce6c2b08cbb3e3749fb22ff3d68d3bb7d335ce0e42ec6dc27090c385", "0x262f93de20005c4de2f4a5d8d055c8d5f568991b0a862047e5ad94c8868ba3ca", "0x0f080be27a791fcd1755754f931d9b87f5ad8c1963a02aa7cafdd1e8d31b94e3", "0x21a735213a8c784976e65ca3bec4acc4224527493cd1626d2346133ab8875ff0", "0x160a92fb6a607d5ee7949fcd5537c8431c449d79aa51bb955845d2cbe684bbfc", "0x0079159f6364543eb643f0424461f00135739813840ac74de81df7c9e10c8f72", "0x2286247c58eaa4509baaf85b947e699501d3b5f901acc8475a7d9d7941606cd5", "0x1110425198ba06c42efbdb6e95840d01c00b5d08850f0cd46435cdba1bdccea6", "0x0ec5a15571950cec3c3193aca015791604b7dae185d7b9d8992e020185ffd909", "0x220f98335597493c2e7f4fe3bdc0cd229d0c81b2d0b6f9e565ccf65eba2877e3", "0x1c2fa2d176f4d7070fe45cfe6a8d4bbd0ce685aa196e4ba2372a5195e7ab644a", "0x298c1fe3f63531aa98b6aad02e438a8f278bcad4ed97f3c82a091faea910e50b", "0x2e814b2f088d90012bee74ceef10c7013033af128356dda488e3feab3bf25253", "0x212609944ec047925f31c13d7ca9fd43a4e54a33fb09a6ec9463cb63d2570e69", "0x157bbb9d0546f86e4a8b5e450036ab0a84d6109d5506c85f239267f4ba584b56", "0x138efcdb344b5b40faa9c0a415664bffd77240b5a9cba56b499da2e3cea6b3dc", "0x0ca50e08d27bea508f20273021f6e839cf124a54361def3c9b2a64595e58fe4f", "0x0d34d2d5975a2da9f0dd72e846d797ab312022399e1fe70980f983f1587ef7c4", "0x00dd1be4f3fb034d4669a81922fa014c3c1c5c575f39bd809877db2b9fff9744", "0x25540fcc162307e3906abae7ba258e4fa84ff4dd4ff19742a0969d08018b21bf", "0x24f57936979ae2a3b9752d37c017574493524a254a5bbc10213b7fa6b15ad35b", "0x02d9bd62647a45334db73631da9d97a27e8c627e911b83f1962dc3417dc6ce29", "0x1499c2994ad838770ee3a9af64362a10de6c4c5f32d5ab5bbae55ca0b29fbfba", "0x15a6459a08eed36bd3e23157dd59512bbc84847e37e8a4e3f7d7fdbc7be20970", "0x148d65a6a75fbefb33965be2df0989fe031f47478922d2546f1ee126de7f35fc", "0x16d2f4865c76d38379fb5ad2efb21e777e01744b4e209c095d332e41edb45748", "0x0c86c69e94a003cc454e2990a7ad8167c3bbd4732e646f9f91e961114bc65c37", "0x00b12227a310f8622c9acfe2bb3228aa05cee6105c4268c266dd4176ce7f8e21", "0x2daf91d225f915884e6cfdab42acb62d276341987bc3a2541819ec7774d90e8d", "0x0bc4e8d555614bac1b8cc99bae7f008cb7c82b5cd1a3c481a553caf8ac373f6e", "0x2375f37d0030b894a1a8298dd2dd59e2b7e73667f31b156e86d9b38617500fad", "0x1e8e3c2bd0d4852e261a3c0fa93d83fb9c21d44b49578330dcb9718cbd54b285", "0x1e80ecca29b345ed88be8e53ca042d6c62afd2a4624cbacb3bd07c85839332b4", "0x2e1f5ee70338c50c456f43077216125fef314c6653c9ba72c75da5b53cfeda99", "0x0e9ba31ae136fb0199f9d9e0d8580f5560449f2a8b6a9d0f223ec52c4120431e", "0x24de52f156b2208d81bf109c790f409baa941ab7978af86fbc0f891a5e904f75", "0x05bdc7205a26bf12700656425ebac48d1150e02fe9b4acb07a41609d7168f04d", "0x027f8106542d99a1f903582ad757076e18afce563367b63d5d0973d80993a3d8", "0x07caf2bc3785db7ad681bb6c05ddf24525c19d1519a981b44045a5f78cba52b6", "0x0230b844661066c234483c7fdf632449922453ffb8ef379757509addd81cd773", "0x1c513a7ff8bdf940ef0d01e76fd4ec19086170e88c64294f737ef20b661982ac", "0x0e0e97979ae864b55f27371e6c6e619ab7b887ce3d861fedd84ae111bea40e0c", "0x062d46adc59134784cdaf0c4dfb6c9d7358f315f0948765c8fcbc97ec3f38eb2", "0x2642cee234081127b28b4edb038497a79a2a313a1b749fd2eb67e37794283645", "0x2400b3982c92f7fc2181889a7087c0dc946db2b2e8d86d3450bc254f6518db37", "0x24da88b4f2c2dc7055f4a55f78322392d808c076f2de6cb6a03881f2354e9106", "0x1a3951cd6925316481484ac39b31b83627a5484c259c818ee23a2700c6ceac9f", "0x2ceca27fb996cdba6d6ee1e105fa5df8ba6b67b865931c017515fb42908de010", "0x16081d04bd65bc19e41adef6fd8da7814d2bb0cfdfb2ecce5df82a8bea879e6e", "0x04eed4b89c0ede1bd58851a931e4de791e4c69cf2b1116f8a36b2bc559000e46", "0x1d60021b4137b2077b31173787004201f20b0701411c48ab9e14418fe26ef4bb", "0x1636c29d85687fec3aa4125bb66e5d5f1556557a4860c1df85127790f09a61a1", "0x25c716e5ea5ce2c6a2b671a863d5acb3b2dd4963879f4c163da6a06fb265cc42", "0x1dece00284bc698ea2af97de3d426cf90110bb49be71a393c1ce70ea971db460", "0x292a18569aed3c28685001d40cb42dd8153fa99001cbd52729ca6f8e2c466eee", "0x26edaa0ab7f7eeac8776bff120b4483ce9a6bce85d099931ec9322ba1fbf3881", "0x05d23fd0743e0e37089588392c6df0b04d5aef2e5268ab19c2e9e9b3a3af4921", "0x300bbec302c9b8b7e4baa06990571fef5dad26af618d0779b69977a244c589f5", "0x269f2d9ce098eee89e694d53d3b2d9861490cf184ea09baf640f00a39ac72a3d", "0x1122a37fa0c37863431182bb8277bd0e849b2178a816d31c7604fc5219d1aa62", "0x14e2dbbeb30a3a577a0b2299ce9af0539d08eae0748a721880aacaafe1864538", "0x2f926c6773a8c411b87dc5198c309903d9f492af6f0a43a5af2028e549f6c801", "0x1169f110cff49700bb5fee9e524a49e35889c4689e384b927984e9957c587fe3", "0x003fec863f40327b066e68054c87d20cefa1eb13140520d43a679b9e4a147a61", "0x2e87640ceb4012a9ada31482c79a08f64bab2e2c010cb036bbac1e4a87c801bd", "0x03e07a8e8e86a863b1471947bd2e9629149b55502a6acdabf609edafa0bc9d98", "0x23397da20fe1dd05ff21ca3d213fc0ce7ce46c469537c1a2aaf52294d2fd6dae", "0x179733a75ce11afe8a4842f8509e49301f7428d63ca83973b8d8156fd82ab69a", "0x10c1e8a0ee811326b883ca8e10f3adb124428ffcc5c7dc79e83c7907b2a1eae9", "0x24df93681b43879a4bb61b5c6280f4d5e1360287945b978e59b183f0233387ab", "0x22140f342fecef8e27e3458443baa7dfcba7ac35cbd4a1a09ad87c7f63d7bb5c", "0x08baf85894900ec08322259d5175b370fd4ad33d5f599d609c95e2d15c26fbde", "0x24de9488081b84914effbe7d56004598675363e34b41fe0e9b78107930312e17", "0x1f25291093856f64a271dbd8614931b97c31f8ec8da7121b0bb82caa71f453c7", "0x11eabe4c7efe3aec592a5cec6b3f6dd1095f9d384ea0ce040262eac0f053c919", "0x0b77db0420ec1e32b9ba0e9904a28921f236ded48f3f49aa2d761a631c25038b", "0x1689e35a0fde7b1d3a6e6d149380ffc6b7d9772807a553ab7c5073eb2e3ede1a", "0x162236b343c2c2f7f48b36f3e7a7ec97c07cccf22e3254dccc4b3a30f33c69b3", "0x248c951c9505d2cf2136f6b24c2b749c7751a01ab1cd83934be12fcbb8d05c86", "0x09487042f01494c2af046b94105b70b1b8e5ed1ac5f158408309a66a77a6abab", "0x0a9a97076c5d53411c3e8fff6bb537029080b671324819fb8af33d96d432ace7", "0x0c43d5fc0020292fd2ecd06842cfa8373eb9bef8a9d984348b43fa9614b32e23", "0x146d10ae53aaaf595cb8e8eb29ade3e56c92da9b55a3bc24becf2a2f5fab0393", "0x1bacba42d80c66b3b062cb5dda6a6230492d8685862447c638cc9b4ec374337c", "0x16ec168db0372a9144f511c5e860b07113a671b323952a86e8fd40722c7fc879", "0x0113e5457aaddfe1a393d7625ad05bec40e9d44a7e185ea3af2b58ae695ab77b", "0x18ba814a2a7fdd1206db6a30f7b98f3c45cab593362befdcb0d2a896ac78a7f7", "0x106843bbc36e4064856eb6688d8f3a90a43ffa7f73bfe63072169bf520248328", "0x00ce790f54ac2d34a26ca17cdd642a31b1d4005c09752c6bc5b433064cee6322", "0x2b4e47ca6f897e337d6d52c1ff33a52487c689bab5fd35620d83c567b57a600a", "0x27219b83ad2459b2df9f73df5cd1d2f8be66512d95c4f3d81ba876740519db2d", "0x22cc096806612553e5047eb6e0ec8d01759b9df23c96f53b6fbcaa8a3616ba8f", "0x273e0a2a56e4243f2133bd90e54692647184a8805fdd2ceb541a220253a78b2f", "0x0d449aeb41e8cc9b2f32856f89dbf1409d5605fc557c43c7cf573571d5aeea14", "0x1b07cfc60e61c162dc9f12de253b7f952a9246bd2c7c445ca35b8572e5d719a2", "0x0e4eeb512c3cac847535897aed4fb9ed34bffd87c012a117f2a3daa810dfb1e6", "0x27021e720da0286b61c23b748cc7c358fb6882d8100787fbce685f06e11046cc", "0x2eac1fa2d1212624bc5e0090e25ac0e0160f2d7390c790a2de7740775830e542", "0x0cc0645876817f8152ccd9010a6f262a516af0ca289330a340db6474ae66d261", "0x2ccf92d23a6abeee6e7924bf0d4a9e7040b715e662179a182fd11bb26fff58c4", "0x1b769ddc3111a9d38df31f4809f314d749b8be9fa642d2aaa36961dcde0be23c", "0x2dc09a5638b6194c6d6cb79c56ef205b0be1e7c83fcaef98b1cd1365295c7d2d", "0x07efca9ad6268754a03efb676e593a8c75a3ab84ad9046850654a5488312fd4e", "0x1bb73b4e345b0741548da2aa698783a8c87e923ab1b1008e72d737fbe7f6d9f2", "0x0635173b7551fd4fe8306abd764a169bcce6f3719dd606cd0bc1f2b117fc36fe", "0x189dd3b20d3f8f53f0f5a2ad97f300f99ebb84090a438f7738f2a126ea8a450a", "0x265e8dd1fa619461952ccd1d3a96f2aa94906d9df07365c28dd3e93a244f6eea", "0x143a058fe3987aaf1ca1bf2c376b4979310ef54c29a3e668c124e5af437902c2", "0x186ec8f1c3ba70ad834c11cea7962750d76c7be8691e679bd195a65dfe698ec0", "0x2818eb031998c554c9570842180458d149316f14e29fe162600507b1e50952af", "0x08cf9b17dd2cabc22de68072b0f3bbde4beac5cb58b575219c70f93fe1ec5de5", "0x0a298a9f044a1590bfb4a6835027c9481a406c765ed5c841878a5c14b1c4f4ed", "0x2f4050e4b3b15017c6c19d417790e22fa6d29269d33b54d801c4af98cf662ce9", "0x1f1e5035f72cba3a0226a0447fcd28c6bb211da5fde9229458c8f7d3974a06a9", "0x25763fbc942135da85faf354f47b3ae9fc27606ad701bfe7de3ee704d8160f9d", "0x0eb6142bda2a5f26b49f6dedabdcb7a97f20931fc14256aa85e6a3b0599c8383", "0x1f8e3d89b5c97325a7063c703014144af195ec37cb8b09d544786eb6721e8ef4", "0x1a027583e2da7adffb3534095700dc6f7d6ff2a7a19b06d7d69d7eb63da4158c", "0x2823d3822190171f5924b4ffe5383050cb301fbacd745c2e074f89152a53470c", "0x17fce7a205f42f17c80a146aa3528e74a3cfc444a1289cf535407fef6cfa1e8d", "0x211b7a11f1d36c9c10a9b3e78ee5329ae87e7effbcce5968260b64ca4dcd06ed", "0x1861368bb98ea3229075f4ac8ceac511120ec3fce84eae632b03138a44b4bd5f", "0x111b4df9aad81b42dad504cf07cd2956cc4848e7ede8ce10075538f78cb7f758", "0x12df6e0847db8d01b389639603c878d91a19f446117f9a4aefca9038cc9d147d", "0x2d5e474114c7c6020bd7adb6e15337c4e72f6ef15324106e7585ca3f8c116c4f", "0x226e655808a4062f8bb47c131ce125bacfe68e7840f4ba6476841041c2808981", "0x1f01a9d98aad3d9a65a5373ed6d2b672030dc1ca9b46149bbf9f084a7d24f4e4", "0x2f3578cba83aac8a83f34aaf5c651b0571199e3a4de39ec0579e5ee33993fe03", "0x18391d423c454019402cf0ec7b36cc133247eb98b9bb439c9c189beaebfdd5ac", "0x26fcf6ca811edf267bd800e0b00f6b49e60e5a13ca944810a36632595d788181", "0x140f9b585984d931fe856bdf451805fca64adfe34d55ba4f4140480bd7a97acf", "0x11e878e17f1f867ade93e914e58024464385abf6403fd4a622e41fb1dc22e3dc", "0x1f997c6de664e9ceb042c55bd22c9232b858e40ff4efeb4082c76fbd62ddd8e2", "0x2773284b6eb1c47f14de71f232989ca9bd6a70aae1867ee095299f6419cee52a", "0x1066b87300af439cab83660521ee9d03b06a17c9a00b5b7a8d56bfc401fa5bdd", "0x2f1309644679307e98d620766a2861cee589e6d55dd970c8c43de7ad84d7d110", "0x2f1043b7f9e4b6ec39aa0764007e50320617d97a87be9dfb8f00b4cc27c5baeb", "0x1b3ac550bfdc6fcf4ef9839b66b3223badb9ecc76ae39fe95c9a47c2a1102cab", "0x070be30e43784dcf7d99e4334102a69c40c7981eeed360d5b9968e7cf19cfeb1", "0x0e5529c5fd64e3920f611507fae99f8c877e9257fc367bf54dd073f091a3c651", "0x11d88f7b5649a4b0e1f788c89ef190ed917dbe39ca64cc58cde8633aa479b95e", "0x2f6cbff18a86d8b40f8973b1ce30bddacd2f248a1f47f1f66d3201fd46d93d17", "0x176823962788cb748e12ed59426bad8ee881381024993d5703c2c1079c0b7856", "0x077c3ac1150cda4394aae4e3951f8d0aebdb6fe9e8b336d899ed763745875ad7", "0x2355c7225b6025168045ab1f9cf7d6754e83365563e45a211aa997d1b85e8f33", "0x186f0b6b6d6040a7e140bf72b74a71b23c6ddc1e8496e2f733757ae000e90027", "0x14740840516b80d234f76a02dc3127f9a5ffab1b3f2346aa9c9b910058435ed2", "0x2203433be06680bf2ef05084f45cafb6d8e94158c6598ab1634f3ba66dd16e4a", "0x217d3e984355aa1f6df652f101bbdc281c69b7c75164a13fd29776b80b2a9314", "0x1777f06ba3ebc47efa43959fa089bbe8bace64f9a4406937600c273dbe21e4d1", "0x1fd8a54df4e6ed46ab5d2997b9fab040e8b4870f5754364850c508a9e573e767", "0x11d54b8c949efcb99816328db7aeee0a412c7d074a986a0603eaaf5acfe32a1d", "0x2cc41e52d8f986ee77c59b1de2690ae4e478eff25d4f103b15cc05ca7ab7446d", "0x047c5febf774c62215aa7e6cc3439898f576041f19ab3c8500b07d5c19a76fa2", "0x2e9870ed58dfa57d100819116368bbfba81c69a4903a85179cf7a4c2a8f31445", "0x1fadd3bd3a5c6158a4ff3f0aea374f9635f5211730c79b39d039f9ce17ac8945", "0x2a5c810d6c43ab2d29ff1c5aa46e4d982c1b6527b6a2e83ec55cd0cc4d45d1c8", "0x11fafe98343013c2fd3b4364e1e5922db5be5c0f7afdd7b8645d07b4c91d410d", "0x1d1a82a8b25d503eb4ae65d6bf5113049342c0c10e2f3cb8da9536c95b1211cb", "0x12ff18aee2ba37f448e89dcb5071355637d5d15545cf9cf8e60baaf2cb832793", "0x11737e654c3374ae5f4eb5c74f203d1da2aa812bb60b0c5cacb5f01c0b0f63e5", "0x1af3faf8b2da944010c5e3b35355ab593d59faae404165a07ce92ee11356d2b1", "0x05ca179ad0da359d92252ff3324e884af25b0edf9bd1700e012f45b683bc2df0", "0x1d6a598851b1ecbb9d3ac470d95ecbd588a3b32303a4cd8a7680ef5df2b95f5d", "0x0161720dcea14aad7e0710a67151921bb9d5c40bac136674f862c1c43899d954", "0x23385cd49db575f73550759f679df48cbd1ed1d69932700179df6fd61870e497", "0x1339217149da74d50b25a43cc8027420e272fc136725702f81da8835d0b9f410", "0x2651659ad69b37a47aec09be71481bce3cab23dc04c316118d407005501b0c0a", "0x02873755e5d79969854cccaa36cd8466aaa2e0594e3ba37b8f51bb3a6c9b87d0", "0x0bf86eca4c048d59ff3ffd610c81a7f99875ce0ff1e193415fbc2bcc4355418e", "0x127237aa090a414f2676bc5b26776a420d7da6ef914a89dfb2ea434b6db42c54", "0x0aaf012593fc014cab8879be8b63e24ea829b780fe9cd91b68892705102dae09", "0x2349511bcf3e14b5acbc973e40063d20c1a42fbe9e5dee99964dfd50869d0286", "0x0a13877e82fd54bf79457e703a3c5780eab1970a9b374df6988129c32e2efb81", "0x2f13444c0246613e4a8f06c54b773a553b6ef94af65d3437c04e3f6856ee6e7e", "0x149f9f85afa120aaa5db38e1394f536cc1530ffb639e292afb3136fb051171e4", "0x09af1ec78d4eaa552f14fa6e7ed41842a411c8bd2b49c9721dcd6de80e1649b9", "0x1598306c66b69a223a169259386217b9c543bb63b226c2837c835070fa6ee724", "0x052d00ac603ae26edfd7d8945afee2021a7f8cd3719982f463be765d26be97ca", "0x2d0b5bfcddbe9aeb4286aca9d10f9a783176bf8b9dde55008e232b9e8f45b541", "0x22e76d617bc69278c3976145fbec8a11ded70e6bb9b14739d59d7745fbe80133", "0x10e0725e62e660dc5a675e2da60c8f1ce756c162a10b53cda098bb147dafc138", "0x152e5879db732ef026d2748d6b17c21005a23125ecc01ace4b2ad46744b6918f", "0x2c0564cd2043a507901b5054db2e6eda28c94536013ce66ea5767ae453c09d51", "0x0a61fdb8748245fbbf026fe3cd6a42b873819c83905c42a5d7a01b3ce30a6233", "0x0d86b389e663dafebc5eeb72014ee4ffd205841fbbe43dcb55a0701b42c21e70", "0x2b0ea06ea29b5ebf5946ff05dfa56da1db9f91187ae6789a51283286b7242b5b", "0x2c9d3d65591a9ed07618ddf4f10770596a3fcf25ddf472126c8cb0b3f8975675", "0x05eaea9663cd319d7b6390fd37a5b916d0adcbdea0ef60de5bea3db63e973374", "0x1ceb088dc8e476eee2220df5e89c9943d28f9af36adb2dbad1741f19d064109c", "0x1f88c713fa7f9eae2ba80f2acbee56aac81a2454add66b1e70bee1e533bde95f", "0x05fc10c9b3aba423786210a189a8cbf0639448d239088926ab96346cc543f75d", "0x097f99277a3d8fd2d954de6c2d58e33f65208a53bc36d1383c2d17797b49b520", "0x295508a069661a782227ba2a74c212d4728fb8e8695f1b4826f87408ac4d087a", "0x0760bd5d3082701fd9e7d17d530a457d41a7be55ce6b608ae2363c3c45db4576", "0x0f6c413f51067fb324da04b213fa890fb953332e863df3b06fbfe3d5de732673", "0x1b0a842b23f5f0059a02f26579d95260931b64385be42555370270cb462eb55e", "0x0898e5f4d62bb5913fe5fd2e3b75440887d1156f415aee18cd67fc9d728134e2", "0x10f8852656055f6352276424a54ec899fc6e6d87a4299ed0ccb90011cacb1198", "0x15b12eadb1003ae6382b3d338854a5002c15c03d9bb02842e03fbb75da769cc1", "0x0058d7f1ccddf26fdfa6ee0afd3409ec103b91f4992518300ac2a7bbf82583fa", "0x24acf431e67a9d7f1bed441756b03a777a99fa7280b11def1061cdeb2878bb8b", "0x1a8e72e3b76468c434bba4f191e90170a642ce7ebbd289087d187c305f13a4cf", "0x155a981f161c8c3c756fe204ff2a25ce0f5346957d69fadc6855c6107e02a8d4", "0x1c747b94dba58c3970414851318a6fdf4c86a5f65e4d91e8d4772f567b49a883", "0x259f9119fafcff3c0a98d828daa5d1ac21288c6ebc8e16f4e8a85dfcff442f95", "0x1c5cd1b340400e37a37de09bb20753d4979322e23fdac9c7aff9f8209eea135d", "0x28972ec819ac03e65b0b00c52ebeac03b5ef78281fe543bb3f4e762e7904c6f6", "0x277e2dda293014c5c76662826dd3d76cc7c662d28b2905bbb1ef3a3f5081dcaa", "0x076e05aee9f8c749d1a98b3402f4a2c87be2840659a5182e15ca87f31809c84e", "0x26b2291c31dcdcc2eb55f004c1eab496490d025f12265be835f783a9613adf14", "0x1ecac53aeeb7e2ca436a200daaf1e975be8ac687a8102be23a7f291d9244841f", "0x11766003bdff5ecf352014501776d0a2eee1f7a8898409b21abf35a7092f4610", "0x0becad60e8eab107933f92495ec6e5070b26149eae6bb1005197556225239f94", "0x08cfbc5e1f5efff8fb1736bf118cfdf0fbd81cbe87ea61931dcf0cc70b1c488a", "0x15f63076b20a19f545ea7f9d386c63efae619defd90cfd8347e3e7eeda6b2d6a", "0x0a989c86ca97f9467240d9239a51aeba8c7772a4b68b37f97f4fba26958bbe1a", "0x0b6667027c41530cfc1cf7c6b60bf74fd15a1186ffc0b77f0976d5e1d4501a95", "0x0a87dd205830beedd3f8bf92235ce278e2c8529eb9f1a44530ce1b2626c49c01", "0x24a833d8f5db7cf49e889fe23c518510a895801f7f287538538ba3b0828f8101", "0x2a0116295e2074c23e1bd817842586d115cfa7103dd98245e6d364ca9d5642c5", "0x182724024bd1b487a7a886604e4312f25df11bb2963ea152649cedb6ffcf43d8", "0x2ec4fd171e0927dc9331540e1f6639e1541eb4e0cb74c66cded95ba05e718b8c", "0x2bec29f75e13ae7002213bbd81ba9848501d613894596e9fa35d734ffe9ad50d", "0x0ca8fe863fb236c10ae74ec094a89ff974b5d9cc498546f76c0bf1a510a8f984", "0x157e6adc39e984ff60e904ffd85d4b06c0f7c95d8b224eabb0e1090c080a3204", "0x1337e6b950018ae96f46214425210907e7578aeaa0f62fe3afb9877ee3101782", "0x267f0ac325930461def6afc4f54b6d09e163e84c00a41407938d2d263fd649bb", "0x1c049001366a3521dbfdfce92c324ad021d035767911574fbd4b4e9000ae9a4e", "0x167db26d1f93d91141c48b1a7ecf78ab3f714481594f3eb1dab4a4b78329706f", "0x159fa23e2aa81b787d70facf416079b68de6b8d7c0e234421fc450c2f1917256", "0x29adaf20cf59c0820209a749c61a36b84eb168287f7ac640a37df4a569c3defa", "0x03c390694ba7ab4800b93121bb53a36d654dcea8ff9bda64c95770fa545dad59", "0x091f94292f6b5252572bb419ec455d5435eab1473eebd72d8b20ae3fde0146c2", "0x29d64d0356b6cd07cabc18eb5de28728c246663c60133dd989e89af97f5dc212", "0x304897aa5036b3a80774e409994f5d1e71a7836f577839d3b92d938590888697", "0x125e0dd8f249486f133b8bcb9179c5525929cac3ab09bbaefd97a751bcb87e83", "0x2fef69cb9e21aa57adc0749d32310ebbc3921d75f8b5c79978a5e83d66888e6e", "0x1e3af408be8cfe4bbe03849a711fcad85b4f27977733524f2bd35b7166438687", "0x04e655df6114648220f3a2a056805a636307b809779e9397953dbfd8b9477b54", "0x2a43229e666093be6184e292b4a87d605cd3860037fa2aef07486d4f856dca8c", "0x156f9aec7359e5427d5f97a165cab447d27089dce49f1401e96c37e159490cd1", "0x212458241e29a83d0d11c64fdb0d2c5e7036f441e5394a625f52c1100f8daea5", "0x1dd909f5a32a657a89eaf948a11f8eea874eeccf49632b310314d77ed72c6257", "0x19d8a81f4867c40cd292344df8d2dd64b07fead4054107414a45bb504bbe60e0", "0x1f285a438fc7ca62edbdbfa5f9ae627fd1a6b68d4bbbd7ab867c34db73c628d2", "0x06edd2c97cb8ef5db711360743458dde6d45de0fb41c646a72afe0e02033a9dd", "0x2f3771f984d334c7298973e9b2cfaa1ad5989cf379bc41f78b964073955b978f", "0x2abbc43b9224188495cd9ec8479f39d763b8d560df4e9dea1cd7b1618fcec9be", "0x25178f08389153aa236e1da3c3bba5e408d52ba913c3718128a596fc40755a54", "0x1b28045d36ce94ca72ad5539c54d6a9a872e66fe6206a251a61df5afd50e3e93", "0x11c1664633f12fd93a35d8553fb8e1ebf3ebab73614642da48f742483c0d8148", "0x19307c6980c6adb7fe1d4539c10d6157310af45ceaa4618c0d4a67f71a4a8c31", "0x14fae46d00733e5f7e8ebfb360853311f021e2a252705453cac23dfcd72b72ef", "0x0e3d1455e479d3b99bcb1f8b662a43c885a9911b238e08fc4fa6bd1090369492", "0x0f3e285e855de079c2f3c562b5074d095b57268b0ab1aa07c4f7650254087d7f", "0x24ad5850b4f923abd687dbc4afe75ba26039f7d4b33cc43bb55f600be5fd2ebd", "0x0a22143eb18217e19455e023bd571d1e757ccc89850504f580e433cb40afdda7", "0x0b968c0b278f32e9ee1b4adff37aba3d15d5943a77ac7783353397b72c70d533", "0x276990e5dc0db030b8d88a5828a4b343177dcd554fce8a36692f74ff38f64c68", "0x1f180aceaa766f24b92552242448a01326580a9c2dbe2ae3ffbb530f23ba1717", "0x2dddf4a14757b28de03cfe210be338cfe3b63f8a02d7fb0155ac9c6e3e2b6bd0", "0x1481841108e80996b079e3e977578443ce0ea8899d558dd92c5cf20279795ddc", "0x2a3a6a173401ca83d33b0997eaa2805bf7869cc7deba404f395ee14e06daa3e2", "0x11d7372db5b796363296c6b99040d883ad66f54862b4965f5da0ee0227bbc456", "0x033e757e99e3f1ca826c9a648a73de374a11c2838024cf736dd31c5b5f7c0825", "0x0e1bae5e746ded510eaa1145574a8468c3a7e2691a7b324a9b9efb36a9cdd4ad", "0x21818b1fbab0cba1ef20245ed99451ca1dcca899222c147b431553016a09dc41", "0x1a2604c6579eb3b1e803427249ecf1742a9bd72a6ad9ac3845191f8c536f7d91", "0x2f41b5d5d349e955e15f50ba0cc3d3e854e9065f8d62461332ccd746bcb57865", "0x0394fff2c025027635cf4a7cb7588a6ef587ed994314e9f813b7ab99f8d4c32a", "0x0a9d0ebdd8cdc392ba446d6dcd5c9380dff2975f275e30f636dc9641b2a2362a", "0x255498cbe7c9e89580548f0d92255fe9a1775569c380abd18d22004807b68874", "0x29dfb1a35fe5c7f25490b6e2e303d711887051c092a8e642c07dc130ad3901b2", "0x25a5995a98ef0f5402b25b2031698447ff89a9b630094d71aaedf8b5fc4ccdfd", "0x038ff605feedf7a740e890862fd593fb712aa19b4721d0d97b0a85ea77f2b621", "0x1aa20d730f53b035813f1504a853ec87f89bb56b05fb7b34f21deb1aad4c18c1", "0x1124f2b33e05c415a7d9881d948b9e15f5891c816a0495e8e62e89089a29673f", "0x051d3aef244ed3af1880d68658b4fa452aa3f8ab79eb4d1de2a1b827fb5ea359", "0x18c3911d3e25dbd901a7377327c5622522a29f56fcb2d395c4c9ac1e05409d3a", "0x09e0a4773ed5abf26e474c8050e9578c5398abfc42d2ae66a72c3957622de157", "0x2de436c8a217f32be5d1451bfbff7e3f6b3ad46a2da58f8439908d285c9afe55", "0x269ad28cb1fac223861da664acdf330c1732e75ce9d1a80071d8f623e668758f", "0x18d5c9f0a8c3c1c62a31a12d945ac562e7f28e951145d700751b59f5c4e046dd", "0x1eec169ea79a149b6a4c5b3ace894f421779dc9e9bb366e8ecdef2eb3c53fd39", "0x0982ce518d3d2e3749dabe6b57758fef9eb663a996dbbd91aec0ed84eaa75ede", "0x272007ee9d7ec7efb6c80f25a2110f94d20ac436f7c50c1e2b7f6bdcc76909f3", "0x1072d3d540d1b00dfc923dcae102f2b6ce363e5054b3dfe2bece4f96cd15d647", "0x28bb8d7194d4123767738d6b4d73a05a94c8e93c7e08f808c3a4bdf564420120", "0x04baa18db3db501d39e42c49f1cce30dd5619e1ebd14266857e38a753c63dde6", "0x130c77637bdf1a336d9b4c83104ed1e7b81808142a0bf1b2771b530eed99f03f", "0x02c0ce56da12cff29effbc3dc9b05bd07d7ad42764ff28350c7c48ce48ad4af9", "0x23eac7695fea23aa2f2ec9e1ea7b62caf5e71ed61066009bf93a6ef3f74056a4", "0x1c79be403821f680faf8289807244a6b3c04d0716134d089add44dbb97da7172", "0x05a48abc281f771ec36dca6268f591ebbade05b23fb81e7961c8cdff5d5c8255", "0x022aefc1e9a4d06cc764e9498634bda97bf11eedd5850100a6dbc858619d26bc", "0x100fb400e2aaeca68ccbdd4cb0528dd3b8da8207d6bce2d41b4aecc1f0720581", "0x04f0b1d5fbf7c9467e826c385424b91faff7e5f6b59e37651dc4bca500327cc5", "0x06e33a10b9bafa04f20f3e596c0c1d986836b7c16a56ca48669d5a0514270160", "0x081bf056335b1c44c461c4d6fc1f9e032a18b9d2f7f2400724db06385bdf0774", "0x06ca03a97a5618ac671d4d2c18501e5e8588bd793b2c3b54dc154d1f40bf6271", "0x114bdbd88798dad58dcbdb9a1fbdc123ed1b56490a015b7c2943eb5aad9ed1dd", "0x21bd28fd49cb1151be1afac1cbed0b705b76058784ab92fcb3a2258291780489", "0x25516e358045290d7bcce1b4636ca33095142d4b01f22ef7d94e28cf81e9e29d", "0x21dee602b25e5a67889ef243ac9c891b73ebc717c7d8161995d74bf4e5bec07d", "0x205992101ef7c5c3493aebf5fb8eb7acd01319524ddb56fb75dc159a013e9c88", "0x0667cf69b46dcfae72f7fe6b5d81e6d1191ef029280803eec032f5ffaeb12019", "0x2b7a9027fa05243ffbaa486daacaef850c4d033b84b3641db98fde01315e5be6", "0x2c7aed13aa9064e06c4dd9299479fd2fbf56f73edfde4a117cb8db54dc76e134", "0x19f76d0c1f5b1efc61c645180c5441b569a90ad7110f51271046c642f78ee4a6", "0x04749d2cc3d3c5612d7586ef1214de38f848d8b3d9afa266e153eda3920e72c2", "0x2858e042dbd512d9ec147fcd5cc0ff21570bb5e8da3b20f7f69acbd28785610d", "0x17a5cf2508f786d73497fbb01f1a02dd8beded89a2a3c2170ba1f3b2eb31c964", "0x08c7b3263cfdabea784d21a2d888b7b10d6c95a282a10169c85f22a22bb78e66", "0x1604f8490be24e6adbc37db5d23f82bd706546d4e78c08e39c1580b7c04d46fe", "0x04d2e4db13adad49bbf930ad243167c77297abe1bd73b5d148529efd75ebee00", "0x249361888bdec58dac53f9c01752c5f6ed7bd97fc27b3fd41e0cb90b9b2937c6", "0x001ff257f8b90fc3cc3f483b9623ca26519e4e04ae6dd38ef24275258a7f1494", "0x27e9c91e30b6b5e3c3097ea19fe5341727a2bd8dcbaff38d057313169e3fbec1", "0x022154015dff9dfa94f7a8339f4ff118a8f8176dfab2c88468b2cac7e3914cfd", "0x03a08472944a4c84ee7fe76ac61ba12ad1b5ecea7d14d4dedc8b2f7a878e2afa", "0x227066b89350a8b139e5bf8b14660caba369b0828b4caba58600f80cace84ab7", "0x188541fa12da77e21d041035190e0af32728193188f77229d79a08cde35e11fa", "0x25dd5c1efd162352f25ab776985b0fffc05deb7094bb6d2879d925cba328cfbf", "0x129f292e9cfc7cdb1b2ae2c7c30c3bb491349cef4f7d65812d66095ae9ea2aa6", "0x206a809eda7d396d034e89813719a58caae380eb9f221f445b67cd5a7514dd44", "0x2e7f566a18c5c428b55b4b7d4bdaec63f721b59c4a307a7a740458dcd9d05d9a", "0x1c0df0b100e4e728a9e7aa34f6b0db0da6b8fc99c3d377f1560aa156b7f2626a", "0x0b875a366710c0691872b26d9a98a498e929acc2e677868c4ccff663395cfb72", "0x214168e91d3b6a94d48476b1b424f16240bfc8fff6742494cc897103ba7d2459", "0x01bab48ade466bf636813634624daf73b6c5d6614340542895795c49716351e9", "0x0c8425e1b2470ca424397cfa66665fb861a3af4ed66db9045fbb6a7f761479d6", "0x0870e13994fe31f94b82cb4923e820a13c37d711d56dcc718f4b15a03d627d72", "0x14ebbcfca7be17a5efc356904a319f4969b4d4136f1026f57400cd7db424d778", "0x22dd5ea69a5036fd0d4f63153af386feb23bcbd02112d0b7574a6315b4dd5fd1", "0x1e72a099e89eb37443e42de1ff7def1549480852600cf4552fb17466abd89ec5", "0x018fe65ff0f8901603ceaea4a7462fbceb80df62602a9c132264c5aa49de0cfb", "0x1b649fe60a17792252a77ec365ef832fd3722505ee40b08999c728d5c6db2a62", "0x18a42f27632071b87526d95dcb7de26362aa28abea426c73cf679450bca959ea", "0x22ab7ea700db2b287b301d010124c1d2af58f76434b8bc47c59aa88620add840", "0x26dada935deef8551a9bdd474985592e2a6e9ea3522c07afc4bf39577211011e", "0x0c6f417f88a5fe08839f2e8b9007e2360e1d618e1b46a4979cba59d29b719644", "0x24788ff3b08c4d0fb0b51b9b4358fc0cbd31ca31ba05515855a33a282e2de1e0", "0x1db3fcae24ab59721eff9aca5d5d41ee9d7831a79a45ad3ed385b1322a7b2785", "0x1f45fd57e811d4e574516575d86501ce6be9246f5891ddef62b7ccf835bfdca1", "0x11acec0b13d058dc6c7239eba9034aa33702da17de75d6306f282a1b2bd16892", "0x21acdb05d55ae1f4aad873ec5adb6b6078170063a70cd2e6319ea0cef833cf29", "0x110d9b94d49799b659e142699e767d9564ce45179b522648fa8a83b45f8d76d3", "0x18db2b58b40741f2e007f70118e3a1a1bc2150e04fa34e421db5068de19e3f24", "0x014768c6934126d0ebfbdef341b57ed229076d70348eecdad8647b1d0df7191e", "0x1704d2d2e1876a075b167a65f6cc26d8837f7e2d3f7628aa26d3f7696962c237", "0x2cb8147670f73e2ff79ad1912c835d3d3f2b2381f60eb37444a6c0c173b537e7", "0x0908b9e220885b417b58db1da0ca974c2d657b50ae1c3c5e114112a925a7159d", "0x0f0d85b4586161eb7e1353fbeb7ab3e31b5b62e720379efe3f6549079ac3e60e", "0x2103faf663c3549c9bd073de214585c1aedbd5023e4a5ae61996f5e22b0a4a65", "0x127ca0c64d361063a6c7da37c6c3c2080181b6dea5fb63469156f2fa486e7ffa", "0x0c3e9dd099f9ca600ede039ada789f28795ef7fc650e845402fc15f99d48c00b", "0x0ea05b5d4d88b9b5fe35406f17ca1bb4a855e0a6ee7d60b31e36a2a21f411fce", "0x0963c4be071c32fd06a52124c0d87aefe595c1db2b2e6c2c9cef53456bba30b4", "0x0aff89c1e81410468fa51e7776f23a077f27446bd98cc72189f641b6456eccea", "0x15e753027d63337a330c260000082ea07548a724dcafa255e67b7745574624a2", "0x1f7acb7ff46a7c623381155c6829374bb77587abd1f9fa6b879df3240954ad75", "0x0c62a3de0bb681107c4dc6d9e623d0562cb6784f2403693fdd64622203b16864", "0x16ce582016cf2e1838db97dcbece873f49f8c60722d756c551af3ad3b1a933bc", "0x29cd5e2fd2b684e47c078fd56f852b1ddbb07ebcf995be991e9c2259539fa032", "0x12e8ff93cd5c3d7e0455d9eb0e7e9ff940575c41c35d1e5e441e530ea888a908", "0x0f3c400867219d40e6abf2ef22a90901811ec95c61906c730cbe777761ce12f8", "0x2a61f96bc53c2328ddc85e45096c9532c012f4713b8b8c8b1fe1227f8fd760c0", "0x1ca94ab706e569a4fc1bd36c9b63457d5d7235b356be56bdfaef24f99378b467", "0x2bd4a2387e6ec124155de47009789e1b945ada3adac5e35107398bd569524090", "0x00454150ba34548a851b191fb1a9f3587464de17acfdb0ddeb715a2e64373174", "0x1f22b39bedd115a950f7d784c7031ca0ec3d1a6a67375d7b6ede480c5ca145ff", "0x079a66156cfb99cc17c6d39fc9c2219bb89247b6caf93658d59c6fd0a1d1bb06", "0x17ee6df0822371834c222f954f03b016b8d5ad4db1be66f3f946d5d028e65176", "0x24cde14169b4a758c3a126ab3f8f18077fbdfee0f03fa7bccf999919dd417804", "0x20ad08d3558c9efe03c8895ad4dc88bf8ab5ed4867e1acde6533ea2f86d9fa7e", "0x1d0e87e604d01091898d6e85d2ab9af9bae03ab511a34cd9a620f088fdf8f1e0", "0x0310a319952f3f6e25015abcce49fa8110ba383c048413c899ac4d202c36b804", "0x1570b11e64614fd49047279c454078eaa9cfb883a9434a064f763421b26b2709", "0x07a6850ab997ba45837a422c1c0466e6cdaf76fac2199f13f63986b2a19cf2d7", "0x02c25344043642c634a4c011d981aaa7e5f179ce9ea4e921e8d52d0e57169ce2", "0x09f74e8a85c293ee8a2e71f6d23495bcd9de56c2e0034169034eee85596f5a7a", "0x079336363220c753590ab21e164aba518966a7480c4b2890f45272368ab2a97c", "0x1ff046afacd14fba346ce72edf23e540d10842ad7ee3c733467779518a9a70d9", "0x11d64cc17c095e49c45eb1ca2bad482a820326003d49c8cf9e9c02ecb7acb4b7", "0x2ed20c0b8e33f57ded5581cf937a4055f680b7d72d65c554c014568087d5772d", "0x259cbd244ea8c9840becd72df29e96fd89b6c39c7be72b16be9f0e43b73eef6e", "0x1e7d2f21917295fc375854225e63ad503e27e8d6c9225db35c2ba375cf4f8fc6", "0x257e31a7b6add90c617b93325bad37127f0732dfac4d0ad93331fa7999212a5a", "0x1dad54fad4273e93971deff7dc3fe74abef1cf6c302a64403fc7683966975019", "0x296a02967a5513e1827e29c77285be64682ab142d13c6d2b7eb58c0920dfd0d8", "0x3012ff61f630a0352b741e63d628ddbed474ae6993acdc0f9e314e8eca590f9d", "0x0fcb8fa2167ebb6b4f422131a8ed841306b3a0840f258d68edb477e8e1ebfa2a", "0x0135767e5d3112e0777607c1c5b91b1148ba641dcea07e1c2355c260285ba1cc", "0x091943098fd0c94aafeabf4dbc494b6385e39969c06c0a6854de0c7e688c4d77", "0x13010607d24e7a178c43d9bd68212157776321d95438d572a3b6ef77141e11b8", "0x16799d69231b9802789adf9d22468442767461b49d594e9a950dd8d5ca49e7d3", "0x1eb07b70401fe93b81df97a1f4599947a6a812e34498bf2abbeb1d256a28edc7", "0x005cdd9a797bcf1def23e8ca120b900a7626b357ef869644f28afe0c053f3eef", "0x24b20d885cd9a6318269aaea97b2469c2b60f7ea371c6a9c223eeedaecba49e4", "0x2986b0ba3a3e232129e3c444e9482584fd83d6d6a7d9bf43120a4c56ee5db03b", "0x1a188537b78ce9f663d64b5755da53cf88ecaee852442767fc16025ff7a66780", "0x08619134749841915bf5f92cc2045ebfb124506b9b25255be814a3b28fbe118d", "0x0135cf6c3cd0c694581fc2e477d6538a7b233f89d226373622781b029340f0c6", "0x04f9a5254dff765ca0403efaa2acd9096b7f59fbc20039138660b892c808068a", "0x29bcdd6c672f0a1870708d37e85130225c5fc826e9e62146313fbe1ee2c74d1f", "0x0c1d777f8eed911d4cc0e50c3f430ce9a1d5d7176800bedc36f92b7e4a685fe0", "0x1ffe8a9ffbc76d46c2ea2abc0e1fb3831f18c81144bce602811de39623d4a493", "0x216cd3e66ee82b1da658549f4df13ec3f38ce9341673c49859ff0e831827a7e1", "0x06b806883bf69388b148afd73b4880ff63bc57e089ef256e4a56befe78abdbb3", "0x1868f65214ce859946a2a86eb0925a650cc4d47a95b988a3bd98a5406faaec8b", "0x201b2cb3fb0002584beff69faa8a28968ce73207f731336a3d56860bc8d33d3d", "0x0f1c998ffd657d5af5f3d1500f9821453743face03ae2ffd055bedf624b76699", "0x1d8d584fd393d2a8c5fa9fb2840012a4e5cfd1fca97f83bf6cca4688b3931f4f", "0x1d4c5ec792d0f9e121c17ff5754eff980a2477f142fbb815901b6c597f5f5101", "0x058283d9a82cbfd8f01675373aa63d9279e9bb463c225ae7895a8c51a794bf15", "0x2797be48c99c19a141e57cee32b7845f553923b08474796cbe0eb9e79b05f8e1", "0x2b54896116cc45dfaa47204d5156075d1dec98cfca7447af4e93457ec1d9ec6f", "0x1b2fad2ed7baee3fb3d2197d6a9edca30ece42925f13481e0f780172119fb13d", "0x06b54e3fdd785e099f791c94fabfc62c3cf75963c21a75a60e65da896ea37dc8", "0x2f3c8963365a4058a8be7a91e6e451dcb1d7933aa8484a5aa7359683ccfa87e8", "0x2fd9929dc895930eb098661ed0d152f2868bfea13e8992d08a69253b9e9afc7d", "0x25d1ebe8e9ec0fc6d182b906d747498cb9fa55a298f8f9f6c9b4cc2eb326adc9", "0x0b6e6536ba3020bbe259f45ab1c38b2f5d36865b84ac8241720d28cdfbc34122", "0x23b8b4db22e8ff993e12d9b81757d1e7edc6c39dd4de47ef6caca147e9fad713", "0x1c232bf61cb7d3de8b761fda9304c24420b059fd01d42c74693192ad77634d69", "0x06d0184a21f4593daf868d9560e4647b5283892526f6a7f9c5ee2663c666d567", "0x1d96ecadc34f0ef9f5a9c10651d6ffe3fafa6d6c7107d8a92ede406c229def93", "0x25d6954f6b8e584c65d70a0d9fc5b575b5fe34e7ca66d8273928ed4b8fd19303", "0x011560d05817b7116aebc0b0e3cda650e68c0f528f62593af13587d683bf3e37", "0x0a47bc556a1bdf639aee0eafe6cf7e7b901679b1b14a47dbffa1b19afdf877ac", "0x287af493d2f91efd9e12f3bc7c7c4e0e04dfe89fa9e68242fc418daee7337bea", "0x114980324eef85f90c3877ae83a48005abbab0c3c0f7df46b3244d84019ba5ab", "0x2f2f074c9bc276d9fa172a81e954b616cafaca11090da4c330f3759c68eac2a5", "0x13d19a59728afdda4583a9e180ccb9b095f5b5729e866851982711903adcfe13", "0x260f038a5bf94790b22f2796e77d65d4b53140ab18c617af7da59bb1ebad8f46", "0x0270944854b771115be9dae3bae6007838e81311ff77e334755c37c2f8abccb1", "0x29fba9080e2201a4d09f179919d8f8e29b22b7aff11a3c3a1ba8bfd36880732e", "0x0735d5519e7f9cfafa9e943ff54f904badd3c07812a71155579d361803b0d300", "0x123d88ba78d5d633ad4f4e78ec2806d642ad8d24aa9ba8d6ea4393d38c5a794e", "0x2f2c3689a6ce7d1c36aa42906dd8b694be752a4d5643cc8635501a987e638daa", "0x0a9f37c901456b2a30e8d56d65afaf7cbe90b3a69b47112f6a909ee1c896c0bc", "0x0696d1a52cd965c61b8333cfef9f147da7cbdaed71be5fcc0a4eed3acffbd03d", "0x2df64206d9cb7e763d94c72e85da26e6147ca02236f670a3bb97d0705cdbf1ff", "0x0f924eeec090b123ae678a47aa3d4cbb2fbc33d2ea10affccbd55bd58021cc70", "0x13768e9d6ba854c557124e7ecf2e7b9a6a3bc1e25751c5db50b681b83f5e4e6b", "0x05257f1213538d118ae84b89e2adde7e4003e042836fda32a65aa63c96a702a7", "0x2eddb854c4de05814827157e9d7600e053c686346537776592c91a9c51efaefd", "0x0c5b286e46a70f81261a1799c036cff3a138dd31af847eea379bfdce8cffddcc", "0x28ceb1311ae3f2112c59eff2f1de36f027fe748e398e61e2dfb5f41605195b76", "0x02baa3c428d4f39e1dd51172840cecafc93869a5d4d2c451ef261b91d833eb18", "0x12fddfcba4edc48ffa0af927e5d29d678cad43b1e5889e496512423c51c75194", "0x1ffe4a425765acbb4dd8f671f11c3abed1e43cc8729c8d7258a787366e6935bd", "0x0518e1167639d7726de814e573f8d6e644de240190eb22da07ac2a6dd1a49fc5", "0x1088088ca3b2ec5ef3406d8b19498409253423a0cbaa579b78cfe22b8d2ffdd8", "0x0141132e639be390f54fb46daf1bc33a698da31b6e21241ac25ba91b4a7a2344", "0x2d30e4075796050c0f400440059b3b08141a3c096955c00720f37e3349b10037", "0x06c0f8d2050410d797974e3a22b48d7b4aa0f4c12db7c71a319adec4361941b3", "0x027714059b3ca2531e3a65e024d3bd46869e854b68884a6b16869109a965333a", "0x1143e960033b2837e35911b225966fb3559f869868a7587684cd7210ecace9d0", "0x24561022b33523412fb78512e39617226ec874021939d3d0e9b7a401794632b5", "0x225a3a239054ef061e664b56d65efd62ddbe5cfef9f55bd402a3278b94c9bc1f", "0x04be165a533d19b49a0151e7183868a5120a2e6422b500441050b41c486305b2", "0x17258571aa87c63d477d10e64d069fdf231a6e47d4a31ddda4d6e5f1933f93df", "0x2a9a6b89343fc416e297dbba6f6bc3d284db180cdde66ce94b0baea5ff716b9e", "0x14e059588f8f8af22297dd77bbb0112f57e56c3b7d3ea47471334d34e2181b6c", "0x08c09cf67bf4d0fd0c211298fe47ed233e6ab52ebcba1b524f66dad01366ef43", "0x1916ed4b8a5f979154a9199566a8b361cc1007551ad9db45515f8a6c0e1b2705", "0x11ac7a860d793f97870e952b32464cb5f501e215e6691aa5d4b79c1c4cfccf33", "0x2770c5a5b83ef407cb79fc9e556a310bd6aa3f081e6b45d98a7683f60c3227b6", "0x1d412d15cdfdf748f3a97dad82987660dd39a4ea932fcbc51a082233c156d69b", "0x303def2eaf1677b5c7b9cfb679829804d6734dabcd7ad3a774bbfb9a8337bc45", "0x241d6d50be49fb796fccd362aaf45b350bcfd74573d144c73e7ab42e3047011e", "0x114727a81cd91073352f7f803cf621820de779cd7c6c2b9ab87cb5b382737d44", "0x0d8184eeeeaff3b2fca1a4cdab39e4951e3a57327ddee51637dc6d24464842f9", "0x296998f1627009acc7913af056bc34280345ec6a9c27c73804ee142fe0b2b99d", "0x145b273c11c576c7578a4b02281d9b15153775884bb6e788405c4879c0edc2d2", "0x0973e6f51a9cf4fbeca74165562d7a656db8f642c4105a2841b1b93489b1e73a", "0x12e81b001e1e905f9dcea512b51ff63d55488d57cd25ff3add4025cf3a9f67f9", "0x272e7880a179f5771dbe70ae7d7d51ca28914120ea1dc3ab8429565cd6a7cbcc", "0x155b4d3a78b1d705f6ce624bf465d82325fef70167cd7784af872872b348a025", "0x09203e60c31daf6007a9ef20cb2e34eca9d1c9d93e99021e0a383598bfe77392", "0x11ad480fa72db3bc1695c9bd672d2e09a54e72ac9e8ca9f45ff8a1c73f0f75f2", "0x05fe4ee300c48b0cefd03b8707154264cd513c0c883b463944dfed3040c55dcd", "0x182a229d10429db9ff0a5258729e706fe9282c6b7ca60473ea234ca13a31bfe6", "0x1ef4d2b668a1e1ce444d213f1ad4d23de6ccbbf6cf5a93d31687e53e967f9dd4", "0x1cf2d3bf240e01691cc6fbbf23bf48d21eb9b889c6294cc18d1fb79c9b9a53e9", "0x00c110171a8f0642ac0edb07f83ae2c79d991a3438366f98c32c2d12f2f94a49", "0x0d82a68b0570ac8cb4b70fbf2a60bf17962ff2886284edfe5aab8ffd84314bfc", "0x0a31c585939669e5697c6b166767edac74e6359d364e1263134910927648ad38", "0x137c5b065b8d3a7161c63bbacd60dec9eb2e17c63dc696a5d157b648554b1c58", "0x090658991cce09af9bf77bf1fc0506346e5a03e3096921e8d436469fd75bb6fa", "0x09b309f6388a7f65393bbe50ebd6110854a91c674ea05189451cf6afd48fdba3", "0x0cd217f30eee2598caa7389d2efa182a4756fadecf67b83915aea4b0c36cebb5", "0x2b9a50d2973f4eccfe26616eeea8f7f2a9fc1f09e8d2853869194402179baa7c", "0x1d444efa271e105a83b3105d469ca1eaee6a27534b9a62cc210b19946f08e1ae", "0x16e21e081525d3dbc0f34577fd1436837c912d3924ed75557718992d14dfcf4c", "0x157b7cfd75560a0bead677843c52591d17554d8ef8a015be23e34adc390451d8", "0x1bc4666ac3f4cd1f5dd72bcfd1dccfd8c60fe3722a35f65682091586dd285284", "0x22b10f5c2194d9054221ec2a9cc6a1bfc1f4441871831d5f24d3da686d4d5e9e", "0x051e548469d19290a23fad84daedd2b5495591f22c3dc6bf467f1eaf12a09f50", "0x166e64fa7d0939c9127aa58b7aaf2bea61dfbb3138bcdf3dd9cc986e9ca4f0c3", "0x2e7f8d47107c0f31031de15f840ffc7b43b8f64815dd7c10357e852963f14c84", "0x15598a6b2c7ab91c1ba768585f11d64d4c9a3f609ace9039df753b4cf9016931", "0x083008079d5900cf73ac9f0501ceb27c3e92250eccb88d10d0e01c593202e8c7", "0x028e30096654da16fd90ad2c20080fadb0bbad109a3ed189d4238eafd2dfc3c4", "0x14eb993565894d0556189adc509b5945f1275f7078bec96997c3630b743e93dc", "0x203011c30db2185e3fef5336058ff6d9a5d05c557c3de1b627bb4aad651db9bb", "0x0637901ac6475b826f073e1386498979efba98d4b5daf92d2a9abb63b5aeaa74", "0x203cb3fdf3cc234a72ed4c8699327ab6cac0e8b7479b284c08c7097d1629ec07", "0x1a1a408f899c84145b135ca0a7a43f35eb3cb77cd512430c325ce44a11ddedda", "0x0900c26da8557e0760b971e35af5866c7cc494ac2fbf20d862130449ec41f9ba", "0x303a4550897edb795c6a63b60ea33cc5eef82fd0449b6a2119ab74d55e49c241", "0x1722e5a843482b59b079aecb995c43d6b8275e1413ec08a55f218b800fb3075b", "0x20a8aa1a0c2fb4cd10a82d702c2c30104f00de5ad99103a724deb52e9d801d61", "0x2f980d7eddab02c06b6fb20398e7a7acf6132af1a605d0cae0182294952f5236", "0x181489870649491f84912c75dffdd55cd0dc00b08724ea1fe43147e1996d8fb2", "0x1dd0b954ad2e65acc5ca46615391ae78b6dd2539576a9de4417555356f9794bd", "0x194f79cea624f2bca51d368706521a62dc473947209aa5c50083837c16eec6a5", "0x2ae9c244e4b0bce42b1b55053a4fc96ee7affda23267920a88e87f16229fd132", "0x1ae6a6a8c9bef477d15a21176aeb422be24e5d0f0cbd8c9cb37f4b9144510e38", "0x24e0e6a00b175e22407de66815bddd096b42dd73fb551eb810f84e01be304c0a", "0x2f16ab5671089f7de0bbd1e1478e45b9fa6284ff4444cefc8b43469187b83e5e", "0x19dcac9dcf078b6a68523d3bcc3412980e5519ce6db8d12b6dab3907bbd7e0ec", "0x20b0bb1f290136ae88bdbc15b3c864624b07ed3dff579055c1680b0a185f6b06", "0x08e893d8af978a0fba2a42f6bff7f2fe3a74d3765eadff49a82056d014dbe346", "0x0eac99d7af74de1ad1ffaa9b5f43eca35d6083495536c0acbe98cbaf2d7bec2a", "0x19e9e6d56923733923a15cd7f8a4350352ea308d6160473d5937e9c4b50b7cfe", "0x18e41764dbb5d20f85831a89fdc14094ed0343216f602661fa5a54dbebc049c7", "0x266dfc6e9d31040cfdd1088840fc0b65172976f58e0640ea6f5eadb28eabcaab", "0x09f1ac1f5d80d143d9cd087273a957f13c9ee26f5b76cf30d3fb73c392f91cf9", "0x1495384c593ec4da248a17aa457bdbe8cf95020159ff46eb973a6b558a6d46dd", "0x0a11a63e5191eba16f6ccb4e92bd6389c929ad153c53a130c933a41f46b6b4c8", "0x231a22a2e0f6ab20466445129d96a40feec1b299509949588c0f58a766d9b3f6", "0x003a3eb1110d75b9668d0d8a48da076e7dcd2ed0fcdeb9cc3538c11773047ba5", "0x28b52bf6dd8d0c5413ae7bda5f1e6b5d3e4548a4505d08e36f77b72629d97790", "0x1ba18831433cb15405ee724bb4281bba541299cfadd485c6b17f74fce436cf57", "0x1d295967084284a212b841ea2ebf7ff29ddcfae8dbeebd9df58b5f862e7fd808", "0x0e863567d788dac1dd5f3244564aed928c7923bab8962452bc7885724a93472e", "0x0c214a5053ea609e5608e9a6d54343a32cd02d324f6053e338b34dc0701ab5c8", "0x16ffb0d9b5f3fbd6bdf1d50383723cdd72f3530d3e7ded29883b900083c608fe", "0x20e05835550e6a362606f50251d8ac0706e2fbe57e46b4977e52e1adf3489e2e", "0x1891a8d1b078650521b08c416216caa086e0e98365aa1d5ba41d4ae076807ade", "0x01bd1319ea81a8f89e2da3f46fc7479c5efea1e4237bd5754f56f719b23c107f", "0x1c4efc3b2c0f2669cba549600ac023f7815a95d24f9476589f734ad7b94fa8ed", "0x2438e3bf4fc727a743f4c4409548240e6e852939f03e85e352c31ca386c432fc", "0x28a8d250a0a2aa2acf48d79e043e252eee15f1d1e6a84d58bec3dfaf37f0b855", "0x2a29e7d381d8d8083043970efb8aa561868393850a0f34a0a7ebcd3d7e36bdcc", "0x0f9e579ed04df85ea802b488588769c3c0e5376c42a968e8bd0b02dc23472493", "0x02a81dc03f49acba49709e9e780c56aaa9ddeb245fe6026d784c47cdd89a15be", "0x207116aee1e7b7022a90ac821435e9f7ecb94f9fb942f7b6ff7c6342a02417bc", "0x11b431f3210818658cbac818f63655dc6c31f00640c487031a7a6699b54a7242", "0x197a50af9dec2014518b3e2fc26013a44f706466d4596f06243f255ba3818325", "0x0a6fd02bcdbfcb0200dd89f9b86669bfe8627ce67454b2404d4966f1726f47ad", "0x05fac5cfd5e2f5690704f33b440e6f739fb4ff4445c5bd3a69789db652fae459", "0x27842cf8a4ebd7009ce2d7ec348ff783830acc87479ad4e401efd5e7339d25f6", "0x2278683aef662a07d427d0a36ee6b52ce9628e9914cc53bca5ba4ac2493663ab", "0x294cfee66c7b8de505e0c76e2225619066ea5ebe39af92dba7ab74b8780853a5", "0x00c6b60a8e2ba1b774f52c1f598d14cfcd9aebdc8d72d4c87db9c6eaeec4df37", "0x2f5611fd9b8a9cb052d3b6ef2b2ec32d48218862daa4e54d63219fccb9e0ac4e", "0x261bb66ac988ca3a7e2dff027944f8fcb3decb9d985b05bbcb0fc6062080caca", "0x0b5e36bdb5742eda03a1d1e3044465a751fa29be2804ee69b38c2f29438624d7", "0x1408760c6504e35db02d76d0b6a1755719c757419a494baa596e5ae0a4b31219", "0x2f898e5947f14b0655f04bce35dfe8b08aa41303f602747748353959b95d7dbb", "0x2d5fad29cbf4c420e6192ff7eaff97862de5523acd6a81ae61197e85e0f220bb", "0x24203764364f1ebcc8f52daf648af6b02de9e46293ef2f52b8956269f5a30458", "0x1a8627a7fa552c1cd073aa53fd7cc34fb7120513e2a756ff7335b6ab23d47e32", "0x19edcfd6befb3fb5dfec768b5c4aed2b27dd9311c4bd49edae8498386de5b3e6", "0x1eccece3733c2a81a006975b9e433e6931da70c649fef647f368a67682e1a5a8", "0x13a728b0bfb2b322c8af665a8478913f2f1693b39077eea89eb81de4125ae1e6", "0x1773b5b09655e9bddacb50af4f33f5e75c7eaa8f4bfa4680c4be11c71cc2abae", "0x1d91107ecdd5de37205bfe827e7800c8466f6572bf611a77d4d502242af5b230", "0x109e58922b02d172c8363f88c5b9225cc0122fb980e0d210b84d74a5abb01a5f", "0x00a0d1b2d14d861fb04c07e85f40ac8a4af481ca602bd224bacb442290ff74b2", "0x03ad94a5e38fbfb5bbedd2d3617e6fbcff4f5b0bf89329e01e8cb9538f91c26a", "0x235269a08752712471e2d8b204cecbf633f8a1b087b8d50d4386bfdee47fd0c7", "0x063d22c46f6125a208206f6991a7e553ecddeb4334f770f69715b9c31defee47", "0x244852bd0f883825948fba58c795389f82a0c6cabd905f6f6596d60b8a72e7d7", "0x20c9c3fad08a30d64daca24d77cc93e07fa9531a9458b64e7c36e2b8d5de7a55", "0x28f02c4b53c5fbb9b84f9be7f2d1151a3fea40829596152ec7a9591d7b77f53b", "0x063282e45c9b2fa5c6ac5fccb64f3a941204d8a7d0dbfb6e2f2063ba79dbc93f", "0x1322957803e814ff656281a896a1b454f83ee7591d04ae45c55894efda0d4679", "0x26f91c6326c5dba2e2332e65e25adcfa80ec44deddb1cebf62f5c3b90fce07ed", "0x1b006a8a282f5fa8fa8268174058fc457bb3e2270dbfabf1a77ab10ff193e1d7", "0x044b4701a897f684f973ef35f913c8714b23a0bc6892398d2999d5b897ddcf33", "0x290fa6dc0e09ec4d9c78594891374807f42e9aeddc710dae63c9e9a824f1cf32", "0x281b64631470b98572a677637e538166edecf6a4846ec4b66857aa8cea9d612d", "0x1bce47add587e607ed688687c0179da17c54ca73f9b4f6091f816eea1727536f", "0x15c8eed354694a3012b822620bc91f1d68c7bac0e6685f0a15c48ef58941a196", "0x186ea82f0981f8ca347f0a9eec056daba176a44465cbd85e7b8eb7bd0580ff85", "0x3014777dfb63a11a3d9b734e7a47a4d3b6ac4fe406e195f3ba32a015817fe8ac", "0x20ba24356eff7ae0b9ceff1562a4a41585aa9ca0d45915204e433f0728b15997", "0x2e6161643b1b31dc3829448622dfa6ac7cd79321ee432399877dc4edb25edb32", "0x024b512c632070bfce3efa8bd2f34bc100f0de647d0f5510269ff2c01c7f29ba", "0x0a9aeec22efd017571affa68427722a1fdea69288086f9c693ad2a42e773b59d", "0x15c908e364ab93c1611361ad84f06fa11c53c2311ffd1f4694d63b2b982c5772", "0x2562b5739170c5fa1e1cfde87d7a56c2795a1df9c0d6e500fa6b3759eca84986", "0x04135965e6fd02788d00f9ae2183f19e0936288807f48df45ad3ff1a70f69e3f", "0x1fb4eee3328ba9d3c79f1af71a38952c405f3de71458cf48856da83e06a96f8c", "0x18a5e35384d4e479459ad405c05532553c24fed90b8393f3a30b8c38bb2ab3ca", "0x0fff7f73e42a52ebbf30b6e73fd4d45c21133e4ce228f534ff6e3410b5b39f17", "0x159a3daa666c332a12c6c56e7b56e626d8eea9f2a36ea6aace95834ce6cc5314", "0x1424875221f68cbd4f0de4472ba76bde5e4c790a7aff782b4eb121419d61f567", "0x18b3209202c6757549296b01095c5cc390d7ae27b5231dd8414e699abb18613f", "0x0ebaec9cab92b182f65ab68cfab4cf7e1a80a36714bcae30798f61187a6a9300", "0x115552feff175b6e3289516c75c721e15922ceee83425938783434d12dfaf147", "0x22d004875985eeb33417b4ffbccc689588b00f5fb99c76cf605a0a2428a82185", "0x0f396a65933c65ad9b540ace1416bc4787aa4b6ca3f7f2366a4ecd95ef12ce3b", "0x00edd7d28e36173f0c3b28207ddc0b55fa12e4f54da25e7619871ca8d8439d42", "0x0d7d9009c3d6797090e6e1059933e21362d2cf037e251fbfc2b6e18611875baa", "0x2e368c153fa35a3d9ca68c21a7ca58a90ba28ab252a18efce5a2d59951d7e480", "0x0cd6774ae72e071a0beedbeae7a449ec52362f76e5b0e0a4419eed187a31bfea", "0x13c25853d9680d2e8dc8c684ef48b202e7a227592f76010a20d593ed672029ee", "0x17a717d1e3f5854fb59b7f09e6f8d513e32ddb8946467f7080beb8ca10fba076", "0x08691117ebf4e67180021fbd6df623ca48c067e9e890e1739a9672a2eba49ec1", "0x19cad12c44534134c3feba2082a29dafeb550920f13f376ccfb659e835ce8ab1", "0x0b7c75d010ff98ec7b5ad1e3a17a1e092c353c544f8e7f707f5e816519fd6fcb", "0x2055156145c4411db547bef92efbfd4b8a1bb5fe2e13193e0d9c07f39e5875c7", "0x164afaeb4166726964fe5a079a1b332517980c47a33a04ce22f56c33d03411f8", "0x2936c50982fbdb0f56cce6d4f575a31665fa813d72252464c2776a70ecbc2c6e", "0x04de9f4b9d4424cde860ad5534daa8397b1b83835d83f00372fac4e376e6e907", "0x0c6553007546816e86c7d90552a6ec216f9a34987be622be17ae4eef454d5a5e", "0x1a7041d055f98dbe2d87333de8a3d0b4f6348f4eb2968aec9cbc7dc3342587e9", "0x1467cef176cb717eeada2b84230336a70ea45e0f4af5c55a44aeae23ca563a48", "0x250aadc3ae989f3e82f4ab1af04ea5ad3d92a98151d06046b6354f98b046110d", "0x0553972aee593ebfaa45c932bcb153e62fa638167b46555f9a8a74a361f78afd", "0x04e5656b267f8ce0b1a315f9493873eea35c1193f2febdbfecdde494b6945838", "0x19401e900ace225941f6c581824e338ff98d33f2f0b43f3b74dfbc0951eca86b", "0x087253b2116e8fcb45f8eca1b3cefd921105e9cefb33e3cc0bf7da006383b80b", "0x135bd80682f771572bf574f3f714f34105afb21e87d72c40a2f46ecd8518ca77", "0x11c234977200db6c688fc254053ad3016390a025d0ca0975d1337bc077db38cf", "0x16a5b75b970e48a5ec3eedd2dfb08d2b6c95b732dadff1e1c81e81a3dc9b24b8", "0x027edd6afb362a9da2f60335207d7296d0359d339d418602a8c27069d167d23c", "0x0c7a718e63c1faf872af76187c5c3f8ffc855d4095f5c55dbaa00533515b238c", "0x184d77c3d6d7236db32d9a3e48c95fd448a5a0c1fd3e5ad15faff8baf1039019", "0x2031859dbe2a3689a9975b41196fdf2eff1a587a9247361e78b7b029763d63e4", "0x305690c19d76dba5dffaecece28218096a32980cde7a9f4205b1989fea80dc6d", "0x2de2fb494197d9c1f1451641efc2473b85300d05c0d27e7ed1816de14c94a9ba", "0x257e7ecb38903e44f1a558b49fd0022c3bdd932598472c8a12602b7a020e4c35", "0x032507176faa049c0dcc74a8ffc7b327ac29743679f21ff553170afdd2f04bfc", "0x26720296b4837059257a06bdc3b09d26928102cde57e23e91d1540cfefc4fe9c", "0x1af78e5e918963050a415db24ab45cdfd81539caf74fbef4b800473a6235a0eb", "0x2fc7b7164ff4096593f45cc674765db55d536cd4e86711085fc05bb2a7cffe0d", "0x1a4ab0f4515b49bd3aa4adb03fffb4514d9aec224f6768315bbb2365fe99dccd", "0x1de216e2fada4c24d7fc78f587496c24a8eeb7aa83fcb9cc737919d9eb3d85ed", "0x1aa330dc4e25a8d0c910bfc87a7ad051e48c82e62586179b18c2ce956c8b335a", "0x03d5fb1caad9fb50491a73974c8dcb282e868a605494dd7a1ff9b2df16b0cd6f", "0x045e130424d8e0d943c1188f9521a6f799334f57dbe62cb05ee469438e35b4ba", "0x1fafb6e25f7e91a4f20039c29e947f863c090fa29dc5664d9f8a69261327e4b5", "0x287a56018cd08f5d6293e1652db8cbf40249cdc759a84dd7cacf4979cf4df559", "0x23b3508c33e9cd373874da82d6c15c250aac99d33de516f0351d7c421545057a", "0x1b3745b04ec0f843b9fd872d6dee97c8ccfe952a3617716231198d8bd837f44e", "0x2dd389f08b6fe3ad079bc9d1daed7b1698011d74a913502bc7c7a7e1d739fdee", "0x0a8cddb9be00c6e178f3ec831482b8d7dbd7e91b5c8f1da27f1386068e58fb14", "0x2e89a90cc4ade3e2150cad862b6cbc4ad40b8fe6779a8e61efc4827f5e43aa55", "0x2703815217d57fb62633da64e4777229bbb663fcca7628ea35101a5a6ef991c9", "0x2d1d570be0820e8d90f6eec8bba76821e90ef209d705604d6e43832dc8760295", "0x02d9053b8863ba6cd46acffa0891c0720bd9b78fa1662bc0f842a1e05de62400", "0x17f4b26ff311b1b4d54e74ffa45ad283565b677ef40e2e4e19a635d638d8d344", "0x2e68020ca82963085aefcd925073a6427050e04906e7930c133f1889d123026e", "0x2574c30da10c274e658dea82f3d5afb58da1a834cd25b7ffa5c59665300b1eb9", "0x15c361a25585226a86655101e0f0f3136c7b777521ac2409e56e666ca449763d", "0x0b54e1c8bfe294a08328395dc6cd3a353108221161cd70fbdf118c3954cab9c9", "0x1805115f1d5b60191ec5a8733ccc5b1b5b4a32d81c70f23982df2a2599528916", "0x2934d73dbfda4666b331a0cc2f38f7e83ed8093cf29d111ef74a7a8d7072c5e8", "0x00488ec3a6563536696134d8a0a51a872cfc4aedc458c44eb6a7235af9263c95", "0x1319d9b4fb3bd01426ffcb26f256b4f8634e0f18f9597dac37a0f5f9a00cbb47", "0x0ab5e82e345e304b1a8a0f657fdf3fe03efb006b2e53fc8e776506796c33581c", "0x03fd68ff74722b09cac4d58b377e0818671d9ff52a211e449ab162c3d0cf875b", "0x1e7c552e5a8f3605609c3667bc1f8153099f46ec8edff78bddcff7e42372d009", "0x069952e9cb26d8ddd8ef84484f4fff8495601489ddf9cfbc86731ca15bc2b42b", "0x069de4322f390fb4b3c4116596f9a8f51b00f2ecc9ed53b8ce87037a5d8cb36c", "0x122e535351d03790b9a1411ebcd5958a16baf61b01c106f5f158461dba427258", "0x22ff22f011f8c226ece797d1e36b1201449338fbd523fc46ba52fa48b3227b64", "0x1161d30490f1a507df1a75be86a5df94d448a224111f3c313ac3fd273165388c", "0x2ae2fa2fc3962f22ff6bbd4376b6477b2ace3fa963586637d700ae936d92be09", "0x2a9dc09bbf2c43f2dc75ab6f9bfed365703a43b9c358101f7ebcca2082653b20", "0x2f402e60aed9c5fe85b9face12c2a770483ace81132fcdc9fbbc7eff4874c30b", "0x14f352e9dca46d65efe8bec37b89a573f65f0aa8e0c753bcd10d24fd045fd0f5", "0x13c70c3bf42ce34c36893390500b82fb1486a30d3921b4ecb1fa47c085f20fd9", "0x118619bb14a53a21a1ecef9113b10e7c6b7a36d3b38f7e6ce5abaa97fe96bf52", "0x236a45b272320cea6a74280f2a954e3b157174b892d5f3b2ac4b6e5c4dbaf38c", "0x20fd78a9f662d3be07c07b99e4d4cb804974b3fae1ade638d8800e83490b31a1", "0x04992af8b903034facca4002586466136a675222093ac348a7784c8bfbcdd9a0", "0x2354b2ec8c7e8e6d1a93f7307342c7b66dd6cc9313e5db3d06c380feb249193c", "0x1ac8c9558885dfa7d7df490e11b102854df3de5b14c5fbfff2f7aa3f31fd2e28", "0x06367597ab7a2e533d99a4447726388c35981b997632e555afdb491746d83d2b", "0x1436363c86ce4a176a882bb26c4b75f5ad8da469935a7fb3be81827d0b5ed494", "0x251e61d00ab4ef232c33d55a73388eeddd65e3133bc4fb3edc709797e9529b18", "0x273656870c7b8b89d38a63a9485663adff3c46ac7d43e61606e26f5191cce0b9", "0x2ec2b54c9aa440e0fa017bc29135eb124aea0970864b8f1d794dfb16f8b8cb16", "0x134c654f5a38eccb1070a5a78831bc005ba6ac7d7a3b76e555580eb1233f949d", "0x29bc8e34b1a10f97997502440979b118c5cf2af2abd97241db406947505080f2", "0x0cf3112832c45c48c1dcb5ed866a51365b5bb7949c0cfd9aadf67d125d4f3ab2", "0x078dce521d3bbaaae5c79c768ffdccd8b04e111d8b46c1f2ffa6d2e602ef31fe", "0x162418eba2b1930a1a9a5b9fe0ade663448188e25b28ac81410ff08c22c70f57", "0x0bd3b4988cad29012c9dfddc9d2d75812634ee0a07456435f1a0f73c02ea08cc", "0x11e33b5988d6b2e5672d58c5921f7b1cd7290635675b9d3e0cd07e81acb2f58b", "0x072bf81a1308cf51759f27217c968746b32324bc9d429270c10e1671a6f3a759", "0x055853a33d1150e0e106160fe1d7fc65ba18fae5cbe59e8fb6bc8cc7bd663216", "0x2083fc1ad350d82f1d43ddd5c7fa475268c2927e0f02e6be71e5090f82137169", "0x26ca79a855958e45e1a89bb4546f838b67d98dc4c8c92bec26a0efd674ca6211", "0x09c669aa0e831572be5a542e8498090ef693900bb4d79a588aadd5cdcbe62696", "0x0261cb90ab796a6235a92da9adebbc39dcabcd01874af5d63d90d66037ba3b57", "0x07c14d288cefc862399a1156e7fa72defcfbc0466e0768abce1e35366450404a", "0x2ddcd6dacdcbbfaef37cb2d4c5060f0ef36f1110807fd81c43089cd45a26da1d", "0x162d3c3fce8f30204c522782c0cae66f911e432c8b4476166b35b5f530d3e8c8", "0x090fbafe1f865f43fe3a21609b7d8459fe348d60a4c471dc62a0afc555cc2648", "0x1dbe8e50c293846305c51baa3473e29dace57e6e1af48fbb23d81556eab5733b", "0x19ffef9bd58ca547ac02f4b953cb941def36fd834c1f5ec5a59418b2d22df911", "0x0e29b047951b6805c19b7a21ac7d24129ca8f8e2b385731b2194c1905f21e401", "0x198d3baaca379db6105675052a55a31c1fd44a8773a9d7c789bce06e07719d32", "0x0ee8deaf28778a46bf818104276bbdd9bb48926ce699bd185c649a8b4a7ec16c", "0x0303d98318c186c8579d1803984fde3284744ab161f14bc457ba045f3c1329af", "0x265d7fa88c0af3c2ddfac0db3d464c31df095cda96dc391473f833acf4f64807", "0x0edac8d8183fb0ea31af3b383ef9f921a3c293e8bdbf95598f950a202a677cb9", "0x29fa89d16190d1634704cc096f030dc8cc7c5c9f86d13d95976b6f178ffd2154", "0x234c3e31f412fc1fb7c9a5b70ebe31f33b5987c73555fc0e4ee7e75280d84264", "0x2e053dc186786e4471d0ac6f5e19b33f638dc8f6439077e2cf368d14d4fbae61", "0x1d616ac50587ff0c730b1a099a8daa6e05c32dbb5dc36649d9ec0c1feef2b533", "0x037771eacdc853125cb0bc917610c0c3d3b065560600b4aef883bd173adc47a0", "0x031c46216616ae3241851e82decd045f40a89607c578c6248098b30c546e1e76", "0x00482d1d2987d7bfc6d256af3072b41696038a557c9867a8ad267027ec3a5bee", "0x2115d7cd1cf9a84f43fb6426aebb8976578ff3e5646f89f240a48acd16f0fe1b", "0x26da8474f5bfdb9c88e0d72f32227af2c5f4b6340c8ffc96b0423b1172c7f79d", "0x0636db5afdd335e31958a70e694e17245df7fc8d148d1cbe19ff880e7dc0af6f", "0x07096b395701facb3492ac24564c468026e587deab49ef63c528f418f7e471fc", "0x148bc6df9f364b928d68180aa6a2667a29adff966cef3e340c3680803333bc31", "0x24dcfecbe203abc67313c8324c6339a22a9a1f72fe944591c8fe003ff2a19620", "0x20db93b902460ab611256f28dfed3e7003b3d3fba36d7bef993f381f3f2230d8", "0x044e39201aa990c4e32c94409c1b1410fcfe511f2f5abc94216b0d9eeaa47a1d", "0x2aaf90c30ce60e19085a54153f4675921b8e65e712bb4b0a040d4c11ea6653bd", "0x23fa0908d7d89f3673ea140ed664f7d1eeca765fb236ca8a78ef2bad304a9cf6", "0x1f19c141089be7fd73fd0bcbc3e672f924e9d97fe2eda429fe25f5f1f8c1d477", "0x2fa5b884aa9746b07e87209d1023582478603a994f1ffec3c1d662fe09632dfe", "0x272bd4357d44e2e2c152f694efbbc238125f0f534fc7a8ce7803a7e77a43b6ff", "0x1270fa5808c0ca1433423b90060c34ade01f3a9c81b76d4d2b3cf7158338639d", "0x1b47f9d3f2eb0fcd707a1d29c7f0fc40481fb6bd2e192571358ad06e42995218", "0x1661bc3ed40445c9b8f5a6b74ca52c81e3072117a6b9ddeae562f6f51bf9b8b6", "0x0038c8f5bba73df7d9aad4f06775a656a8eb780c0b8783fca440631d87d486e0", "0x03797c94554c71421be0ea2108bd5dc2d6172f9c0b51e818cdf0c998e7658b5f", "0x26f801cbead2c26bc2ee66c9c561d6648f9dcfba02d573316998070d434920a1", "0x1bd9eb0781aedb96c9799f709a0caba80db0cfc155c437d27ded8641de18e61a", "0x1485c83f748186c1b8e237eaeee6f23e093c2509838436c084c6ef0b88303feb", "0x195ed64dd0a8134694858f96fa14afb40218dac40a3304762325b8efe03a9485", "0x2ee31061ca7160cfcff414af67dabc5ad156a9de263256b791270a6acf9f0969", "0x15d0f0fb824860bdae5f0189bb09ce4b3bc002a7f86e93bf85678d5c9bd517b2", "0x0bfb2fdc19db2d9d7eaf8f2549ac9aeb8e9dcd83c91e67a047d0fa7fd36f385c", "0x179cd6248b5c0af277b392c623b744f865a8b1fe851df27c5fc2a47a0aa1fa0f", "0x19f1469f9c81707666f6db900e8d90123b715e74ac0224adc357ccdea8737fa2", "0x21339a2203afcc5f2cb1fd56d2ee9179637ce45abd2dfdc9a7c561cd7fafb68b", "0x0e65726da6be88d5f916154d202ad3dbe3fff5d65ebdc29c7c97ea82d9987e47", "0x02564e8b0fbf65f1436a9e716a5ec7e079eed2d6db71b7d94a2f2434e0068682", "0x2a236647dce4e45c60809cf6d1603baa4362953ef852b8f785ee5e959011ea49", "0x0174acce9e73a9ad5ecaaedfdce776d4d1c6b7761fb1599ccf97032a59c5f3f1", "0x10cf2a80803b6802cf2a63a37e127b556b70d65bbb61657f6821ca45a06f240f", "0x16167f9d1b3ab094f67d0cbbf40a315fe39b45e4540768f3fa35dd6d55baf7fc", "0x137b1b07cb60ff07b21aa151724f9bc6a50e4a17a68f2aea512fc1e93968c897", "0x00d590eb7aaf8e30dced18ca317ffbd048a9b0fc80d37c54a8bdb7724d8dd645", "0x2d0a63690237ad3469abd472e450c11fe51ee1440d3bb309b2295cb954efd3dc", "0x22d55e04ba0d855f42039d18a1dc14dd16305ae516c689d5141a9ce5720b8f7e", "0x01cc71169f322b9595897b864438208b66a71902b73f9518826158d7145dda58", "0x21f949a16acb35194d9e53fdfc5ac01f3491775170254c2cb4b91772f46636db", "0x14cf5351c14c087a59cf5fa5303c5752c33d446b5cff317e4570df7d685aaaf2", "0x10f13bf1727ad7e9069fd6701506f958fdf59fd2d08b0fc5048c9486b43eb64c", "0x0632085e771f74df8fcf5ebd07f95373f832cb41ec980897da8a860c05e9b0c4", "0x16fd673aa4b499823fb173d9efece6e6b604ae03bd5a8c677d7aebfbd73bf592", "0x110da915aca9c87a2c4614b1ef6d6f03d8227d6c3e2d63bda028de1a580a438a", "0x1e6f125f3f81a4545935e520f5ebdaf6f99a0c03b485f582fe23a53ac66c1b8d", "0x12c069a83b55b665aa90952fbfa8347ec157c11539f49640d4bd2358da589b37", "0x2b784e2f52c3b9522dd48baf6c3fe282e2682ecc50fb16755ff8a265ef6b882e", "0x1494861baead0058801d47ef56842723c6b96d04d382e47c45473eedebabe484", "0x09dc71751daa5a14501bb2c3cb8b22953f3a3c3c88cbb77b1931181741dc7095", "0x21d3e12c5de6525d5dab5a15000888e8ce36f40be3b49f03b24cffa70c739311", "0x1b0e70929f5772f72eae56c8a272d3195689ec4688d96570b46e19fbb66872c8", "0x140fe4a3946bdeaff52c0cd3eff628dc40e30af8fa8534c67a6d07c958f33df1", "0x0c7349dd6d791d4871433b501fc3c593352fd6995dba4fa687f501ec8986f0dd", "0x04b0a35cf626c40f82a1f07b916076c0d3598b4414f73c9f6c97442024441a3e", "0x1db02b68964ee9cd52a2936cc783cc12f88d98b60e858cb36366519fa012b388", "0x10e2e956993e23f93c073c7ca4db0bfc7ae8e558f676b89b1ee66086203c0596", "0x1f45de365f1d93cf840280890e369ef6e4c5a98b9a7f8339ecfdf604d5e6f82e", "0x1cbb85bda895dc172232f7d59845c6fc171016b82c91d91f433261fed4ea9c7f", "0x03d3f3bb86ef161295f9134bfe58441dd72b6461b5fbe2d5787902e3e5ab1de7", "0x0fff02814d47b34516dd84ed17a200c44ad72f4080f8057da77060d11471e9ee", "0x2e9416d3161e4f7b023ba61c8f6635617855e308d6233b4e85e941f7a5e6c9f8", "0x05c70ee3eeb80db84501c1544c24161ffd5513bca5cf2b5c740011e3793d8ce7", "0x0666d733d249dbde4fed105b2ea2d6d4b991983e2b4f58ad54910923d0965dc3", "0x27f945bb22dc180a99a596449e83b32dbd10e78bf4367531ec11e4da936f39f6", "0x12e27af14b7ece9b8bcf7bc1c9241d0d85f9fa47c83153836e199eba8961544f", "0x0a8d6c9fd80c799bee076177a1f9d7beba446ab13b7c79956f07d994677946fc", "0x08a0d3646c476269077062dc3c447553d61a4648f306d20e56fae32d109886f0", "0x073faad575449ac35cdfc514717251bf168ececf0329752db7403c5463ecd84f", "0x22ee22f436078de048d593f4afbabf56f4a3fd4e07e8a6645fc68541f0e5fdf0", "0x01b50235ad3b1a6f6ac75de3a9f75f4f39866e6012439c9c0179ab032c4266a5", "0x2ecf4f3c84f75ea7b10ec11a6b2596166ce9b5a28a526f80cd02d665226a3feb", "0x27ec7f3ec5624cd3319ab85f7df1380283a59b36ebf18ac38bed751ab1a04bc7", "0x0e576250e1560c77cab672af14ebf856402468d2e9b0ac03f3cf29709e13d931", "0x2251f276fde77c998d42b5dad05aa25fe98a908200b440bcb7babecbb77e7ff1", "0x028dccf77c467c7818192d4787e3848bb057c49be099f60291a2f1e48de1834c", "0x1b2dbe9236f5a27ed5c9e3b70e099432d324f380f39158e119069f95921133bd", "0x0869920b8f5026cc43cff18be390f74c35586cd2b6943b29ef7b17beed277832", "0x16f4fcb1833619bee667206a2c91cbd91055b10783059b0be52e1b656d67600c", "0x2a50cd6e6942fca74acd134045c28838838723fdf651da02bf3b3d7741390824", "0x2dae4ce829a70182dbdc41a8eda89651110b2c99c60565ae336df2bd2afbdb6d", "0x2dbfd9447d4214f9aacb9f5d2924d545d07310230c1469afa03b283b8c7ed93a", "0x10e7bad952c8a632ade1d077490bf80b125c1a05ae4ef7912e69f152d6406de2", "0x28d4ab3097fe8d0377f4a2678261166b5bb24c51f04d768082eceeb3c6b1fb43", "0x0772b1c14cb95aa6b39de1d4c24ecb7f08d26343b14ad85821ba29bf5983b263", "0x1856fa356fe94847f57602f5fd41da9d4ca404f858e29e7237568a8f1f52ca05", "0x2457b8229dbdb49c207e5a1208b102b0f86c9f2a76b4a4a23c0d423304bfe9d4", "0x045fbfe6b2c8759a8234e16f0f4c37f53312596fa90b2b7bd27f0b55dc5aef77", "0x17f4e29758239596e70478aaa8b63ff126a74055ac5b80c775c0f924d80f2c63", "0x146cda97d41fea38bc63c955144a65223d4f5652c51bee160dadbbc681252717", "0x15cccb291e3b75673baa8d2c4846ee56da33ddb497661760c4bf19d52503ec2e", "0x0db560c5e93ecd131b7b26a4b777c28234c9d15588cc5e5f2004880f5ed76d98", "0x277091f4d68c4dbc1b8b93570cc249973e892f48db3c356a965816a23b286841", "0x230c0878b8e670672f23598b7717cef1b722a448d9d14e04b81ef722e72bb505", "0x1d7aae3cd8dd3f91e27cab6f15ba2974fdbf72782825f99405a50c13a004446a", "0x2c87e4b81173ce8fd99c9bdf2f0c4bd39e3245d84cbd89d79d8e9fa7de963589", "0x2b3137b3a764d5f3604232cc17dd2e8ab96d46a7df9e68419b4e7c18ebfd5a8e", "0x1d92d102f4f430d0e18948b9701b544e5413d0b5bb1e056ee2672165bf52459d", "0x0bff74ca04e6568b8feb6a03494311339d7490a75d073368242784ea71f0520f", "0x104fb3aa7fc80f7cd356a96401b415aab91c4077426fb088f2aa972822f9786f", "0x21d5c5327f9c0ac66eb7da87ba7a63a24e47d8e03eb49817ab9f1070d864f603", "0x2f29beb28120d9bdc4e147946cf7cc260bbbbe5ea6421d7d3bad99af9f3b16e4", "0x1661d9d3ab98e7204b2355e05768d6cf4367f30f1446d8cb57576c71d8f83cb3", "0x2b406f2b9f13585e0e5e44db5210add697cbd3f0b523249a21ed63494097bcf3", "0x09d507b50072650b0ffc5c36a63a35968063747bd70a655c9f0e07b58ae4a881", "0x17e38db767cff7dfafc813e9b6773e75d9f1257e8bfec1ea9e8329e80a87a7d1", "0x21b5c11292bac2662798e6098d0ad0f29f8e6d826adf5ee133c21504ce0ab2c8", "0x035e47386120af666c32d7c4fc87052b30ef18cfc2b061937e935b0903134fdc", "0x04f981d3a984ca2d85f9581d7a74f859b61c3e0136d6c450d17768ca1987ca96", "0x0c2a23457f590b126af6a4c54d1ada810121f4cb4975d8956d844cffe0a5ba5c", "0x1b5ca14cd976dbd10e76b12b7bfbc28a54ac8afdb669639dd4c5f69f91e8a9d3", "0x183f68d1a9dd706109a8936faad813a89cf3d8473ccdc77b3ce29333b7aa7aa9", "0x06a5f95d98b5573df52a7cf20b0e3336680db5eb7833194e82a92ebcc6ab03e8", "0x21403b255d1256c0c736ceec52f224c6b763f8b6d7230b295b4a14e9081ef6b8", "0x2f0d6e5992b021e6c4806e078494d985335a44bd043c27ec8fb96210c733a6c2", "0x2766137fedd6013d86d9c93d3d8e05f9f7434aa2db80d444371ffeca8d5461b1", "0x07292a1dc8afc94852dde4bb513ea938096efe1ccc0b60f53baf031e64ce7aeb", "0x0f64f4a028e3419e451380c4fdbdce5b03ff40359207f5bb119c2953433d52d3", "0x1c2b3c6072f344c7aecbdb388daa18463eab5cb5943d2c57afefab51824b37ea", "0x12cdca57b94c8aa6c214703d5c456dfc88159401e7f66d1481b00f36dd8386da", "0x23f505ce933fa0a7486664fb00e5ca54b685208dfb4999dd346e4f26a697b807", "0x1a84bb82ded6255c6ede37585e4e28fe787d20844df3094fd03c82c6f2cc0b97", "0x10a6655befac54448cd2e0e7e52a56c178d3fe670b11c58b16109fb759f4efd2", "0x1a26556d515195ac28f883768f3ea67904ec23f742ce544fba2f854313bbe14f", "0x23a8eef087916f1ed3df07f7a60d9ce2c2a196d4e9c4231d0e9bc16cd0e3885f", "0x109e59cbba700e22ee2fa0b85105e52833c7c70bc6d1e918813aa2421a188e3f", "0x1639528dab1dd1f0e9945b63b79246d3e872c0b1bf637a3b680d98689d997759", "0x2313e8d331cf2e342e132d2a75ece0e712afad8b0bb32185d91b02493c876796", "0x03e96a03762ad8273fb05818ab28cfad626ab2c3b01465f8c973b4275f2585f6", "0x0e318637b7f15366c44526d3ae3c0d33bda12c294a4876988c28d09a7f7608b7", "0x12a1f1dc357dea2da4cd6a6325cd2542289736117d947b3bf02d32045085354f", "0x117374b586f4692b1682f8d026e9ec7332a43f7b0929bbd51543e21b3303de68", "0x2bafd7bfc204d9e55b8a53b5641e476ee5fc5113d631736b7bfaa349e618dc24", "0x08d075c84ba48cf35979ba012c379abd58827f1bb562155b19bca5a09ed0be24", "0x2b0785443a2d5deee66eeea2b3f8ab317dd37a2358d185dbebadd5a336676243", "0x0af228650aa58e291b19b511225c1f0dc11c5c982d9b9ae57a3e0ead52667acf", "0x0b4e7e3454f2b9217698632fd31d95a50126394453c89b6945250f8d36ece0a3", "0x0e5f276c143fee910138e17115becf458758ce9bb812d986c7a89b297581ac79", "0x241341f84a8e31629592e3c2a5a33f5a8f853f610df38842b80967f54eb3d30a", "0x20606300d8b0643f6c0cb4b4afdb6d3503efedb23d693b1c3705cbe46c27fc62", "0x0bac99db56310e7df296760866502bef6fecd4c90c17ee5dc13a704d17159622", "0x2171b3c348a2df153f26768e206114b0c4968c3c99e8fb9e7d5d069606398f83", "0x05fe9945cea71eb802226fe6ca38357eb73e86a76fab2f66d88976c822419fc0", "0x043abc2f359716a41d6c5661950fa31ad11ced0eff1ade02d43af23dde903bed", "0x2a1d4d9bd164d4b3dbccc77591b690fc7fa7b07e09fa5b2709887062e44a93c3", "0x2f14b4a9eff419296a645716b4022cb6fc3a8f3c97cf077fa60140cdc43bd4a5", "0x0865168248c7b18aa9b38c76774d180949daea2d647fce0f839df5d749d8548b", "0x26123a0ea393450f6fea67f7c11acd63848efd02d07380e364cccae9a6548d4e", "0x22c637ff2907aba15ccfd3f77be12ed68fc32f8be96698ed7673e881b712d43a", "0x117fdef07c59ef9c9a770756027104730ee9e6b4398745393804a176268b8a22", "0x070153c96b148cc400f9553965366f632ac923fa2dddf69d3b6bbe503ce96296", "0x1e84c7981ee7a8fd3f7f2050c364e921fb310a075a3ae817c00a77f873bc9011", "0x0661ff0cde6e581660f5fc3a181b00353bd0baca8016d6f75fca269508ab8d41", "0x15beda5d1eb94bee696ef86d0283ddfe69387fbf0c0ed75f851eb55c9c97202a", "0x1442078783c42616f54d9327f5d43d659713e2c3960eda452dcb89ec3e503359", "0x0260670536ce7e64cd31c97b23d5b96c494f93fb3b1c0a9d1ab7de4dddae8796", "0x203890235f209fd4c8b66e308a8702e964c52c2f0218ebabe1db114e6a710817", "0x00de457d3fc9a6188d5e936679da8606a114ce54513fd11dea8497d55dd0844d", "0x0825f2c42df2ca6927ef679536bdd0d813af3070a5916b259eace7f21438ee4c", "0x2fd5b16f89dfebeb30841632b9890f6a5681caa6622d5cc4fe9d3ec8c7a54306", "0x102fdc4167bfb4a2ae4ed738864e5b5c1f3bfbb46f5c0ca926a791bfbe991c93", "0x0fdbaee0a9aa49649be987495cf7392f4857a04aad29ff25649e0123a513cd8c", "0x0959f84709aa0b385b7d892592d1b6e177bd8a8398ffc6bf07a39b7c0c48a30a", "0x298668206446e92e47d41144e2f4c5d00eefc03da20a0a2a303e5750ccc6efb9", "0x1a798081d88ab9e0bdac032702b4486087383d5ff75c0d68d1f8b9b98e9452f4", "0x23e94711594e7e4c671df90f260ecf63770a76352cdf5f471ddc31e8e0064a24", "0x2dede69a440649fe17322b8bccf4c1ce84b7e051bb82e99b81407ebedbac7028", "0x034762b44e47bbafd5ae3d7f8173d2aa0c1da17291370bc2f84659b4c80f483b", "0x1ea442b0545ba6243d92ea9759a23d73285dd99873e8c3657e6a006a3ce7cc25", "0x2f53038432ee14c75222813f3380f02ea496d77cb9bdcdad3d3c85ecf9e93a7f", "0x19d7dff298825937fb7c4c17d23d53119ae96ed3e397b1df7180fd304461b50b", "0x1e71ffe6e516b57b4822f537f03642b23201e42e5b0cc2239733067ad89023c2", "0x1dc46d43c2a715d565df9e9485f3dfe928bd53f8795c8b03a1862773a7cf67cf", "0x2f5469db95cb8cd752a683e4d2870809c1abeb2f84160ff21648151f7b3f0188", "0x2739dcc2e48fb6db002a2f0d724f52cd1700374816e592104575ed422fa2c6c8", "0x2fc5655adacfbf8103fc58c8cb5e10dd30e933ecfba2263b087a61f3868a4a4f", "0x10ff844496fd5a92965630f5a5d51f67e5b6e36a64b2b51c28bf4c7cab403abd", "0x09b32ad8c1e10c31e9264eeceefd619e8129d9c305303e8ed4dc0cdb522a6ef3", "0x29db150d367a5323c352474bb55f235720943dfd6cf968c34b73fac9fbd77822", "0x205e44b540bd357aa8311f36c792e9dd500a3a49de4e367eb885bbf68862b56b", "0x1d6b67db7f8b7200a82ffbb2bd26b18dbd96a53bd83c5b4264edb905d843feed", "0x253677541389370bd4233f8067a78a69d6e9e596f59e282697837cc1415d989f", "0x190842923eb80f2b220cf15e3f8245e4a3786ef2584fe60bc3e45ca34ea43802", "0x0f25ded631f016f91448fe7aa2d0d13dd40f99722c508085e3148774891e7563", "0x1163738098b1c787b6ecda0692f277db4daf7872effe8a9ec5230d8d988b7bb4", "0x11600f0ed3eb711dc6d3d9a0d96f4ba3ca2399bf9249786ef73900c9b34e11b4", "0x1c8dbf5547d551e31a77a502b1e0589341a2fb95daed81c5028fef4e8cc16acf", "0x2e4a5c1a55787bdc046bee70f4989f8f935de58efa4890d813855631dabc9484", "0x1d6035c010bbac3bcc45493acef7cdf406e2e876eeb32a8851f6209c385a78c2", "0x1d6b6fb9c2f187b1ec8373a18d077d3563dc1e4829c73dbc656340ae0c61b2ca", "0x28480ca625ee02475417fbf4fc651359b034df55b56dc62eceb9a79bdbcedb96", "0x0c004ed9c509fd77f0f9841f39f4fe11ad199277daf0c4359f002bc78d974f14", "0x219b95798d9b2ed2d230732cbaf4ca57b7d04074319d71a739fca9b4c083bdde", "0x144f1472c3c7a639ddae611b2eb5be22ee6df25a859a05292ca8307f8618c3f3", "0x2a688177e96545cb91f9cfbb44a7a14b24376781097e9561314cceec16c78b7b", "0x24c898e032f33d7e0748a544160206258c97865be5489896c9790acce9251e19", "0x10abe1e0df0aab96d5d73704068b921ecc1dcff78d605a13727ce9dd8b0eaee8", "0x2e80ae39eca1770dca35a77a48a991b6dedbf54924618756df064d4b33f2b658", "0x15e39e8f8a4c7f890d0cc707e28a696ad69df5b48fa37b74049b50791a22c272", "0x2d5e7a36fe68b184552bbc452beb476a96c7a85fd2196aa9572208a2c02a5632", "0x1439f040b4c907c5082d330ab439de47b4b99f1179ba46ac20112506a82bc14a", "0x2ec996b247a0a8c1682d1d0900f049d70ed0b01e169e75ec27d769a160e06c43", "0x0124171096fcb5aaa5d1e793c53867134ff1a49c6a90f2521601c4e07bc3495c", "0x253ea269e4499bcb0a140b90cf71cdf924843d35eb286dc03059647f7611a1f5", "0x083c4fab3c20577223fac6f35f8ed59bfe36a4702da514914829bc1ad979217b", "0x2284f546077f31542f71656a454d08bd85e080db4eccc44490f88dd89d191c41", "0x2cfe51e414d5d94c3e2a46358c6b1fb5ead77ac14cf7a6f53b460a7058a8393c", "0x1a85fece3b27ab5241e2a72032ed6e7122414bbee90fb40721011aeb30e944f7", "0x10829aa85b64078a84d4b8b2173e0cacc3cf1f5e3b8f1e1488c1b416bbdcb8e6", "0x0475de7d88dde94421892d8c48683402431ccac412efcd56fed01bcdda39c5d4", "0x02e8264478fa612941193367da01857f791b377e2083b3613a5b243cf38e65f9", "0x13496a43dd1cf974965170a2d81bb480d7161d58b5170f5f134ebe721029ef0b", "0x259a81e924ed46c5441edc5a5a75e6c207f73c343e6850d7aef9839bf9869832", "0x02d2ded3e58eb843eb39a3344829143f506dcf9e74ade3b97f2f0dc5d977914e", "0x065fe7a3cefd7dc775bd96d31e758619ddc371df362370eac98599764bccbc71", "0x09ce956b584caea51c5b57a33d13773b71ff03c31fae9bc149a97e281554cf81", "0x1c135b8055f27736b4c89ca09ccb72a37294e06194bacc54deaea9449ac17c58"], + ["0x11e27da7b7ef964948a332974d07cceea778bc33aedbcd09de222fa22ad0b101", "0x1f60381b83b44a8fe65a0f4142faaafc5fbf55f79133c5740c53f036a3065b65", "0x0fc1e1ac8ad3524ebdbfa45dcc51576548234d0292adfe1cd70a706a1b6dadd8", "0x0a40798ead3a12b78bcd8f10bb15cb0c426bbd2282a81dcdc070084ce78b8d76", "0x2dc09d3357051155987ea95594436b6cbf393b0135f51e2f675ea5f462f4a9c5", "0x104b9241d534264532eda181de1a154dd175ee150f349033e46ddc54181da088", "0x127a6208d98f6cd387b802fa44cab2037b3b91f0622f17084f1b8d8ac9d12698", "0x2d075ceebab54341dc02fb1f50d938ce1dfdcde659955a930ec18f8625f86d4d", "0x044fd5c2101a20be2ad923bebe15a477f40c6039a3dd0d7443fe72758042010c", "0x2b302c8511fbd3702b815564c5399acb8a8f2a8eb77f96c7f0849628e09f9bc8", "0x07cbe339db90599455d1eded1e8a870bd302c92a79b1d0f4ee87222cce99e22b", "0x1326749312c6e8bd4ef24c97c809f78ae548394c94c3df2f28ffa8105debe211", "0x054021406b8d1f8c7080e7c245304e4b7a797cd236dad92d929b223f269780e0", "0x05c0e033b589f8ddb23a9d559eaeecf98691a8d018f1279bf406d08f2787cc42", "0x2508a8cdd450f969b61c749d566c9459a16ead4330e35d5415b12eca38584bb1", "0x264dccc02e574ca7e736da25072bd8fbe9909621fd4f4169b2bae8d368ff12d2", "0x2a938c2540d63615763ec3ba10c1a26001b9f4bf1418d1092a6b02dda5195db3", "0x254f370b85f58a7e4ab27a6203f3a161c1b070faa3185baf2852a75a865a400c", "0x04801896f1268e5abf83712c7414c8953d6223e51c44cb2dcab0b29c14952ac8", "0x1f7188e4d4f7549437f48fdab22e874e71d0a1f18c30106e3dd2721f99da561f", "0x2b9273701ae02d7b231ce443af1d80bf21d65aea616353336059f755edeb68a0", "0x1597224cb8e905ced829620aacdcfac76e509a0f7bc186fb7060196db93742c6", "0x1d8c5a65288346907cfd57a752372196841e6323e96b39da7fd17a82c5e12716", "0x1b75dce950731f508251b86a7e1a5139920d2bec18798d439f581570c1dc6630", "0x2773a01869bf9ad359d5ad8209b337119ff8deddfac6e4ed2c8fd0158ee8f2ab", "0x1a5d47883f24462610cbe7ad0e9b1b8ae5930bd3b9d4c1ee01984f6226515b7c", "0x19827732059461e2073cd90a09ad54149b1ca5909b96281a47b2d9c398506cfd", "0x297c8bf54b03a6f7ff272465fb881c918551bbe984751f3e9f2b30ea37b1a4f6", "0x01f3da36b1ff5283b078b69f5f3a7d4bab15a3087c5ae8a6dc307eba7722e40e", "0x167ced6e39dd3bd6d655eddd2abe6c68ff247d86f9a6a6bcbd41c98d37b4f132", "0x085d19b0e16f0ac29f32da541445e8a8a6db9a7bf45e741f9f113e7526b8208f", "0x04f365f710e9acd5c1653cc6fd8e93cae2a0d363f1697f3ef829f7435525ea4d", "0x128d4f03d03d7097d3a22cdaef6b11f329caf0facbc1a67ba91ff493be9ca715", "0x280210dd41268b133c9fae770b799affd3e66805c6167415aca36eaa02db1021", "0x204ee7c7d4ea06f7ca65faad631e703e0e3dbb59c45b51dcee73b0ca64d45cc2", "0x3042aff09c1765b4fd7365a6dca0f1172666fdc0e549822b03f7388eac33d786", "0x23b78077e751602be7779045861cce3ad318670bb82f33c2939f66d41554c7fc", "0x0f351e14bd3a41ad7703cf9a906bad791a627996b935121e6cdc3bf71292cec7", "0x0e67b0135f71d48596749f9fa8585c3789441022d45b5b4611a507bd401d0ee4", "0x06e84634966d462bbd68c14ce6ee1662769e43314e0eb85e3d5909f518da9df3", "0x1761112f15f357cf96422bb46796f57c2c7d6da40169b8f5794841e8561fc02b", "0x24387ac57313799c7756999bfac495b8fe377a7385526c8acafe14e5afe039c7", "0x1f3c817cbf94302a06e3526fea7b3218a287a31299f0dd162b66d358cdcf2370", "0x0b13cf25c272dae339f1a6f30d43d40f74bc0b938ed73bf16a95ecc3c4996fc9", "0x2c731e62db4cc41c56cd465c4a5e8d5719cb50ae7737044fe4ea859665997f02", "0x0961bfea8f9f2a708f3adfc127fdb17ebeb4a5632a8264f17a494c0f0601156b", "0x1eefb99fe9dac9a91963f112dd357ed51f599b9254e5be2c75fd01a58ef7139a", "0x02ff9863fa2a6cae3de116b1d6aa56a8afbd93c70417b8a0593855a1ff574123", "0x29655fc030f0a0f6dd2b00caba527938fd0fdf41de89b42eaa16ee598fd031f1", "0x2d9fe744f2beadb989869fc205e9487697f56721beb1ca230b59b82eab27b050", "0x04b4c3f4f1c21d6f389848280e6e006c0552451cedbf5ab96defbf0c2cb9ef92", "0x13a8f3f3d0e87d53b9e959662a069638fbdf077024564bc2a5676f0247e8428e", "0x1875c2e8f43d9660e1a556388fd81741eda7e486cf6243c2fe1752f919859b7f", "0x0db7a917f7efc1d2167724af4ea32b1f6a6cc23c1db5abfad9020dbaf5ba5371", "0x01c56db7a81fc78b94b267dce45a4dba48a4288b99eabd50b1adcf132dd4a7c3", "0x1c9cb5a5d0274d9dc31ca07743d1d7b4d416801d964039851f05678e4be82853", "0x02f786dbf83bdbec66ab656694d5348988b8252b4f5a3f4a452a075f60dfe92a", "0x18b9789a7a68183ad384ecf038429f75814593c0fea1fd25f1001c3bec4488c4", "0x28eb1c34f770ab912b55482a946bdaaa29df2b4c947c29ceb7c8a19e38881d61", "0x26e9c9daab62a9f1d6a4c694bb0c6fec274787a8322343c03f95dfe65ee78e81", "0x0111977858879145675ba7f1d70f301294feddb0a802cfa944a75907a4c2ed15", "0x164f34b7c356b9fda1a7d8415fabb683bac61ee70c23573fa72a9d756ba52cf3", "0x163219ca5322b3774e75b1e6f75657e0bbeb76a9e323b7c788a7dd6638b2b3a5", "0x0441594f59c65d1a8576b8fbbab4058dc39002a1bc4357084194ce632b9611b2", "0x04cb005b4d43931c9c4abc50b639a8e6e20b3ca5afb60b06140cb24b7e4a691e", "0x25eb50203caac17c399c83c674cfceb4e73f227228647f9d220e95d3434a04d2", "0x0a605f7fe9e36bb7504523525169c6689cd6d2fd076d7dc11277ee1069316776", "0x0ab2fe209b9dfc7c9007248cb7ca36b4c14d991ab3b8d04a163eb0e836a46c58", "0x0e1459cb5c0add6f90f949965603320b313454e6747af5f399566f5d23461326", "0x045ae1dc4a86d1ec80dc442edce9682a616d26e76013675abb04cca45fce07aa", "0x1834f47c13698cbb916059cbcc88975fe15dd0e9c3319865e08147e4d397a970", "0x2039a1c7335a7e4c7a694b5c5b4e1b44f620960d88933ed5237422ed53189f5c", "0x2a10316f1e66acf32e2adcdc292a350a00d8d5e87ec5dbb66949e3f03350bb3f", "0x1360b91415459da5840edf14826aea05281f973dc18133cee5cbe2761176824a", "0x1505e255267d336a081db6f08a897bf2ba40dacd4ec1d61a990cfaa40f6a5f6b", "0x0350e3020ea30d1e779d9813a0b650977adb1842691e8a364c12b8e458f77d33", "0x0eebbd4c2b0c9b32b82d96d64b0d221a8dbd06413b607ba69f4b9d42cc12cafb", "0x15b2d4b361df49e3444a2404f7003ee043147cac3d1428711f1226b374d87f8c", "0x29c8338c5cfe98df7fd49f9316b4950814dde9d66535ef624e892c35d380b18e", "0x1d7a2627f55aece0cc81b775580ccde95fd10f112f8ea71a7f8dce7e9ac798e6", "0x0cd634c27ab406058abda156af456572de2f5492005587aee69c7e5d345d75ed", "0x1303fd48e2656565e7a16ca8e8523131493035a9721d354fc44d7bc59b727adc", "0x052f5a4386ea22f5ff06ffea6179e58617bc908a3dc6b1e7462819c9c9e906ab", "0x077e3bc5ed1c34ba3702fc0a42c45ba5c714a6b0c10ba2b4d8c2a7aa75959293", "0x08d88160882fc8afca6044904e7a984f85c99efcfe147bacb0b7f1046f953d65", "0x1ce3b22dff95f834c7e5b6326029c6bcb4d5ae4b19ef69c40419d1aad796a189", "0x0d4fd994dbcc15262df5f3c0c9adfec2683e3effbf506e5309dbd8c2b988ab8e", "0x2ba6be5cd79aff7462511ef5a38a4f8c78c74fd049e6b8657cd044e82abd94b3", "0x09767a2d9dfa39e67c95400400da96a192da6fe5c0f02cdf1b9c39dc8e96864a", "0x010521c723f47dc5fefc35bfe0ce7e33d2e045b2a018e1093662ec84f104c05e", "0x144f09b80346ccfbc0865fa64d220d6dbb7b3e8bbf0363e62fd8ccb457bde1ed", "0x1fc0b9932f74b4db56d09315cc6a8e86205276ca3e3b124963dae83db5ed6baa", "0x0776d2d972a004c04a8be7b5f2fcebb02e1a3b1b787036e3514bb8f972c8361e", "0x221d6e560e54eb27665128f37e1c312528be49af3aeecc9d7c56755f076758d6", "0x164189cdfd9833b71c1f8372e999ba27bbd20de62f965ad406d8aee67b88e1fc", "0x1e3e736ecf9745b4abf71a4d863d8b6d03523eaf82d9274526393e103b08a3cb", "0x1ff3d30b3286b988f501ec920b1622d2a0ba2cfa9dfc589c53f639d379c10051", "0x0a50d9824fcc95a9d22bc08a592b1a6d396cd361940abc3f873a725230083a7e", "0x2db50a1e16be63bb63d42de51689d990d2e4721b93a07edfba28f208965740ed", "0x1282594ff20212e8a581a228fb4405f2ee7d34445566fc9dea011d89b202bb92", "0x0ade27c077951cd335ff789b7b4d63ff5d0bceaecc46dccefe0680c0ec6ef09b", "0x27374adf1b38ac62d078fa4e713692be324ca24f2ee43e24eb62adce2f3e67e3", "0x2eff75fa36e8716c9b6ac0acb78da92970cf7aca6a0ec3b37d86e97538242e11", "0x1a28225582a1edd464784b11ec7eff190fae33a61a783b845327642e82fae68e", "0x0e1113e81de1bcf204e51a8cc3f200047f3d8d85704c44f5f5ac6ee862c9f439", "0x210575d20f3c2816b807074e72a672a50738ed0c4fa09b6f966223903a479f5c", "0x21e897f749c84ac2faffa9e264ac61b983f03bf9f337bdba4dc48c5971a14351", "0x1a5687dcbbac62972aed85c50e70cbeb50193d831c0790ee7bbcde7d9738a66a", "0x04105499d5cfeaf115fe0a40d742844e806b107296b306c4d556d2f244e49577", "0x1af9497a7280e1414956e80f4f072e2f26b50a06876967cdd57aece720c6be48", "0x2a0e2d3eec6259b7ce7e0eb1667e8ed0c16cdbfa2247b8bc7e308ee32e2c6031", "0x2d7c986d3d3d3be8c70105e48492160ef85389f1e31dbc8814b0cd3e84ac5ed1", "0x251d1231e763979238b7df4a8c0f5019271de5e4389e84c09e5a596d4e1e22bb", "0x263b8dc03ac7d253f5cb7b8bd922a290675babed6364ae12cfa1fab8c56c37ec", "0x07c59c31f979dba930b94c897ce7016c9ddfc527a696786b7e5e1c1938a2c28f", "0x009f47f021fa65de6b54e751dd5a4bf917bd7574e071c7bb31bf1a4e63af2150", "0x1c160043dcff2330ce441d49f2804832969f2731383e524c8e7a9813f741ddee", "0x0c5b6896687f066b9cb23f21b32c269092cd6c711dbe66bfde09858735cb837c", "0x23acbd7f928bbe5b72a7ec442e6684c8f0d50cf823f02804c7850933b9b70cf0", "0x0e8ae8a1d1141dc07829413847ca857105e5189a65df9ac40ead4cafc21d7ddf", "0x2eca0989f9ab916d07ab296a0224fda36a0bc7a5abd571f3368054da7795e302", "0x2c76ceb7d040b4e58fe06b7b0fe83ea88b7b4cf376296771ec15d12237cd8f24", "0x0c53afd1b381167d73d14ab7db8ea41b9335cec4194b105aab7e0060ee1e3044", "0x0c36629562a7dc67e58cc15bfdce2392b3a1673602e970f174cd6c6b14555322", "0x052d66b614253ade8f74000275db8525f88cb7a71b14df9d8aa4ecf26f4c9bd1", "0x0de6ba1409046058d8320fd0ebf9fc5275f837ee5dec27963db414509f608f9c", "0x109ae0524afc2b1187e88c2fa3a16f6388568b7f8bdbc4b399fc00a257bc1b4a", "0x0b13e5f2c901b454ca49bec29ffcb5da3e13fe237ce86ededc17da40b9045053", "0x0c9a986af2ad58483b553e95c68bbb3b45829ef6e4e7a4ab85f1728209ec059b", "0x0093a4e1fc46b86a210890e741a14ffe41249eb0b0008264ea6dc319a0735cca", "0x01bea7e52a3aca2937549923dfb7e35fcdf8f5c81227637b3015ed1ba712657a", "0x11e88dc0b5900bd29542fbc23832e749bc9aab6347f0bf97cd3a36c6308fd596", "0x138741f5ecbf395997f21f212e76366491f0f58ec195200f1033855ceba4302d", "0x2447012a946927a4240b4713db8d27e130e419df4fbb4d68a1e0f1b95dd366d1", "0x0276193a782f6de5b903945371e5341b9e5dcace04b9768e67be9830a2f674d9", "0x0df9bd68c4fc32c8c064f6c47d517b13888677c985d3ef1f1c49fb880ded7bca", "0x29091c18613963c6cba4f4c0def50fce1cab647a8901957ee2a55305c2b0f8c1", "0x0b78f8ecc6577966fed47ee607e25f21b41fd67a5416de3641283f2fe825c959", "0x2e8f059c9b78f62411b017f87e900fd70c8036be1769c5344eea4159c62b6b3a", "0x03e34c2876a83413029cb7018f657b52ac287ba351f2521738ad7d309d1b6732", "0x13a1f660a87557cecf01b505c1a47fcdd6b52c5f05a1ec4262db308ce86f6b2c", "0x010e9a5996f8e3390b6b786102cad914520a8e93e7ed551b48f3245687f14d35", "0x0bdbee9846a8d67cd9d54f0433279044d85076041b07c3e224b38d208ff48c4d", "0x2381dfdd9bc337d5d6fb861e16ca28d117d586d16d5eeeb7419a661c782c1f8a", "0x0b856bd8fdd6ebb7f0f1ded0ef19204691e1c3781f8a9c4f58511f1fa484fcc6", "0x16ec15959be8357513caa8a3fef0b2fc10b1696b81519b0a2cfc18c913178b70", "0x1943d70c0ec13c9142659121156a773f4146d548cdfd42e40a215b1659486e31", "0x29e5268ac796d26efbc2cb4f98e2c2a01effacb1501b8582ccaf1e311af2edb2", "0x0fd72d28e75be53d626937f75af22f744ea1b7dcffff94c866f3da8a8978e4fe", "0x19ce9f98a369869ec45bfecb1f112a5f7062fcd6c75dafce902ac70ccc0ce370", "0x08a4d149a8a27a2170bc9ce670438eea64d211d3a97c702c1b01dbd3bd5e91ff", "0x19150be38fa5e5fe4de7ebf98d59fc9af1abaa13f5a068cb716002f3a6983910", "0x23c45261101440def1c0c23ee7aaf5d8b15ee7bf31ff7374ab808374d8daf697", "0x204a9542c690fe338feab653e9a46aacebaf2df53e4e905e896414cb5a0cb126", "0x128efd4c6254cd03c21b21913ce52665facd0e9c46f465c51a458124723adf10", "0x305becd1cba07fb742c9528e4b9276d871b1815afaaf6218cb0e758aae5ece7f", "0x0bb14b69696ffb4a46fb91301af32682fee9a391a5372ad19f3a4e320bfac6a0", "0x2f981d8eec9950e39c6fed8079fe44a2f256e7e686a60cb754bf183fc3aede0a", "0x2e38c6f6a7489a54ed982c483a2a7951eb3d0b28e48ddf8b57d2969f78369337", "0x1bd7086eb7150c0dce1beba39a67cbade72b8b72e1c1bb6f0ddb51c13ee583cd", "0x1c8b437f2be3e61671e6b62fb698e8af1872031196a43ffe76d1527b2315b461", "0x2b91c7a78289a7c43e1635e8eecd50ba4c9669431f10243a65ccae6031566fc1", "0x0bdf989e7dddd8d9451c4561ca77ba707b738f9cdbff5d15c110ee7471370f83", "0x0ad1a3217e86645a6cff1a4d86ca1f19afe85a45e74912d616a4d2b430bbd479", "0x256ff8d3f524e4ea685780448f2f8c55b5925342f08f944ac78d4acead07aa08", "0x209d7ab297f5a31258207d3ceda7b2e121683d20ae561c6d460c11ebfb1b6b01", "0x09afce8ac2c2cf3aff6002441b98ea52fc86d3ec411216e3d669b55ce5b8bf52", "0x29f82b1ec02e68c25099f0104815897e33ed9c26dcff3b2c89e6a3471222c934", "0x03cdf7f8fb015f6861322f7adc221ada280021197bdb71f800ceef89ed021dd2", "0x27eb263dbf7ceac824d85f2a75380469227033dd02153365636df044d8cb0b61", "0x1628cf084280bc149a9e3ccbfc5bd08722101ae4a043d33b2f98ae76a9d55984", "0x2b168bfb1e6c4ced6a44fdd5618617dcb8e9c4dad7b04c4a8955209f1b61ab93", "0x057de07094dca307236a6a8ccb3f1720778549057aeb7a7daf8a463ba18c85ff", "0x0fb079650d5ee3f78603c60e8b545313be5e7f7d6c1a6103fd79f100ac8ca101", "0x18d976ed9d44fb7437320b91d3295c8e336e7b402659149b2cabaeb272fb06bd", "0x1edfbbef180142c47c4c7f3ad1e2cc81bd020abfccb432ee327caa22e93ff45f", "0x2510fbda0c1b8256290a2ad3b4519c815f0397bb8c85505af672aeb7da1f925a", "0x14783ce9bd49860f364d0e46defa666d36138dc406255b9200904fc060cf0424", "0x100e00477369c0c6778fe65369744816331bfe377db33e66f63ace31e3b56857", "0x1aea93b51726a8d70439ddfb7e2f8774bde996b72f9cb00cc3d7f2ee2e0c45c3", "0x0b14c0df6b2222d977213161401229763a551b889694dfd30e80df7e6f76cb49", "0x0a643ba72531a192b1ef9c8274ba8eab73fb1a64c3951b672729c60eecac354d", "0x0c36a12c83a445a6979b13a16b87a12bcc635ced8c8421ef9a8cb2839f396b02", "0x25cb792acf147080d3a3c2e87f729c5ebec1c43898e222fd0e50a951897d5d39", "0x1e1064f65448355486dbfa2c2c83579fef6431deac35046fb277b5885b09bf99", "0x26440ee4fc4c477d379980c1834a3b2f3b261d7ed7b913e2950676ed20f87854", "0x300acf3e9a901b9c681b43a6ea7b482cbfc4495dd5125247d4c9b2ab843aafc0", "0x0d27833da8adcc215d9a530696c52693b004de152c6471945ca7a1701c3849cb", "0x1c4e8f6024bb796333f853462a295e0cc16a6098572ef58d159a528cf886aae6", "0x0db38e1071218ef0ee5d77ac780dceaadf1cf79dc9f24d2f3c9d58412b1a5939", "0x0f8a423d040aef0eddd6efc469f4dd9ddd7fe591a4aee3ae3906da7a77f8bc22", "0x09da570d55e2f64c94e3b2e7a2e255f059dd362f796a69142966756fad8590c1", "0x0d7cd5c265cfb5b01a59e4448c67c7addbc2c09b25f078b23c520d78af40057e", "0x2c9c47bc4c332aac15ac68bdb464ae193a745c1351c7d1230b261fa40b95df69", "0x1ab135f3c81fc395a7b94e0b9115359101ec75e76adfa14529759393a1789c8a", "0x30521d4082f58b8f3a12b7c8e41d1fd968284acf12143d85907ec782d3dfaf9c", "0x1b90102210279a42b7f8f26c7bd068dd82b76cd3fa2f330145698a11f5ed996d", "0x2e9ac434179029826cdbc624b3208030d4f0b265e4a8e1c70b89513103398096", "0x2784c3d71d125586185496e3fc7c369996e700ad9783b23f41fb483cdf8eee37", "0x025305428921f6e34da2ab05c3b762268ed1b1bc3f06acdd1dd5e32691e62ba8", "0x1d3006e6c5725e17b5828b5b5a23716f9a6d0a4c867fed2cc2543dc0ac99daa9", "0x168767323e5097bb2fe6682bf6ac8bb5b8f9af071ff2602564739988a3a6f0bc", "0x0a5d80b200e7ee00500f5268dc319e00b797d0ad358989a15d8af551421e1bd7", "0x25dbb5423ee2a7d7861f9982f522b0c3aae6dcfd0e90508cb6550f724d7b8282", "0x25e1b972aa7576ff000acf7ee101175d1d1ef18264415d4fc9f4c5c3362ab026", "0x27a9c670e696ec5287b8b606a5c231ae0fe3cdb764e2ef99ad255231b98500ff", "0x260d6606a1db4854bb358fa415ce13ce114316d871a7a2b90d112ca2eb7bdf05", "0x2397a374f84a29a5ad3798bbce567eb631730c745a7d389e654208eececb28f9", "0x11ee1c616304dccf020f88f6a48fa4072126e64e2796ffba89dd93b3a91f1f2e", "0x055ae011520b4ec5b5a77d3b5f377a252ee98781a8c2944d2bf0ae1867ef9215", "0x17007f74a2fe2b85581af879d136d587cbe18e9a9c3ba1ac01c50cfa2fb8ed4b", "0x214ac964b34b210e03297fecfc88f4d06a85fcf0f15e380f948b15fa1304ec1a", "0x1c2146ea153de11fa480b444285fdd1cda53cc2728a796c375c47c2e2d574042", "0x0ca0af024d983aea8ff6340dee9ec828dd798762c18f06bda92259b3c158076b", "0x012f82ce9da76870a65735548988e6e0af180c6d4b5d98c5ae1ab86c055ca6e8", "0x255f614a333b1375e92526e39d3763fa78f13e535f7eca2a2a7b97ca0d44cf6c", "0x0d0354ad322f5e1dffa7aaeec44429ffc89e4df6081c049b7ed3d3de082e7b92", "0x039f496e8bf76be9faff69cf331a848e9280eda0326d5a191311b5dafc27eba0", "0x1b0b0e8dd862523da0903ccbd518edc5a129517fa698941fdb0925ff03cf5794", "0x221b67c9b923277387b91fd41c7654d37ceb937ee692fbec3afe6eaacf2eb6b0", "0x125249ba3c9ac4c59c1dcdaa6de29ab9ad1480f8b3f020e468608f65bec51157", "0x0264e9390b7b2787c4ae35d9e35360d7807e3414b4077b533b85381811d1e730", "0x1a8dfa17839af5cdac40ac89c5ff2347e70c17706e32688cf7b18e09d19b752d", "0x02ddb274e22f13d1e9c186eb710c2b3cf7bb0378ce46226c1bca058f802e1da5", "0x1ed91d70a1e0e229d8566bbcaaf63b0aaa3236dc72dc772ffb5264c340f945ce", "0x258d9714748ca3bad62b1fc9bedccae02f8861640906580d683f21131c5205ba", "0x28094fb0c9ce3fa37073de7a1261bf0f3e70f6338fd598edaef57849297af20b", "0x01b268245960a242d8d60f4830928fd10b2bd9b27d8a731dfdf69475603e4779", "0x1ccdc2c48249496818618873ace0bbf4ab3a3f2f6497f939be73330ad18bdd6a", "0x10d7b6fd7c71bab6887f51ec5639a447682d7fd6ba710e8fb14f81ed72c71f6b", "0x14a136a1e4827d707dacc928f8bd5234cc327c8a3e4ba6000c6db5ee3b125757", "0x2991208842feb5c9b11c6180db57f479c3289c9bbf2b6d5e639b14d77cc25858", "0x0864276f06cf50500d51cc2d6eedca092f1efd1e35717c91b5181c66eab3485e", "0x01da1115c035901d42d512b03bc2962d2f3de504caec08f18437c90363a5cd18", "0x0ce4c61522cf118b66edd2dddf683b407fdd1d00213f2debf9963b5a8a297613", "0x22822be14736c770dd111018ad3a4818979da22eb522bb3ee4b3ebf4f94c0138", "0x02488c2ef3cecdf980e826af298af3b81ced49000d09ef6cceee194c13f3a44f", "0x22b3bd43bd130c0e2e989fd0633e352805ea72c21441ddb14fa2a4d7ff5b5ebd", "0x0ffea11d900b5c13cd8e4632e92d28e55f4b02b9ae182eb262d9fc054c592acf", "0x14acdc065935230efe80adbb43ba56e4815cc53e1ebbfd39004294d9e376721e", "0x15fc1e7cb819924b6faea51fc1adec10cd1e3adac0d0a32460a0d4a95a03c6a1", "0x0547d1912834376f0035790ee7f36ab73c9c8f41e1c4fbcd7739b4c767622c51", "0x135f9f4c16f97545b9cdb5ceba5acb9a4e52ae255e2a69e22b31145737898099", "0x08ce4af40d7de598c564f0c38c6620eddc9fed826c4060aa6c28f0edb3345e83", "0x21d6a6d971259296ed9b72872104b340cedb9119c4774b5b08ab4bad29c161e7", "0x2abc622ac35f50241f3652aa962d4b045c8ce1b4d3a77c51a5cae9995c6eeeb4", "0x2545b28d54fdcebe42f8a4562de1061eb216272889536260d5f32decdbc4c82d", "0x2854260e63dc45d22afd22d8c9fd8c22e1da68f4173a4028bb885bf7fbb4ade2", "0x095d54e568987ae7c379dce46d678537a26d61558a370609f491cfe778e8fb9c", "0x2ac03c440c8ae0f753a4f633e704bb41f8c751cc463b91976dc63157057cf8d2", "0x0ce597700fa4ef07ccefd26ea346c30618eb42bf9a4b7d791a957736798970be", "0x02c13a4027f4153b3680a29b7268e1eaf78ddeef9f8d1ac0866595cd9503b836", "0x21a643839be351a4f38fbbb173b5b0eb5ecac4f78b77f6830da680ef5aba11c2", "0x053b07c71cd864b2113abd0705fdf242cf3ca016b2ce545cd1877ab44ba35cca", "0x1889c70502e3edfb3f20c8b32fbedaad51fc6ad1caa14755c7edde52e1d4ba39", "0x16866b664aa3f628ce9e1a79887af71ff1bf20d4df6e707d51e05fec7b8edf61", "0x0ab47c201ad315c7220412e1c304b812546d4a3d84d0ff71c7a57018e7dc7834", "0x0577bfc93b1ab50ec622257ceedb3d2f4a5486002f7581c9ff3cd22f3a5ddb65", "0x07900aa352bf959e718e5284a4485f241a74a0bb7f730166c297e448732d6ccb", "0x2635df956b7df3f7de298ce9e18d310907e65c1c96502c693d1be9554bab45f9", "0x2e7115f1d6bb75fd5adfc872613922aa172fad9a29483b4872e5fd21c8374306", "0x28e330b6e413acf334dbeaf1969d566977dca676b4618ac27a530b6c859e5728", "0x27e821c205286813e130ad991acbe2c71de552ceb2cc34ee727666f936b0e82e", "0x08222684d80154930f962ddf78b2c56568a59e5d9da21ae8f063adacc9c2c38b", "0x0ffb7cc3c05ed4a3084dbd743112c05f254fcf9b593abdb82e25dfc5b4db8fda", "0x0d6e11d9b51ef8fa12b034fd87068fdc22f0a4a3f793dc6c9662eb9eb915d279", "0x2c5d6dde18d28b08d919f3981e5f27a99f2c10d9af52677d244ccf6480c6960c", "0x10582dfc5f5399c4c952550128efee21169a4727ed9e1c140b9a22db6ecbc0f9", "0x1c58fda68ba74bd534d519006cae71804c2e6074aba61d95f7d8ac84a3def0bf", "0x271044c8d54e1a643dc46ddb909ff4078e9534e8d23a8c2a1916c9c5c2b1d8cc", "0x186c5e24015fb0b6a140d7f5ecec132b14b85966768ce1b39c20365cd3f5d335", "0x1ef5281243bd23e1a1d3f0eaa8653e2a642556af81664859c816c5f69b1365ad", "0x0e9af53215e2364935a0272589b5c3b0c80af154cfa6cf64969885d37cfa68b3", "0x0c0a5c9bf118a07540485a024f1cf7c7cf0688827f6c1d6d93f6315c62a02337", "0x02752ea3cdf410169a2b9f7d940b9301f855cb888ff55dca8d5fa0f14ccfb4c6", "0x1f484d4e14af3b11cd257eb79fc52785fdcd8ff152dc56dc9f822475289e3d66", "0x18a42e21ac35ebf3034a6b7e836af6ba99686bc07b1ee828fd18ce264f98af14", "0x17bc4fcfe167ed740800167e4d386431ef1bdf24c6128a964c027aaf87922fa8", "0x2fc3b7b410acae015c637749d9fe90d89402b6b50c9d844775316c204bb4a3bc", "0x23050b3666768fa91186ced8876f0c35998af3ee48ffb141b841a792151e8e18", "0x091bb332b35d6e464789951159003f6882fc864a87bf52899711e84d7a696e7b", "0x2ee7bf6ceadb5749612d3f3237b181d839b32c66b51c3e0e518d6196e3fb1ad9", "0x0e5037b387cddecb84346cb5c04ba1c9a7600253c75f28d14c938916803ca018", "0x1556d870d39bb506dbb69cdf14cc083080b8d81b1450048090cadd910ec7397e", "0x21994dd012c107a165f93ad7e28bcab73468645266ce123640cfaa8330db37eb", "0x2da94256d843094dd9bdbc75b6c88634cdaa76e6d2bb2c7a4b9c23260e28144e", "0x0be0a92edc48db09808d50a03956b3e847dda5481fae1dfd077d7821d9b537b1", "0x1d332c7d075cc815dd316307189d93e14f0bb9e201638579cef3fa74568b662e", "0x15a8d58dd7b443b1e047e330b99eb9007b48e5c1a48a65f04c2ba40e136ba98c", "0x15f0ba262ebc5d722d3cfe67bb7d2fc20375faf5cee78716a321ea37907c7942", "0x2cfb417b5ebbb0015efa9458687cd92cac12b9d78c640336eae91934fb36f1ea", "0x0d331b322888532737741c8cb532728decddd7e7c3c5459d830a8ff4395b9dca", "0x188a4855919f14b790002d9bbacc7fc011980e3f5197e53c509b9b04d7023d5e", "0x08cee96a66c1ed7e3f978607c188fb906123d343f4bbf02d00920a66d243ea9f", "0x20b61c43e264decca5db37abfb717521e78ecf25d029bf4ba611426f1a82d558", "0x1b70bea273a40aaa74ced8369d5611aad3452804196ee87a3870450c22c1cd02", "0x24c234bd6c73e17254efab015050a01b7ac6dc82a3354d6e136a94f75a1a7796", "0x2a21a5594707eef1b1070ca39d553ec74f8fce88f64f5f494e3ca2b807a77047", "0x09cdcfd503958b901b3c6dbc1681386b7fd0e338313e3bde4ee4cc6907175f35", "0x037213fd6b9adf8b983606125320f73ec38b1e33deff6a0e719ea82fb5d15563", "0x2be5b55d83cc6fb32ec758e83ec576f521dcdb1da1374cc2ae0224725d6d5d85", "0x1f9b9850a392f6da10fd0088fd06054e43d5e204bae3ab38509dbfa188589300", "0x0968a47a748db23b73e1a1039b2ab2533ba91a12ed80e30afe4754c03ca1caa3", "0x1a624785eae483bd8ef9d81afed0c8612bfe450a124e267dd83957abf6a3dd15", "0x25ac240c7126a642eeb1298bc19876d969d9cb5ed0952cd446eb548962bf1586", "0x27151bced14b6f53383bf4553bc9282c17dbbb8cb47c1e847ea89be43ec167f5", "0x01ece2bec2de7891272f8f2f11fca0c00caae162e3fdb06e0548a1fd905fdf49", "0x27e856df227cff7d93cf1d0c05a10d1849345e99d6956a6659ea11d7d7374c43", "0x1ba8591af1c58a45df09034774a836e315884127d62ba02b4e99157b62b8c467", "0x2f11fa9402c5853bd308181c6596dce77c95a431928d16b85340980da12e532f", "0x19dccdf36783961a18c8e432618fabdd0892cc17cbf38ebfce63a2bf846232ed", "0x1350eca5a8cbc2c53b6a9df1a39ac7d72f0183bff9fbfd01757f08768dd52d6d", "0x230585af7582b6a4dc662070eb37eb1c3578564f80a86702d5a046fe7b251272", "0x052a71b5daed70d11e7bb9ab1a6130cfbe019383dc14f99fe2b53108ef831183", "0x07851ddc73a2c6f97b8a08a05bd1de3dc88e04910bea0d837164f2c574c3d337", "0x069995287feef5bba996cbc5a831ba001095e26b3e6b5e35f9765fefdf460e8f", "0x0a69204150bdc7bc73297aa4bf156b07fa581ba2def6924e2868c7dae84c74ab", "0x20fd9fbd1536a33deacdf27678b70436cb81705e267cdc3bcd6926ad26285114", "0x2eb1a2eaf15db5d578a921d8e77da62f9e62282bbb029f0cb241b6021364eb40", "0x051f55bc0974ccb75e69b79fd695fd54e210ad37034836b401f2f233979d5de5", "0x0ea1386d77c0f896d00ada2bf96303b17f1b4318a7dd5d959f3c8ab1c25dc3b9", "0x11e2fce0eb7e64e488e0a639a5f1dd20f1db91a1cdbc79f47111e0e0148b4c2f", "0x22633874fb5ae4774d1f02a955a7475f8e929ab6749a17cbcb0e12663eb9de8b", "0x1ee2613b8ed5faea8c3bb5f38f8e7427528e52b36a5cd114c8d8465bedd6213f", "0x1b3ef2535d759add05abf42ddde283129274a71318834b561b07e0b9895acb23", "0x24a084eac600612e07a30c5f1651b9843fbefe25e65077f1bbd4ed75e478bc35", "0x049c2e0e7e177a16668e8d6a2831d20bf52c915586b52be3a535c386e2e23fb0", "0x0769d2b56d0d48053a2dbad1ddd11f7262f80f04bc7a8f61dd2c4a93615b609c", "0x1aa20a25e4526401305fb2432c897ce83c4e4daf9d4b6fc5609df0dd8d0c8279", "0x20214d534469f0969a8f57b36f6d6bb2125e2ea61b2126143cfc66f7377632ae", "0x02c25b9f5db0feefc72ea94da35fc305c712e1162b921c9594b8c9b3b9095345", "0x11d06d5cd8414889b209f08264e1f638b56befd0a7ad4d1cb91a87986426f3a2", "0x01118c6633adbbfa1f08b73dc28148ef5008128e94946e47df78e52b53a81813", "0x10cbd0a971243c100cfc3447d5987790b60420664da96477b29ed58159d3c0bb", "0x2d7defa56218b1d02e64b31e0d84fb39d4068e7fef2f8e47c173401d5a01be7c", "0x035bfa1a3f16472ad0964a6603d44cb70a930f4538ab235d5cb1d90e75a8a935", "0x0a172329742ade46e7f37612e637f8a0262620ccd838892f3fcbce0f6340fff1", "0x2c58c487ea60769242d19dd8230a0e10a9b600a055416858160cab8996bd747d", "0x10753b36168ef4814cbce8a92176fe0d0429294a7bbf562599e90138972345d7", "0x05cab98dfb3270bc9f27c6151315ddb0af0b292642297fd763487949675ab3c3", "0x244babd314036a353068b387e78f064b6c3c21a1e4379c64034852528b8cc286", "0x189d6ea1975420c15108f928975eea4f635afe80fb1543ff6518c5dd989b4ef4", "0x2834b06e2f31e1c2e013b589c306629d588c9677ea3b4729da29e5b931727e11", "0x2ea65573cad7061d208bee93d6f72e79dfb7a9b0c58d1c3c43b295b7edbc050b", "0x2a8afaf324dca28c3319c642c939fee380fbb0992bd00c0d507bb244e79f3b64", "0x2700ca9644562122c6ec1339a9ebd06170fd8350ecd893f4c4b54ca714e8cca5", "0x088d20ba63d5235d169351e5ae5382a65d0a0e4542466625c496484e527caffd", "0x1e3b2b692746db2e3221d31c2c9d2af6cbae59cdea2df8c9d61d09cab543651c", "0x0320140e2c3634e2bbc6eabd67e3150593409e17c8a8ba14d6ba10b48f57be7b", "0x25fcceae7afc449cf6fa958d7d01bb57c0cad966b89de9db049e4d99aa35c63c", "0x2d08ac7c3d1ef44252da3c40aaa7dc955760672fbbdabcac988f85dd7f61659e", "0x07723b7f34c31a1d58c5d67e8f0082a117f77b403f42383783ded75501288e21", "0x08f93f11a62858823b57ebe7bb4f2c7fdf0a99ad9ae526bc7565f7fcbed531dc", "0x2505c08966f418cbb7cbf186072cda3478ba030cc08a31d4dc8353f14f5fe9ce", "0x22730c77baceee5fa6c5607ecbebac0fbcca0a5faa48ab37d4f49e603f33c1e0", "0x2866da8f65cef794177ed99ca0e5e28c45e33f059a6fd8db8bbdd83f37b93ba7", "0x2cbbd169f4a32d679b818634b4018a00a213aab1df758cc0e5ed696914d2794b", "0x152d67da16d24a00a82991886c6e1841bb58f19c064618531f66feee723badfc", "0x064ebd9f00d3aa92502f6ddf8fee96e7a247af07493edff59a6473cf2b877b5b", "0x17bf7430be0ed0a5924ec6889b870e3a5ae1d005432e965597264457be3a920a", "0x02d8cd6c4dabfab46a079273c4b789b7921b68909a69dedfb64974cd1228f26a", "0x0616e7fc01785aef16700dd740860e1445464ec05242217c1d7795fcfafed0be", "0x18d309277b33ca481301e0ca3d42a88033ea83fe6b9abe2c2e7d93061a31f3c9", "0x07524811ca357fc32cf3c5582cad662b040dcc15f0afa3e04550687031984655", "0x1ec065e0ec95640ef74fd337db8c6e0fd7a1414162d1db45bbe523b373941339", "0x2471756386b3496c2180e68c6ac6bd0842f8cf2024d6e519a37112e9c2b0115d", "0x15b16796e573ee84ab8676dac041a3d2b088bce5b17ef437b3dcc5965302bc70", "0x218e6f091731868afd5aca4beaf96fcfac98acaaa66d5738014f0139c02ffa42", "0x109fba9e59cf55203fe971dcf32608a57e45aad64a7c8dca57db4811dc17c808", "0x125a6c051a7816c5166bacb3647bf54f12ec2945ca6a51bc9df19051cef9b19e", "0x1b2e6621d9458cd5dcdc30e3eff2ffd34677b2dd8af74f4d742049e157d5ee1a", "0x0ee6a1864ab85f0cc60a19372b13b8d1671821a681cddf68dfd82a0e9acc72ca", "0x2c5ea8b8d22cf4ce55d4a3811ea4ace1daf2127a92c77bb3bca51e636c5dd5a3", "0x04769ebd949f424f925e09d2f1163a6602f26785f701a0f6e46eef91a79b2d81", "0x14ca5631f7309cdd27c353606e8ebbd48b911a239d86b45c5589bd5a9d5664f9", "0x17085e091ccb55cb01d45c2feba1c8c18ca380cf17615edd10d3fdb91040ecc5", "0x2b58062e06097f47843198458a974bc7ba88aaf01bbbfab7235cd990c3ec82ab", "0x05f19742b6b9cbf14b622e55b5bf45bc72639533c18c98b2dd811c4dd677ee49", "0x2af4cba34b3365d68f5b0775bdcecc6ec1f42972af48d64820eff166e68c4589", "0x304ef965cfc0cc4cdea00e9a2b8487dd791652baf6d9810a5efdae392c334ea2", "0x0c6b70050e17d95eaae67e03b820be7bcf05e0e99c40c7ede3a4d69434c2ce4f", "0x152051567b1ed7d6f4d2864eaf1d3b052ec28037ce709adfcfec0dce364fae76", "0x196a7e50cb517e21769d1fdbeaa92abbc040c76404d7144554a4a88b27bd5a56", "0x1dba4d6d2eba84339bb2a7a32f9cc9787264acf687504ae4c69a8b1a296b9a0a", "0x114fb35839ddb57c3a833d40316eeb28e32221d34ff86ab96507ad755c4d375b", "0x152086d1247da80503965412bca5b020f0918e05fae4f40293c5c1356b015832", "0x248f8659574c27b349b97c3403dd5f08fcaafc9f606a59693b89d743ae952fef", "0x212124ced78bb0cd0b708d1f0dda3a8e4f5b42cb3246e7a64ecef935e5fbce2d", "0x09d68a717d8417864da716b3dc29a6aa6e2dfc0b661cc9526b66026a7c9e8b52", "0x1009d9033011387d7b59d758418ca3c0742dd6af7eca2e5e6889ac3651b32a01", "0x1dced90604d29cc66f5810108713c09579fafab7b3175b12f7540f1a03de6851", "0x12d425da9511657071f3700e73d3a357c1db3368aff5148d40d3b315c3cf4d50", "0x027bdc068f23f8f9287c8be55469809925dfe5226108913794b4782b07ff59b8", "0x07d909196d6cbd2091e7b66d1550e3772b360afa4f9646af879002bd20e674bb", "0x2c5408234e473efa7269604e73d12733713a47b552726332dfc58877bafb84f4", "0x0991a9a7548e3c5c4f09473aac60815c6e04cbc7138bfc02d43346f46a5bcd21", "0x0e6c6e47926d2386b0db74b20f6778c507bf92c3fe5ebc26327ef1bc5a9bd57e", "0x01db7d7f599538333bfdc1b9376b38e8cdba27e8c49bd819e08d28e132fff211", "0x14e0d2bbb5969c1e0f86805100c284d8f6f6c1c101e8e7239a38e3c7a006267c", "0x26ba784e04d92ef59d57a171138b2f2bbbf99cebb2d5bac21cd86c8af5106755", "0x07de069ebcd67dd5880d098549ad3e1cbbe74f219b8c53f8bd49166a9725f72c", "0x3028949b0dd33e015aa6b460691d837d8fb9b9d5e70877bd83df0300b4a0d843", "0x0b5f2ccb84db3c03ee4842f663479d9b0a8cb08d3f1d7ed41069fe30120038f3", "0x0f56a30dc396d6c1b178f692530945d187d69c0828141922f2923dfa4d93f821", "0x16a873c3f3cd80fd6a45e7826eca59151c03e4ea8c1777b20b4fbb42d7118f98", "0x227479dd4a5e86e44de806dfff98d05ee2c5148f5b42a5acd07747ac71c7b474", "0x247f177204c1391a4bb0241cf0d084ed79f81fb4049498c003ba1b225514994d", "0x1a7a0d3e02ddfd68639b98edcca6409b511a4c508aac4a3ee26decf3ab74118e", "0x06109074715f90196189de280af6d0c820c8e3862abd69a5d050932f442235f5", "0x112ef9d464e2ed0c3f34862cd955d29628c3116fe54520e76309b77ca91bc2fe", "0x052afd3488a875bc44e73c54eae6ac05cad2d7e19b480f50c2858b8ec5a4dbac", "0x07fea8911b7c2841f4f7bea4f3b7be7cb5710a624297be767b313447fb2a1f9d", "0x253b88bbf4610d15934d7e98f4a1303662f9cf547bb61fa5f1035b11837312e7", "0x10ef8f2a1e54a3e08d4b642a5b584207885166843709469691d3383502834a88", "0x2de738c01f72522b6982c758e01540c6d792040f3ea15285c7864e3bf92c8e35", "0x1869a05c2435f4ede2ca33fad840b07857efde65f8509325e06a06f89b3093f5", "0x044a3c589cff1b0095a3bba218c63c451998d5436243ba1e93f726dae82593eb", "0x0edf15cc47ab50a92e54014b5643168988e253adae6f0551e239d265d10f1fcd", "0x1dde71a388e1a9cb075afd6b6a13354701e041fc3415b5d6b613541d4103f409", "0x13101734082cb23f9bd2657ecbc31debdebc886dcb5a15bbd8b120c8a945f82b", "0x25a3a7c128ac6ffddffec4d7a17cd3044ad0ab308b974260f083c39ff72937d5", "0x0c5a938393016ffa071e3b9f2fe3c58ca3083967a294e62ed8be565724661b4b", "0x1b63a0bee07072dfb3a33c63fd00d2da4e682adadc666db1205326008cba6e17", "0x26f99a34fc19ea7dffe9c6ab96719b2cef9d38d41a209ebe74b51b2f8b0f60c8", "0x1f1884b1cf3fe36cc0e0aae88ac6686375ce66ad770087b66b2d1c401e4983bf", "0x0d7f0e2206d6a092c502ca25b440455da98e69d7fd5e4e205c5177a8a4df812a", "0x184da09fd45fdba360861f125fb5390f5a476252fe71889582cd7b73da98050a", "0x1840781562955cc1a9035f8b1ba651c833b0719fe283333c249c8b263bb01573", "0x02d077d027f39896d9d8b1a619ea6063290da1477d06d6a244b48023b6f3cdc8", "0x2cba8f305b009310a36116769a2a17ff2230b4915e156c43c2b5d9c977813660", "0x1e1c46b068f4807d6832a968be9f79bcaa990b6493844ad724f8a8b37bb7921a", "0x21ad357404bb8cd9db5355e5cc479dc1aa1e48fc6c76f62f5d1ae768a0e1a419", "0x00e19ce8b72c6453c73a3538e919f48d4eee11f6609b60cf430e14b74ceac5fe", "0x0f89d945566a286b7bc63b937036d40fe58fff3b13a6fd1ea7676eb66194d06c", "0x15e6a57cbb53220803c4e91e066b483a318bab0be2119a8643ed1cecba61137d", "0x1c45c8841fd5d4e675a46c9911545c14e9e468ef83e1e7c6675e91703f0e2327", "0x10ea93f02575126c231458b20f4b77480a0f10f53cf4c5b6f1dbbbbfe8d88a01", "0x01bbb7784b1f4971b8b74b714d17266e3a45008805ac742477142767ad0c5ff1", "0x138941fb4f666acf374fcf0190a41cc86f9429386ad7ca204fdc2ca224c3405a", "0x2c8991fb3b6295cd67162631ec3491ef54fba71727c22957740552c825943423", "0x0de66b24c1d4e2e56781bc629c1b3989d78dfad628716a843a32c5db418c7501", "0x0e8b37c16fb6281255cb27790ac523f5ff5c15be286b1e82d973b4e0104bb2a5", "0x0fb41067dfd9ee6e840b88280597d436a0cbd61502e06898cf8b5fed9289c85e", "0x0119c19df693f80a7a7b0e64479a9a77ef4b8eb70d6bee07fbc33ef7acf857db", "0x2826c0eb3ae0b75c96cfc181797f6133d8434b812058bd1887e71aacbf095795", "0x1d138c8733414f701ebcd319a6858178037aab082b804e2143322a87b6477c76", "0x22e32c8a1a9e200d7e31d69e4277c3e679494b1d970e0c79217587e4955d7c07", "0x2d52b65582b83b5d13f288d67ace22c5c51f8a4f075b8e6d7660a660ad5cf6e7", "0x2e2e7048c0a0db8910e0827eadd124a35947cb26064a22e793b4d4ab6ab9021c", "0x234f9d96cf483333c13f5224a40dd495370dacb7b6799e3f9361e2ab893041c2", "0x0bb3e00222cd3d72f5499a2749dd7e36c8e2d55e255fe81d758a107070ba481c", "0x199ae52b7547a3da5f54bd2b9ca9dc0f21d11594eb52a07907759b82eee76612", "0x01a3d8048dad09581c18d1ab2e10666d3eccd0769689d612199c26550f3a181b", "0x1666ba94ac2cb3a58c5cc86eec751353a14391b0e06fbe263851396decc0fd1b", "0x15c3034cd79cae75c00b7976817c5969598916ed56344727b811872af4042e8d", "0x086ac6932de61a9ce418b612502851e06d5d70f4dc3b1e1ed8ea2c6df75b8789", "0x0f43a70c864e7a81e0576bb27764656141ab43b19925a1b4d3a1768bc722b72d", "0x1db3a2b7c6b538ad07068d97508df5ffb34a09ea1f98ed30399af2983fa145f4", "0x1b15391ca85237ee8ea48570d759416f1826aab34ea87d3a3cc3547d17e7dfd9", "0x0263aaa9f9e83c255e67f9a09901feed268df56151e79df345426341e0f38f33", "0x2da84ec38f7707d5d71faeeaede793d990f04e8cdd016cbbf3bd65c129138213", "0x13ae9ded4812d1f4d28d379642ba7b79bb2d3eb81dcd223e8910c55e8f77be9e", "0x25b181c72550002c2b1304937efdc34a0d45e709511929cea060359fb523bf6a", "0x2d141f87778ebaf647f2da27abbe0504d46442838f3ae21aae9074583f6b64ba", "0x05cfb5698f68cf5130c14bfd4c87741a0b65e2c197f594831ca414ff53ef5505", "0x0fba377e6949b3908154085c8457a2980cc5ea3472ec30e0996cc8dd9da31d9e", "0x2ea5bc22fd3e4ee8585ac883e574501215972b203e21d3cac33b4852d9b507b5", "0x0db2fe84aa7d137472e72b0ffbc7e76a76f9224fac1d1b3da6ee35a5c724f8db", "0x11c804a419c47dc73db1ab2682979afdb042c12ce349a00dfeda1c72f0a4db23", "0x1423df99c89efe43c3e80af699fefabb861fe0d8974624dfc1927d2776daf241", "0x2e07c1f81bba9f8e1bd8915787ca74c04607e83c308f4da253140de0e3cb4ee0", "0x1b945ccb17bc27e10a23926ca5537b49b28b63312b3278cd16db144ab27fa3ca", "0x0ae9821243e03b7ea9373b032275d32dd4cbabc93781f36d532b7cc9db7a575d", "0x18f2e62f9e91c3e399358234fa6a0c907c3f3541fc0ce8ef1b5ad135d41c4c02", "0x17d7aee292dba3de1943cf8334254f9754b17ad7a5a2c57230eef7e06c4049fd", "0x0ff75f8ff73a55d486beefd9f5d8bf6f6f9d31b10a0903b24f4a3bf2118f9836", "0x2f8219f3c7c148dcb2f38c697bffd3100e34b0ec8dcf6d7436de37e9dfc65a4e", "0x16ec1ee6a74f79ddd9d142216659d99b9123f7d789019ecb5cf3a043f7d820e6", "0x0fe5612d8e5fe5ff4e224078cbf3907f25078d2604dbf20a6aeaf18b0216b57e", "0x080219777df47cea0bc385242c5263eae06b2a7eaaca605b7ddd32fe0b0cfc8d", "0x08e90c05a9091040815ec08eb142106a1b2c94eeed5132c637cf9c0c40403e77", "0x279d2ce8346731fdee7a49903b7e6ef1362c59970e31aaf01aac51dec7f9f026", "0x117e0047acd22b61fbf81e99cc13e2b9f1d8db8fb38378592d44372779bdf165", "0x02bc7053dc85295a51d0f8d051189da22f32f222487ec9ec39d5a17652d9411f", "0x0790684b4d26b9a83225cf72e60c026432ca5378678eb8c744ddbb6e645fc010", "0x08cea9f02523e9dcb87709812e1f78683f373a33895774491c1d6072e3ab079d", "0x1a28f5548ebe2c210f3610ce30bff1cd5f0233fe045f0da2d2a7061f63ad35f3", "0x1551491aa0e035787242f5bf43519ad561b6601029c56fc863c63474cbc6713d", "0x2705e73556fd298b38cfe6b3d042e4e5f4b457e90e7e8b16a3c9b54b49c644f6", "0x19edb84862a4a113e372e01c3835b7167bd58d6edcb038078de507dc89472728", "0x0938b1c265302b7e4148906fe0e90f9ade375510950d475224a0915dbd2a3429", "0x0435d661e18d8bb28bba1a4648b73af64441623162e5b636ba1dfb7a7e887c08", "0x2ce71ce2431662911ea33f99ddd42227b1477573b261f9d38957f9c86286b2cc", "0x17c75da1521bd3f44b2ed39799b747fb4fd28038a87a50a6efd9bf39060f1df4", "0x2fa18e89595e69993eaa57f71aba15a8bb83e9a86c5daf770794567ff4ff187a", "0x0a97b5f7307b9b6b4614dbdd9ca06eed80fa8ec636008628740f04673cccd983", "0x2fb02323a8db7ba7e3bea78652a3dd50fd90705cb65f2f99115ce510d1ee90da", "0x010984915fbcbcb2c7d051c06a00200823c6431435ff387788b87834b46a645f", "0x25faefb54ae7e8ac9b3516ed44536847045f98350fe8020edb24fd028cb95e74", "0x163e9a85805166386406aec43091656df8a354104960ac7097c85d2107dcff77", "0x2e01e39fdd209edd00393dbc792737828f81d0a25706436c45868a40c23fe53d", "0x1ee6ca0156eebed43a7f02726338c9259484634883e64cb6c34ff4b459dcfa61", "0x25effb4b84c2c0906ebb6571af7a151325c6ad696ac0ab5a7e7a34366a923f44", "0x090185086d0cfbdf941af09f6e85e6c9199da41c0b294c049e2143e2d1bf94c4", "0x196921a374020f2f7cf6bf76b7fd8dbaae06ceded49ff948268d3728d0baccbd", "0x2e30a88a9c1a48deb66bb1fe9232d73aecd2d81976822b2ed437aa9c11080577", "0x18fc95efb840dd52f4de54cd023b0b552d57f549acdc4f86c1635685225343cd", "0x0bd2326b0caaea6d5141b3be470e865dae99d86dbe6bd7861a22ef6e2d95c08b", "0x04de1aa3fb9807b22fe3c503dcb0a58325340ea0b5a50702e62767018655a8c3", "0x279d21657b39b694181d5081827940f6e6e1271a084c55f42dfc737a187eb989", "0x2594a94215dcc6c73d64510bac3b30414abce18cdbfeb509afe6d70d3dc97a8b", "0x095142e3ce6e5fbdba9885833c614bbf459895b6cea10edfbadddb276ddd2920", "0x04f7c712281ecc56dbf8bbf95fc1af4690f419b84130342647be3ad1b6773261", "0x150c295bb04a6280a5cfaf70de3e998f8a42448b7a8ee56d1fcea8c515fce483", "0x040b073aea01b55948462b3c96965e070681ba42d92705beaba7ea9ce5983783", "0x285854aae042c3ea616da7b02a6b2ef30975aaa2a90aeb8713f189c4caa36c9e", "0x0ab00bbee202a51e42ec8fb9b5cb61f9165ceb652b6956c1205e8dd53bea3b04", "0x01152e1913091cde5f38a6bdf0a4eb0ebb501954b721f3859a0aa262cde13f80", "0x2df4a938e9488825979442d85dda528501171bd09b780d43d1b2e2532e8a4d15", "0x1d10433e676c08dc3ad49d71ac027dc4b2bc6f21a2fb3d37d7e9e95819279a77", "0x087e2ac12cd1267a049093f730c2a461aff6a429c231e5ffedb62cc52676df26", "0x0f3769737a44340e6fc9fedbb6b760856826f7c3a6ca8b993fb004118718ac38", "0x29f6d54a21cc0209800ee613b44585252e7c35d3c0a4f00cf18a8220f36cf76f", "0x00106dfd6a05f7c55004c6d0792728985e392d63c6d22e183b76c13cd4ee465e", "0x3024b6653dfd68a1ab85ed24f30bfb88690c50b9960daed59b460331f8e36e3e", "0x2f179ae3fa16736110c2911a504837d71c7cf5d27a4c83dc447a7ea54e9a89ff", "0x057740fb88ed21c6f4ad03ad49ab3386680d3d0fb5decc4dfe65e2c187b397bd", "0x157f8573cc1f9773b3852c965bb00bc1189bc83355c7d831f1c881006d3d2286", "0x21dae9de84c896fb3e060fe467c7dd0b7471e76e961a3b30d37644d20e8f449c", "0x2d76eba37f90108bb9dced3f9da1acad5a29d2a354edd54230afa9b76e4703c8", "0x2041ea40d491d2f1062862372715383db89750828052255b1e071f99ba360196", "0x25b939e2c40c6e075a42cb8968bbf928e3d6a8af8da4cc79c9bfc72d6821c673", "0x2ca8f0a159782d2ab2ff4ecd6edfb287ef6e5a1f20d50cf7a75a8b07605ce461", "0x08e18252ecd58de85a74fcf2a5dfd866d780e8b3f592153b7e7c04707d2f1ffb", "0x0e742fa26b8408adabaa17ca7dca2bfc14f40e3aba46a2d6e85d3e3ba0c5767e", "0x28743cad3d872842ad23dae6978295d26179d81275e52dc30a7af80a3b3fda7f", "0x2b78a47772df0f8005e508cc47a3c2a37059fde340d3886c2eafe79aeafbe868", "0x16994b815229f66f90e88f89e047b4ecd3f91a57dd9ee5e9a56294c2f350af7b", "0x0e0f16cd75041288520edb1897af5ab11b85a545f4d642ffb157f5772129430f", "0x1b01e8e91d773dbd4ac756122f8e79aa9f017da3e15d48656d07e98f9a73ef04", "0x0d1f2525b6adf5013e9d76170afe6f51176a4497c1588c8be575c04e567d332d", "0x0ad15029458859dcffe10f316fdcc134527eab1f97c0a6b0994e2d16e3f45210", "0x2eef79034f8cc2ee04f0f188115c01e22b41d429feb2a66bc239361eea4af45c", "0x25e42a21e65e99f63f05b36cfc485e97e72de3aa38a8573d343f95ce50c62dad", "0x06c62c056404aa31061978613c9ba2a052ef8531eedd3263bcc34c4f166f7c8e", "0x17a698b583a769145e307795122804023f82be37618acdc120d41eedee9d4cfd", "0x0e1cbcc11d65e21409282179563ab3e273859363b0bee9cff0681ce5a11f520c", "0x220b8ec07c64919136db6bffcbacd9bcbc2a560bfe98b02ca9d2a1c1620dd0ad", "0x1f7195b3bf189a997c2d4d7f8d107d91c2ad5352b63d111cf142505c2ea35645", "0x0946e22a5fe1252cea749730aa63636b7f99680f6299a80249c399c38b566709", "0x24785875bdec9ee2dc76560daf9dc2b016472189b7b2a7d7dd99e86329313b5d", "0x24d6da0aff8453f029531e9a90cab696c4329fd05d5bc33ce3e949d2d35105ba", "0x195e3e21079ca38093bddbb11591cdbadaccecee91d44a9c797380fd2b701512", "0x1bff6b43a453e16b2b130323317ccf68c0116cc4e69908fc4feaadebc010209e", "0x073f9d5f52694d81ef62884fba9a31432e8c590087630266a86b89f3c0e9c78a", "0x2be3fe4dab84c18cce436f93d492a73d3335c21a6fb6f3c325c70f27ab0717e9", "0x280f758350e2ce22acc0220828c374113c0a04547216dec766b2669ed6874db5", "0x06a4b8aaa363261c2ba63fc31e73c4704152908250ebad77bd7902e381d5f251", "0x06118135c6b1997f96d30a6196877ee0a103713b91004027410a76dc5bdfdd5e", "0x1a89b2b10aba25ad34445917055b958f121305f7b31489f50eef474494c31c07", "0x2e34c3a24b90fa5afcb3b92b40591c3803921db4bb1475fd94984127afe1f4c0", "0x29f4cd64b7c9daa88c1e0cbe36c0b53840b9241af6be3fa3528cbd8495d89b76", "0x113034f899c9af84654ee734cf5907134128528f8ca2fc627261ade006dc5da4", "0x0dd5e41e4d002d17fd303a182c7ce4da1c12c29e5245a94e678960f79a03c221", "0x09495239a4fed063a3c2928a42413f02cf9ae08868146f80054e6d5ff531cb67", "0x15486ff36b7325528afe532981984b6c06a63a0b6e25b1fb271f63b8ca6e8d82", "0x2d8aae1d082a60db6b3b1aa0b244929ce37c13927e8d61fb0e918f01a14e4835", "0x0094ebb5501dae50b3d868311700fb837a5c69e9bd0900903601616f693545e0", "0x1fdaffacadac41b6154b16c9aa2c8859c42fd8da9083d2ac07cccb26e690c7e2", "0x0b7584cee1c78e903017e3a2e83e815830db9118a5b4779b594d764aa5b241c9", "0x1412e854da8a4c9e0a11d27ff0c4609bd728f2e0d566a56cc2936f370c40c875", "0x03d34dbc2e6f77a1d12aedfa5e11de27cc991c49edfb396ee74e269ef5da2981", "0x2aedd5795046dbc6c913783882d4a45463950d108a7e6910532ba1a1f4d317c3", "0x0a5dce1ec5c7d1991d275f91ed2fea3793edc4afa7d3b171d6ca2d5ec880e283", "0x158e7fc9d1596cf04bac80a49f4a93445b37178a9e5a76be24d6c708cd38959e", "0x08d73061d983610d3093e05e80f0494cec6e6a9752f85e7f604b4e65e6fa595e", "0x2eb16d92356a9ce2c7372015b5f16ab18974df29cf53f17e1f641d5360d7f209", "0x2e9bfb1c072ffa1f1448bcf3cb189e3c8d0454857a93f2db4c1f08f66506d6d4", "0x04da3ae9ccf23c44250ee9f32095b2d3758c3223aab85cd4e21791287baa4d08", "0x164495749ccd7eae205ca14f4882b6d5a9f84d70a2eb1265e7e3619322726e5d", "0x1c81b3933e302e2a23052a1ede80c8edc7a0830fc90d4f967c13e8fa199dba98", "0x0de77902a2da45cf6727a6e8790b4b387d26bbe3d3a10f8f1af7d71be82acebb", "0x0fbc8f1f39fa56f501d218cc4283d9f4f7c5758bf121ae97978a0546b275a224", "0x1b158898ddeaf57075ac5a033d069543ffd9226ec1fc9f5fe8cd17428e9f9c25", "0x10a9ba7d8fc36249b71ce38282c550047c0723d4324859b8f33c07233157f7d0", "0x1e62b7c53f510e60c1ccb7826515c00d62eb21aee00b0a12bbed33f3f0a41013", "0x21e2a30973e601469bd38f69e6bfe5fc6b1f2c546a298dbe4b759eec183997e8", "0x1f4256c012bdb73cc6324b6059b196f6607c81eebe0cefce37fbae343a0db862", "0x283815406e80c945ab6a80b4b7903592e3325feffff20d60df1eecc01c310936", "0x0cb4ce0de05ffede6708a7bb1424540d7811962447dea07bbd6b3e24ffcff3f9", "0x23f9dadf82c522df3d0b41e31a7f6ba53230df9046b8a338d3b37127cbad9683", "0x211306e19fb65ae10286d8b629d4cc7bf2145ab76ce513d4afcb5d058a5cd059", "0x26f18bb09eefa70257d9406c53b1703ed3202ee7ee291ff66b080757c8bcabc1", "0x2d69b46423fe79aa1ca07dc9a2406f2424577e3bfafff58ea504c104ec4f7dc7", "0x07465ba33026ed23dccf76d5215c11ffc8c750a30b5d9d39cb2ad3196d2c7e32", "0x0e4146dee78ceba688773810e5327946ae20f047ac4fab2cc45a390b4d46d64b", "0x1624e960b1dc56e5876ea8b2e2115cdb5f60a6889863457fffaeeac02066dd85", "0x1fd0e3ae2786ca41e655bf8e0247a719ebfdf38df0ef7f012ee5a5f9358d7ac4", "0x2052c36e6b89e1840e6d174c96649a3d2e7b50f2558cbf862a05c36b177696a1", "0x12c7be80bf7ff89d69d62f5c25d1cb829f598187578d2fd1158a47f3dc9b187d", "0x1e71226367cf0e67f9ee1e5bb9bcec098a0224003bc724f044ada63f0dc88482", "0x1b1aefde27d4009da9ca9dd14d8d9c546a7c84e6747a8b1fe2a561d62d4732f9", "0x28fb6fbe80d161b9d19d64c68bfd2467db0399459e4e008699bba3b0901f5b4f", "0x27034c9a18b55f5259805f96d8a1d9b7716fb1c87571f71f137b02314914ce19", "0x2e6ade49ee96d2b99cec94c7ab90989cafd911d9d74f6b969130dc9f6102c8ae", "0x1efaca3d5ae87a5f68d4f3114902e480a9416d69332914e0c3ccfaa25e819665", "0x1dbfa12bb1e7b0cf39195ab98b2f4fe7b0b523c43f61778b2ad38e17b660b8e0", "0x1d21adc595bb3462aa395e9dacc67153a5ac4e2a81c8ba83fe337e64d9981dca", "0x183a031f65283a2c57aa61b93f71f8ea2aa7ea9881b0a4c8a7eb62a99c62a4e0", "0x05505d703f7fffd323dc5679872d9bbfde81a58ce5a2c4fa004a1fb57005b3f6", "0x2fa94b93636e509a5fbbd374f111a54974eae4dfa857bc927d463fd02c665b2d", "0x2f1824efee6b90c7288dbcc4174d2eeb29168ad468c9f3433d183d38fdbb60d8", "0x2f8b0043c7ab7df1252a365a6536b5ee4586d79bf4edd4ce4d4ea1236a77d294", "0x2a066fa811754a4c8df61a3eeee92a7a80420f92541d0dcb06eada3127f4b346", "0x2dd483975bf2124fa85dca41749188c4f74da8127ecefbe78dd972b7e9d9e144", "0x03875224d3d0b40a164746fa30f7835ed6dcbce9d23dc4a3c41e65e0a70f7a8c", "0x29848fee626508de066e7046d93ce678c736cbfe64839b0fe774772c6514c1c6", "0x28a7d8aeabfc1efaa515c8550248e34412a27e7fa6cbd78d20b0067c12567a3b", "0x19507b15686e20fe2b1f98c9a1e495b36ffc24dc149ad29f233961e6415f92b7", "0x0a61b968f505e0704be2f676b267ea44908d929ff8639bdc4144945b0075cb95", "0x10975a7f7060b302abc4d5cd2e8d2b5d330d42b31bd5c8a478d7a76859059f5a", "0x23d1ef3b42d0c153d621634f43b24232bf75c90f73c5bc30b85fbe18b4c89a2c", "0x15b66bd3ea7986c7d2964117894f3c43fe02b8256d2c9c185dcb7f8c63b7aa74", "0x09e46a8cefa89c5ca6a5b961fbd945f07255af54c53f732d32619442b8fdf8e4", "0x0e72db48726c3049121cbfbd1c083459c0a633cd69538cb633b879e4af6c6bd9", "0x16f05309db91b39d38acfc1debd39a91cc444330c3ed445812142016a64d7846", "0x06fffdeeb381cbf39795f83c9d69c8b3accb2d87fd6ce4270f5a6606dd0cdfc5", "0x1a252b1f347d8d894af61bb2f75c65cf5fca1a2211de1f905cf39fa6d384e77d", "0x231561bb687a5aa8aaf7e1c595bf155ad2d93e0922dab327fb9c1f27877210ed", "0x00f8d4030eac93ec6da79f6304cda6b04be32f036e80b42addaa351e7007913d", "0x2f49ddf565cb5324e9d3dd48bb57022ccb7b479be123e003de3f2cca6cdc80d2", "0x1dfee8987696c32de30440637725865531f9d7c3d76fee9811656a435bf0684e", "0x058217bdeb3065546892cceae218f7fdf3a43c2383ceef12387fc29d4dc74380", "0x05f842392a9a07d4c7d70f1ca1f72b9e3b5cf5633e199ebf54ba2423560d4f55", "0x188b0807b79105dcbd5c36ecc676c2fee603aea072b7712f2ebb69b9d1752e4b", "0x1103f6ea09cae621ec6f695e07929a36037c52efcbb493f10af13cdb0055548e", "0x1a40f8ba3192f0c929248b4aed619c81a22f8a0bf03745d15372be437b0fc08c", "0x008823b7625f84a5f5c9a8891cbf3dc7a3477da215200ba420e51821645f9d2f", "0x052a494af3ecdef5031d87994f264905d25fc6c6267b6f7de4435bc6161f3f32", "0x0fc8cd19ee31da018d0c6c59856e6ba369a5429231113dff4c8e53d50f1577be", "0x0bece88708ff447f261035600d99b11389aa0725b446c9e8d54a02e8ff2de3c0", "0x2bc2fc2f7c93245f1f5ed0ab6c4cdfb771544f8dfeca02250d9ca1bf6dc2ef92", "0x22b16f8325f2a2c69907af42680101e4f86de80d901bb6970310dfa1bf805fd6", "0x2782823d5188cf5d414c280cfd8dec816ae7ff36c0fdacd870ae6449f25a6cb6", "0x12da3c90acc4189b45b06a1f741598dfb2d9c24f459120debece5c5fe23db5bf", "0x2d81a5f9fa4173f58f754643481d08089726bac7bb7078f4111b55106b5adf0b", "0x286dbc990140046e1e2637885d4d2904875f0afa51219ab2b758fc32cb600c6f", "0x20e7a3674a066766d04226362e73219b54ca6a4258260375e8397f8fc115197d", "0x2289f3227f4ceebae0c1dc514de4c642f15314eae937b39a3c3c12476913fcdf", "0x213251e30a761990f27fa1970426f9d44a093dd04524016706a1180753aa4616", "0x091655612a93f5be3cd31db248c7b627a2df2aafa1ef69f7f27659c13f3019ee", "0x1af60faf34b05755f1941195b02e6463bb42df76c12b10f14f8b162506b8d5e9", "0x21b41d0effd2b0440c0d3b70123b7731903bfb46db3c7a23acff016eaf107fd8", "0x16a0876c96d45b59dde82c8f1e1022c5cad31638c4e38cece5b7a56c408d84b4", "0x185329f9e4aa85d49d42a62ab4f641d62c5fdede17015a7d79f3164b690f6407", "0x123f208db0c4ef54956335d16ae7152534d2d8ba793d601f15524969639ea3e1", "0x1aa5654278de22380da76be7885381c1784c80ef4f4bb032acd13b09739c263a", "0x0955b8a1677a5b6310ad8e0492e82d1044a14c78ca87d1e30e0d7f3316ea6ce8", "0x0c7fefd4edd4ba7d92756b5173928904d18f9b6fe995a575f0e6a6e88f7c0e58", "0x116d188997eec6a1e2af2aec8a5db1ebc5cfa588fbe5490f08ded1503ecafb06", "0x258d2eed2c2de759f0b394b6a3ccd2d96e28b10018f3e7f45393ac8ffe947ea6", "0x229de8c2965aeac1aa7edb78fbfb5d7fb12e7fd7ffe6b9b3afb5e888349a6c44", "0x0b1fb0feafe98d6cf6372170d4c595adda71702c0e9d41c6ca1a03d7518f83ab", "0x285a05be9b2dfd8af2d0f28f2e32f5cce6b153d880d8acf6906780ca636c4cbb", "0x1d8240e9902394edee2b76099db03d74dff9185434f3a4e4fe8575969ce4f295", "0x2160be8233ce1b0b331989349ec4bd9b12486448510831e6414678b312d57f93", "0x2929b839d44bd2b3fc5bf2cc815ee7910db996cd5b5dff426c8f18a5adab52fe", "0x07d0d43c3f633701e5f0dead5516e94b91f97725e46982d199de03345920ec08", "0x0b99c27daff90cc053b37132622fddc5fd52bcebac1270b1cce378a7f02393ef", "0x2e952dfcc924c08102cca7e9565eedfece78965083b853ac1f4128c7f3d78691", "0x2190b77f963391066d6d26f3d74620ec35e501376b5299cd3f7e9c23b55cca5f", "0x05be919c52d2f1dc0d0b0d161f7ba7195510208aaebb5dceb0815f2a91168652", "0x0b4e4b3ca8aa834622cbfffb76e6f30f9df997dcbf93df22a7becc8ff9a0672f", "0x1620522a88c3b531c45d51e5363f94f9333582e5f6ee1c3cb76408d116144fd4", "0x0f442ea26883f8e188715f5841a690cb2b38e479d8ad7074e893ef19e3c7390a", "0x1a855bfbe80a7886ad81ddf0e7bedd80c1e0e4d1bb03130e03035d53b59ba710", "0x06a93868612233e3d6098de0b8126649036cc14b1ce3c7b19149a17caa20b66d", "0x0671424962e923da926612e9c0661665c4a67c524267c45a83dee528130d4c44", "0x0b119799f6ee67e2775cd4a71a8c5d455b82426e00ae6cecea32b5f4483b6d45", "0x26d468d55dc31cd5ea1416dca0f7ea5190642b77cafa7741f1233213796c165b", "0x276fcfe17ef821818010494be0aed24abc1a41eaca531c7f5d2f7129eae80325", "0x238d40c836db7215bea1455cc92b6d73f5100568d71a6d1e81abefc18c21e93b", "0x064c4fd1c50ef587dfc7dcaccd4ab7ad5c7cdb0230cc8e0e34d76ce399fb49b9", "0x03718669f16fe30adc38474a75406af29431ecb57f3db1ba7b66997b07b2a425", "0x19f104f90bbc03762d621a274a325c49f5073fc50c47db885e9456662421098f", "0x2486c93effa24890bea4ef9ae6cb9b8f65fd7591bd84d535b760229c0ce27ba7", "0x29ef7d3ea32d9632269fb022937c78a91d7bcaa063a818c5924b7b92d01ecbf5", "0x26d91e7cce1d8deeabc8d7c549cbb1beff0c152cb8819e8684cf20504a0252f7", "0x0248d08993b5ebb254ec885af2a38d3e415c4ad154eb53616b9b09c3934ad167", "0x20ae46ea2b701d379bca7431dcd231d5a0538a7df6d25dfde9ccd7dd02518db0", "0x0a484d6f4b86578d49193e5c0248680b9614950d8e391f527df0f478ec51db0c", "0x06717f5b869d2656c2b35c01e28c56972b04bf97eca77613e5b8ca92bcf84f3e", "0x03783c713038e54892dd2a76fccf0119a329d633ac533e811e511817c4c4a350", "0x0f13bbfec1c7fa9b9412355719d79deb7376afde0da0e70e2cb31f752e4f9d34", "0x251adccce5317c9893770f1694a37887cfeb26f1faacf9bfff6caec93a6182a0", "0x0f825a06fc69017ca9e572c732e7aa8595be6f6caaa1fdc983b9af1284f63dbf", "0x0a3cf2fb30ad2c7358975d96ffb895de8fdcd61f74ebb24d3f1cd6d251eba933", "0x0251b2e061b12c56019ec04c54d7446c13bbd7df46d1fd9123d6f91b9bf77a42", "0x2951702dfa126f50ba6d0463be4ca34e12ec8de2818075fb043ca471bcc2d379", "0x182c9f08809a2953e6465ccd361b57ca28a529bb951a355643b7089eab715698", "0x0dea1f640e09dcd69fb450088cdb061df4630db6292f1d6085c11d5ae6b6f850", "0x157410ebe0e8a0c81ec70253bc16022ddabcce7070c509e78aa1bb6f49e17c6d", "0x117b09b34738397c6163ef647d60969d6f797cfe1f4b4a55b59490aa6ff558ab", "0x15737e5a5b31340f4aec578a73d86e4da61cbd4d1a54bb5fb9fac3678a762fe7", "0x196b0672513f279f5db200d1264c03c1ec5f0be000255a3d256edc3eb713f115", "0x0bbdce038ba792300cdb18e689d2e0678a095e69e10a3a56bb6f2b18c076f698", "0x08e4fb5e144e2d867c55ccb2cc02c666060be0ebc3f6faa98b40974a53dcdac6", "0x254cc53ae8aedc8323b546a40516f9ad27a2ac1afef9dae8bda7d56a2d6baa68", "0x1a2c40f1984dd2338de7281020ad784dfd936ca376a8bf3491ca61cb00287204", "0x0b02a14f5ed5fbe30f98b6bbee9ba25f3794994280c633b7dc03a3a9bf532100", "0x15228b44db9915e56aef3fd0e965f2bd0581663dcdc77e5b6a9869480744160e", "0x24ef8fa23231f34c98b1e19c0e2b2d2532ea1048f0a45c3ec605cca741766317", "0x25cd05a9267e21e2d0b57f22fc07ca332738a6e94fde2ec72f766b7bdd4566ac", "0x0ceea6b6d86dde8d6313f7d6e5199ed23a6636984c8bae0113adad98acf71272", "0x2263c0701b49306df1d77f6f1a14726d2b6ef465bde4b950492ea402f9014657", "0x2fb656f4df02841248f98a4630369337e443d1816e16a3c1f084c38f005ee10e", "0x0e6f9efeb418fa0b4016757e12e6414760bcd4598e641d894aa245c6f3a96619", "0x02496c73995124ae0044151bb698f5765f8272f388d7b512ea9436e2cdbb8314", "0x0df3c49bc65b7087becb1940994f1cdcebb16f4f21121a3f662679e361bd695f", "0x02343f6b80186e6caea2ad4df26c37628aaff7131761a180f7ae28b9fbb4b312", "0x276b8652e6133ec164810dafbaa40ce8fc3a30f78266d8e7c61b2fb0be8546e7", "0x2bf09a235c89febe7e56f002df7b004214bf00da1194018467909ead95ea85fd", "0x1ef9064c20f83e8c7581b609ac572bdcf4b6e1fb368cabc0dbff08ad95b73e73", "0x210b418e297eee3da4e80b3c937e1906f5b0f55dac023e27646bc1dcb8cf8e83", "0x2ca9e6ee5998c2ad06753624075de0771a7d019e89a6d6f76aff5993665beebd", "0x174ae2a5db32dca4d56226575f1e5c4fb0ffea7ee7764b1f51ddc7f5256c86a0", "0x1862319cee8de3ee4d638995f693f324546a5235d22952cdef52040d8bbd9025", "0x1221906c99798cdeb66c50f140b8b579e032128cce09179bb263390ecaf9cd49", "0x084dd25a4d141a723b29c69cde8e0bbb53d031926fb0d14d09137e3f8a122f1f", "0x29341ad04e73a6e69d3ac654d4450a386ed2c7947b01769ed324d6e331381411", "0x1aab0dc965161f77eef8d0fb4e72e46bfdf6e3d718eac4e5cea176339993dc08", "0x1852c126862b742ffe3e568fe27ace0b675fd5df36155a66099985c700d26984", "0x026eabee5c1a5c1b0fbe224177ac7a16e8f0d7b48c4efb62eed96a931202f0c4", "0x268b607a75498aa86a1eb65db5fa72a54b41c3e8ed9ca5a707d76113bcdaa492", "0x10a5051f064fedc0bfc0ec7b6be56addf94d1077ddbf456a180f3a9bd5029beb", "0x2c27938ce4e1e0f98d5e53359bceca5a9c22066cb3dd0f765471dd85ff641214", "0x060390a2034599638ed0dbc2903cecdf490f1c20d605f62b7f95bafbd367a3ff", "0x2109e7dc4aaf6cb2a13ff62bc3cbd0ebcd3ebdf022638f5e480d010beffec7cb", "0x0106959e10ce6819bdaf48cd5c19432d35ac8a167282b44cb0a6703eebe3ed2c", "0x276acf8bce26b9321591bc588392605b50df7f766be90c8317a19ee93c8dcb40", "0x2625cb1be09ff63c5e0340798d10b774c04321d22340e5ee8d2cc4aea3dc924b", "0x175223b56bbc74a46feb991a4fc55f02fad1ac9bafc75c76ca3db3a69ddcff22", "0x22cd6e17bd1426b13e742213606f1558d5619bae25fec69be0df6c31ea6b9970", "0x033307917f2f058ae6295611e36036aabdb91a0fb9f3a4bad3e6afdf283b1836", "0x0c74e27d536a6274a8ab91df7afb9d4ebf944c68157c4135a81993632ba4114b", "0x11b2212a08cb877ccb3b4a5639ce7825ef74875fb213f0761369ca5d87a9a809", "0x2c8c8d42080e2e9615d4c8dc0f20c3c3005dceb1697d9623ebceeb638ba6eef8", "0x0d61124d06cd75baa08d463b9a3a3a1cd1fa3bf6ca508399111e206dc19f7be5", "0x18a8cce9e7aa6df3d5eb35406b0cd46b87e4b08f8fdc991e91fb5924a07340c0", "0x01453226c75742b840fb71f151e3e5346648b9a07fc10aac31485d7c0f071a80", "0x0eb05f52067935d0b5517addb97ad9134f66b921c80fbe68548e0c08cfb8e60d", "0x17883a0fafa37d03fbe3da640fdcdf02fea822bcf612d7e82e0217d38db4020a", "0x07516cbb3f67dbbc050bd2ec21b18bb9d0ea9971770595a85c4863633b0e19c7", "0x1f86ef9471443b26a59da67e1c2a223e457baeeaff2ae9f0090c550c30bfe2d3", "0x0b84ec6355cbfb43ab69709d4fed906685f02613d9b48612f38cde33c69e9f03", "0x1ac016b40d30d26723c5bdb4e9d2fc71a1b9ef8065cd08ccef66ca98ce789730", "0x10b2fa89de4545606176a004568cea6c3381be9612e83815467cc4bfaeb585f1", "0x00bf5674a5ea1ce6fd4cb75ce7f26710e510639b34354e53ca2e6631b404d5e8", "0x2fe1439993bd33783ba21c5ec1f28dab97147a3e8664866dd04668e04c0137b8", "0x2f403be7d38ca7336768a3a9c7f656692853628f4378a74a52df4896fdcc4034", "0x0e1c171baa0ba3e825d242d1d70454b833c3e23fe89e7e223d48decd8817db94", "0x172fc861c822a0459d27e0783fc603409f835913f73b71d51ff31a62f6e4fb87", "0x1bb9e2454a33c3c08cbe31dd75b33d9d6642cd9b0a978c0251f5b91f0823523c", "0x29293f8422d4f96e3dc694f4d99846ccd6cd5b4a78662625efc72034308d4c3a", "0x29b378f2446a9a31f37d475c830690532994edb64baa43794e13f1d9c6949d13", "0x018a82c74bad8aac7b761794760e090acf55a8f95556f2aacfc20fd98c19616e", "0x2c1fc04ded87e37d9f1c639ced48dd8c9e46618cf49218637db54755921b1644", "0x29ea0e1e015e5caeb3ff1ce6d2772502e7778bcfa3dc0377cad7d5efe674b2be", "0x2a1753c6a4c7c43716ce3371f140a65903d228d5939dea928ec37968610f3349", "0x02d94aa3bb5498d0d77ef1efc5950519b1029350d4746394aa68e8526c09e1df", "0x08f269084ee637620a11780eabd8e8f96c2b04b8db6027ee88a7be850485dbf0", "0x03abf553fb5a4b9d5093d3b5f898a111a4261c2419f3e055060dfb45d82e7db2", "0x1b9d84d189c5a22bc9be2926623361fc6be7c714d079536427fc7a70bfbcbbb0", "0x23afc200414f23e7496b4046294db690a60bcf5cb72c41a61ec7351365c885c1", "0x26a5ce6ea63bfd9e6e1a37318938d4dda0dcd5fe9d6c2acf1abdd27ce1453799", "0x227fc0412f71fbe4902252237859f0b8a694990316918ad670c3454ef255f9ce", "0x0c6b448a7deae48afbfcf34cb758d847568f75d7249dea4da09a90f96c672bec", "0x218c92e39e62dfc119c4cb2ded9512dc217a9907a9a8b0edb96a275169f8e9d9", "0x106bf92a017c308f0f726df3d0515aa6feec1c18020c380333cf76c25016bba5", "0x1f283fea17244f043b7c35ea1e71931649cf7000692546ac543a65b18ca3adaa", "0x1fc5f58e5a06e1c70ebf3fd2a2c8dffe7bdf2c2c179b817fc1f41d1a26ee7dae", "0x22d0d77f0ae4cd9396cfcd8a27a246303cec70fedd54beef6dd86c91938fd560", "0x1ce511212d8688537a5e039957276e9935b3e8d5bd47045c6d5835108eec5f0d", "0x1c83ca5df6ac477ae74236c49f9309ddf52a4290f9c7c1d3092c113012d1c3f6", "0x2e72da0e1d1d1cacc95f8a913d87a10688af0ad11294b350cee6d128a97442ee", "0x0455ee8e7552be76b8e7c2597d97871d6102b49eb2cf1ddb6f681b7e05b0d0fc", "0x107863daf4cac318dd06ab14f132159794902e3b8da171b8848d3eda04e6c449", "0x0132abaf80e33ac48982da9d5d2fe91191f17f1910fbdc06731717b6bc63a9d8", "0x134e4567b290ed94c47b163fa304ac8d14f00f9e26375f6299a846770f4aac21", "0x0e6c1008a6d6cf304a1dd9e6194a360c1e9aa6d765a2e5328a1be2b5235164fb", "0x2f8dbc0f86cd3308a3d598a9343d638a3c2f56e9736e91f0f77d508bfd3828a2", "0x1eeda9a9c6d8a03c3cd9efd1bea7e46840d6c70d7fa82e085bae67347e5da7d1", "0x1e2bdca3589d22bc09315622837feb89557205a87714cd8011fb26dba1ae0fc4", "0x1feb959112175ba6f2abd9d6051f3aff32a9c4da459fc5f3baa166b7e01204a5", "0x1b6a4bf2fb32031b9837654b1fba8aca04b6472a91d05f96320bb5bdd3add66f", "0x0bc2076260db797f04ef2fa60c6cf5d014d897d3202be009fc5d8ea60dc18cbc", "0x039a5ff324caa9dcd65b8c44bdd1d423b6c02e4050ad8ae931ade6dbb2273cc5", "0x1e50c1f7a5bd8a96614ea267e0c22039cb4708670638b16e4c4e6b4ba088ff35", "0x24315140db1e03d34a9e890d85fb3786861adf648212141be6f031edd51b8c0a", "0x012cb6f35a18d9485c72a073c4f9037dd664d98d011e892bfa06df8bea2bb5dd", "0x149a528e7303119ce066de9da4177803d774e3f1b2c6dabe9edffb3951481615", "0x00990738ffecc6f8dc0e6b5269bd1dde74c6f6afd47779a119d8c963d5b65d33", "0x15b319e4f51ac8931ede6542ff983cb2ed3bf30772e681bade4cbd64659fc741", "0x1553343f95b1ff226a6d8532af3e489d305a08e8d5c532787d351a5c30b426f0", "0x124d40c154d4454d10e254fce373986e8a2ca1b43dd221b55a8fb8d19c5a2314", "0x08632672fa4236aca43f4dfea0508cb6d3895dbfef58c5f80f65ea0f48c17a03", "0x18ed4202e081efeb7107021aecb706f76f7466e5e36101fd92674c690bda36a9", "0x22b62d63e4daa7c6674dc97f43d7ec63fa9cfe047ead601eba36fd375d840091", "0x1f76ba188448c2dc50cfe2ab65caa6462866c5e31bca72d12cd7dc1be7ec16d5", "0x259b4968f9e4c3288590bb521b2bef5f3bb1b30a728acd45627eba45d73260dd", "0x1a1af2418b1ecd4ebad24c5a54adccd009072a2b7edbac04a0803870fcdf21d1", "0x13c488efb576d98b2f58c265a0d76d450c74c0105d225a6b111808cfcf13e8f7", "0x2e0278933d94b8434c52a364e5aa39d4c02e268295819bb0a4c999b15fe36beb", "0x26fc6a0f560e5781202e95e5866e679ea3aa4a76cd8bd4fe67550bb4e6c1db59", "0x2d7ce0354e6a457ed5d3621afb91732d02e5c99248786be8ba0c51da68fe9488", "0x2de1db6dab7e00b81838596cce66e8bb0aa26989a69386ce5061560f2693cfd7", "0x2e306809073d4a00babe836e6fe48eea8e4fa13b9932c928641fabad4944f587", "0x21b9bc5ba7bde0787a20a8aa9ef9a17d56ae2afc1d7bd7a2ada77506d16b66f7", "0x037e12238029fbbd0ef48a32577480a4d9f663ae39a0e3b6c6ad0f8c3914c711", "0x062340efa1a3061910fec854ff5fa9037ddd749d9ffbd5a6280e9498bb7b9e9c", "0x28e2ec6752d07e64574e4e92409b417686f725127f1564d1646c4ff44beb9dec", "0x1081db39ef41961aac8cfdafb8c4785a847ca3348a9b6eaf5a95e0ff4f3c4541", "0x0ac03c48add6876ea8b8475ce16d306f80aea6229d08b3c986662fbbb7a22370", "0x09941366c57343c57df860782d53fe8adc2a75da2d0f174364a055aa7ea07d8e", "0x0dc938da60ab9182c7121c8aa04c1d955c1f729b7ea6bbd8c37ba58b74bb4dce", "0x07426bd12d4769e174840d4a3a64b40541e85ed86dd21ff5d71be7d7eba930eb", "0x2ca34511539337cf05471caa3ac6604ef0705b3d2e4874db17877f6a3a2d666b", "0x23db1c118022fca90dfc9a2abf1186aac09c22372b5a6814835458d33c1833a9", "0x282b59962607ed3c33a9f9a36899a24920768e679c43b319c781acc020c68558", "0x1cec719a4e8fdb8383d544623cfb2ecf5c087ade03a12cc202060ddf23baa05e", "0x279d1490e81ceeb73bcce66e0a6dd98443b711ab1317a31ea2c17718c534ea41", "0x168da84ebb303fa935e70e85321b10b67607392561e6ffba3364f888d2a715a5", "0x164c7be1367b220daa33b5f8f637e9200c43c9223fd71c41fb9830287caf3502", "0x1c09e997ba2bd1625852c50e1d6abebb6ec6c61b20d1cc91b015084942162bcf", "0x2ec385a2ef59f594167112b1491d5877520634bb30d00dc682d089ee458336c5", "0x0cfa9efe4507963806d38e2464287368238b2f90e13ae6e520ec5f1e5da1ae83", "0x22f8fee0b3132a953bb0f4d4acc621b5a534403d922f9bf5a22e512cc0c103b9", "0x14473dd3650a7bf140743b43c5832193823e2506c60db669d71c63fc7cbb42be", "0x16f91395a42f68a912148920e5b9c30b536e84f15ca7b509e115e33a08df45c6", "0x0d9f494ee675c250cbdff49cbd786036d899117513b160c0271c8ba6faf30da4", "0x0bf36d4c6fff4101d84dd07cf6d0a9c9e5ab346d5f14c9185af3db3e13d697fa", "0x23452880a7cb59d393e5980266f1e752c686b57a87f041f75ef1318932577905", "0x305f2a14df1590baa4d62da4c168423625e3e721f20c0c21a0fb45ceca2f57f6", "0x1947f0175a8a9f3be490f60388486781533ac0bff5b8730a08b435f8a3407acd", "0x2de417a960b566abcf86d9abf49ad41144c3b6110deb4f47ea362257345e748b", "0x13b887c77592f15dae0d20fa25330e19201d5572df244b98dc2b03bc0683bea3", "0x097b35dd0b26e46805e16fd0490ce0560916e49ef1ebca21dabb4abf2c445370", "0x237a037ad96a360aed5937d3cce38ed91e58917b143f17233bc2d75456dd4151", "0x18cdc0365a8dfabcfb0494270af4822c29a6d9124e8c190a9c0b4826774adb46", "0x163428bf966085965901613a1cded9f28d62a74d001e6684bc3f6a47a8b3bf6b", "0x1dae0d15fa1822a5e59b940d81b3af27a5bd3f7dd508167ea6065b6d49c332df", "0x02add9c74cf22d1e4927fac6754b5cbcc172d4adc75ac1fec05ff8fca0d977dd", "0x1edb562e5b4376324a0b647b90690fe3364078dc212de0ad36f5fb26d14f67df", "0x301dda97e290a7a01ec100e59b59d78fe4021973af1d9e7d101231ed8fe9a1f7", "0x170a115e7fb0e76a4edb05ac080dd24ddb5c27c0c94b3b36ef5e6ec54eb98da1", "0x2976381557759f24da99faee2d6c5059bee939a66fb321b9fb2a609e4d47e9f4", "0x0858c7c6f9fec77cc7b6c2a5df2dd6312140713f97cc7c8503b4d7c6c81effa6", "0x12557c612c0f7718ec112701d8057a1dc301ccc30b2c8475a46bcad3514d39a6", "0x1ab063ffdffa216a5bce2900f37d819f2d75e6f00c67ce024ba3f832de64dcb6", "0x28493d04672068c6a6e94f79cb1af1d4152b823546363589499c0a141bd2a580", "0x023ef9e5d4688380ddf2c16c0d08a831237ee58775797c67d95c6e0d8d8af345", "0x1093325100722f8836caf30bee53c0ef14eb18410bf915570b327ffd9464a5c1", "0x1705479cf3bdbbaf78d4f103d38eb47413c9335478003810893f35259dde8d55", "0x00896c2b79cfdda5eb7f6f9ede3ab477ceee2b38b068174f15a3b37bb8b348e6", "0x149f13bc3e4e2b0515b378a2747dfba90f7d5c7731e59e9f36bde3f04eb50cb2", "0x2e14222448be50c068ecfebf70944b593540c7295ca0e47f2bb7f63199b8712e", "0x1e22c0396024ba3f6db181ac92b229a5187187033b138fb27a1cf7f6d87050d3", "0x2c5a1e453406fcda5d58614353f0a29842fb54af88ec4b73f7778563e05e07c6", "0x2d08dae6f1fb7e0250a660e71b1cd31853c227b188d87559216af1c465d8abee", "0x215533a77776226664118a8081d87e212a1250766139ea38c769f93ca2b4d7b3", "0x1cbbbb26f991a721c7bdf835ec9d1ee0c074092fcdbf0079e4df3ac287292edd", "0x08f57bdc3c7c95681f005500427ad5399259f69104c22206aec2f99122924e8e", "0x1b45938c7b84f0176f33520321500d1297cf97aa6699664fdb8ccd75ed39912e", "0x2aeb209044868ca84487b7916e6b4033ee6cbef726e269d0e916ac2cfd3fbade", "0x27635bd2ae7e0cacaff0b836596607a792403dba10ac3706c9e11977403a3eb2", "0x22e593b7a67935027938149bf16fce07fe9e726055fc0cdd07e7eaa17fe57301", "0x1795962bb5100236a183de49169d6b83a427edebd23711b89694da83cbd087c7", "0x0077fc8d7cd9adbc283c25321bf37598cdf28827ed35707cf4887fce4707c437", "0x0ae5b494d166f6a32442d1d0bd59b65ecb7ad8f6571b77486a45ecd827dd1280", "0x2924229b6d648184fe63719ada7041e69272cdfe895455d77f01634a8b892c87", "0x051e840903ddabdbf22103674933685142981c0852a6ca6af0c8d15b068716d5", "0x0fc508b7e620bb6c47a85971bfcbe28df62619c5309685d0a0a6adf3c8bf2f84", "0x19f7621bbd659b27d189bb32010b95fc2bd877392e2b56afb558ac5fc0f0f22c", "0x303e98ee35bfcad292680a7956e0b932f7c572c0a131adec5006d8f298b721bb", "0x1a78253e57f825b0cbc742d87923b27c51f4a531d1235a8a901d997e31b2ea07", "0x15e220939ba64b3a3ab29debf3b0884a4c4385a74d845e20e3449e7fa2f39320", "0x160486b6e621dfa0e90123a4e43fd69221ec1b0ec73d196476b504bccd290b94", "0x2beeb42404db8ab5e279624bacdb614b21b5ae386f2c2a34a798feca76311006", "0x24b407500416ffb0459b1db9740670bdb8be8adbb4fd5af8fe9c4b5ec021f0e1", "0x07f5fdae988285c49bcffff23fc1123baeb103bffc97df6839a0c3506b7c042b", "0x2ce9b5a08decce4b853e67d28af6eb4c755c7bee8190d7806af042759a399503", "0x1daadc911c3ec3b8e5f42cb123017f1fbf16e4aa2e32de94b018128845bfd022", "0x1ff80b169617b7ee5aaefbee67aa64bd64dd14ed8edae148f99a16e3f2205651", "0x2aff68cd38d188b8ab85c008f300c50882498b5068d3cd3b82b5ae023bfc6ee9", "0x114d0b3f54f14de45cc4db5a1feb1c4750ea0247d8f24e8f6f472d92eb7086df", "0x12b607578c2d349b69e0f756850dcc21258f85ae8d8caa8a3a021cf8d02abb9c", "0x14c692ebcd07fcef55092bbe950589f47dfec7ec4f3a42944b0442690795a054", "0x2229dbdfb92ae7eb8344eb56d746d07067637d75ffa439edb3d75a8b08199f20", "0x16f4648ac47c197fc572f58351e4b00773ad9a2bcad04ac0f873a556b6ecf6be", "0x12d90d55c8d3ec184dd04f5c6aeb639bea70a7e3d013fcb17437eba662122ff6", "0x04e2c49756b8b5ac26af9d939411caf87f15626ec4436deebc7dc0749045216f", "0x21917d723a33db266b07f81948955c45dd507857e9e5981831d35c56dbd0bb36", "0x0d13b46aa1b41168f81b4d236512268c23e7bfc4108948b5e9f3a5f5ee0c2661", "0x17bd731275d602d17ca1b8ec47cb12df1a4bcbb9e3b02a26f86a08b2eef1fb70", "0x0240ee601a6823ec698a4bc774e6dafc2f3d1cec2c5c89f5bd13629bdc692745", "0x2663ff9d0eaa6e910593d11022d3c77b877a3bed8d007f6fc207a8ad75bf252c", "0x02c45b53fa72d7a0d7a244ab3ab0b41fc40e9cc38cbbe294e8c84a72c7c3fbe7", "0x10bb8a7531ab05d22872880f96834d23a31937623df3fd2953885abddd1222b7", "0x2222950c8a1ccc1c2122a353d1482744d42e61254dd653bd25ae69d2ba79b031", "0x2c3d3eb720537d2dde7bfb8ef6265d26c9d6d918e37f2e97030fbd6b04457db4", "0x0539a696e15198169314296de56dc874312e19e5b3518ef5d50a72cf98a30895", "0x25e2a5fe1f155a2eeeaf50d01664f96f7d6772b108ac5c4cbfa5ef5a1fcd5ad1", "0x2f5d3e87df6904abd454efca9cc30f154164220c9e3fef27e1812e0870b90fc5", "0x0dee20e4731c0e7542e4e543e8be6c2ede71d6eaa821596e4fc9e68e89dc300e", "0x061442c13b9d1fb339615cd8afc0bc9e11be741cbfcbd2b3a92194034e9d2e54", "0x23a56185e12d6230a0ebaf7cd4a01cd18410d3d2ca991f79af5716fe22993123", "0x03344b7b9adb15a3b7c3d64fe1eec35342202ee3c4a36db2d49e81e5174235bc", "0x284b751ed61d484ba2b5940a1a1ee1ec536d392b113d06db4995b08ab661e675", "0x1701ad26a42de77f4d58a4c8191f9d4730309c5f4bcd0c6dc3a0aab396340820", "0x27cadda519a8370108d7aa6e9102f6b29e8fa2386cc0296593f2f63449ff3d4b", "0x2626d61cb110bb03b32712d59f0e3b1b2f5b9059eb994807b267e4ad261ed696", "0x1cf3330897c54f25f15f5e8b8da57bed0865f3fa841ec48441a9f0457915138e", "0x01b5bcce9d699e55a490d3d86e8c92c83a7256a7feb9fd8af6c84d68e148f64e", "0x2a175105d15ba3fecf5bcb2746b3c81fc8ca468d1d4aa999fbbaa8d8112026ef", "0x20a2382295eca0a61c888cef81115ae0637d7ec792d30eca6a0f298a77f9b26b", "0x051549bb9adbce26e4b218b29ca79e221cb691c9ab5b2786239ef8126bad2e51", "0x081ca5349e64d60bca080bfc534c8b30b18bea4309cf02f44c71185fe688e079", "0x285a400d61a5cbd6ca7baa7c3c9aca5503b17fd702e00420bce7332382c0b82d", "0x04e1bf8c955bc3c8708262e3ff148bea268adb662ac2459479e6af2e73440b21", "0x0bbe19ac4f5c67e9eec32c9e6b7dd7bc8059c91f501b2f26a92b30bc268b0b4b", "0x2724ac58e1ea4df19e6644b8e7b7665d9248d34ffbbf4c4ca8934c608d2e8f6a", "0x0446788d95426afea830d1a6ca8d2d085bfb4330cb2514dffd60a9ab70fff709", "0x0e1ecf26c286c86abd910c2b37ac40bfc0e65cb2914269a6a6aaec5cdff5758f", "0x29a267dc9f3d12d601a849148a2449103f25713083b1611c386d7d0c05ea4ba3", "0x1dc34a60e783b5daf42125586ea2a5b49dc2cbeb9d2b90ba881c34ceb99d2d3b", "0x2b9fce58534bf4a486c3220f0ff9026f578ca9c435d8321024d10eec82be4e5b", "0x2fd9c97f01054fe61ca5e07e3681c1dd9a9d1f8ba630dd24ca5a344c3d666d19", "0x004e6a7146c2ac015037f0a82c1bc746bfb469cec9fee37f1b708239f433e647", "0x0f5beba2020afde73013b7efe0c1384762db8612dae058d0f849c7383c07943c", "0x1c5e1e6ef1be1aaf4b6e0d32d590dc5b249e1b1bbcf7d05d3e60c63e0a18667e", "0x095675c6e1e8f6daa8dd42060883a7e9795f1bf881095e98497d33fd5c8cfa79", "0x060093cc9e1f54f7bba74af718e19a10f033198c22d21f3ee80271258099dccc", "0x2c44a35ca8e24a9f5093ce1cb92c8d0a49c5337cc3601c44e4f12e044ace0dc1", "0x03e89623477c5f1365bba16ecb1a8a5a70e3d5c83d50f30715a4074343e68f68", "0x1925fd586e678334d1618a7563499f6b4d001cbf3afb202328435f2d49cf734a", "0x1a187d62deb639b820168e8b725a76c96e556a6e90304a1aca7f1971057719bb", "0x17238dde447d9bc6cab663957ff54c74b47d53bad425dc3bc11482ad4484aa0e", "0x2d7a0593a56bd337e7eae8a984181a77465891cb699d069efbbce87113570291", "0x278387c4eeee6ace12f06531a312b777895ecb43495bf90a740b5ff258a733af", "0x181ae209709983bd903f41b57eeea056849f4a86d3d79e12892a45250e01f478", "0x2867934ebe66c335663b038c9622b41cb6bf88402c049e91801d416d73441a68", "0x01651870d1a0d7d05a218d811e464fc4767e798061515e43be016c6672b4db55", "0x0f17095f8a2b21edd50126d275134f29cfb911a7846d5cf2da795be0c1a70024", "0x0f29ea40097b34f39d01cd889e6319731da77302171713e2990e838edcb51ce8", "0x034503418f27ccfbdc0ee2529112d5768087367386315b530a2d9a052b608901", "0x2da658aeea1db7b2066cc982a3a4a62fc22eea96a956b8c8d4f6b9f169bf34f6", "0x099891e8f2205b9edb734fb0bc6c8e14d4cf2eb7850a5496ffb44dacfbee6877", "0x22b28527a9e27d65b7d9d425f4b2f4d57bcdc390089d3ab210cf46373565b251", "0x24ac41c21e032f1205f48938a1ba892716ae8d4c7230864b86f3b75576d249fa", "0x0efde17c56189b5dc8dd3fc9d4796eefc7dd52347c0dd3ad06538c2cbccd8601", "0x01f321a1be55e4b41c5d5a9985d450f6c23a2db580cde1fd17df1ea16f393998", "0x1284635e8aa17e34bab161fc58a3e85ec269123593797a44622f6bc5b14a028a", "0x18403a5edf30cb8680f7eb86264aa0efc6422ea6f34efe55f9783bb6bccaaf5c", "0x29ad7c5e7c5ee93c961d4b670c2998047174bbfa7edcfe28b2b4d19f3c95d995", "0x2685b8dec7109c008c4eb559aef8b289648738087770d65a8a4f61d933309ce1", "0x06d1a1bca7522d697a93b448ac11d95972e2737c9f6da9789408ef4a701c03e0", "0x159f8629446b261b17f2bba98679cd215ff18a8e22a0addadcaa084ca728be2c", "0x2100c1605b40e1644c527571d1f2a268d17a89c1b0274fde3c1856768e134361", "0x14cd583763c5aaa5965a6cd810d3aa708ea1b01e865ad84926b6dd8a0c297f3a", "0x2f9afdf2575f844497ccf724cdc060155b29e2f452c95006bfe54d4402068272", "0x0b6ce3f06fc23b61e6949086a27891cb2132730d5d976c4d036c7e5aa960ecd2", "0x2096a4ace19cc7c0d94c97584f8bd1e1aa0f38a05ba444b158c0a4f33def65fa", "0x1742909d20f9f17efb5c6ce8b23f6b85f7db0e01111ad80e910da7387926bec3", "0x133c486c3be9d399176c89777872f6f65cc4bfa41a00b11a2b07db79541a4d9d", "0x060b5bc9b94f45495d6e3fad5ef7c20c1d304c3d0b5dbfe930c8ae22233fc358", "0x16c0f928676951faebb1a97f70dd86bb2439c4fadeb26028d69f33107949dcac", "0x0457f42dbda7cb38de3369bad13b68321762477158c3d9b2edc65731d2b0c43e", "0x05bc53f4bf388b5f477d5bf8c5de1e7f38ef0f94c775d737dfbcfe40a7fcca47", "0x20d057e30e2563d7dbc5d2641226c6f6000bcb549e7dcdb9b7df819ffd10bcdb", "0x16f0574e7c13b41c5ececc36f9590719c31f29435a736c33ad9ac1afb9287583", "0x1b9629d5678b18eca5f9c5244adbc287bf1b1a89468e549d1765835db5fdce7e", "0x27d80f156488fd903d07d2c64460dd644d47db5973d0c736d914e3fa60fdbb1e", "0x21197bb3fd8b66d8735019cdd7911cfceaba63b49dcd07910e48c993fe79d950", "0x28f5f49728da96532a66a2d377eb299de91cc1d78701d44a0a5a5cc67ddebf9e", "0x165bbce0d62d6841124276f53cb28883ac5e7ecc12d12514e2feb2e19b7913f5", "0x14937807a2d9d72d2234699c5f3b12f1b72e282b216fae910db56f68cada4bf7", "0x07142fc4901f0e214ec4c74f1685c35b0485516b7b827d75ea1b801e78f0445d", "0x2714d6a77ac0ac766c4da2cf468c59fcc7be39c93129b9d927c2abd6843bba53", "0x1d3110379d97c5ca70da7b048a8bc859587af977b5fbb83eaf0f951b1db2cc69", "0x122f9b480060c35e6b1b0bb0212291b0adbe2719c660eab107abd5e632e2b96e", "0x02815f76f3eeca94b8f2c42982cf182c937af5efbc802621c4ad9087603e5b5b", "0x228acef677466bbce8160bd59c938c5d3400c24a10d1a3cf145519ce1397904b", "0x2f6f0800c73e0b58c4e31639c1d98e57aa1d7b38f24198ddab4d3bdad8b1b1d2", "0x12dcb00b96e9729e3e440eeab56d23b49592c8d306826ee18efc8f7fb11fcd3d", "0x14c934fddb9e93c1b539ff3c72692317d0c365fd7a727f2b0d40e0442ee6cd82", "0x1f5b48fbb10cea0ef59ad9b12483ed7be5c601513b0ccce1cda3a80c45a80c62", "0x0768ab8aa5cd040e5ee5de5261110d22bbbd30c0b5d9ca3d2b075ab0b0de8f38", "0x2b84fe02c304f24fadc1edc0691f5bffb0501f7be8a381d099a67a9b7a870347", "0x1827d1191b15dcf51a200bd968f5ca9cd1f96c3fd79edd645406ca0cad18251c", "0x016950a06b92b5485ef759d0a43945c48231b0ffde5b2281ef87eca0180bfadd", "0x211297da4d70cf7d43f3ccd70a88c15224cf043f6faea68a74d6fe282a831607", "0x0a181217d1315fc3fecf5e801814b4060a742f8186893db95f39ff21721e4d85", "0x286058ed6304f12c9d7b6053e6d2279d34a0c187f029810854c809486d834444", "0x2cd0a562132678f5f840cda24da4d3060639841f53c603b1a7ad459f81ddf9a9", "0x21ce26e8e7c83045d9e79428cd905ad489dfbe75cac1fe58540867c86ef30135", "0x014addc67a9e923ff890ed279b6a29656b1145ee2a213e3c067578c17758c517", "0x0afab4df7911d1154f9b5b9f9d44d08c2ce948d0e92a06e3a466c1293618db80", "0x0756ddc46866ba28ae20299eac58c3d58d07c0c68f84fed9cbe306a0b9a00228", "0x15ea177d8bc1f254c3d290e72d8ebe6f9e5f672ec4fa5bb53bfeafbd30c41227", "0x12d41992accc7258671e1ea6167ebb3dc99fe6275c38f12fb7fcc994e3263025", "0x0570a07021e7f0c979ae47d42f9e3e371249eb2a583b7060822d834e689cf8ee", "0x21b6e9c4d6dc7798292e4900ac89f5ba6dddc3d27bbb50c45f7ef63f63e6d70a", "0x0bd7383dae8fd3f1af1696a4973bac5a34a01c54adc73f1aeffd5f31f01fc1f3", "0x11a866fd59e5ba1d90c39c5a4a415ec8303611f3450d52f0487aa7acc82dee9d", "0x2e330e0fb2955d8473ad9e1ba6233fdaf44fdd2fa188d4a4aed15c82979b33d0", "0x2ec61414765244f6b467c5f24e442c939c04c3811b99def64d52b1a4f17d9dab", "0x137a770838d8523704e776827dc372e55a90f20ba2dd51320c0ac783b023967b", "0x1d6ae5237bba6b6e32a89f30200200af5dcaf294019868e4e152b332765e0c86", "0x1f9037f9189a53ad5773c913e88ae7910fd020299ac394ee2e4d703b62fa69de", "0x2c6012259c33281c77d02c61bf2b4b3db3b33146557747746c9db1eabbb7cf7d", "0x1217df830ec5644575209a75abdc35fa606b271775f46edb7b7742b573d289eb", "0x1d39b721d48d3be9d3d5155c58c545485e71d003f19a9fc0c663fff57f8fcbd3", "0x144ef6b529a19c55c07e41d2859d3df72b0f756026d79f32eeb1dae57227c237", "0x2d266907d986d7e07303e2eb45b6620d01644cb8c381ea3d1738d7674728efd4", "0x1b31b63b9c97363652e64ce04b844efc6a63b122f164fd3d2f87d49d4fb0fe66", "0x1a8c452a31afdc62a25380d738c6cf4e5841c5620dab19410228094537ecf537", "0x0d9d810fc7da5931c7a4907976b7b77fb68ce7fa860435910ca346aaa8b2aca6", "0x15e7308841e82cb44ad00ba4aef9a4241004f8adf496819032375a10fecdc8a5", "0x2e17f718ae9f7897e72b481f0c779a84c41bfacedb13e09530a7d16fe355f765", "0x127e7ffc6ff8ba194c9422ed54f61b63e58c7ae6729280d1b6e1e881d4d02fa3", "0x0c730999ebdac150b6d5e7fa69d47f090863fab10d1949911a00156d328593f2", "0x111418254b9d16ef8d649c5a2fc4136ac5762191ef61f1ef46d35ef199f92a27", "0x00d0e3232f7be8a95699b9bd11508fe495e026daabb9efc935ee7c4b754bc846", "0x25130e977ec4f6beb4ae4dbf64f196f48d60f80bf80c8d5f228118383790c927", "0x0cbd22ca70300072163ec1b61ac95a45e959f6a6843d1f7a8fef6b5b290db4ca", "0x0c4e5c71b46e2663bc89392eb5775c7769c080551d2228d8103e545548b5812c", "0x0763b55731d105220bdbbed3e0f3d8dc921b4aba2d5bf2d5995317a39d43a3d1", "0x2e578b9c3527502c2cf248f9d25e724b252b1fea5d30b96840b142b066acf145", "0x2d7262bd89e73f64f7850e56ab934537f62cafaf511614bc8869875e33a69381", "0x233e5ef397661c73433fac490b72a375f31c6f6774dd69330033873c59a8db85", "0x2047881d542bbf974b9e9e9201453c82b5744730ee78d2fc226bf73dc724bfb8", "0x1392e09d8e3d6943778f5023ac577ed58573640dfa8cfb2261dee56f020cae02", "0x113ce5641e8c08401edbf8e40a58f7f198486c943d988b571265da3b80098b29", "0x06fe34aee96332c0dbaa756704f0acca6fd488b7a1a424bc50759ad66df3ecf6", "0x210eeda90df0688f37ee7f4db012fa7051daafd3d4e62a8a75aad73ca0c45808", "0x28f55311ca526e39e26e38e2065861f3cec1e628de46f4356441c8ecdb716178", "0x0fb3a80a4b528a8955142e642194ac4a64f5b345c86e0ccf70250016052d9532", "0x1f678a57a75775bbb3ca95f5dec0761bb71ab147df107fa75f43aaf930aea3a5", "0x073ee51a98aea4e9ce5ddef9961b599770e580dee5cb29161bf81c0aa74ba6c3", "0x1236c1a9259acec50a04f193506918990da1bcc9f23bafc774803adea417e9b6", "0x169ab9a5835557f518a17756db5575e9a8273112f54b1f63479d261aad5d780a", "0x223dc979f2833569c24130f59936a05daaa49b610c7af1df373c81ad41876f07", "0x2a7e07c42b264f8847508f7767fad20b7e85338a7cc7b8db9cf0615a614b2a7c", "0x2d374c9ec1482f4d7b0cf45b5f6ae5b09f9b4c5e0d3e428646822ffc583320b2", "0x17722a6c97af3611c31e2e9c8a7c1be2cf1b1e67920cc61925228bb6b1719fcc", "0x1bec21bd2b79bf0aab824d2c73439bf306979950789c762d3f246ef172665c6c", "0x1e4f5c4c15166b2b0d0f2e1243ce5e4d7df0e4086f1b6c13c24760c23b3d2b94", "0x1b266d6a03fe6a667e5bbbaed2407aca042fc65ff587a37459242e347da908ab", "0x0f82ebb4a3a2d9c061231d072974da7867464d45a092c369337d6f7f38f19d4f", "0x035f0f510df053ad98d957cd63f2c511acb8d63f8ee734d9b9cd9d3cda717c55", "0x239e2246410f90abaadc256d0ad649458d8a2f3a98b680bdc8648328706e59d0", "0x230a64e0e39531bab69e8378bec5ecd45dd04f7b91a264d4b852b17050a2fe7d", "0x201d93592e63dd8ed97eda0c1ef8f54ae33556e80ba51ec6c7d4ef5376da2669", "0x1bfe78c50d0b855aa69885e63537eecb984c18e2c9ffdf6f76a0d38cd8aa24a0", "0x3029708c7f3b5bafc5c0ddcd865d174e1b9ec7126ad730c124274c5627b8bfbe", "0x15a0692e27780cc154dcfb7bcca7d8c69d613ed71ac739e88ccad5311d419393", "0x158580885b4521fab1f59255bc74ac46dcbc6f67e4c5bbe3c0407f6e79f99663", "0x22e542709e136b18fda8d1c59e5df8a9efcf226296ce6b99f0c5a4c6d8c5bf53", "0x000984d184c20909b189b56d89e1fe31074b711b106813e31a430f9234845fc8", "0x260bb2c2f561af7b4bba3c23af14460e63fef91913779d6ab8780093af2e76c8", "0x0026e2ea372b49821ae56bbe19786ebf21c4326c188c47b70f47b2d120765cae", "0x0b6c4d9d36fac30339d96876a3040224baf38b59f96fd0aa02aea30ae1a2f4d5", "0x2cf5fc3d75ef42b5b3743bfabc21490bab9a8bd9d38286f8d6ec65b3c13753f3", "0x0846aa6aa21f18c74000f044143fa266ff1e7be7bdf600be16ce4fdc40ff1e62", "0x002f8d0ec8cf06bdb3e4c638733894d5d0a95204d648fbceada053acd9d3ba40", "0x1ce8ff9b74b79c4cea0bcdd58063f744db9630f3bf5963f1cbdd959f61126f87", "0x017d79111e385452e615c442c6ef083333a8a9e08628bbe1e84f4dee795dc1cd", "0x27d064dfb09c51348c9692abe74e7db7d899b06d63af1036ab74953c08b3c55c", "0x146874a68df33461692546b88bc079d85961ea462f0c4817e5121d74e2bf2f53", "0x052b6352c27d080dcf5d1e50b8770c1bf6cfde559b24e7dfdd17d373e9a94852", "0x1e7438946d79cd191bef0f79ab4f9604669367572252eb82cb0f3b19d4691159", "0x04709da1736faef43d616d59fe1010c92e91e1410e5dd9ac376efc7386702426", "0x28381d4a02a8a55fb06bb696c5e7ec20b36362f885b753b1ddc517db813f62fc", "0x160ecf90b4e27a49d3f40b2cbe9f0a6ad7fba8256b9a52fb4cbfff1507a47113", "0x030e521d91a1e1f8836f39b27733745fdf96d0867bbfd6ccaabcc94735a4704b", "0x2b66af33183aa4e53cfb665216f86b458fd3e909d9a3b03758bad9e44657c43a", "0x1e8516b0a2276dcba92d8b88d6fd8f9b04d61ab367a21058ca5bc8a752aabb53", "0x2b2172b73311ff4eebdf6b89af516d2ae0b8ab75b8adf8044eb7e20d511826b8", "0x064c2e0636845a3b22912c8baa94c39e14e7df6bb6d52cb8914521bab14371e6", "0x1bd4f8967e443e8efe5a18601bfed7d2bd47b34c60dff0ac964d6a4eb059b417", "0x04efc234a1736354be10620eadb0fafbf030092e0f16f539eda958274d543430", "0x2f42fc1f05d90dbce413777f74a353c57e8e6632d30e28aaebde88b878df46db", "0x0a3fdc6b2d46b0047731f5994f193b35fd23e6d4d4906d0622be96f29d9b5369", "0x0a9a381a6f2be5b71450314f356fcceeff031aa46a27c92ceced2cebb547d960", "0x2bf2a0d3ac00be9e5bc060a39053d85f4515d3ecc6ee6d9925c557eb3ffa487a", "0x149cea4acc9d345af9baa0b0aa9dbb3a275341487b4809a972d4ca49fd02cfa0", "0x2ead343a42b0ea570e1b35af19c93b0c25f50f1503cf4a637dbb9bcb58a0bf21", "0x1c12759c6c33c9cbf6ad891adb1cc2ef432de342518651f8b1577394d7527edf", "0x1619230feafc8101f6bc79b2c7204eb8a8b083a38c0d4bae74b31fcd353d879b", "0x2bdc4bb87fececa61ace09b0abe8b6dd75cfaf7ba591f02eeb5635808ecdb46e", "0x1d833c7135d27610e6972fdf005780ae41f0f98e36b6251978b6bf95d7df6a3d", "0x1ff7a459526e796396fcca196dd04f81ba3401fec67b6b6d83422e987782009d", "0x2440fbb4876cf36a771ae13594f31b06f3ba1748ccb06f3a16a97f94d8d66b28", "0x10e5d84b11ab864879fed067da2804f75c9a75273911cded8bb551cff3ebb3e6", "0x2e56c1830fe663703064d0f77480bc78b4f1d17939629fea2e9e39284f3f6262", "0x0a099027ca6f5c10087a2f4b38caddb366b98cc4dd0ea74f08819e75029f46f5", "0x1a97468d8d9b841a57dec26dd4f17af8602de695fc539d284ee78ff852949904", "0x0394a6458349a524f4995c77b6b7f9ce6455a2162f1374383187a751a908358d", "0x1216cf8f079a098852635296432f576a48c6dcdefaac70bd63c0f86d79de9591", "0x21c53a9ee1d8f71099fd185abe9772623343b8ba65e3f969ab665cc58c0a6003", "0x0d00e1ec990ebd5225c709906332ec218459d452a34560c000a4141fe92a1275", "0x079036df6b30a36b4f6a52cc876b33ec8cc13beed3e49d996bc31130e9942fd9", "0x07316c90d57097c21407e647c1290a42d5766d43a8f324733420cabdacc16580", "0x2caa85f3b8132001bb0fcf4114d84dba8d6ac61c96a21f3195d74803857085b3", "0x1a5b32a122696df0430fce233abfe21fcd11dd0731f969f95f2e9243fdd98df5", "0x1d46a76334170cf0b58ba0cdd75b31f83b3ad2bc79f7c8c930a5eacb0ba02e1a", "0x0d99bf048437a3cc71ea6998f890a532ab3a12024e230e8536d8a8bef084e956", "0x1afc2f4c8ba126e304c61726fec22341f447302a246b922e339cd87bf2def560", "0x1c9f11e8631cd4664da9bcf45bdec1d92ba81407e71321c727b14c4c53ff491c", "0x199268e3ac14b60c2a29efe18ea87ec108721eb881f6a49e9d6ba1a1dd94d3e0", "0x22c335d47bf6718031e83de42d47ab805bdce03e3eacb2ee8a5dd88caf5d5657", "0x1160bf99f0f4ec07b8ef2d15be5a3a8d1cfa192e406bbef5ed8dd5fb75db41b9", "0x2254cd32fd4087b71387dac3554cfc9de00194f7472fa41de674d8ca01cbf08c", "0x1919751c378a82506fe30958a36bd6e75ec673bf25d693d98033602e73d647e5", "0x27916b3e4a0c89922381ac94cdf88b3a4e82a539fcf5c899a5120a63cb4f768e", "0x268d3ff9e18dc9c373616a6a5a1b81c93ec208dc043414557310c749b77985c8", "0x21286d51d350476f7b3a2ae3ec046c13d5c911173de41ac1dc9e59bbba669f2c", "0x20fbf8d6843bac844b6cb6324f7054344125db54d5600a06fc9b720f2229941d", "0x1a2fb57443a3a3d7030aab81b256c8b9a84da724036a003d435ebcaccc774f44", "0x21b13b9a4cb8e9712bbce32f178f59074a35a8cf0771061ca0764b6b190fa139", "0x2c7a11815a420038f71fd201baa6412ac292a63dd9f7d3090ba15573bba3c5d6", "0x18c9638094626db7e58bffd717b1287c8ace706823253bf6f91ca06a37f7fb35", "0x136fb4abc4e094fb4b5bff23de0d41bb4764481de793f828bf3d9f9df1aa1cc7", "0x03ec0f79bf7730bda188a011089b92d26afaa5bad67724d8e1932572c65796a8", "0x0629f306d8b1a0682c7794c32da95adaea0be483fe4f631c2b9dc250541257d0", "0x1f0854ee6861491721684270879df687a12c28a0a7935c0bac0972ea398410d6", "0x058928f7c7b8503a2585ac439ae4eda9310d87f95042402ffafe98ef48ea713c", "0x2fe5a4fac888cf8dfa9acfcee249f788e86c043441cd3623fb972ee519ace172", "0x29e954045cccab9612ff8402ad222c21dd5cd3b34d4156541d5024dc885b8d98", "0x251a3962ba0f3e9f8de881d104643c9c39272092312a2a771f11791e63957b20", "0x0eb04f89599cba100ee5bbc4704ec638d102c6701083c6afee8d26cdc64b101d", "0x2d2057ebb4878c47313300f8a161c6d6b3008c263e738ed1b77f6e2d2368b082", "0x0f537c7681eaad752061f5946a10f248f8afe02efaa724d97e763cc8c0971556", "0x1e40b9aa000d70d6ee680f23d34ba07ea043561b79e8b6c306fa7878232f1cfb", "0x1aa38f4a119fa9c3e3ff99d0ae54aa6cb1180c41d7585ef4e033678fac84b2f7", "0x05661c023cc8ffadc425af8edbc5a45a5daf64967bab03b91c6f2383a61949a9", "0x023c4d9d809b0d3afc1c27cb6b1dec663e9625fd44f1f1389cd1b29e2db150e0", "0x09fac0eb9231850de7965393a8bfd15ddcbbf26596278dc789b3e40703db42b6", "0x040b84ab00737103ed5ac312f5d44e27d4749cd191051bf8a6231bb4780e354d", "0x2e2eb4b8354572c267ce846c9eb223e3819628b26456d7244899e57d70dff93b", "0x198728ec996ad0953cf87bfeb8810be5c588ac10b738ccad7b1f8bad50c97e35", "0x2f8a8ee41d90aac2a91c1cc70772ed6f98340052516b3a54bd8df388870c5b24"], + ["0x2fb583762b37592c6c5a95eb1d06694b6c6f9dc4f1ad4862dd8f5e67cb7a3f5c", "0x12e9f46cd8231bb03d4028bf7a11d7c0e331dc05c088e6dc3d1d001da58b85a5", "0x1275cd70326f52f816a7c53fe62e323efe61a5b8d3747f6dec5837a825873afc", "0x06e7d165b57b0299d23e750a75ea2e12c9c7a16954c40a4d10904a61e8773541", "0x2f67f23a93ef1e215a4add2ecb41bef4b9d85ef9135065d992800e34fa98108b", "0x169eb9952e2a8623ef38de57e15e242df388019489e01b7c84fa839d864dcd1a", "0x0f4cd404b4024ca13a513ba3156d4de9cb3aa240c683b3e0eb7253bc98c8b5f6", "0x1c486bfae3ab032ff519e8dca6dc41ea060b0ef9083127bd7c2c4e089fd45aca", "0x102e745864251ce940c67b1e2f4bc4d27fd3851571ce6813baac665e8cc0c79d", "0x1e6a6d620433d22293044ffe36a5f2a729c129cce3eeb0bdafdcd0d52bc3bab5", "0x08f3abf97ad8d01cfd8651ff2d576e3d68ecc47aad82b4188d92138bae603b6d", "0x283da3f1cf8477d9821ee60378b1c39c72428511a1b9d6683c0302938c248ce6", "0x2d99cd8d88e49e0babc84cbd58adbc143a75a26ba16f96466a2e41629734437d", "0x171edd6a7456a4c25fef8aa6d8b748ead869369f72a4e502861fd037dda8f779", "0x2fab64694369e3a2bd573c0cc383695c02a381e785792a3fabd6e1ca8df2d3a1", "0x0c6155944f64f7694fc8ecd2a2b9a2370568c3c898db9531dc18c72474f9afe7", "0x1ee0e5cfae030622249210cdcda71437f28f0b1730653c0915efbfc08607c3c7", "0x2741e1a7bc6ba2cb162858c4e8454dba0d0e12dcd956d127bed071739ba5ef86", "0x301194a663309ab8d80a434822a6f6552585e888d498581845f54be634ebc93a", "0x188ad25347ec25e6a8a1b5991b3e96df81f55cbe2c52ba48741c04efd471f296", "0x2d1a0a032554c50b22699496dec487b01401f25282f587e1b575fc98c9fbd648", "0x2c47fe6533bd34a760084e8d4c488c4ca2b3bd11c22493179ac81a99f8a44a9d", "0x2fdb414eb8069b5573db5c11ede045a6009f267a8d908dbd7d90d6a0f028f28e", "0x009cebf9eb6d06fb278fe736d6ba09f93e0df2a040dfdda5fe7d9ad0fb94bf62", "0x01d55a3800a64ee82703ab1591d18adb00259d168276e1b0fad4718cbfe05966", "0x0a2f6b059255eded6daee4743c08fa84dc3c51bae3179040056b3a8df38982ad", "0x17cf49c0568384e937f81b41c62c476dbbab87bbd6f4d9228b04429299cc81b5", "0x2b28f60b3ee128401dadd3d94dc96f001b9432f70ea1b3b3219d80d369921aa2", "0x25f0cfd33257de2cc32415e65ebfec4246d90a181e8145f9387def3c4c5e0d8c", "0x117c3c2b702ecc0d12cdf264fc26fb8b4ec60ab3752d20f1d2d7c440cd461273", "0x0ac8603ee819274a7bac613b6d26420bca69a1d147072de90aa39d4af80376ce", "0x12c3b1dc37d665123fa74a2e68ee329a42f75db42d2b1c055a71c16f04d4455b", "0x107b0f5506fdc2e774668e4192b959410a4a8e0c9e82d05c5cbba8be93d73f37", "0x1bdb9f5e2cf7aef69b26f0bec8bbd500ba3a56addcb25505c877c662a810899b", "0x008224a746a8f72cba619582bd7204b8e21d3ced7370bb7fc77ee51241c1cf72", "0x0d2fb5c8797a28a15bd27665dc510ff7afbae95abd32d7886d223d1ae86ec2f5", "0x21397b45c024f6cceebbb9d1b0e43644f6ca76d2de9eb0505c862f05d7330586", "0x0e207305e6d3028b5c459df6090396fe3eedbae0cf8884e15fa5b4fd9c5eeb4d", "0x1cda646c94c324f84dccc02f77a716daa86e7677c57047caa0026724c12789de", "0x03392d1c129eecf880dfbdd7d30b4a8d35c5736d71e6e1879fae2362211a7aef", "0x2a46775585cc9e5bcea482164e668818ec54fd76d9d2c7d933be090f7a6878b7", "0x0756d791c7b670dfbd18ebbafec56fc148365f1df99518b634a491a2203c9e3a", "0x1682d281fdddf6f34b42a4bad0b260d597e8238878c1d7a02180a699db4faa7f", "0x0ba069dec00122629c2eebbe6f9842040a40d8a12327bc084ef34fd142cba2cb", "0x25d190a3c1e234d174ec14da8db903a8df0a76e91217f9193dc891f1965d1ab3", "0x2206270cd7f6cb0f4692560ae2de0eff1fad9f86100053a3ea52db32f6de92de", "0x13135b4171ad752f3906f7a0227406d8c50dcae587b5a671c63eaec0b42efd89", "0x0ff9a3343287ff5db495f642d32a71f193ce25650ee9a3f0b3cd70ccdf11f4cf", "0x2c5fbf86b2df75c9f14ee20b314fe4b3d7fd3519593ad8c73ace69cff6406a94", "0x1ad6dfaab2cbdb350af0f2bba83c21438a078f09d6f50a765096469075307c81", "0x26def3ab54ffe04d216d72bdf3e34345c21f29c715dbc964a70d1565224a62fd", "0x1ad802b37c96c6ad360a316cb0883a15c3d6e951f3f81b29f2da517a93297c30", "0x16963177b53b5162bf2f9829514ca1ac60196b428a7770a80be012a42eb984e3", "0x03206529b723d804ab582c4463e1d39ec579f6415e0c3c100c4ddfcb87a1b6eb", "0x1b7080e5b36b8a6782307882edd6ba9c43714a319544360725f10cbe4036d56a", "0x1f501df667ce40f2023272b32ec123854fdeca8cfa8d21fa5f8f91f4b3c6e151", "0x29dcfd2048ac0b5eb2db20316a6cb805490cfaaa7f7c52cfe325d0ee3f3c8132", "0x2b5c0a4f3ac49471deff47662cf40c2053e1ab9bd8c90259fd39958819f1cc26", "0x2bd152e7a7045ab64a942d6af902cc2995ceca3d5fa5298f10bde467d20eb383", "0x1924180fc608c30d71ca6bc196f6b6b65915d82abb6aaa66df4154088dbef2b6", "0x08e7a84a3ec9fea2c569690436e1b89f8e9787427cc2eaf895f86bef37a6a6bc", "0x1bb936cd8a92e3acb1d40861ae7ab5d7b0b0e4d1548e136e2751e261632cd5d6", "0x2f6fdb04a6ddba0da03ef70a36c8912ce407b81e963f4c4ec4a05e1c1afdbbaa", "0x033dd37517c4e06557a334bc4c272abc198853e381599a5f0b0f248d5e94d79a", "0x257bd936aa56d71b0d64ba98006d38ba85fd07e2c556443c1101deb930d62754", "0x1c1899724669efe1b1d9b17d5626fa7ea52d62b8bc93a52fa69eb4a5a0d669ab", "0x136e4007bd769d059096dce1b8d16e8d5ebd9262d646383b80ccecc3f6708e2d", "0x1cdefb056618b5286265f7d1cd85cdad945dc9c6d203b97756700a68a7e305e8", "0x13bef640af3bd68eddb99e6532e05fa787171ab21061f2d51282505558b0f778", "0x222c43b44c581faf924430fe5b1674e15e5f62b174e936299e8fa41aee000c17", "0x0cb7489149d78784b55deef16853e3faf1298e78da5c3d199e4f6256eec3bc94", "0x1988cf8b0982b7ebb3c5df1be4aa097ca59311816ac1c52df87f604779e5d81a", "0x2a86243d5537e0e1bb946ba87afc04141a4f4683b73a8a642f430113b5834d79", "0x0810e4767c0f83b08eee45c743a28f6aa0f6c478179dc923a730c00a777c080e", "0x111051b6f6e645b111ee16f8d7277c5736544257b993df519a1ec2c56bcdcfd0", "0x138e637186a1aea10cd1929f478be75eae3ba9088375a5f1032eb90389fbd16e", "0x1c48e87c3a5f6585c7feb9009f959127513965869f67312b5dc4ae1091d97b13", "0x1bc91e3923739d8557a49df73d6b18eacd3f1d843d2f9a19d5a544d2cf61bb1d", "0x1f55cb86d44e8975bc1483e56fdb8da7c4ae53e1ec31b84bb2da027005d4527d", "0x27df4280dc0fe9e40b3c69f81ee35b9d10c3a77ee1aa568cb99de3c25a33c445", "0x2f5c9f8726064d9ef2ae70b9c8b9bd8c67bd0b4e01e33da14eeb08c9e84900b1", "0x18039fc9add69e1c38faa320bb6a1bf0fdef44feb0935882df019920c87af82d", "0x0327903788c3245da6ab00b1dd054ef0a8909c746381d36be32c63540f6aedd8", "0x1f9e9d1ae90c18f18b33386e190283cd795b00a5e700d9b450bf30597bfde322", "0x1335f2a251d97c1f4fe98c9df2f5e0b49a9915b63ae6ac860715a450ce045c69", "0x216fde3c47d44db12ca9b3890b746551e14de61d61eadaa82872b8b02d08c0fd", "0x20aea5ea277d5c1799bf056503d16e9c18067cce523655520500a4509558d6dd", "0x2c9873fee4f36a764e4633cae58d5975790e8878d02f6687fd5aecf0fea45c72", "0x0c59d06a98278118aa314c0a2e1ff138782a1016592643141fc11eac458efa06", "0x20ed28a0e5dd6d3528f6ddb4729fad421ad078802f2835228b38c04acdb5cb3d", "0x242a84ca0128647dbb3ef3da25cb387d422f571171db50845d58ea6beab90dde", "0x29ac14a0b12b581d8b76b71e2197adff56879090d84e5c39952f91f2bf8c397b", "0x037dcddb2530ed5cda99b3890c9e7ea0b091a00f50687bda0b6233da0bb9b422", "0x25a8987fb6f4c18aa01d2e5429697d61eec4830a301a60c3562b61ae3290ca92", "0x1c9bf71f113b61c7bf719d99bb5aebf0cabe8712b304f1e1ef2d17a098c79acf", "0x04a0c9f59af433f472f1de92cc39d604d4ce8369e91c4df9feb6d76706d10e21", "0x0d300e35270adc9e45f4315f3c3d9d939ae9e6ddd105ed4f7ed3805d29fb0d7c", "0x03b3d5fe98cd3d41d656038d84f3f63d5036ce839ab10cac86d931bc6f49c71f", "0x0d4ff1e8e5f471c0cb60c4b64e25d46058a64ba30d9fd526b6df528f36a5c585", "0x0e69833375985f6c99f32cf9047ed72319a78d1cc452574b160ae501f9106b70", "0x218a2da1a71bf2d9495435c13826e81bc4fbc52f7e9e76801d76efa6d1506d5e", "0x220b7c5c7df259d28ef5c87818d37b1aedd331c5ed64e2be36963baa6f0e2ede", "0x05e6ff3bb2c3c3d36fee30974381c7e9e4257cfcb175226975f80c7826601d7d", "0x06ea2130475038482d43b40d701f2e5719f8b5291e32e70e7ecb67c84952c15d", "0x0e8ea3e32a39cd2f0524160913424ef01a99b490ecfb7eac844e9bf858b9b014", "0x294e5cb86e4debaee0d50db9d21828d54d2996a6d2c9c184172c6e58fab66f16", "0x1b76a6dc618f7023b2e9201816b56e04600a1f6007704757a20de7a453137ee6", "0x158b87e1fb4ee03a0cf364d7737fea5b505c8f265d85e53cd8b6ed21b8f7e0cc", "0x0d6845f8ffa83ae905c90b939bc0217b96a114eae191142b7b39cccf6a05f918", "0x01e70b87aa5eec31fcfca56f01de6f0e16abd68e94016a6862f1fd84ac753eb9", "0x15afd08d9cd8f119f6b84c1bcf1bd8321bfc269f7ca4ba312f78c18cee06332a", "0x0e8a18af50888c0e678a18db035e95f3e514d12add25b3129fcb0a1175bf20d6", "0x05a423b76a066ffd86bface24a69eea019d742ac25673cfbce2d6c8d8fa959f9", "0x1cd6633fc781769de49bb060222f70e764c0a599cfa63dca546cc770a8c96e01", "0x0bdec688fb651a41a8454bab72bceb7b4b9a4e64e15a7759af96c3910f1af1ed", "0x16fe2f67cb81df40a13aee06cbca391aa9f363c8b6113970da577f00ecb68632", "0x0d9e30316cdadf4ee7861bbf058f9864ba41949a97d80f572f4f321c5c81c266", "0x2b7250de2b670143d2795767be62b401b33ca87317d51774332efdc0d561e2ec", "0x21191107cd97ce6d82d8f24580d3f312384ff8f7c372a6a6f84bea4619432126", "0x2d3d14d019903bbebb3844951f492ae64034eff311f6fad2e7ee224df122abf8", "0x0b1761537abfe52313d2984794e0f0cb5a67fab6c7de6064a9b23a9c1682e48f", "0x2648c021ea22340d9c15bf3b4de1019ca5bb2b154f528acbec879ba3060c5e71", "0x210383b9295acfb0afe0a2779904ff68510979cb8308cd4be1ba74d50f8ebd2e", "0x2366beb9fb0aefb2b27919a936a90e5178b6c920a7cdaeb2c24dafdf8eec4f62", "0x0ac0babbfeb05aca0bafc86a137345008a4785828aecae6e75726e52b19473f5", "0x14f4e3f929fa309ff76b77022f98355881d3a4619826f8f46f3f3307b7ed7cbf", "0x26c17a705c1fb16fc93b49912a3b026239aa37147116548af22c50b17c63d2f3", "0x1c041b56052757aa8b251c9cf93ac84f163b5029446b6b9d5f73738c71569c1b", "0x1db847af55f4dee4b04b07d8c756ded04b10c38423abda88cf955686e19b4d98", "0x14a9f6b5276ca64c71eb85421324ea22da9e59418c3f3d168a2e25614aabb250", "0x19e965d8014faa21520a879fa7062f8cd83e83d23d34eb96f6155cb698fcc5ae", "0x272983b47b987c94aa704a01c88698c287f66cd6a35b0c53b0ae248257328491", "0x179082445f7e90050f2751613a18be7c615443a5aabd9ee30dd5ae1aed141d0f", "0x2a45d991765d6810e7c6de95b751077ff3acd1a9e2ed841d4e351641b531af77", "0x0ce80600ae777b7577dcb0c38e3017ddbbcbce86bedaa78f3ee80fe8f8ed9c46", "0x1836efd329ede999eda029ac76933e51d379c2ec9f81106091d4dd81184b4a90", "0x23c2f9f5c32b9fc9d8a0f06a1fb94342f8e0f72871532ae622e69cd26983cbd6", "0x229a60de9ea7b9a31af0537a15fc0cc8f4e1874b05b029a17aa6069badc70709", "0x27c1cacd84763504bb9da995fb9c11dfe1de4f9b4de0070c62458dc06e6f718c", "0x226925e3b28e9d3583306111412c7fb3125a6229d56499d4ad4ce275fb945a6d", "0x2d4c3ef6b8649fd521c317d440f0de2170c7dc0ce2acfe5547c96265237229a0", "0x2e163352d3c6c204a4f39c6347ed2a1546da1c162c17b37fe5122dbe0ca38d81", "0x1d50944ab52614ecf794a99ec9d9364ac97acb173f01a5793d55f9adbea4c3a0", "0x2b4bd70b5f1f434f70f1f952d02b031723f769ae18207781b37efa7d860b6a33", "0x01da84194beae599eabcdd0d9ca29cee05c8d70118af22d79496664ba63d953d", "0x0b1469c1486ad837a64a4889c24acd60c7975f59a70181bebde9950fc04b94da", "0x191e2dcf4dba410ac50f7e9aa497a5c783bffbdcc2db8471cbcf70b56e501040", "0x01668607fdf864d54f4bc62a7a64bcc84e7c9928a5bf8215fdfbf22877673317", "0x2f9967228d705426d5012c764e1754e1f43e1cb9dbde29a8da4ba862ae464916", "0x0174c15148cd64c6a9c7e25bf7e92c0eed93ba9d9d20dc9d99127b9837f842ae", "0x0feae0bccd9061f01578a7a003394df020d098b1b5d4d994e9c7b01d5c2a6e3e", "0x0ecd1468fba5b3142d6b6a3698bd27eb2961f2232da5614891eae6fb2f501f83", "0x23b8bb2b66cce71b0805586c9d01f82c1f7acd6608ba14377052ab5228b9d2a8", "0x296c2942c041735a80687e79b03159ea0bcc9c8288bf61e932b16d9a77418703", "0x0dfe7f9c9417c892a1aa425e36eabd1a8307bf14178cc1bff30de270804ac6b4", "0x0f9c80c1ed9dbfa5264ec0ca7f2907b45582aa1aadc8f2244eb826f36302075e", "0x13c76a9e0ef6a2afe12453d52c5ade079c945de6700ade999d2654f00e0e1db0", "0x08d14936c51c9d5bfa8934ea69752560e7f72d33c6db682c6eeaa8d37afe72b3", "0x2bbfd29e71032bd6df3626cae78d5d7d950b8251aa9ad387baff0cecc55ae78a", "0x20add9dae28c0b6c56acf8dd8fbf8b82aee8b9e464704243077185468c6c7a25", "0x1fec96baa86d874146fecb495308b927cbc63ef0acf2481252cfee977d77a051", "0x107f942cd1f7db02a84ff410913b07ca14067c08e3cee6883c829f8383db56af", "0x20446a5488024632c1ca5a03f3e0d9927db7911b48d0ada345cf442d574f708d", "0x16c45c6ee2e09bd860204a12550cfedf1c15cf5ae79210ff56c3a067be982232", "0x095afac9e9c0e7bf3a3757afe1a59b1cd2c8a9dd0a4016a768de4e394c5aff4a", "0x1789b8d50c4f470a2040a8c97540530eb4a4ba188e058c5cf98eeff2986363cb", "0x1ae4a093f1ff056d43eb1f176efac59e64dbb0b30a17bf9cebe739ced02d7eea", "0x2078664852923af8ee05ac393bb1b71771aee237ac4bc13feef5eddb824b5212", "0x045c263bfd2c80cf563fd1dd093919e61702c4180667ced47109f22293d6f635", "0x05bd68adfe9229ea5f91b9b9b7c648930278ff9cd4235a74ddaa2989b8ed1b68", "0x2ba6147bf61fac6fe9f89f5d03424bbd3dd25abd1ba8099498cdde87a83508a6", "0x06c29c1a964316e5ff468201ecda5c5eab28e5cb0cbec1f83fbf55f911dbf6e6", "0x0b3a42e10c5b32a4db4ae5742917bd2a2b6484d58d069988d40f4b2c5d923511", "0x1ef05c441e5c449dcde2b0104cc0cf09338c87fc1ef249e47219be01f8900d4c", "0x1346b974d355923f8812b1b81cd69ceac02ba2ed4207e078b1bcdd65b99c1c4b", "0x0641be843dc5babada2893a000856038b0c480c73bb1222242f5c182b0366566", "0x0e0ab9754fa55418576339c74a518da23da4512ef44d918f3ce7adc03877c0e8", "0x0524eda9a8cf74c8aed40f27e804a118f479da36331029d8e35fa3067a8a2e60", "0x2d9cc26968b956d282d882ad26062692ad57541ae207ce90a36eb408ffcc1c2e", "0x208be81442f0eea20014d7c50cfe3f8497c3eef59d23ac75676d86e6df672177", "0x0a103c791829e5f91e9143aaaf373c130be8bfc3579f3608b2eef23dda272775", "0x24c250eb5eb7b2d00c290f548f258b4206da050fcfec439320698146a687b4d1", "0x04af611dc756228bc87c791eabc9412b4dc539e482b11360dde2e8b15c5ceb26", "0x2edda4c0c8cdb6ac1f766af30f296c30bad29a7fa345c492c5fd461c83a74ad4", "0x24a57cc97ac713d122d20a0f45af32a192d57ee2df010a2abf932d3fedc531a0", "0x2b7869256ef8449ef1632686c2e4eebf6c7dc01925e171b6a3053c00c7fd938c", "0x1fc2cadc1d42598fa8af9a087df97d11564f96124486f9d36274a5290771637f", "0x1721830740eab5d3e824ca501d9dbb279c33cca46d957cf4dffd86c4643852f7", "0x065bacc3845e9e1db1666679ba9198965a9604f9d0e17a509d3435461bddaacb", "0x14b469025cbe3ae69548004a75ab8cca73e668f3fdbe5b0412149da212b86295", "0x1691556195caee6db9f3e92a740b8e3df97ba65b9401d64071720fc3f5b93d11", "0x2043760c0846ef1a8307b889640c3495bcd17b855fad23866cdc940a9e9bf202", "0x254c39a9337dae077e34effcb2bf6149dab1ff4c47077f565a1164cc16065df2", "0x16fff81b84dcb6ee8195fc9a2b43183ef2c93eba69ed01fd66215afd4118bc7b", "0x1dd3fdf493e57791e270cf1e45932a03871ae749d8b071b210c113c746ced3e8", "0x19f34c30d29e2b2e71d0e7b58975b52e5895100a642e52509f73499470664e6e", "0x0e53378ab524fde35bafbf5b073f60337d37cc7bb024e4d770b478cab71efded", "0x02657a42fb7fe70f69fbdd34cf77e2cc1d9be5dab5c3df54468402e9823b730c", "0x270797e181131ae454fbe035b74c818574db4b0b14617145614bfcd17d866f5d", "0x1fe850c6eeabe8cc324105f8780d7802b35263639cc09d7c27e2c3d339fec530", "0x113b0fd84f896b1726ed7e324f037d49bcfc61107341ba50e6ce467bd4fb0393", "0x0455301c9c3a9576864e5349b9dbaa24bb5a73194929e2022f9f9462dc60fc58", "0x1e78afe9e73f4fac3c0603f1a9944fac953e8649a63ab9ca386e14f76cc9803d", "0x2a2df8062cd4e4019ebfad326af75f075ad9910112c9e56dcf5c1402af2eb5a7", "0x23199d2e3d213c593ea050c5b5ad9f69f1b0cb0a3bc785927509481d9365a79b", "0x1112f3f5206cad6ea06f81e7e93f6da2605d12111f7d82dadab721a862820454", "0x2a7850975343dd2d9736a41fad96173abdf8ec955a5dbf0fef598a3427b06cd7", "0x0e8f0ccb5547386fb377f8eb03ce31a2fd99637c8288acc824bb3c7e11976247", "0x2dffa0cb7982a215faa3ae587f3d0a8fdb38bd67fe497d6ec6a9af385a7de5fd", "0x038104d875861c16f8696630fff0f564ab6367eebb54aec00444abf7ca01097d", "0x2e1c146050524fcd059e554496c7365dca249831f8f3ce19154a3a4f25c0a15e", "0x1f1b007113b257163a2338f7dcd31019898bc9de8cd433c6f4d2a0d61b4a895b", "0x0245d414c0213d2b34191838ece52483b9b823ad5fc60b0d1b5faa19dc499428", "0x27b89b2aeb20498cfc4ea10b7057b853cd060d9f43abda0b62ec0acb50efb0b4", "0x1c77ccc651789deb5aac8d3c633ae0d61021f924fd15ea3f64b2190692f0b84a", "0x1344ab9603108364a71cd08f29138f17b813a2e507c5a371265094c3ff091733", "0x096f47da409be2b87d72a5b4dffe768e464b9f343148561cc8f7f65996473338", "0x2a963a2d7dbf1b6648324ca5ca201005707c68f190338602106ff7a1c8180074", "0x0a24a1fbf8e9ea5e0ed9b2f6f45190baf98eb130f23e3a59b98800474cce6d7d", "0x1efc39326593db3571d1f81f6e239efbbb625848e204043a3eae361b784da8cb", "0x02878f199437f80ceb6115a4cc69ad4306cb90caf7d33a57ee2c772fcb0e7c43", "0x14e714116af02eac68ca2f2d7fdc5602d14b0e3156bf689dd8af02225f67d6a5", "0x1cc4f895a494442a4c6bd0b9be44ea8d5c164ea0aebdce116bf6e22ea9c9dff7", "0x1f72d9f57cce69a7a953a9d1ead68e0fee628478d59b37fccf1e710729f9f2b5", "0x1504122452ed1fd0021c274b2f90e860d621c530397d4999625732841c24175c", "0x0f84c2185df257426cc7160be00166fabf2793f17b4dcf955537842cc39ebec6", "0x26211875cfeb1f08402906b6e10083eabf34188c0f1c9e6ee6666fc7499161b3", "0x1fdaf9a5b7dcb487eb434eae3a3a1b632045c4f36727a1600da5c67d7162bec6", "0x1a82c7c40e0b33bc3be8f836c4b58c1167b9dd3b89a64a40f250fba5e7992603", "0x26a830d5593275fd09838a337dceba9d73b6b0bcde5794f3795a2c7d9a005beb", "0x1ca1b51031b54d6c209c60095eba463cf27afc1d87db60b8527336586bf5ac37", "0x02ed0b2c0fc04e99dd373f11a3fce52800291722a4f60f69de44b0be369b4301", "0x138bf926c9f7d99f3b356786eca06d03696c34a2b3e7045ccf4d35036ba8f5e3", "0x14c9004d3aa47932ecc43b64f48012296eec6175998b27d4ae9e67ac37e252dd", "0x2e8fce1dabe0cdf3fc5eebfad8fa7adc6f8afda97e429172d9b753dde4b98fd5", "0x086d86c3c731fe45726bafc5176b5843fd04dd64f58080677db1ac99fd279c34", "0x07c522aa9582313c107a3629403f5469f777e86b83ea72d506087187a8e72bd3", "0x0f8ae11d8f6f426faf8516e350013be77f4892512580ed34e760da1c298b68e9", "0x0ba5aa0e6b3dc7c67804fdb84bc1bbcc1f844e9046a6624a910173cda4154bcd", "0x125a057c109e46c86d4a079d3aa4396af8b3e01365556a1b54f39d8ede66fd21", "0x28ca6c1010270adc4961aa8335ce83696b24bedb4bb473dfc15e82d305b95d75", "0x1d636937861daa12215f031dd31ef5ddb5d298fe8a687f1541c113dc6a6f982e", "0x2e755335e4022d7bac084dcce1498520f80ae93da97d2f65715027dc8f06f0dd", "0x071f2713b1a7933a0a20f507b9120564af7e399becb3c364dc4d4ff00e82c84b", "0x2ffd5da8280e32999e19a1717e10c89afce0c6f81f5d3289e3d5fce62ce0f328", "0x1dd14fe6365e941517ddb8fb308e3a93f54003ab4bf5f2acc7a7bc28b5133d77", "0x27101129fc7fce62280ca2c588ec157d96e5aee5c2b0dbf2049ed24b2c1305d7", "0x21919fe253784f0db396d4f9e4c77352386b9b72489043754ba8a2b1f4ac126a", "0x07027958a8f531877d1cebacf828dd8b017a125c9d287595373a5a39e58cf8d4", "0x0f4c12b76814adc1cddb3af4d1ce6900934ed214203cff4daa3c327f9ece5456", "0x08d988683eaf49158a7c9ae87146068f6e1cf75455a9d82231645f7290d10b36", "0x0272e74426d074d9658fd9526b8616907d5673aef4ee33678507f82bceef5868", "0x1a4709dfae34cf5ddf7006d7c290bb58c74297c8c4818fdf5f3950b54c924525", "0x22002b8b417575047a0ed5d359143aeda19e8810c53499ea4b57de86d441adac", "0x24574868ec8a4a702ea0cfa55bde2ea3bfb22821f6d88a66183527b1c7f8f0e9", "0x10d966de7e680887412eefd87d811dc46b0240886d6854934338d21121819798", "0x2ee7c7e3e8a979087deded02e7255ec067b1c4647cc714b96e1a28258d706966", "0x07029f067945ed1f6946894d66e2a8f17513b7caebd40c9adcaf39eceefeba86", "0x238f96dce22c10c9aca9a1982ee6eea87b7cebfae5a387782b49a62fea5aabfc", "0x0b46866c52482fd492baa3395e0a2c90470b402e538b3d8d0c50722e5621dd1d", "0x0d766df2a110efe25a3d9c00709cf5309a71c3eda799419fc3cbb0f69cce2ae6", "0x070143b740c54c7108f5f6183ce84371f770750dda04ba765ef83bda3fb2d5ee", "0x1700b579f15e50c2ad18cf77dddd549da000a6c8390de97e7ed0d8e68dd77d5c", "0x0966a4c76701d09676a086e95d90becfa07bb8034642244cf6aef00a540d2348", "0x0dbefe8bef0af25598f5412f84e00a3dd4e87de653075ba0c5da7ed783970bf4", "0x166d86374c39d7660096c87278e27024ca839197e65cd2f341e7a588c5387fa0", "0x251583bded154eb2396251754588712d0e1b78c29cfd44b45f29a9fd52ceaec4", "0x104fa2f361cf696082c5fced47e78a75f39363142e877b3d82c55c686e52627a", "0x2e937bf849309765a350ed8791a96d859a2037229bb6a652bc6aded264c7c5b9", "0x2b1d9ff7fb70883508c56021f57e3f9ea1dbac6ca74116b17ee926c1ec3190ab", "0x05f6384c19be9a2806e892c810917c10224188bf43f041a4e9633f370fabcd9e", "0x2ecd3211e05ef27a50e8cebc42ff0b183cfe21dfab238ea9ef76229b3f109303", "0x134cc424a26df27d06dfecdce2641a01bd102e7ff1a079a2f7e02cb5c04d0fbe", "0x06491bf6df0385099926b322197f0366b2757d7dd62ee3c2a04f9b4c9534051c", "0x195fc25a0f0e518936af73aebdfd96d9b38a4353504b0ff8c1418986552920cc", "0x21d9052cce28cf6e4e94073f863ce8edf12f02ec3286237f9d223b6239666286", "0x0baa8f730ca31f03feecfac34a96c3ac7af148079107bd1d17241917917321bf", "0x25581389210f6dfc774d3716e19784984d93837f46e519dc753d36eb2ac7ed3b", "0x24e00e2fcb19f6424d723a02dee50396b779a246da53a1a240f1bd889a8970a6", "0x083d4854b30ee0679d2db410b207e0e3a675788631c5a356cc87732960134c7a", "0x00af54416d73433ca2ed2f161359272770b6e3009381d71298f8223deacfaf11", "0x0d86112e0b5ca938fa7edbeca9ec16e9e9eb4589c77706ff386b4f121fff102f", "0x222eeb0b16a9b7ed31088917ebe1cd3de2a51f15e1e39229a08bf734fb2cf54f", "0x26ab188797afc73322cb02f8e79578e0e296f991bb2bcfebb635d1212116f43a", "0x0189a33095624a9fe843ee367eb23224db90c8d79614941f43009202bf3f7692", "0x0cb116f05c5b188d660a15100e4e53213f9c91a2c7cc48497468ee009204155d", "0x0677167ba65ce31ced812c57211602111fc3a26bbe9226918a7819c94281196b", "0x2038709e7cfcc3a1fd50ec84476c90870748ebb30f6431bd136fde99cfde252f", "0x11304b471f078464bc2004c224dc05a4c4ec5db0a0d15f324130e12793a7aee9", "0x25d8e2ab7f87aad379da3e3eb7f5d35f297eb80c430c765adec7f637c4f592ec", "0x0252705f54d55bf29b30237f8d12aad2b21b4a5d3a7aaae982f7cde3da630867", "0x1db9ede78af0ebf26dc188f6fa75663eec8f65b6c9a5ed38fbb3421dec7d7e44", "0x28915bdfab7235384a0052ed73839f3b6600a7ad6328222a5b5cf6e833a23778", "0x0a48fd9b0e00279f51f240b4729c1360740f003e804a09579e28c033c47d5b25", "0x004aa895e8c124ea62643e1d47b28162c404aa390fd45c32f9ca00c080fec007", "0x2f6ff2c3db97147ad04594d1858994b416f98aa1243bfb9deea65c109df2771c", "0x24f4f4faf7ce4f405a99b997acbe94f4f75646fe7d669779737e6aea7a59318b", "0x2c6de883618f61bf7f3f7d8d27a607d6a7c4477491b4a505955312a1ead3bc10", "0x084e6d4e3821e133fb91ddf17c52a3c3e056dc5211d99c507a5f8eb010f2051e", "0x182695778ac2503bd5ab232f7a06bf670a950fab0f52691e66d85d678f7ec4b0", "0x160333461efaa2ab9af0c831084d54e7669d8a39c5cdb67b2dcf41d3c4fc5e05", "0x2cd141426aef83b60baf24a91964fa03a4a15a956db96b9ff8b1802cf7886907", "0x1efcf46de40d031f8433503f35b57e7e05e7333292fc4e87e8cf690167176023", "0x13566534c621d806ed162efe86de13e99f5ba0b87b7662bbc7b558abd47fb72d", "0x13dd0f3e7ad7091840f0fa46df2804297a60a00afb5cb4cade62ef93010b907d", "0x063074d64729807274b9582f5459fa5f13a570aa0c8c1cdf970e0a676cfc6bed", "0x2cf0b9463240189f91b0d0081f1fdf117013e3bbf66b2ec20768b6196ca78a40", "0x2414bc086989d9c5a4b4389231672e10670faa0fa46393ed3acb8f7592d53cfd", "0x035c375210c40378de763a3a1ca80b6f59ee72e60bccdcab9987567607a7a661", "0x24649b22485d4164a5849e6fe09e491800bb975c4c18dbe076ec4c8430944105", "0x28ff30154191e734bbf8835086d026958770f58c05adf2ab87451b0f5b6a5b90", "0x1333e068eec2449ec9f3ec2509033a95eee7d93b3e21bacbf131f353021eaecf", "0x1aaf01fef0368da6ec25d420df62bf7fc238eeb68f9c01efe080abd921969992", "0x1a8158e9d6efffb3f770430136749c13ac3b57b0ac67b7e790b87e4c9533164d", "0x267a4bce46448d250fbc476240bdf28082bb7b3fd4fdf6b4959d202ca5c22cc0", "0x19092ce179c682ce654858f33d7db753b9a6864268eeac3e01b9c7499d669382", "0x2cbc84334505141c85446a368bdce6f43c4c73002b9c7fa2755bafd3c913cde5", "0x0f2290d7acdc26ef20e0ebf6c790b226ec27618780d69b34235db806c2cf7fad", "0x08997d8fe98a3b07b245abb1a2ff924e69c94ec512dd8717d26d913976f7009a", "0x281257a6930442a04b62b72ed85e06c26510ef3572b9d76a5a47d39cc8ecfd19", "0x1bed3ef59d524fd38eb28351acd8928fe6837cee442cd4128e17e4ceabf5c5e1", "0x2450c4222f921391c2d880d0549a66879b1f036e6196b0ed04b6f65d7501ae88", "0x13cbc816452f1a7859c5a15a87dea7c7074b06f50623b8d535ad31f380862014", "0x2a447dab60e9a356de04e09237b0a5e823997072c557c28398dc34349ce6b103", "0x0403afb29d58bd7a9985c47f8fc5e230619c306bc3b9e5001e5641781e2a2767", "0x01f1b34d74c7ba4b249e9ed1a403edebaedb7cdd68997d769702c61675cf9fed", "0x0e5e3c54edadf35d98492c46975dbc8e2ff08c13858abe8fcde5ff740182b642", "0x0d63ba660037b09ad891f2a73ee687cd93fe26acd102f90ad5ac7fce6e3cc24e", "0x0afb72ecf8fd02e169980cd8f4d692ceeeced7f54406a649da0b542138177506", "0x0a18d18293b53b043057c48caee752f777ebcbbed6cac878ae6dd7f823daf887", "0x0341875860149b8023899da549912f6ca633d0cd64308178b5af305831025c9b", "0x1e74f47f430e1d9fe4edafcf6484293d475dbbd32e4db7afb109344d6b217ca1", "0x1393ce303c52c2d727cb4004446b8e2ad22c18f3c6baaf7f0b9807b4dcab60ed", "0x2996a98688b3896b12bf84463004b1e6cfd41febfa82a76c39829c00a5909563", "0x1101278844bb1ed1532a88c945eea3f1771c0b7177d9e90a89fc14e15735c0f2", "0x0ff944e58495c3facf9e8bce3ea7e63b45e0094453d6de3a476f34f0bcb7f076", "0x09685892b1647936a2d06ec2904235a2a473236fbae0007813832b3b28747a11", "0x2df959566a7f74f07a6d8db0ee48cce33d83d76d83cdfb72f8e601cbda8a619f", "0x1371c30df84f6fa17717dcabf21240b1f62b6a0f7ad88ea974b74424576bdb2d", "0x063df78a5d2ae65937d865fb6653358f110a1620b462221fc53722e3e5914bf6", "0x06943c3b3b93a51f75b9ef027e7e489c4031ff92dfc9e6cc8c144765ed455963", "0x258a6301e1d4ed86f430c121b8a7a02ac41a45310d6eccfb1e25c50e144d552a", "0x16946c160509bda0e6a28b310d1e3d465496f50f331eba12a3d335e80d02ceff", "0x228a377dc063ee95ea9383203e09cdc44ee8ad4ce4a3bd6accfaeeebcdb3afe4", "0x29d562c833355a13246eafed9cb816b700e432688f9d0161eb345f93c86d1c30", "0x06bc32e8519fba6364af48c63d468794e43eaf044a122f5df7506db732811574", "0x05b5f5ee4e1de0165485ed2e889de65244597ce9795bd1302995d6448b7099cc", "0x228e0f6ae75902b8c6f351e3afe911852fb72594dac6d84bb2501f6c1fb62b7b", "0x1adee1a357f9bd07b9aa5d5de6c1cf13ab85e3c637572c4405180255a6b262cb", "0x0fe8e230f7a653e70d7e66b68cdde3b091c90bbe3392ed70c657cc18529c48d0", "0x17f2e3b7e2a5e959cac4b2e2abd5b204ed1d1da788ecb601e209e9135b42776e", "0x0e5ebb8d9ab7b2ecfd74f5c7d852fb72eea1d29438e5849d60c3be110dccd77f", "0x1176ff60b09a930fc378bfa5bfae137d7e914b2c2e5d41718bbe5987ea4204a6", "0x1c289e2a8f4efc5bf0272bf45012e7c53b2ea259353ca5fac13452570f0ec30a", "0x0897085ca8062df434a4f9526f65def6b90df42244485a72e23b62dbc3ad4b2f", "0x08702d77c6eb4854ab9a0dc200a9496022381e1fc33606f8a276cae0a0086edf", "0x2d557de044b0ba9934b4e84c14c2790b77dfd73c60964fac43c12834ae160236", "0x1b7c71b547295485251a601e795a5be291ec9310d09af4cbf6c6f1d9d97f0759", "0x0c2ffa9d08d01f7863acf32741e6f40f5a614d5b5bc9680d4450bcc3ddcfe7e0", "0x16b4df7609480dc496c9c80c205cb130dc75a36bc86ed397537fb8621bb55aab", "0x278870285022a8e62c007ea1a80dfb983108933916474d70597eb223db38d120", "0x12d086f24270995532f5e9a5fe0f454211df6e0d70a4f5648dec1532bced0822", "0x14051b5b246c70615818e460072a6335353ed0baafee7ca27dd1ed323a1a460b", "0x12b64f3fb3491740234c4b2a9c22b0d3615e6409374dbd51c68480ffed83c578", "0x1dba77c37155cfc3a40e60a3cab22a65ed3d0b3b9e14a088da0f78235f378c46", "0x2d3cdee7c20e981df78414afbc11ac0ba5538b05d8b3ee64e93ddf79d16af761", "0x1e72ec6459044a8545cf04fc975cea4396932411985f63f69cf5abfd079ea339", "0x033de42aadf342bf63b8dfa88f1834316ec0a1a2031fe6b990b8939ead902367", "0x01033afa420fc311df873cfa662b1aa74c3293b32fafb6dd8b50957b40e4538c", "0x03246089fc735a2a10eff81988dddf6bf6cb36ca4c94e5f811d34a138af7695f", "0x184378877dc29eac96d70f2c3c23d03b15bb5cc33ef46aa4d7d8bc7436e2e133", "0x24a45709cbcffb8665e006e6da138718b961a11e5f833afc14de37273a14fab2", "0x15edf9c56babcccfb597723c4e2ecc4e9f27a6622c161e90f6aa189ccc28c479", "0x24a5b373a41b6284b58dffc853e57c1e94dd8018bf6155dcf79f539ad38f0588", "0x212667816adfb3eaae237f4bc5003837247ff166cf8cba1fdd43244f34aa540f", "0x1ef893f637158368e9a96b7893b13693d1a08dac4f4523108b0a99cd60d627e7", "0x025d14d1d9d039aac2acd4d2dda3f73a808846aed7159817289db8ff01a512c2", "0x09d18709d5cd1e66a30a5af2a40202a06e2c4b6456fbe28c5509fcf8f5010097", "0x10e49e4515ab23f11ba99b0a8eb2b9c0c00ffd31e297cc0ebff4b70a19084a03", "0x120d8f3de534d39e74a6866a095aa3038cd5a8a6da2c8c3af11c6a57878fbd27", "0x1086a1c670c0b38a4615e2b5c9da452435b28cb618a755cb8e4d6cc4a185e0d8", "0x143da4f1e56c2995390de6d5c203a81a0f8534ae6fe1b548bc06ed66eeb71b82", "0x03f67f0c682e74186fa8a43185ad1058986d7829037c9bc4efd13303df2565b9", "0x2ccc820115f173d6df190637f860f7559838d62da484768aa9147e38718fe4f5", "0x16c78c003db17ade4964026d9c805f98f6bcc18f5ab084bf6db478324b4cbbf1", "0x2ced73fefc2ccaf65b289e9dbc565eb7118f94a1e55b431c176659a4e20300bb", "0x080355d267446e657f4fa48445d6bbeb92bd0722224b62354102faf995c8cf0e", "0x1d7b035e2e3447110b569a0a285fcc75848e9edb05f260790b1842827caa69c8", "0x0def7d6932196574dfaa3bb93e455eb3073af3c6f5b23510af304e44af9d45eb", "0x1d7bee97b83a508aafabcfc215e94be6c319c91a06a446efeea5d2eb6433d01f", "0x297df20f1168df352ac2f6f2eba37c01f2e1dce8c6c9ab6fdf4bd4f73a8aa61b", "0x2704da6a1722356355503d2c68fe1b4cc81c7ec8ec79e60293c6ebe2cd0fbbe6", "0x2ee1c93621569042fcb5787986b162c7713c3f46ba980f84c35605f39c6bd09c", "0x143dadb2702943f0c1ab5f4dbc544741271b5feacc410778391bbd31df27d57a", "0x092b4880d629751c880c52a583e7c897b96f8e4017d03615240b58b099710347", "0x2dfbb9e30dfdd6a6109ff6096fa7880bbdca630af585a98dddc26c3c0ba06b1f", "0x183f5efabcd0bb3b5bcdc307a3000408ffa227d7ea09d1e46728b8a41dc10b1b", "0x188ec11b8e4279fe5d6885cae68b47b0e2f3b1b1491823d56d45b7ee0b819bef", "0x03b932f42f057452cf7e63be1d791df135b1203a05a1ee87181b79569dd9caf9", "0x0f004e411866bf3827ee877ff26b9030e8234af91cec1abf4b1e63ec376cb4fb", "0x07b29a2bf26c3253559ac91866e18bd24231873c628c6c54085020e9d94e4e06", "0x0dd493324477dab3fb82ebf9bb5ecb261b16053ffde0780c7a103f5224ed0d9b", "0x15a2481d9a02f0f660f26f731800672d4f01386a88b39a481300524ff7d6d77f", "0x020fca8de9b1ec1b1306069459134385ec736ce3d47fcfe31c9036de466599d5", "0x13f13006cc21c4413d126b903430c7d0f91843fcc8ca9d6f29e088d53e6d56d0", "0x1562270321f351d19ff030cdb1061906ecaf1d545a842611dfd2f62b517fadcc", "0x2a1bac0d137627714a64d25cff803b56397eb7c49f916f212c325e36e099a21b", "0x0a626b8413c43716fb39475aade5a5fa6032be65870a14c7536db969accd9f4f", "0x01d8614a7501b8508b972bb3a9865d7ebe10da1f7ef9a4b7caae2e8dbeafde38", "0x2c4cd54213bc9c118584922573edd0979687ffe60194ee617a89971095ff1712", "0x273b67e44bbe0f36e03fe1bb7d026d3ae18d74280ea660f7eb6adebf13624370", "0x2345edc3a494fd086270df8ec3337021bbfedb313e666ed13358d808d7fb96be", "0x14e3240d400b2f37c462731eab1abfa3121fff4452adf8b8f1ea2d7dfefe5b96", "0x26fed100c2fe18afd4558db5690f1f5c1ae4848e45f7984b975a127b2c3e43fc", "0x094f0c0432e3dd61dd59f78f3cae7b2ceacc7ea52e1e429618132d2993561b3f", "0x01b69528d1cb065ea1bb8cb4ffcd6f727a43c184998a8c52289713e52f1a4f1a", "0x27f41e553f9d587a847aceda9bc374ada23fd5a31068640ce8851f2ac9416b9d", "0x1e78dc5799e31ae0047ec4338ccf8b53635cebfeec7de05098ac9a49f51b4e11", "0x1408db23a0195163f57ff57339bc69577b96aa7c9f5b2347cffee7c6cacd3895", "0x0a45ed2874baa1e55853ca869d88ece0b18f92752a6a622992f2c40a80fa1bda", "0x008c69e11628ef5f25cf5aa9a86c58192293eda7b8038b0fcdbe9ec43a387b38", "0x04418bddd1b637b566e983af7174840f3116feee63ecf811ba3c183208b73457", "0x215cda6478735eb143ffb90674fcf75ba4d60f81f2e13ba3a148ae32f72d4b44", "0x035577a54e516696334944d355f8f5f19cdc0006a3d8f19cbf52a315fca92657", "0x14007e08f2050a67267adc8999afabf2df408c524b62d66242e07bca846b734f", "0x1d34dc16f79b6e30ed5a661cd37c19178e1b9b5ef6814104b0f01b3042fbc1f1", "0x210287383f8ea9d022330583037c97c78bc6559b06da998d3486c784518e28f4", "0x24f14e85290d69d501a2347570720ffb805edfa3c42574f10c173631dc15a933", "0x301162024bb27bbcbe7606f50fe7ff61f9ef6fec6c70faf2485d11859f59249a", "0x0112ec7cf1ab77ba88df0bf2b9c9adcd5bbd3904798557b1fb17c9f09aebc0ad", "0x00405e5888854684398caa0a447f1077f2294d23c4fe188bd1d9024b5c786c9e", "0x2648137d6f48e92e1bccacacbe308447399f63583708346e2ebf987f397c8f19", "0x2828ed7039303cd2ab1ac07e24e2ca8df13562f1974b2c9f2b3fae742eadc23a", "0x015e6dc583e4e1f4626d8699910170faa3235d54d4fdac2480010cbc4383736f", "0x0e0d901f126136db8ae40803538a6e638a67be495a8b0da6523dd152be24514e", "0x15f1d6b88717f376031f4c9db9389922c83275af3e65bd06f1639457d8aea6d2", "0x2d4a2d4bef42094512da25f1fc445197da4116cbf1a5f19deda71329b3fd3cc2", "0x2b75516b90c831875a52efec663b3ac244300a4aea3390cbb79cab04a41c9c37", "0x22dfe7ba1a8b83b4ff9e598e4f853568e49212eec0beb566cbd83a580c913510", "0x17356d230f9da4d245e95d31939c5468fd6b4fe1d43a5e6a23c325beb7818e85", "0x00771aa5a01cb551d674ecc77a4566d30413f3c6f3f98883f2297bb2af901700", "0x2038c2bdc57d92fd22826fc76e6d08c2b9f0dfc5284fff92067ca7711869f1f7", "0x1bbb2d783129d5647dcd868d4068b4cb291755342f4d189667cab73f58913c54", "0x0cfa3cd62a22569bd9f83dac75982f5d9ae73f6d11e945db4f1691e47d690cdd", "0x20b8bcafb219c0e8cc74c564c365e7f1aadcebe9d1de307a7d8bfebd9a59448a", "0x133f8f49324ce55abe13c52065b9fd5525d19ae1fd95c968400efc2d32a3e559", "0x1e393e2816d184bb6fd0624f0fa7d0be2c767ce0cda87aa2235863564b6f0ec5", "0x0ea9f996da777929697fd9c0b7078128e70ace44e0f9c5bd2b408096ba6acab2", "0x1f998239bb13599db25c562143e127d87f7f7a94d32177ac46cceb87cb9902bb", "0x2731954ff3fa93fe61134965d3f2dba0bfaccfc91ea76ca59638d2fa9c4a7a0a", "0x18d07a9939fafa512e2db3f523d1cad5de5ee6138dc2d68c8ca06d5abb4ae655", "0x21c5122f00f0db5fd84ce1d7c2370e019fa8269fe7631560f30a4c791f228e0f", "0x0f94cbde49d7bb747f1b7a83bdbc3fbbacc95c68355767beed02d68f444504cb", "0x07786585577d81638c8df6c6fbe94fd632f7ad7e35ceffbe367e9ca3ca33c165", "0x13899fa1b41f12f9ba9d85b72ba310e028736f5200293bc15df542c1f3fdf3a2", "0x1a3e2b4a3410b810d0d8d8e91bc0abbc5843c90e1f196902924901e4a423dcc1", "0x24693cd5298886503438be685277e580caa0c61090ce7de0e7d40e49d12b9190", "0x1cb88707d385048828ee4a4ff4651d26b0c6ce4403801b70e65d0364285bd25f", "0x2d5d8e36c872f5ba089905e748b00c1738ad5103e56334250db8c34f89f4cb58", "0x1df48fd041b0e7762fff784087064fdbbbaf29242a35bdc6a24c764f1201e39d", "0x21aea18d65264f486c986b3dcde7abcbc0ce1f82418b6fe9dc420ef728f9a5ae", "0x295a978d6b1143de34ded6f81e2af50bbaf9e93a3c4f98f07b69a912978218da", "0x04f0f0b54e2f9add517c53f11de865a6ce34df352d0c8b7b0ea8fca0521a3b5f", "0x0c4daa6bd8a280695ceb773c23ea936eae30b9aecb7d29732f3d005e8f6be875", "0x0275b5f950e56bed013209e34c98959fad51b2bdebacfb151e2993c8691e1f19", "0x142e622b8eb094d15647fd69116f59a527d8984710ab8437379206bc95bab064", "0x09acc90fba52574235b7ebe94b3afb107a68bb7ed6d60b21714219fc170d55b0", "0x26512b4e53591f187109b2b4f36f4131fc0bcd1cc606b6853aa20526b9591dde", "0x304cb4d258b30a6798cf5e3fc86e491809ca72e944066160a27ec60c6687faed", "0x09f24d8469717a2bbdb34740942cb66804ed67d932b768c87bb6b4ecf354eccf", "0x302a604d14a5cea49d0411d6d669797578de3ededd4bee595109a509f2005f78", "0x17057a92fd82f27763b98c0137a3daa6aebc82d1ee84dc286521c4b33ad16acd", "0x17c98c3e6b14e5c38bfd3d1918e7b32d85d4324f16e43448992ff12bd0063a79", "0x2d85baa692bbe01ee8ecfab8e20b80b8c012c96d69f694baeefc253bb98e49e7", "0x22a713aed1607d36caaeb46fff411e64c1bb3160db3f3431facc07969dab4d4e", "0x2f7ae4d4acfc8497fda4ac0d082cad38196f265c86089235093e1aac53c67e8a", "0x1afd52944628c9eef6a4d5cf21a9dcf6fa49b1da1fbd9c97697aa50dcd6cf712", "0x198e874eb31875b5796c3081424da73a92708ecd74e80eded5c8ac492a8011fd", "0x014ea1b78ec6247114d4615ce0d11e280c33b0a1fbac636f55f043a5ebf04ca7", "0x23b4797b3bffb21db4277e4eb13979e6774acf0452deab3d057ed6c0eb5f1712", "0x27c85c1c147076cd777f41b99d2e55530d4d43b341121187d010637cbb66ae86", "0x1f846837097639fad43c0f406a4029a3ab6d809c1a27c61e48b15c1b71365f1d", "0x26b338bfdf150311357f806449ee81b2fd29e3f2f43badfc7848948dd7781af1", "0x2ccc6e79733745f9b759c1eb5fa3671dc3d99065e8413d653eb24837a9bdc544", "0x1b7fba6bd285b5ee75e195de2bbb189e822ded19a2867c5323c7f6c575c198da", "0x184a5c858586996f08ac5cf5b5f67367d91cfcd71b35eba37787e44e7cfc61b1", "0x2391576ba9118db12874e5169e93c729f8aaef71d2dedc81d283dd953d59e0ac", "0x06fd613bef646afa4f1d57f7128518f83350e5efc0e41f8148d2ebbbd9194058", "0x1ecf14479487ad8f8e5e4677f73dbe81f3ce377ec7bed9fbf0c0a0f16b912718", "0x06fe9870f03a8f83498e73ecf2e214532b8b114a14cf3b342d7623e9d5192b67", "0x04b8da7397a519153f0756f72c9b62670ed5e983c02a4109131e7275d7f2d1b3", "0x2b1c40fcbdf7d9db85f818aad7fb333b7249db791d1f65f43f529a77e3118998", "0x278fb21e4cad110091702e5c8cdc84425bca088286772f1817308f3109787057", "0x177ef03c343328defd5228df7d4e44d4cd23956dfb134448a485b196572925b4", "0x0d201654bfcdd40cba52e51bd419c0f95c12101fc1063ebb8d81554c71c16153", "0x03b21c4a37026ac5d962119572d8bbabb453343f75c0d55c740aad13968d6e09", "0x072a52164e3175f63504fbe7a0e02509d050e5552490e23d7c9c8242fa870ce5", "0x030d0c184b743e3401114b1f395b12fb6a962191c77c5bdfef165977cdfacbe8", "0x24ba3bf7b9134803ab3dc87fd9e9c27f129764f91c34eb53b557ef3fea87a39a", "0x13e05d5c4e1dbad46885dff27afbf021f7e1bbd432d0a9f1a3dffcf3300a7a48", "0x113a2fe6e9019e83e0e898410c35326c10cdd01429acbb1fab5faa9cf474de2d", "0x078aebc8ff29a02e89514e9a5beb5690b75e598d2af2f9016bbfbdac02f47d17", "0x2ddd3bdf04d7d1449c12e60030b971b44c6577ab560f9efe8e867282ef1163e9", "0x220faf36a017fefd9df4282a946513585a4f6cfa5bc5f9766861fbfa43ca18ac", "0x0eb6a2ea9f6827065fe666ff3d1318280923a634f91efa9e43a223060257881e", "0x0be9458e9cfd6cc6489d7f20d1738f3e519b5c22ad15352cb444105ef4b89a8a", "0x1925d24635bfac09431b17383636f69f224baed3577628de33d1a282cd18efda", "0x0a4098894729d44bb96a4b265cf98090039eff6cf8b170ce3dd6f8e42566dd97", "0x19c9d480ef38aa13105b574a419520aa7d092a68ed6e76171065803da50482bd", "0x1c0a6c07cbc0d6ab894864dfce9df406b04bb0c3f7d7d4f00b3403551411c07b", "0x1d40bd40cdae647cff38b49289ad2cccffc669bd94a6aa724fa2fe232d4e6b02", "0x28ef2d4bb34fb4ff673169aa1cdfcbfd7a869974957ff7ec7bef4c731dbdb666", "0x1b2d5d6b171b0148947d55f61b069828285670f4b843d29aa7f4493bcc5a8923", "0x0ea0a67e504a55e07fc868ed85f3cb24431835409db5e6653cc31fc307d29ebf", "0x14a99bbcb8fff06772149dfbed0103dee78b5622afc0d99ccb2bcde06732c042", "0x28f711676e8ae8c2443c3f82a8b765edc17cfc6ed254b7d2338f922b6843a8e6", "0x145eefa014a02d9cef3bdb305206dfb1dcd4e4b8bb91513eadd1374c38e94195", "0x2379d29d5e9c69d6fba8ca261656c9d0370235a378f77cca2850cfb3d5fc2170", "0x2d12ce4fb01ed5ee6c444c59583cd1a26d8e745443a6721ab48739d7b2685e1d", "0x2dada5fcace74d74dbebe88dafd754b859989b09240b43a46e03dc6fba6c8f45", "0x2e23386575e2f0f1f97e4fb08438a13728dfd5030d398192ffaaa1fc6da5d159", "0x270d58901f888a0d3331391d74b72d35fe749849add6419cd747d6cd67db2d52", "0x29e48b157cb407f9ce069d0f80a4537cd9e87179d9eecab350c78d6990a4e0e6", "0x1d15d50631be723e2ce8bf8b559d975af370557abee33b6514ced1bc7dbfbf70", "0x19a954aa55569697082d97017cb66cc676d03bed6542a58a2237e7483ae8e3d2", "0x1146d8cd42e6e1e47b51d5d80660d7e17ab43467a2a5b5c8c0d271bf92837151", "0x0281a3bc2877b82e9a9796befbe8db3536aaff12bbcebd91de6887432f37bb44", "0x271904d6f98de7de1c70275d3e362c3985b2e7ebc073ae59058ac2b4e71394eb", "0x1b07f0f881d60b7ceddfe4dff878fc7162c92d8c237b5241017fc0a2aef43881", "0x2bcd2701a63735e73b0257b73d63ac7cd7792cf96ed0a0fa3ce3bf6220835aeb", "0x131f25e8aa9663cff8fcdc4f325434fe144056fadabb01d4effc020148f07566", "0x1e03c62451cbbfb82a6a4c851368b9a9cf79366be4c7937ef16e890bca6cd6c6", "0x2a8d3017f2b21a818d3c8c932566bd1baaaa7c45600baa0990aa67a49309cb32", "0x0174c20e110d106eb038cd9318d46691a685d777b71d8852d45602462ec5e3a4", "0x2639df073fa32789d0e9afab0f34422488eae06fd75ef55995e369e1b15dbddf", "0x0c170d68f133125763ba7714624b007475fb6787a1b17043926963dad16afd1d", "0x2fb299340483a1739b0108e631ac6e8917367253a76b9e7993b1aad9f694ec29", "0x2588cfe421a60702216fa0bd567cb266af1042923bc6cb57ed68bb90488f35f3", "0x22c8fd4638564b9de90ca35e661965ea6f01f37ff615ef308046fe136ee5f01a", "0x017cef09c980a80c4e53d7284b5b2a10dd1cd0ab41260d33cc19dfada88e5447", "0x1d9f0a3022c4764f9e5e6404397bbf44be049e5185cac48bc729ac948ab01331", "0x1bbf6b14ad3e7666bd58c7e9750f7bb9f6d6f70c4c2abe91e20fc51cc5ec28c5", "0x14c8d23e7b15787024794dc33c58dab8c117b51b4588f5ec5cd8c59f9cc30dcb", "0x1b91fc8e62a79e98f545cda2608f29a4169641a3f715ead78bf494822555f565", "0x0ae904147620bcf04a4b4a9679b2713fdd8cd50296d42ca318548e32b81e3b38", "0x166f3e332577ce10c873891b5cc742e7c34bb4d62b5773316688e510f4d82b8b", "0x0141e088bfc6e007a2d82cf717954720cb29b97b30c8c8125d5f9b46c2e26621", "0x118e0ee4202d127a0577a6eea29bb614d99c1034fe0e2e7465e91e97c837aa29", "0x2970b8f31d9b9afb3d3b912d90594a847ba0483dda4b0934df1278ba14bc2ec8", "0x2f4a5eaa4b7aff3fcd06c9d68fa2e32e4b4e629aeb93eccb552c9f96fbda3ddd", "0x0291d6cc7e8e5152902f5b05c13002bba95cb54657ef393e92bcc23b9bbf7ffc", "0x2e221aaf4070c2c0d735b5b0a52099c6594d38936914c9393d8ecd2327088c42", "0x103d669fc46b07aaf6cc4489e85724181503000817f8c1fb5d471b2b36179f22", "0x10dbe373ed70674013a939b46a07ee4f8c191e3fb639f8d0a781d1ffba82fe90", "0x116229ba1cf580ff86ed006b9207036e69cc0f1b55d4088ab34e01a3f25fa531", "0x179bb393b9bee8ef918a2ba2239ff1e6bd63d6d48cad4ab6f2d319f2999be4f0", "0x257a8dd0150b1254b585122987e3bfcdde7f914d374d2bec0595c46afbc0997a", "0x1015f7f8871dbab0d121570b0ba6417980a2d11b292fb2a37ac74c8a6e198dfc", "0x160acf3dc98d9d1ffb15eaec2287d5cc743ef3d16fb8bd40946a24633d23825f", "0x063c73552b19fe6f68e9df9438a581827ece6c31520117c2353c67cf0714d5b1", "0x03e8c80daf887938cd355ec710a9e32f44c47520aaba5dcff9c62c4bc0412a82", "0x1ac3f781cd9676c41ea21fd2b7cd3f38cc795eb6ba45a525b291c66b8ce7ba68", "0x189d712149326d71b0327f9b7102ca0f93043fdbcf400c18e3bf70106493354a", "0x25a912761f8d8bddfcfbc099bc994a355176c54a1831f8eea5572c476592c1ca", "0x1158c9758fdbbd6551fd2ccd615dbbe0bede969a6cd0f28040e93b5239eda2e6", "0x28e7b56cd29b16133e66383a20edaa6a779b6afb82772344cd2c25979a9a5eee", "0x02c3597feaf103aef0cf0da96c7817bfe5713828c613e326c975ca1309927700", "0x1c4cb6031554a2f40fcd1b71223a97975dde9f4f5c26ca08678870a139ed93c9", "0x2ec728fe7b69cc421f18d96bf7a826ca1b04261f24a98fe9c1e8a0a41b64b58a", "0x079e331f65c8a82b875922c8449bbdea3a111a68179e5d2dffff605e1ca47dca", "0x026cd813f24807033d7c0244c9f0790fb80da30e5e3c1e45d7c7032f2aaa1831", "0x05bd11c2b64de1a736f93ac8ff7e0c166f8c570a6f068dedaf72227e85c11451", "0x25e16ec5be688e137b2cccee835428dab939351b3227e8bebfae85f3a1f9c270", "0x0b38073981b0af418fe69ea55eda1be5d289b2f0de3bdde47ee6483f033b16cf", "0x1b40be531edfae81a33e40638fe85f88067919a14dd1de793e8eb1520db3a2bf", "0x1b3437d0f405ab27c185656999c538a67654438f28562b3a00eac395e7133835", "0x25abe96ddc21b2c17b6bfb3a8a90a2ac051b3871c87fb9e35383cf6d7223888a", "0x25e3fc93bcdffeb428bdf8c12491963e4aca18475844b67fc5676c73fd0eb358", "0x03af96b4b972c3371b076821359cfaaeaf9638a072c4f93e08ab119e6c7429a7", "0x232a48732df2599b09f1f1631d68129303ff6d40098f8b2600983e5534435c11", "0x0cdd518a91b38feda4681d3bc992182ee111e0440e9860cdc71cdb36ae80c1e8", "0x1b821898c43b4f3ae2007e994ea83a84d3fa63e7595db2f41312cdfad1cf2499", "0x1386203ae413c1942a336b2fa08038f4e92e5952e523bbdf7cf3378113ef0cfe", "0x0425657e57a9410eba03665cf1ce8eff3e0de9469b032d468ba15d9208fc20b5", "0x27884ade4cb4eec0c91c8177e0971bd5a9b844af188d28ac1980ccb425fe6986", "0x0ec81730de0878942af4b3827b8bd9ac4cbb1f3ab7ae97cd1bb135b0b7c78f4c", "0x0a93f1c9629ec9071e268148c6503ce1800f4cc3c5389c36e9ede3eebabb7025", "0x07e9c58dd7c4767fca5ccbcd7bdd8a4f4bea7858542b298743660654001ec52f", "0x0975e07614ccfe3cf39fd0208e97cad49c65a30af3590b24df1016e6a7ad9b39", "0x0283f302c98975a418a232d3263d80dd74300113d851de6d7b5ef3c7f9299450", "0x2b99993f81272c00553c71827e9e24b3270549e703515a6704393b3894a7d378", "0x03cce63cef0bcee4b9d5c753a190c249127a628b4eff5d557f2ec05b5d033c9d", "0x2bf4ce1340a1e717fd8df525d46439375eb3642228ada9dbaca5804e6998507a", "0x1ae9453dcb8890ce578b221d846612a3396ab24ac8057ed48209efdbf31165cd", "0x2764d3e37c82c76382c2c47f4a93dd8e73fdc7cadbec68bd3b03b4dd75c09871", "0x150f9419a3b6d46dafe052942e15ed496e5b162648b7ddd3cf55bf1e52f7636f", "0x0876dc242c8d2aa183d184cbbc4340d5a9a3a474ea84a99046999d95c7884bcf", "0x21ae86ad0b69ae69e4b9be0ceae01667895a9d9381a1c0de6d3864d228e8ec55", "0x0ba0ae75f3c762e9efa11794c8121d2b7bc6ebee38f105fec003595992419580", "0x10a16abfd6b38360d4f3257f3c51c9fb94ec5f845dd83e0c4ac4f7798f2d9077", "0x09dcd9b007d04507c0bc772c0ebf964d496e697461753bd1bb81bbc39583de3c", "0x0b1bb2a1096618ee3bae22563f63fcf7e85a817f6345501426c271a2cf1975e4", "0x044c7652068fbb0991aed6944540321bd6b09a1f0d6e91a54b8af4dba18471cb", "0x214ea955c4b2a5107d885a37734de5c9afcef744c4815593f970bbdac51db55f", "0x1684d36dcd86408b68230ca9f98e784957bfb7552a9253eaee876820bee310aa", "0x01666ceb9d9cfa4cbed159ae6ac945516b093ce589c59dfd5abeff6c6c2ee06b", "0x2151a99ef7bc07707ef7e223864c9e8c50836302f299aad05de35ad74c409daf", "0x2f56e15326295bd701a40314e42ccfd5ca4e0814fa54d312e7717e488da05955", "0x116ae009a6c4bb4c28c016716364fb7e7be3b21723755e1607b1a262b91a16ae", "0x2fdbe71f53d54e5b3bcb850ce61743d675be601d74430d9eb8073f6814205189", "0x011a91f3be424b955b2241d753e3d6d5b0c48ff9c68ba868f8a611232ba442f5", "0x1c7c9cf7751255070ebdd0e3db7f97e5d95564d33d2b3293caffa0434e6d788f", "0x1eb979221c31f6978d43e7568a7cee7709d68b86e56d77ec89587dfaa78261b5", "0x263b48e46edff89f2de5dcd258850d200543ee5dde31459b6fb5241a6bcefd76", "0x0785b9559c5da0bd57a80150c229bb2d75f51094c8e1a11bfea538e217d2ecf5", "0x23cf1ad5ac576585eccf97091be57cf0ea3bbb2d3af9174f8042582424321d9a", "0x27d4db4bdb30ea4e07550d9e077ba8a9d5caa1d418c1a76a12dc71ec55881180", "0x115f6242fd5412b1208cd4023d8cf87fb62d33a8292b231caf8d825701ab681a", "0x089bbc83094f64e293c91ae79a8b7e009d0f679c67dc19c62597b04e1415c424", "0x1d4a1b3e7a6d26a8c81d7e9f4bf08af0bf1370dcd0d2101469ed87d469d246ae", "0x2868583e9bdeb10538362d7fed8997e9ceb4b43ab8db5b0a4b2f140943ae52a8", "0x0b79459ea80e71539e8079cfb3eaae03ce6d0e3c856557c3f71fc983095b434f", "0x119119d4ed16eb8d4766c638d0c34acc159a2b8e24e38928c3ba875890ea1985", "0x0bfdbe4b4377205377f69c3cd5e93ecd2a9cb3b4ae2c1541d8e74b64e965a7cd", "0x0d41174cd6b5c4c0d34b2f4d841f3f9da4f100e20cf6140864efe6eee54c08a1", "0x21c5915b86d2211067d19fe9a318234043b80b53312749898b537783cbe4e1c7", "0x1038a4a9cfa20caba2d23ef064e7419792e83a31f0cabde4eeab2e49972fd78e", "0x017cc0079f9863177147858c89d3d7f31adaebfbe4c9e074ecabd20b7d2243a4", "0x294ff7e5e36f7690d60fad36b804e35659e82117ecd44deeeb79e58bb8c874d8", "0x1f03f5d810dfa62edd32521abd1d283c2416a28fcaa244d36788eeeb195a9041", "0x002113e2715ea893d00d101bb30e6e1702157d10faffe85095427dc9d9caeec5", "0x2e92c29b7a243a299d92e78195f30a996a3f534d5791a32a0be28bb7e8960c7e", "0x00bb300ac74564449f872674dfd9e17a185432f1f463317cdf9d499c87cf8595", "0x250e835ccda0e466dbd59a541e1d03c4fbed637ac6b715c82c32af588e1bb020", "0x06b776c5024ab6374c84f5528ca7930439da012d412f9369ee36db33fc435826", "0x21df8b318a44cc5f9d54bbefc97a91b787912bdd5cdca95f47eb9cc89abcd1e2", "0x1e4e1eaf5d1729d55230bafb1743de4732a18d66a9692849701f9a25e74ca9b9", "0x268ceb3749719379b14ea062c63b359449e70ad5816df014cbd102ac647f2228", "0x0e252b231c1f0ef18c8d6afbd879eaa7f9e61dea73247ca3af62b3c1e8794fbf", "0x0799c14eec20438a0e53b69882c90c6d9239b7367be50f64ce92d9974c2bdaff", "0x0fc050000c821a4cf4ee6bf4d91ba46d2cac2305118ebc194684a2dcb7d7383e", "0x261a8cec31c1289f2358c73530ed7e01c2eef88cbad4010ec09d036e57d2a9c4", "0x0fe536c9c7dda5070a37fd31135f77a67f9f3a986b1c23deb83e85793cf3cf89", "0x19ffddaefdb50032b58e08b4f377b1c0eb37f06375ff78e7ab7b605781dde8d7", "0x2e204413c53445351004316110f539849ae7971f877fb0841b19ee753ee2083d", "0x2aad98682dfe08ad2c9b15f4455a201d4a963ac7dbb189a42d2b3e1c3e03111a", "0x2c89f855544594b08ca43a7c32c31c0d90aeaf300132c8b4a4cc66843a181ae9", "0x17aa1f236e0e89d6c821337ec90bd7a78b32eb9bafdd9e83ff8c7b1b9784828b", "0x290feaaeff298d887d5a5baa47fe2e84070eb78d2079d791acb9067a979ac1a0", "0x26103b8738968671897412fb4246da86eac69235c4a1a71aa7a928034915f67d", "0x028a70fcea0f277978120db4bd478a6b09d54eaa8a97d369dac79716989b43c7", "0x2499d1e4544c6db94e9ded9ba93fd92162686e412099de5baf123211b4138ca0", "0x0a1aaa6aaa97e0c7228ffae517b59392211af38efa670aa06207ad7f05bf0af7", "0x25b6189ccf6ab3a759641ae79385f3e7de0e375a61c260d84d91b330f83616da", "0x1746b0b982fefd9d90e7ce72cdb5f92ce0c6990eb43a27cd53efa1bce881eb60", "0x289e95d858d2babe2526517d850587c3609a9f4ad32a646de51e866bba0b42be", "0x3048411ae21ced1b31d43d3496c92e66a26d53a24f250e17f328c358d97c220c", "0x037ec711790b5b9819ed2f20da092a6befa9bc44cbe6c1c21f33d3efb17688fb", "0x2d4029de72bf01e5937bfa34ff4d5ebbeacb010ea816d9fcd6e7af91d9a6714a", "0x0466fd8b23836d8e45a1751a1d0d28db003cd20545a88e41318c571c38fd3b12", "0x032edf5df6d833b5490840e0140247218d6254c3697d0070fdcfbf6f1168e841", "0x24098e733e307a6ee49e38ffd010589a51c1df21282d82788f5bd0cf8928d1e1", "0x2d5e2fa5e630042a0731ec84f4a548420dd5674b614b3de83e5ca707ecb32706", "0x0e77210dc9f28f0aa0b9330bda698258e429ada3e10f084f5066aadc86d7de01", "0x02ebdaa0993f6a702e710f8fc47392d7a0e5186294ba78ccbde291351087b4fb", "0x05667655c2f54b241385b86fcfe274d1f245699cd6aa60b6fe515102e6ed9c0e", "0x0cf97aeba824e4585cc9e73c62f0334b8ed4cce1276b939501fc2fbf6b2cf2dd", "0x1b0d81d58b85a80d5fd10b4c399e0ba9603e0d60c7a63c89c8339dfacb3dd88c", "0x165261806d574e0612d935eff3064754aef0f9fc86984b1e31da996961b565ee", "0x2543c122ea7e08406b7c5a89f385579c585ce647d98ec4400b6db8ecbe6dafc8", "0x18aac1e93332c0695691852880b308f069d8749f94c92372c1367bced171ee01", "0x1bf63cffb45ae6f08358df0152ace17058bb3a63b0b1f2567e69d42b44048bab", "0x20283d0443c843dfa2cccb285119fb4a12094c90ce6ada0f6def11ec6caa6b96", "0x1d954fdd63b3ee13a6ca13dffe9832aa9d9e5f2e1ecd3e407272d87c281250b2", "0x031b80ef30eb0f639c33fd4e7d5b778d607ce624ab7c0bbcd9b2921b6dd0b164", "0x1bae6f23461f682a6389c607670ca2c975b768ba4922543dfe0c78dcde3ed854", "0x0c15d34b4ef0d6dd324f1fa8ef058bf24b57419c1e49396aecc6b2945562780f", "0x0c95d91f46eb587506c57bbc2ccf87a0fc5348ac0dad375eb409aa64cf92da96", "0x2d1da15ca522aa1868740b9e801a008ddb7884657ae89507fb99457326786ddb", "0x0572ccd7fc6fe06be9bf2bfa8b4891a37e728805c609f1e282a0214480e62894", "0x2016ba766dc14ebeb269c939f988c0b0e5d7a16f2649e38877f2ff8a525a88a6", "0x1d570b5ff85730e9ad8c3261b6ae8574999221574fda8a97f19bad50dc2ec724", "0x143223d027cb22f42b20a25860333657c243a05e16f8a0fb07784a3f8b3f83b2", "0x0f67ed530f31504bfe3b87325682a5e9b916d75caa7b5b3d5e222c7f86417dcf", "0x10138516469478294fef0508151ea8164f146c8e377e90637c4630d0b45de53c", "0x286dcbdb9c85e5d6c68066b69720b550f46158374b88e76ba48091661b591e19", "0x189017ad0ec6599655fa5f5c041b189d4a5055a83914e5eb1565209d44366f1d", "0x123bce9fd40c7f1962d00668560cc3192428bc2296c92fd13a42d75b41b441a4", "0x1f9aa5e25387985073ca220da7df2a6cef8b60a089e4afd93e14eeb3d5dcb5e6", "0x103f38ddb6e1a669aa42ea1c7b9ab05761f1804a15fe22f26bd34367654326a0", "0x12389e0109377aad426be4716375841c2fd4ab598b60b6b2b4e7a2ef8a48ae7a", "0x204ef0a4fe68dbf212371431265460d3ad63691245c56ccd4f6990b989537d9a", "0x1425c7e1f5f5a42708633437672f8ccff1c17bf74dbefa1e99cd040cd193fb91", "0x1d1b25d3cabff58428e2696ecea9975a9484302d17fa12cf33d8416b4fe1d299", "0x23908186767f07f13d0adad116284f2f179144750b0f1ffdce62eb4797ec20e6", "0x0d754473d7c8757e822a89718cb7d7c5acd1125ca5e0d12718486552a3741974", "0x2d59de71c65b8678dd79d9ecd3915197d161b253913299238ef8d3d28cc12d67", "0x2b2f638dce6c5dc04bfcbfb40d6d547e52730cdfbca74f0c0bbe5fe25e0a6e44", "0x20831f33188daadf77c482c1f3aebbfccb9bc2755940684441276f800693c758", "0x1bdea03a87112ac5f71d27b0690eb578be20a7eab02ccf7be94a9b504306bfef", "0x07f190626c5ce403670abb23f739112ffb91dc234819180d83de234de743a31d", "0x21d03a8acc5002c7565dfd84fe3001d9d7025929c71749de25382bf9383c70ce", "0x037f8e1f9f310b909085ced938b600d4dd06a147d5183992d9792ac4458f7936", "0x02680cb420ea4ae49c2286e497ad3cbb55360875a2b69e17e1fd096ebac531c5", "0x13a3a06d1fb827ff1406192162eb23b3e27e94cfda6aa05a86ab5e325e5df358", "0x07060927b3c64111746648d6a8433ff8f373a4534841e5cbffe5bc41b9e688f0", "0x1d4143526045c6c418ca7edfbf9850fd260d231b52b2097fd22411041cbeef8e", "0x04f6db2530b719a376c6e7d489cd7fbc652e7d2d09064e3e9444978c9be197a3", "0x0542efc3df5bcef699f0fa7be5c71cd32d253f20488bf70d734241e434dbf09d", "0x2769424bb96a6c21c64a506107d4885fe53603c09ffbb01860658330ab1b57fc", "0x123bcdb0cf6e7afb47b866827db72332e93c571506e073c498ad1a92befaeaf0", "0x15a1d25ab64db0353b33ad1009a867276097d5a60b4b18dd02bfe855a4952b21", "0x0b9cb6fd7e6ffaec8246acd41e43e0712fd76d5cae56a94076cd816354db31be", "0x1f38c1ffe5470c8367677c8c65b3f83194cd9c7d2e8080a1c31513a2c23912c7", "0x0f32237d2d6ed00b1ca954df37c30c988f89415eed829133f5a73634d05f0c60", "0x1905f76e825e1671f867fb5858f25e53a45f8f306a9a1b6dee7033647fc8ad15", "0x091c7d54e02067adc0794494efd0ad906e8c338a524c37f825f9003ac312d02c", "0x2dba5a21943598041f90860c8e92223d7511c74beb4648caaae4b8de3870f3f8", "0x293a350bc3c789dbf7c2e5a015480678a755ebcd68e1cb29e41d1d2942c579d4", "0x049d0199b6c0f2b3122d7d74b31aea8fcb701a24f40ba5fe698de631d22f6248", "0x2b9325291ca148c86eabc2eb32cae477dde830f028f548b5b5c6e143fb8ab68e", "0x096a6ee98c5686bf3d586a0e54961b0a3afd6d52da377122e85a355009f4a560", "0x13fcc77ccb4a091ea452a3f4a10fcaddbaa7ab18eb3f88508bd128ad2ea5a818", "0x09199f06156eda7c8103343b344bab11f43551bb9507bccd47a292af3d4fba68", "0x2fc417c576e3fa9b6b38a82e0328422c2d2dab90879e42fea73033a7562166b0", "0x27a81a0c9e5d0c98fcfe679afde0caedce2c5fd66742492e80dce95fcac79ff1", "0x0467bf8d537dbe823d6a7d64ca2c7a2417a2d7758fc1a89ff93304fdeb4d079a", "0x071d82bca92aefe7636f10c9ce16f7e5b41314128ae5907e1884baa183442469", "0x1473e4434eee30b2e7db34daeefb0df47d1f5e939aca25394aa11a686ebcecb0", "0x2303403014edd8333b87d5cc4cb08ffa29ee752f6a367c5c9918f8e3b80acd49", "0x213f2f341749dcc702fbeb8eb916ae6575445cd9d4e5fd5bf047aba7ec25dc82", "0x064369bea4c676d37efe3a65dbd4316e0e1b6b51ac48bf9c01b52c15b24e8a19", "0x26189341509951e63ae3b022397098e5fa9353625280131b31dac3a1c1837967", "0x28c51ab463012d8ba9f0b7f8eec91ccd7691ef0570217892d57494c6faa6abd3", "0x2a3e5a660753c0f733827620cf3d2351e4f171133f749eae0cab25ac5aa4f0cb", "0x0bf314d9d75e35486cf9f62f6539584d0f96fcfdfea1617b76a4640999f3d109", "0x2d96368456c5fe26d119a5742d014db9e86feb0e2315c2a37bfbf7e02ca01494", "0x1ed8f2f743e4af9edd62d9add634474d54113712e5e948f05b82d06e7b59913d", "0x008d5a047a23396ab6b1c02d108974b25ae135e4f0de6805627ca074f3c58a89", "0x047d8ab6c52350d654f86b8942f10d2c0021bfe9dffa1db254dcc5028aef7100", "0x1991c857b30f3ed8a58fe229da5c13fe07d75199998df10921068afed09a6a36", "0x022e4866b8af16ceb7fd45737ac352805b1c575456e1535a9e9d9f7a79e0a5b5", "0x0a0840cc3720e659f311daccfe6348f287ce1dd473912c34979a48e69b06aa54", "0x0e4ff910ee3920c587d0610db1fbe08bfdc2db5381926263b177698810dda57d", "0x155d27b044856920bbdb5667d361a536c3f8c5a5d8599e2a7955dffee77c266f", "0x0cdc005d55f575c61a43d8a28fdbbef3eec35e56a438ab99680c4d1efae64e7b", "0x231e87ba98a67f86d501651f5b74bd53cfe26b9ee09c07a9d8371b6bf7c42be6", "0x06b4d87805bfb75f9c37a61e10e5579122d369327c344d516e2ce6c89398b379", "0x16e66d16d3f570ad5da3dc1ecb3e18b38eb8d8e05b2e8e7884491a2e1b2e562c", "0x0c66a6340c9c20cf66de3d6eeb9d49e8a737c233343df8d847e5a718ed5118ab", "0x154a4b19575147b6672bb0a721ce40957fae3e336c82c7fca199ab30e7512274", "0x15e4b6a70cdabf2c4de98419da811d062ca8e9dfcbe39bc7542f66f7b60bf63f", "0x1161ad8fba20760a13bfd7b7ea1d38257edffa8c52be8f410087c916f504afbe", "0x27b83bc79d2ad4da4b5ef4982e91b81074985cf23311a658dbd0ed301e90fc5a", "0x1a4115730d7515e8ae8d0000e48f6cefcc893190566d94d39db15517f401d9dd", "0x1a9c2b3b97a4108828bd76bc41968d31402b4041aadc416d65c20996ee6ac6ae", "0x156aeb50e11c39af946c5312fb0e14db6e919490571e0ed6b555556c31f97d90", "0x14d25507db869e282d0759cdf16e81006faf9f10e663883030997ab894149e2a", "0x0336977ba5510fb3b812bf39fa1946594a78a99c00101ef101727c2e8e7cd687", "0x07f8bb771e58e5761017a9562c6b285b93d6b709aeda186d96616197579f1b68", "0x154c478a2566294d2f96d834323009af0dbef15da62def8171c309a05ed1dd6a", "0x1b938bf306de7f48325de59877abcbfe2eea089eab0903802c7bf3fb9532627d", "0x1aa446890cf65be6ce7f7d603bd42e03b7fec0d201668f760dd609d31b587e20", "0x17eb7ee41c38747374a7b1f145787ac75b8d542d33494d65f0ed00ca4ed17edd", "0x1d1b95e9e4dcf3df901aafe1bda2cc8237032fd36ed508c61c8b4109f820bb61", "0x099d7df97cab5226cc7e3a35ceaa635c22ab0110e93a62516f0370a2967429f0", "0x161e53b2f10ee9aaf22596c621480e1de2090503fcc55a8295c23d45baf68f94", "0x0b9bb53d660364ce1a5222bdcf2a80a161934e3e92de5057d668dcf49dea99f5", "0x1c8457a265c1756de7571b30290dcb48fa0beb2b7d1e44114262515854808326", "0x27f9c6fd0b90983010d60a37d80a58abb0f3500d6d16c9bb4d6a52ac91c4a491", "0x26880cfa04ecadedfda3a24a956734d4abc8ae2f92644369c8460df5f21647ab", "0x2f3b58e9bcbe37e95cdd9990aeb26482c55eb2a9409e28e56cae24dfceb8dde8", "0x1117104decc679a66af2e7588d971805b518ac219fac8078cd522ac8980c6980", "0x01c745418e4cdd80ea18a339ef590e58362b3823b1fed2d6a8ed942190771cfc", "0x0cad8a954ec6676b42e43c86902432a1e17e2cf4af5a3274bc1be6726e1dbe3d", "0x1b30bb989db0337d04320fccdc7d66f0bb15b4377fce1a75b4278bfaa61d5f57", "0x19a557a172005f84242d40c56be7c37955cf74da223557b0eaddeb5b55c6181f", "0x2a1f883c5eadb6964d4847479f52c8250b4ccca0fdb292238b9375dcc218f4c7", "0x162a0e44db8faa02dbe1aa52b1680710a8dca6091387695cb22c1ff844928341", "0x0ed9944bfe48542efa10c9f20b7dd4c6b15584e126bf2c01c8e04568bc8ae21e", "0x1d53c076c105da67f5cfd822fcc9c291dfa2923c4c6d275ddb45d926c9711c2f", "0x072ba0a2cdae57b583ba1d72f09c745e50f4e16adedd6488cad8b793e3d2adce", "0x26e72dc609c2901873d40a7e739f70af722aa439a0fe417d7568c38e38f47ce1", "0x1f3cab65aab5d0cc6458519a14d2b0dfddf4c005a63303d1738f56d4c41602bd", "0x1dfb345ab565970e95c89ba297b6355deb2f2302b66179e1dc548983aae02d76", "0x0b60e697535215bf10f1cb1208e0e699bd88598199c6d8d652e69b90ad80e6c0", "0x081593786e302650396b0a45ff8f62366310a1f53869d0557284481ac4bee258", "0x260276a46e6c624781f3a777a9b45b4835a751c6b016e584da35a3c309844351", "0x20120b4045167313784d0c2cb4ede07afe7fb0605518f6f50cec1b8a4b68ac73", "0x01fc1e2292678af8dc5dc1f2f1f573c3ac4e195c5a9857e40fae92309bc768a9", "0x14c0047ad00b7d736a8d817e561e582e901b4481e38316568b1be267e775b93b", "0x250b4e6ad1c7ef8ca6c251c27aff101d7be1fc25fbc484477cbbe4e90d456d2f", "0x11aefbc0c4a1db81e5b74581f81f7a83ce7bfeefceab74ab4b6ada0d8aca2acc", "0x100917e088672481c83ce9e3fcb3db32fb72a83332e5b27af55a48c73a6f9a89", "0x037b5eedbf4da97617f53b898370933367620388d38e16a0bda6a7759714bbcf", "0x0af98b1a856c51387767bc26146888b2806e66643b446fcc3f91859fb39cddb3", "0x00fdd008bcac697e8113e71c1c0e4904f5259f60aa43ed448796c0ed948fbad4", "0x1781e1fcf5046e26f19bdaf3416ea604454e254feb0a493905f566b51510b596", "0x0e80eef14d5ce06847a51b0e9e4541b3ab94cae7ca2a536da9a264c83918594c", "0x037dca03a6b5e150b50564128082e6980a67703fcb783e0e3e12033004fd76bb", "0x109c28dcb873b3272d40beb0a3fe8f4fdb1e7a2ec5a79b3c437c19dc4e561f67", "0x19493c0f5c372c7ad0c4f096bf4c206602ead23d19773f6766f135a71e017bea", "0x1b10be965cb7e46f154e3c08a36656c2e8954b5d507c949f7597b971c03de325", "0x2de26e700320ed4cc986550d9e4d6a1656115670f3411f5f503404445b4adb7f", "0x11d86ac71de74607859deaff3cf093f8076d28620a88621c09a7aab1209a91a6", "0x2c3c3cd13f231389681701241a54f58c9f6af1ebfd6cef4fa30e9fa2fa4e02a2", "0x078864be7a5f36c07fa9248e98181040fc5a911815984b8750f944bfa5365032", "0x0fd7187cb6096ae0e12e4e276419a03edc0d3246203362d583cd064a6c79fff0", "0x15e626596829d802f0adbf2476e9566e1c36348b0225eeae7e38bd0e3eb2dda6", "0x0d46ded5521d165c4fb07256a2f7f5e4819f6d88ade910b9ad3fa6c5d7dfab10", "0x0795397bde46b5a97a23f72a8b926a329f3cd2bb6200506e7e832abb6453b8a7", "0x13008e1519be302934f4200329db951b700e322db1a87dd5798c2b9e1259e9a1", "0x1a3f403f644737a46615e047a42acadedfb3d84fccb73999cab627fb6050123e", "0x0c921bc32a9fc9eac6065f5dc6346159ef9f6dced9649896b14edbf3aa8264f8", "0x0078f97a37d55f50fbd63b87d595dc665fd206ed6c887509ada7f1af0d1e6493", "0x1bc6393214162a52026d07fe770e530763c725b7539d9b219cc574943977c6d6", "0x121898c012ec88514f155880c36c1755c158939089f8a895b565401de07bc60d", "0x0f1bca466bb24ddcc60ce92b9aefe7bff427d1e57e56f654fbdcc362eb1e0d6b", "0x0af379ec4d8d65332218f5138dc128d41b1b35a33a5d0efc5dbb6c881444890d", "0x04f21086392ddbe22291af900709be87fe4e9d52b1dd659ec563bd848d42dd77", "0x035894f580c826c669d912a6966478ecfa19ab1bbe80e5a70c6a1867c02c8d95", "0x2ceb915d2e4787cdc8e948a4ea35ae04bb6a02c0720c51ecf9989a94b8979482", "0x0633d77da5ed88f9c127c459a30d5f8cc0bd85377a63c4e7541ff735271e66f7", "0x22f713759545175f343d00265c3ad9156ae99a35f3045a03446fcd88ff33168f", "0x13e3034537e2b8207a22d1753474f2c4bbfb103f2473ec508348ddc50d60297a", "0x12236867a7bde21abd297a77018eeafe4b840df67f784d1b6981d7e91d70424b", "0x15ad10d6809344fd76a38b99f45fc3d10e98f0b4d1af4eedf461c43e92a6c0e6", "0x05e7352d95dc1c7a20313a53e66e69525902a17e1ed43859453142fc49529b84", "0x29f6e26d8d6141e1955d9fb3226a74ac71f393b16aafab41e3c787e71fbfe196", "0x1ca3c0b4056dbab797c54688838a074cff8de6bd6a75c7b6081f113b1fe37380", "0x141d31bd71dc6bc8c4ad59582f59b963c05623de46199438ba7edbe4be2a4660", "0x1063538fa44657399e12597ad0c9220fd608178de399e5a98fe8abf3ac410c83", "0x0a1aef7064cc9aa31935dda57cdc4ee0f1104d4345bcf2e42ac48aca3fb9158d", "0x085280793128e1556cbbfb35c9aa97aa074c4a60d8169427dfda366e42686aac", "0x06a3c8dabb9a0040af5671cb1ddbf725b484c68360ef5116e9b7ec05fe0a6966", "0x09a5f6596e0891dcc5e27a3b98ccf537acc9a8bb74f8502209b436dc071bb4c9", "0x11620412943c57b902af3626ecff608f71e3f958c87cd0014a21f94c9ff355e9", "0x052144d7b94eae33de0d6cceb2e26c829b7f722ed2f9b6010606fc6f38b7cc63", "0x07ad1ca346d6f4cc17bfe58274c1b355659092c58295e4c0e78111a387aeab1e", "0x2963052dd36d3383f358c8024308dae2127213640c785f202a8d83251244d4be", "0x0489690a5d56372b457632d77ccc8b80aa24874737e9a05de269e11618ed69fe", "0x1c01fff06b37a517d39ec7afda66ee768fd39ec5689b1ecdebf31299c376cc66", "0x06b30c158318d9b5c81edee80522afaf72e880fa327ccb07f8d87ddb66f15edf", "0x16d571fc71e5e4a9630373d12b85a412268322cd94707eee0d678d2b6266e9ec", "0x067dd981da6052087bbe44ed357898be8c108fb7ed6a13481a650901300cd584", "0x01144f33bf1bdba903eb0b43449b24687bd995f0dbbcb654e38aeb94a6d93a1b", "0x1614036785ba16cc3e158bf70c214fc0584e433fd14009d576a6787970ec0bfd", "0x257755228300963581662fa0e767f42d5bc6fd642f040372c53d3a1fee9692df", "0x0de8628a2b51d70e30fffd251db4dc618df73081d01df1612182b2f3bc07ba1c", "0x2fb3c8b96fe17cc14327e848a61007ac7f0432d3b40f0802f764ce7c16866428", "0x1b68037617ea65f863d828f2bbe441228b9d76d9463d83d779e5eea0ddc92297", "0x2882c16547cb68f8806b77ad813ee36372353e9bd1c006fd1961020508774411", "0x0bbf09ef8393989d28a68d1e0bf9b49b9335d0c3611136494e128e5f7b64d8b5", "0x02c70af6d36c07f4e4b654b3f8ad98b2c91af09b7bfb74079977aa87f99b1394", "0x03e7edebd18cc3ff82b835ad08bc4c3371b7d55286f7c48c747d930127f62b5a", "0x2d024df041954ba23441dd927b30a1ed1028e92d4c351643296742a974139b6f", "0x298c0d1fc2f36e8fff334256bc5cd7e9e43b892ca176292b3a64d76227cc49a9", "0x18e6416958898ec89885353630496c2c5f572ec50dc2d04ef17869798f9aefea", "0x2d53a27c2c07fb96058b88c9789fc3f8e1d361a412bf164b2aa0e66e700b3678", "0x055277041cb7a122b1618b05ffb93f723416ea8eeb6813085dd54a99db3eb13d", "0x2643e6d5ded06a3b540a3a17e76cbced06eace4c7f8e95e99db09a1cf674fb25", "0x04c7d00cd7767e1c0a83375a7b11d43bc2fc2d9ad3ff6366890a261c53c310b2", "0x0f89d1e5310d06767b2f0b1266d56be653d83648878ea25d79c4ba05d7192e26", "0x2e6a9044a5f48fa9bb75ee3a7599da717dcc8996cec003d26de87e494ed4e97a", "0x2c99c1ff6a5a75729540c409b39faed9387759b5731f0401e86c9df9aad08cac", "0x13ead7267dc6cd6162931836b07745bf142ebf38fbb16c030a410055aaf41e6c", "0x17a87105c96c2026c777aa33a53292ee200cbb9f855d990949a36d55d576f7cd", "0x2ead3b6ddaf49661bd4bf3f6cd1f12127b8e26d7baf9366005861d08ababd4ce", "0x1947f8c0db2c58260479222a71b692e4eebf33cca2cff82f2ed62f90f51f17aa", "0x2bb8110d2109c6a1f2ec56bf72e05a161e94919bbb0d855d5bb351625a409e86", "0x017dd76cb0dba4956f8bfb5311a83222e60bf5df2e20316b336693d2871a745e", "0x1b6a1fda58c084a90932e269b8e56fb51cb7741de326280e035d9d89925a453c", "0x17d9551144697337ab2dc2942cb774bc424408dfc3fe1819b3bb30fcaf404b6a", "0x12ab68bb7ba2a36fa645f90fc7220d4f82e8384e231b09ce993938a349e0d5b5", "0x0da8dffc7bf3ca3d2adcbd362035aec9296bc74ea67d1e94a2f6f7df6a0d9219", "0x1496cb3ec7cda51d85f776d8613b0430e974d7c3a7a6a843e66fa2531da27578", "0x2e81957d2f73aab44a59030affc945b26172fce09b4d4351ae53ecdac82dd99e", "0x2fbe8d6ba5027296b98f0277b27e287e4c59e9b1f84624e0097db390fa65c090", "0x2804d45c96d2d8422c8c1ddad8c1115d92aec2b16930cd70079bd44cf41fd98d", "0x2b7ba8b64a1cb2fe67745be523ff46a4c8c0408092faa2333c45d18348211415", "0x0f506b1dbb1b5edf2b2d93bfbc297c117df212d6127cb29c6ee60a2f57b9e215", "0x2e9b52c7f050b2e79bd377d47bdc1d8246fadf3db799826364c4b7ee2133207e", "0x08151faf272100b459ea31b72c3abc2aa0ccd71adda2ec0196895c9b2f9a6c35", "0x077dd8a546141be08daca164600e35d10d4d4e9f536163d41c270c7afedb58e7", "0x3061e55590411e9f811476d6ee78bdafd88f4fc3d4be60b561eb79e0e17831e0", "0x0f5000c26e73824a45300d0420e81d8cff3e8580387e9310d4f46908cde9a92f", "0x091d831cf15ead47511b93af75c8305b55610b3116d07a164feeb6aeeb21f7a3", "0x1d3a3e735d4999103059079b59588db5fa076b94ea8c70ac7ea6cdba7f7a9553", "0x1e89d2b3e30ec664ee929c38842721c074450a0cbb42a4a929654b3756d0bbba", "0x1c4bbd5f72f3ba7d1484e517da5c0af72236341b6a8e991fe9e02a19cb24bf71", "0x2a7c81f7813b82e3b263fc5739cab23c5eb35d84c7d82123f08625db7b4fb963", "0x00d48e4062cf25ed607d179bc3d84e1f49d30e21f7838386ac3b203701ae9884", "0x17f43305942f3566265972ba5543d4a8845dac0c80e2cbcb56aab179d2854157", "0x08d87717d5eacf3e5bb3fb473776a5cc47d2ef805bda1e77059026c7c6629741", "0x19e6e275500bd0e80203aa20c0ff65f7985455cb0096088a5b9b8de314900a47", "0x096d0f3b6dfc5e9233dbaaacf69bc70a0aaaa1bf6c0e04e02dec3b5cf8889f86", "0x00b9a564349bae4ffcdb0453cb7230aec5a15f18eccdf1910c10dd7ad3aefb08", "0x237d449c1548db8987917574ce540b1ccd24eefd90e28107866a175c7c16af00", "0x12ed08f7b9d12bc30456bf424f2c05c6bc912990de7318e2257d98a413e47deb", "0x29611601abe18d26f5c198268af5f329b25f42b8f07a65849fdbdf90038408e0", "0x0e17287eeb77d085fe7a0b10fe16540368e4b1b457425bfca8638ed10f62b201", "0x29d15813db66650d5fb633cfe0fc56e242ac3d039d1de205b0a26178c46434e3", "0x07fe7f7be1fcb36aae15a33171e9d0d7f2e0e193e789e57bcb8f016e08116182", "0x1fa87be196f938da229ceac44ee343da8f2c3f956c8e50095d36b73123b7eb0d", "0x24ffdb52f4f443edfc06b8f31a9357253c6a157aa0ed35119437196c2308fd2d", "0x2d4bca77457123208fe4508ea4eb49c617032b6bc735fc5399b0c2fd6e0b6f77", "0x02311d7f0ce5763f04be120e804d7e894f789db9ebe2f85a62659a94a27d3bf7", "0x1b6bef8d51e9451f00d5faf09a78393ba83e58ed224a2e21c0039658bff79995", "0x0908d6045d96d1113c4fc30336df3011bcc56ba66eca87ec8d2075a176a76bde", "0x0d94f3ee8083301f8e3881008c66651c32f74324d41423ae0859ebc096f76b50", "0x01ea89e11b87e6fd00623489d6ddda9bf67efd74a703d3bdf58bc09f68a0112f", "0x0d07457dc3eecfc6ee77c7adaaca1f5a369e096def369e66519a88701baab786", "0x260461a3f76bb066094d76406587ab6377217fed528222da29be2cc7b90f1d2d", "0x1a229e393e2d30c7978250bfef3165f267643eb3c22dd9f1cb1ade57ec1bdc1d", "0x14ae23496945484e158822450bee1d59df28a552afc9dbdce748e36553d21786", "0x00a287200ab7d925a94553e693ad30d517961d7b5ba293d9d6ba67953438ba72", "0x178b818748633614e922de31583f27c417c365818953d40cd44f18042ee1d1d7", "0x0084ae8aeef5fb792c36cd573a0b12f0dd0c91d6d4476779e1d99b2925a05432", "0x28a6aa60d570f0999b772d7c83cf5583c9b23dff39f63388dda40f6ea4adcef2", "0x1afe2a4839132b0cae494f76f6fbb09fc97a2dcffc3cf455f644dfa1e89e019d", "0x1f5d00c0c3a24bc115798720b1f9ba6b52feaa44522ad1fec2c1ac9cc2cfa9ad", "0x280c20325d10c5c9f9526576d6019dc0248f1058a0afd5da5a0cc65a6debce93", "0x0aa34e03af3b028cb67d1f4dec7d789478a3cb73a27f01c75f84bd466ed9b32c", "0x2de51efeb36dd7f5bee9b67afe192ad7ef4abf63b4621247be883af708828074", "0x143cba615b06223f5562bd0a28a61a33cf8dda134c2b41954e1a566dd30bbf01", "0x14351a9d27d670b7aea2b999bb187d7ecb0529f9203aa036142e5277e6815f6e", "0x046922904294927e6b58028050139001843032f6967ad8a05a204425711e18ec", "0x2e056e1ce369ea903c473abf7988a24d82fe9fe0c87b7c9a605c656dacd3c5aa", "0x07245393912f85302ed7b5d3601fcbbfbaa6f35920145ef0c59ce88c1a6a9219", "0x2309fe6c306ef736f61dcaf65bf6d9b39d10d2e9fcf68ede37d511fa4bbdee11", "0x170e4332da217cb3562e25f5e200a19cf36f84c986296e71de1fb26125b6e78a", "0x1e3eacbc11e9c8190274d70bbd5dd0ac64a374595cb77dc08e33ee5e0d82c609", "0x0998326b8f93e6da7a460baf6cbfd1d29db3773070becab001c5b4af76cc24e9", "0x257d940ed0cd76647e2d3f62a38919b3c62326a494ac9e039f82a22ef1e68891", "0x0f4335d10bfc05a979f038de90daf70272bbdc2426e4988646650e164c5627b1", "0x1de2a72ae9d2a5632c3e6239e61de783b7b84c8bfbe97df965c739dca7609284", "0x12f44b0e8c694e7bbd5699e4fd0ca734a8c9cc3f59ba2eab4a329cf5cb229289", "0x0fe2692674fac2fe017fee7d922928dcbd3158ea209d7948a3d769a709d90d45", "0x1075abb0e5a208cee18841131ab4c87305f1441aafcb808cfff68477cc4fb2c4", "0x1a64cf8c020e712b334dc8164f247def9098553dcad7a440c349fe902439e93c", "0x296a51a4ab990c5934922b9f553e053293caf46316e058bc79ad13a37f7c82d3", "0x138ef5ca84980e11dc9b54ce02bd516621b65ea78ae0974c1db9a6720c00223c", "0x28a75cdad539dc300a2e9518bbfb47cfecce5da01cf1e90210782605181300b8", "0x26d2b92339d8d44b3687709aba95c380438360fdf88bfc7a011382bd2a7859e1", "0x1df11fbcb77f0ede506504bfb4088e3279a79fe6b84c3a51af512a5fa9e2ae36", "0x1c2478fa762abc607fb0a162a2473b9e4c983859e0ccf51dabde5fa7c8d67789", "0x2ddfe02cdeb5759332eae4e2b5edd5381205515653b7a766967b829cab80e18f", "0x067f9d082c4ae52e53eb02ac1080d31a93537ea24d74a510c89b7da79bc3158e", "0x010f56349169a98c01f7e8da62e515e55aebd4d44c4503783012f588a37c7280", "0x02b035879b1c570495436d250a2a45bd85510b8a6b951629a4a5bfefaa7117fc", "0x1059e4e3320b8c2d66a6b6b1511fa09e619c4b274201ee8741be77fc5b39a6b3", "0x07994b9136814469cb0a286067f632b349b5ae24dae78b056ce45d722752eb90", "0x269e470e88cbd936f4c35ec5f0042b9d6fc138f3dca5de3a83a99321c8c1e4a7", "0x129f3f097b2aa5746ffc84ae17aff9a892a6bc4bc965ab4bd1c65addefc160e0", "0x19f39b427cf94a65aa7bf76a405b43c0d0b4a824c8e60ddd645d66f0a91ebbc9", "0x1cb82f7ce4871b4ab04f77469d0100857e98d6d950dbe8ef64e35681cf888c32", "0x2fcea06bb3c4f9c9158418921b8c4ab1380d155a139894648aecee891241413b", "0x0c88d2ed1d6ffc58445502752247df534c2577b18fc83f8419fea33727e56f6e", "0x0a1da581a39db4e8dbe4f5f686327e7cafbce078ca7cdfe29ca5d3ae74ab1d26", "0x0d56f11d19300b214a6309769c23816d9109b415fe6b1fbb17de6fad7d7e12cb", "0x2e5745bd8e65df2e8c490465d8e9357e9afaf55aa182b8a46a4d8b47ca3e6be2", "0x1da803c3d0860644231a958b17d2c22ea4ada1347c5748f8ab68a402e77fe8ea", "0x146a6d1fc8428ca679fbe8c69616ff6798f59a827d47dafc15af34fe5182f08d", "0x12ea0731eff3e53c881aacc0ea77c163e30001ce74a0f5773779059f96360fb0", "0x21c455910996187ec677c08373e20c41a30a2d4c06ceaf21b91f0b14a13c9046", "0x189890c68e60d975ac6e44d343b29cda1dcba09e0a67e61e2cec8b2fb9f6d8c8", "0x2112df96cbf5b91e4f19269e8fc74f24ff3663ed5632a26c9c3b7252b502cfdb", "0x05c4b82abfb0c152923d56f0fff0411a3b5d11bf00539445ff183d6b3170fbcd", "0x27d88fe28f12c51e94af9b2b3f14099afce73a3736a9fe1cc89b11fd4b84447a", "0x17450b33b035a97eb613d289ecf775f4003044d861eb41963a5d78304ebbd905", "0x0ee988a9ebc8e608d631fe4324fd78fa77e00e402f5b4b0474723ee47ddc26fe", "0x14a89566dc2f0ff0b64dfaf5d8703dc9f74a0f9ee395961832c194e3257e0edf", "0x0ce667d93177e3dac9901ec3238fb0f403b7deb370bc069513428be70013464c", "0x016aac40ca45f818abfef9c158704a979b32a208b1557647c606de868582184c", "0x0745f2cebe4c7eb3a170b3aab5825d5c2bcba8c04d66de1007f587b2a1e535b5", "0x3061f188eb54dc71a19c698f1931ee261ec69297f79c420805ae0751496703d9", "0x1b71a417d12ce73a3b7a7025a14f8fb51a90fdec9af9b1dcd8067f5830fc17fe", "0x2abaad97be28bbf4339b5a4be2e24b57e8d9cc14775f5b717ae8cb227c8c581f", "0x15797c5a072cb00cdaa3a97cea969bcd53fb2984c23b7adb237b6065c650dc73", "0x29df7edacb34a24b1c52d8142c5338b98dc340c0cf27bcda968891e63b8a7a6b", "0x24023ac420b27f83814bd182a843f6ebe5739bb1b9c686f59ce8a1a9478d7044", "0x0bab405ed11caa543f9cd6d8863a65dd800dd08e8c9499e5d6a58474800339f5", "0x1270d139a0dd8a66bd9d360a9e0111cc440b39ad7b3ab4694b3ce507ba64a922", "0x04d722503a7341a690f338977b80ad66d0710aa65c6f27bd49823d7c12c7f8f0", "0x07a08300cf55c60191eb9e9eb63b40497980883796856aceb6147e390df57143", "0x1436ea3a03399a958710d4a76fa9140b32d5180d16dd837da335df7fbe18dc42", "0x03e5972a9ee5473d2bee70683a4054098d41faf8a44c03ea9d09cca460b186af", "0x212989d49540fc0bc6b1a2d150e3bd76a621ba2cdb4475ab1b72b0b6391d88a3", "0x0eb7f400b0e9a2a4635510a5379b4a03df8d56c54334fc8c713db96bfb3a5d99", "0x2338c348fd956af6e191909a22a99009acc53bfd8180926f591ca7f78f8f986a", "0x026afcc776011c8bec5e32f56f149a511d064df09cdb28f0965b701558e63838", "0x21da486ba0aa4577041578b2716221f15b5bb054ef276cd9a4383e646a3a23fc", "0x04accdbb6ca5032fa7396c256fdd8f52bf7412d11f318c2f8293aa1c9832b849", "0x2de8a8d4960c10ee9dfe8ab018fea3c87553992f59bcbae36cd42af4b455bc5b", "0x215ae1f57e2421bb33c2b4c2e854084cea0b12bcf61a53963057a9eaafa19a7f", "0x1a81df3c791bb08768948ae63fdbba1bd42efcb009ffb07aad880b31bb8aa68a", "0x141983471c97c0debdcd4f0f085145364900fba8429e1e5583a4e561ddad5bc9", "0x0176cb7a66c586ec1f480ceeedf332cd6cd5508d4b55a1a3286289a178864c1d", "0x03a27a1378e601187b81dfdd76e3ff8190d170d1ccd7f7cf333cb61f5e6a6afb", "0x17e1d8919b6ada78c9d1823afe824714fd0948406311b21a2b94d3a0d1c08a9d", "0x161d6423df64e1ab1e9db604809d3ac5fec7676d57d42ef3138d3f0d22116fa2", "0x2a5a183c02ec47c022b2f65642a493730eb86d977e599c0d57b1d57e21cbabb6", "0x2734cc336702645a5769e176b62627b0ad899e8d3ef24e84357214dea0675e1a", "0x19a0bc5a4ed65b51890c60994626f86d7cad3719879e00fd17b4db6f2ef09aab", "0x1db6087ea9f42685265847de13ddf18dc446b158f84bfa20a527d62ec9841398", "0x1d544bdf3c2f10b4aeeeb8543af54309705f7a275f093edc7690197ba3a5cba1", "0x2b1a876127921b75dbf4d7da75a6bedb7414bc5d55c998dbee49f47ce200f3b8", "0x276ab335062e36197fe442444f9d9450cb76e171c00c3ebfb7617bf0afbaeea8", "0x02fed58d5920b05bc742cb65a1d7e50dd8e6a1baedc27b6de3ad6a4fbbc259b5", "0x1f600a529dfad6ff62ef171974ad70e76f3733f0c98e0eb1b10c95f13676095a", "0x2ba35eaec2c38f4faaace52bbcc068d30b21149a6088d0467952542e9dd831db", "0x16630e42aaabc020163e87c1bf7463c1007dfdce3e1ce9c5c28fe64c1b7df093", "0x1585e3c692b27e7e342bfbb4bd4218e7ed01efe13c95daaaca62d2f5455f6506", "0x18d7cf9c098f734da2a04f93a309f774820e141f9aa92e8cfca42d8e22c61d9f", "0x0646a732a7d52e8abc0441ec9b04d2af6ff7eaa085a22c0cfd82ad0243b6e64d", "0x04ffa957845e1e01f2916f2243815f8e5e3c76361f3680e259218c0d28f39f14", "0x23d3c890fd6525b7814fd3c325dee2ffa11f67e14cb8bf3de22b29058276d1d0", "0x2000315723a56cbd67692146cf429cee40952ebc607b3100f21354be0605c2df", "0x0f092bdb3995305ebfe727512ebeec1ea48d29acc977cfd1169588326f50f999", "0x1b8059e616227b9a836099e9ee37329fb5a2417e3b5bafed731daaee12b9b1a6", "0x1d8e60b25f1fb1d0b97da0f17e094258aeaa40b142c97a863b245f787c75dae3", "0x1cd738d6519d3e822a6767a7dbfd23428e361e3725a95bf62d30723a414ed1dc", "0x232c85d492596d3243cd72089c50f3a691fd79fbd60b6cbbace1661a26c7a5e9", "0x0de60bdb58a4e7c7efbd95b55017d3201b746e78a9a6f4bebeb51c1d6ee4e64a", "0x02fc101a02306054035ef59b60e1e3efab2c3f65027f93da20756e8abef12057", "0x03f53ebacdef572b73bea99550064782d2919436a0f2b5d9223b2da974e3ca09", "0x0e27834cc8fbea3881ce43d9896e6079b8e8c9db4d77192daab89add326aeec8", "0x24d40616c713b9099f7c8f3aabbc731ef52e0e96693a746a387d8ce676d6f70e", "0x149d27d0cb014e5ce9c41a78a76a8ff7a37501def603b56bf0397edd176e0c68", "0x00bcc978ef69a805173a7bf1d1d56518813032502e4a1d772ad91a9a6a7e700c", "0x06964a0afbabc86a2f491e86270ead44f49f98622b88f4c44ff86830fcce1640", "0x19342122713b66231b0a7cba1993c5d904d4279e978735fa07ce6832da4d6e61", "0x26f535c20424267a91005fd224230a4aeebd3ac079a58a78a63520d58716f71e", "0x2bc43e9309052167648814454cbd77956f73aa69b201c94fb517845a8c7198b6", "0x0d9922a3643b4c9e175b57df597f10b70a46e9eda419564c33675b6afb7febf1", "0x11b438fb1df0a4557fe6b1405b6720ad4a1537fe1b42f884b841007f55c61aff", "0x1495deafa1bd1f27b7541138eae20773ba01d0d9ec10b771707955e78fdaea33", "0x26a73d4a105a86611a01bd22d90e0eb52dd0340ba7476f771190cfe587ab7d93", "0x16ddabce6e6ddd32a9f8a3a674851ed8976e0f53c1f7f6c6f5a28ccb00d97317", "0x0581eba655a038de496c785d31d65a919404bc25f0922a774bc399a67fe122f7", "0x065762a6974eb7ced80ff42b534bc545ed6cde0843d2583ee7022b9ce40fe6f9", "0x17bff1a70e36b684a2ed9dbd95530cbe9b38b87d76eaeb63359ffd250b78c5e2", "0x18e68289ed3521949172f06e8a59dd9b074dc3c9dbc8203d8fcf3818c70a1a9d", "0x02a8d8ee03d5f03a69c0b0d2b1f35792747b3429f00b6e011f4a141345e5724b", "0x0300243abed4b18e061fb1110abac6328ff55dc53162388f9dbc753749946b8f", "0x0f2ace21877125cf2e78abe96afb79fdb5d572a369f1da4f2dd7b5776f6652af", "0x26b7e92b9f4f8776b2b9af31ed850fc81dff18f70b165c8447275f6ea5c1ba87", "0x1878b3a4fae1d39825386fae5f199a1b3b5f8f50455ab5002517cbd2eb7b5fa7", "0x0062d0d89e967bb6fa4c987c0a83f65bcc795c0ea977b6dd63d625e06ffb0a55", "0x0a03b278b25ae2e7d31b31082a0d0cc57c8e7a432f24ce9fdbccd93475f3d135", "0x100da120ec2ae772921c7c04b83ed8ee7682d2077cf47740086c980e04e38f6b", "0x2342223b205a2b0279d9e5f0ce7f0f9bcd772839a34c52c57d0750be1e51385f", "0x2df7f4397bfc42dcac58480f57316877f9aa21ba908f70153dfa19b7e52f36ee", "0x23622584c86a8ab59fbaf2569481d964d1e15f8073bafa8c6e92fc2c0b187fb6", "0x06bf808cce651f581a1ab25261d66b74f604b70480af6054cc45f81da3290ac4", "0x0f53c972702cdee0f9fca0a70505cbaaf6c9605909dde03cfe4c337331fdfd72", "0x2988b1a79f8d22697c0d51b537a9b308f979792b1ca47cc408b8bd8ba6f6790e", "0x0c41be010c41896092f74093791d90c85c0404f92861f74ba1776de6da0f3e83", "0x2f88c192a822a2a0b2f12cb349e15ea2b3f3b1c83ea2bf5461abb010f80bf3ef", "0x03a443a4b0709ebd40891c593ed528cb9e9f65eecc40af1f231574b7c9738189", "0x28f8211ec19a4dc191f757371edfb788696efc2b0b592d65d8097f38e723f131", "0x0abbaa7ef23a5d98710e42a669bfa42305adfc1f8e49e05bb3abdc96c8ca73ec", "0x1f04fb54a09ee2df286b6c5e089560b8fa61e062bc90fb7298d5213491211ab0", "0x0679c1bbbfd7f4d0f2c2c18d82948d060f3563f28a1a632c99f2c64a461e8267", "0x2b44d70ebe9679bf7681b2e1a3249e29b5d800109367a7a48ffff53e969a13d4", "0x23f3f9e009138f0998b53f841093307a41ac380348ef662e348de2827ca499e3", "0x24811a70ceba527ea6c7faf5762f5813591c865170d2879a08bcad496b23201c", "0x01aa535811fbb13fe315f411cee03e20a4a3c48ec6dafa75fed0e12352c34bbb", "0x0ae3df3e4e59c999b16606ff38902c761634e2b49d63ea716929a61e8b57306b", "0x0ec1accaab8a76e43c4984f380d2fd4a1f8bbbf49a16b889467f7424cb06945e", "0x1b16efc5729c815659bcb1becfd1e1948656ffadff07978d138b54349f97b76f", "0x11fb1514ae1b038db9750815dab5d7ee929cfb80674acc541bd0679b11ff075d", "0x03e8a08bcf09eec1dc2ead9784a919810cec64993eb40cd49399c2ea31ef27fd", "0x232dc0617b6035c98f66ffc4a8945d1f878df5e3258e9b542178d6ba1b684e42", "0x12b2c5d51a142d7f8a0540228e2ff3cec778e91e4ff701deea235ec7142047f2", "0x09d6f2228acdb9d4a06577ac9f8f76f2c858ff531b957f89b822a8d28df70f0b", "0x26e61018fe4b3ef6d966954c74c63e1e1587784e276ec198232b65e3d1f3b6d1", "0x0bee9635b9ac510099b9c82dd622205c67f1361972265939c0c197f7c48a0e80", "0x2efc7456782b90263f57853eb2807e67a88cf15f2cc756b7f4a9570bcc38e379", "0x283fb2e8d6b18ec3f4115d0431753eb6facfe99f099ec679abd856917dc22f8e", "0x2889b870ee98688faee8863a5484afcb67874b33a9f0c1794b46a9263e181ab4", "0x05d7bdbf3df0f01fbaf9c1fbd87f0d8dc354875e451678476aea4b0ee0c016bc", "0x1b23124a367801d93b8fbfd222eb27d149ae2ee98c6b9dc30bb29ce3b501f7a7", "0x13f573baaed32aa63ef2ee51c9d25a996cc9cdb333bfbdd2b95e2a3a323b9f4d", "0x00fd86c6312ae538c580c6fbe67e07539643967f075c81cfc504d4a0b51d4d52", "0x11d07e190748d15d00447b4c653b055887677d1d0cb899a4a7090ea07aa0b393", "0x1b8fbeb3c715077b0a094d76e35702ffebc4740fecca3faee9608d460c1cdeaf", "0x0297423e21180784527bd90be63d021fbe8c4bdb8b204398ee1de6f3d41fcc39", "0x069fad4b2eaf9a9fd4891be5f4f128ef4cc11e4597cac7c55e3b2beded8c05a4", "0x1b351f30e204c212a5ea86b7de299b1df744d07c8ff7f7f4944514985160c49d", "0x03c814bb706f73f933bb03d3bff83fb5b793d838c2de00089d5d582183c954a0", "0x263c1482af92672f28e64ca3d4dc5374862e2e60b02c9e2fa95deca9d95b9fc8", "0x20d53632d8bd5242d9dc9ad8fabc48c6c60c6f71a235807b1b3bd0d42e187c02", "0x1312833846d4d021e6b854478da8d9d63f1e1fe36a08c6a95952ee4d1b82457e", "0x23abe598cbc971ff0b6625e441018e1ff84ea07ec5a37db3ad7ff2e18d1efdf4", "0x189b134a1aa72c806ba90d70580ee758d968c1a0acbc1d5fd3aa9881e742b784", "0x21739396f8193d4ec0154cbb302d7226e7563b803d9b6639a7ca065729d87a6d", "0x0d17bda5b0f2b08f2ca4760fbc8fec19c961c0eb8219565a2017c19b8feaddcf", "0x2294fd20b62a1854819540e5560302b45403148db6e9890bde0b0a883fe1909b", "0x2bcaa1216d5737475c013dbc3d8c54e36be0196dc71ea0981b01609369d204bc", "0x0ffc62d59cb8ef71f03d5b7cffbdf3f1e8a8b3906c8fd25b9ba85b756f774e52", "0x282b2996448809068c25fb3430dbb5bdb038e9c3810d554d7ab3ca1fb25b08e5", "0x231b7767a4cbb0088fcf156fff8c71cbdf02b27e31dfbcf7597af49fcc99d610", "0x0d52e9703d4fd0b424639d4b8173bc8ee730bc3db3c959dc1f1e36737babe865", "0x0e8d1205f76890e94beb4460955ae97b5bf295671cb1d09c581b80d0c9729755", "0x09b5e2bc828abefa93a501bf75c0a67686fd8a0cf106fdcfad65a8f20ba8b363", "0x08ee620bb73422c6b3c9506a973ed0f754f9d8106148fd626cd5a04d4386800e", "0x14deb68983af2bdb376b873303e07f4672d77798f8fa8a481a22c223eb357d19", "0x0dedb230d955cb9b02ba8a586010044e4c6eca8373192b5fffd1252927ce09b1", "0x16a6e90080ea1aa4e0d192aa13f701a781142373c0d9a985a4ca5a70e6ca20fa", "0x17cfe46ed6441eee1e9acfbfcf669efb386f270d142429b3d1c6a8f3d984cf93", "0x09d43cbd543486b31694bb1f856d876cf3f135b86aa0e2f45889966912280f31", "0x181457642e691657d5b2414b7a81beb58432ab1c9abb588c7e1b2da1f1e8aa96", "0x140504614839fd16f90f1a5a2a49f19c8b2e0a3a0ac67d1fa2a31ced43f3a27b", "0x120487061ca7d1fa340f11b2d6c7115eafb971569529424171bb1d3f10fb2afd", "0x1678ea1c9a9f63f1ff0d1eb65ff7c7d5c704b2a0dac3b15505fb45224ccce387", "0x298964c2828d52a1764b41b5fb460752ae1b8ab108fbc070bd1be15bb6faed73", "0x0ce97b6f2777c3a5eb86fec6a0ea65a823cb9bee65253157a0b9733ac6a44c01", "0x028e819231b5541e7b5243cff6f044b62e6ec5fb8adedd2b6abf879add5f8fd2", "0x1d04a29170773073c3680a0d73ba0759e80630bbb2798f4a6e77c003a145b6d7", "0x2ac32e5d907bc921779525bcb9ad4ae1a8c782ff0abeeded32787eb25275adda", "0x1f7600e736df837404f0c327205cfb931cea48bb1472ca0b45a974b6b5998b95", "0x2921dca5c0dc3bd317e0ca1557e2e72c6dfc4856fff4d705f78a7e1f55f5a3e9", "0x14f80bfc521f50b8d79457a4c2e9d7553f3f33c37649ee18a43a480ab2cd5bbf", "0x2dae059ac17079b15f6b6d0de647a6ce9af9cc9b5df5659f169be826e0ae745a", "0x27ad1fc6da5465b8b9013f0cce96db4af1dd0d18e2799b73cc5416365084a6d9", "0x13eab23fd02de014e3055b4ab42881509c6b625e04488e8ee938557c6688261f", "0x18cfb5ec775eb1683db7a7327945df44502e441a0082bbf760825fdc05054dc3", "0x26cbbfbc719cf0657d98a6fca78d2572adb2301938a1ec19bf734178c2208656", "0x0ccfe2f976ce2ba408e431ca319e95bfbeed592741e0bb33da63a03fc8402d3f", "0x17387cd668214f736af582dcbf86c00a80dcb77250be031c2e02071391d537d5", "0x2d9acf8eaa6d15e6da7ffab14e16353cf737f7e5585ef9e2e43acac6cc879742", "0x0393a4c1ee837afaeb10114ced12f96bb9084dd4a4c2750d700e876b6caefbf9", "0x0f0407a7118b6910dd909e894966b42440d616da403e0a07b3f86f4ba8011df8", "0x2f7735765e2789fd4d05c78350c35c6b84a69a74c7f69e0afa99342f1c6cdc39", "0x0dba9178d2ef6af1e01cdc2de7e85578418c26adbf376d063cb6b5b1181f41b4", "0x2144ffd569395c83073f882ecfca0d8c9428b32c9469db7760d3778649fe275d", "0x2984137c5e2012d8bd79b1d59087915b997a8aaf568df355bcf531f4014377a5", "0x0934f3b2191291cf3e631822087c19f835a28cc49b98742783224ce6cee8588f", "0x0e0ba5918aa4cbc38c47648a5b28d83c7ac2ff68a4127ece98836b5429ac3078", "0x049a3734a8e2a2ff2fa0a01e5a6c3ccfe37d09fed6c8f5dba7ef4c46b5d33b9c", "0x29fff8192128faebc6fa8432c1562bc01b7289b3fb5285e29d12a3556cc0ac49", "0x2201820de3cfa4aa21637bc742afaa39c3611951330598e61ad3dcd8190818e1", "0x094821527657e717dc177127a1b10531a2a9d18f9141a12e8c9f02d1f7ec1a1e", "0x10b58daa36c56ef2f2a4dde18698e272112fcc01e68769868e9ef1b5edbb4fc6", "0x29dad68ce58824ba5d89b7b3e7ec1fdd95c253a6b6ab2b6c418d53a57e3ee8f5", "0x1ef75d0df2fe249e6fcec6cf55699bbd616bbb1dbdb384d6aa21f5c6b5793a6f", "0x1754914267b0b09a948685fd7d60692da6c6bc990d3bd86c05d1409132920a37", "0x0f593c997ae0a9426b4fe3054b60635374a049bc55af8d13735a0a903919a66e", "0x0aa91854cab67a7a1e2982a8e515845a71913530ff5aee98c91eebf79e361825", "0x12f2e653a73a9077367b6abde35ea68cba141062ade7d3583b05da2c8f0baad8", "0x1692c37f96667fa62c619fe1a0e79abdf86d9bdd7241728228db6009ffdbf437", "0x04e833620b139d50e033dfed3b39394574f631371e31c2bb0e9c44ab8a168490", "0x14f13dfd3e5881a820ece1fe4844628b14daab9c0fbefe88acd1895c43576619", "0x0458b78330d7902b4e84f70c250bfa081c92ba1de2962e19cab628b18608d3d9", "0x2c52077e5bada6cef5397019391717264140b8a99b7d2fde520ec89d31192312", "0x01de2f57c28133226450019531ae86d160a0e72809f01593c1771e4ecca7a23c", "0x0a761fcd234c2bbd661bcd788f5b14a5ee4255190b81fd3153c003d68a3199a7", "0x0ebc974e17f713f3ea0d8b12e463fd5af0450149066d6e72322d8d0e1e1b6831", "0x1b96e0241b7221a93125215256ab608135b2214e2f04c127a3e451d7f8f7787e", "0x1df3623a81acd17b0eb45cee6638d1dd1e84966e38cdead88ca5f9f9096fbccf", "0x208f1193b74f48f50021d1c0cd977dbc6a55e2f68ef0ef0000cd21a38ce5bf08", "0x246352bb36eb512ff4f36fd8df72042f69cf67f1744521898a117b6efaec7895", "0x030e94ff4018a5a9725300f274a619de490177d1404dad9a8299ef29e0b04f1a", "0x1f52354035e44ac050ee86ca631c0e45eb5f75b44d6e7f01b0805e28066accca", "0x2659250e4f2ecc3d3cc5a1c74355aa01f2b4c3aeac607f7df372c15b85ecbe3e", "0x1be2311b78b5c1246fad8a8c346e83e6c0822df59557588b5511b4e821e2bf2c", "0x0509b5de4dff732da434372972b466d1154d194e10915b4347dfd0665a72bf9f", "0x03247680850a5862c08fbcb0fef6c739df1e88043c3a5e73531f682f93f8e975", "0x2d110540eff687a945010e040dc40497a3d1360b99073babd6911541d30be5f3", "0x07ba21b3ad4f133f69627b211c12f3244d1ab553ae6d6a1daa888d0040b07779", "0x20077db65156a8dfb7c3160a81d62e119b2a861118be3dd509cdcceffda88d10", "0x1cfea2b8984b62b28fbd6b8dbe134240e2bc10d6bbbd3c2f73a3088710b09973", "0x1549ba97fc538867506f349929a7d1b86213886e8d2abfb60fce0368798fd294", "0x246252ab7cf345e982717225f954e74e7303ce0c9b1b24b1dc06fe10fdcee4a2", "0x2b750d77da95774f2bee129b314d1c3dd5e302b666c2bea46cf886585d5ab6db", "0x236fd4947774395d7f9423527c5ba34cabd6f7a9501ccd33353234922e896e16", "0x18a4917affbb7751667f7629ec085af1a902e9b5471a02c89e05678d620bb0d0", "0x02ccfb77f9dd97d7e6a8ba9ede42364214c52a02c8a0a420ccd0768dfca171a1", "0x18db49b4f99f685906f772938980682572837a1370f023d0fa379fcf1c1ec854", "0x2040dc09e877cba004d4061b3701c6a92b03fca41c1dc6ebff525c76a1f9f7eb", "0x0bec5c4494c0b5ddbbdbcbc6fa88f438305525b4c08af59860055c1f8b73ecd9", "0x2879eec47e729739d1f79e83f7a71e631eccec2c83b43dadd6ee56841f83a1f3", "0x01a50c3a018059042e5ce95a789914e5c2800b4f4efe17336c5b2a216410018d", "0x1950b98c22b8f3cc855c167c7d9bbdfd4ea37aac98b12b1fb017257c3e7f293f", "0x13b7710d9218c0b169ee4a1276715274ce9a6468730d2de7731349ad1ae9df7c", "0x1ef80d90805ed282fa4f5e12843ed4abc8f22f5b59f04ee13349209a8bb581ee", "0x13abc482d41ef22b6e3d0db9276b75599044438af8940b5c8d58e7dfe80c44c5", "0x267d61670e53dd034e795bb20c20912163a58248709d5aba8a95c0dfaf50b02c", "0x24441cd1cd8145e42b471f82e4f7f9c28d45ac2c55e4e60d3e66d74e8b56391a", "0x0355fe883f75c1a4353c1c0daceef2d3a71a9a74c62053199e431b8fa81cb8d2", "0x0551b53fc92ae63c2b2ecbdf40ce937a2095fce0647482e64a0fdf515cf42ea8", "0x28b6aaa4aee256071d9988bff1bcc284ed68a7614622392e53465a6ea91258bc", "0x2df31d847dbffcb0444258e69876ed3b7463a49454be6ab6250a8446c6a01703", "0x1bd22453d36950ff1ba1b49bcc43f9c9d4ba388b780c43f4ad3216b9da8da126", "0x213abe279cb897fa749b6e98180a1c8225558acd88667bdfa14070baa65dc812", "0x04853a8eae790c34e5751893e34ba932024d9c549c7a7751d536be9cc9af6b94", "0x15242fbe31477d9de0c431d25d0c8e35d489dcd4c99fddf72c4f0ad4c492dd4f", "0x12f6323f31e14576328957a9f393451ddc868aa57692ca327bc5a169e93aba39", "0x1dda2035b7580e63bab28535dc392f24085d59d0bbfbb54991ba3ee9563a1899", "0x13251bb73a28dae6bd498501db9e6c58c4f9d458e8695596669b2ce90007629f", "0x0231ecedd2828136a0f76ddcddc58f9cb3a77ca05c4c0fb95ddb696040391328", "0x2002a71a926fce26a1e77ee49f68846c371b74ca7addd66da7ec5286bb7c54ab", "0x2cab6f0f98bf107f345e22dbef16b15ead94407098a933ad0591b3c4500238a5", "0x0401a74a17b514f0532e1b9b4aa4421addfec7269f934875b34d4f73cf9e876c", "0x27c78bfa3d246da84fcc765ca8b00ecdf6baca2c967796a8e8c8e1c501bf5b43", "0x18ed98acd2c8f140ad3d56627d9f0e8b41e84e30dd1c165e4043c1c43e32f663", "0x188d51f7de70e218853c44a40e505b38f45caca8c92d5090d474f2d01530db18", "0x1930b89b3303134f1f900880fd7c39c7ba00a96a972fc4f43b17e19e3f1f3d4a", "0x1fcc8426a4936736199ee6829c5f3bd947cf62dd0a92e7ad4af4cbafb490b0a8", "0x2d3847971e336844d626b6c39ed253d6994002bd07ec946b521e06e9993a2d48", "0x24217d683b98c9d630a704c3bc4550cbf70ea14dd4dd770aba45b41ff3ac0301", "0x28aef269e0a3dee65a1df434d1b2ad4dcaf8e840b1a1d067b353a2986d94d35a", "0x238b3d227a012ae13dfcb6f0b06511b9a1d7dddf0093299f0400a887a90e070e", "0x197d7a63493f21eb3e99111944cc130269461f7bd88d302f8b357bb7d686817d", "0x1bdcac988edb00a3505567ded6f9440a542df09e20aeb013c43972bbfb3ca7b6", "0x1169171163bdcc2c0c8bd9e56b1fca66e44bf61f9243343cdb1e131cc034b0b5", "0x0ab66abcb7869437b24facecee1c89b18ff8d2d024046bf978b844a1a5dd123b", "0x20b9a555a8b39f0cfbc6031a7ccde6c1185abcd06e3f6fa2c6685038b874dab2", "0x032e07028d1fef76b7ccb9dc54ff4f41da1031ffa8952c64a5437983e838cce8", "0x1573694373095bc3106e92b6b627ae4c7d0ff8e499cb2ea426d044eed818cf08", "0x01a602dfd352e43ecb2f69fcbd568b60a140ab52fa9f65b53af13123d511cb04", "0x1e2bf4fa574ea907efeb285f6766b4a17db35bcb6186c84a04602d438a6e3216", "0x2505c8d417739f21d2162110db6677017bdd46e9e105bd4a3d56147c37327a0c", "0x0e654549cd7da15a2808d06d8611796c000286fa77d02f6a0230debefc88c215", "0x06fba732c616c7828cec557ffecd6e3ae22aeb52c72a210e007fcdc5c3740079", "0x1658321ad9c3d0a3639efbb9e23aff309512599f0df251998bb3b03b7ca5692a", "0x2b33052c618387b8b667799bcb8566a6b6fc5e2ce3f9440d025fda9150d4a82b", "0x1410b1ae9db218e0ca654de70f05cecc7953ce710aefa4885f0863b8e03470c3", "0x1848e80ed144936e3122de3c706cfb707ea3fce31047e632c79638ab01dee1e9", "0x27a27ffd5e7cfa1dc5541dbc940085bd3dc590b21473d05384f8c463fb2ba936", "0x29b94126f5536a88c763d0301ae366abf2486bd300db3123762df3cb93d1d986", "0x2d5b96cdd02c61014a228fabada597a65e1c5757772248009802bba450b6049c", "0x0202c5350a6a37c6f159112efa516be970c2f88e16c01aa8462d62ee4e52043e", "0x2cac718d86bb68b80cfc3e17cb740609d425aa547aee14f9105b4da9490da8dd", "0x283e1a39e8ac0b1913943e8618a19c89c5c74b58d59299b11fd127f02cfc9891", "0x11a6bcf0ee6b0b9f6f62dc0c48168cadd576e8d86390f85c4744bd70e3c1e967", "0x126821771411186adb55ed7e59e584832bb8c3544ded7227e8d707a5b34d6137", "0x1301d280a12befc02f9a13f3a92501da7208279bc03d99e772da490e7ae069c9", "0x28e729cd9ca2716cf5e82b0c1547ff3c48958ccc49f806f9dfcd6f8d90b2e422", "0x10ff9267c3b191f2fb37450d4e015aa137b25f12294430e936e8d124a1f98d5d", "0x2c19b499d3dc4f8545d31cca6a58a6240cb2cd5ce0204239dfceddb2b77d1423", "0x2f92727812c862f5ab2543ae88bb5539fca6a97cd331fa4e5e02ef7231017ee2", "0x2b9bccea18d03f5de4dcb9a4f10ac80fb44be746fa5bf30724fe04c0d576814b", "0x1c85bb1761d97e4a576faf5c53b9bdb479a0fbc37818dda8b2abcb365e0a73f9", "0x07dae9e87df37a4014d11878b49e0571628a20ff3e6a102291d211b8fbb1ea8f", "0x2b9b3bdfe342987935c9d780df13f061f6ce9a4e6b470cc1bc7c7aaa53075332", "0x12adabe287498be9ddfab24ef799bc49be7d58f069cb49bf01c9c4b1505d0586", "0x2b206a11a92edb5474ae7ab65b8fe85d4503de3b6f4330767f938e7c67060fc6", "0x1f540c4837c4a4a75d8f830935c6d2e4d731f230dda7ba5052a50d572439c019", "0x054db8726050afda0e8a0c6b5eaf5f967d80fe0e4b85179c163f36970700d2a7", "0x2cea9ad4bafe136cce349fc6eaae2db05071118b4b82f2598a09cdc8db005af6", "0x252f699ea739d55642ef8a22b45b58eea8d55900f8ed7f391fb1f077d13f94f7", "0x1f061b04b5f927b2108c7b6be795c3c9314965107000b13bb63283f41925ad89", "0x08459eea73a94af361d3c656e75f97d27f6f1e42503fce8ecbbaf19a29186835", "0x1b3d700fe7f51953e2275604d391f136c1fda986a3d30201ed0fa140208ac812", "0x28e56028798196ed5eb0d88ed905d5b0c47e9d6110c75632a5a2ee8a86a4861d", "0x09bd90f2333c4c2cbd4bf7eddadd1fe7a91e5b98908afa559781d98a257944c8", "0x15bc1a6e6baad5f6b0c2ae3378a252b14299e0af66eccb6b266814278ed1278d", "0x19c52f0dccaa44199a7f4fc33bb47d41d6a081cf36317e7fe159e8fe6b1f0a89", "0x2547bb5ff20db5e0c592983e54fc962f0f65f478598b2cc5fecd72f169489a9a", "0x1ef0bca70036f3bf1d7d3f294c8b0a1057691172793c5be658b8d55f8e5337a5", "0x04198d58ecdcfaf0b9c2d6acedef52537d1043136b624a5a1f588a40cdeca52b", "0x2c5edf565ed2065d7d04fef7d4f7e1b1722a2d064c00549725e0715947c26f4b", "0x2bba33fbd4a8b19d6cc52859259379a3b46a9fa17cc5c4570956503ef34eb8b7", "0x2e98fad823aba9aa740aae084860f04081a58de39bbb101eefa119cd6a471fb0", "0x2d20c2cd090abd0533aa05e4b25ed9479e9ec4b21eb59c765637083b87a95921", "0x10967beee9da2505cdc53be5c9837672e8f3729c6a784b013979d8ab8a3c0a89", "0x121fb7ac685ef13f74ff829cd18af140bbed250db5896f0ffceba42d5d803a3f", "0x0142e085876884e6572c868998a0ea31776f38ab30e6c6ff74cbbef141dc906e", "0x23ca041ffe1231fcca12d630c8db597bd844191895714dd1623eafc2056c1bcb", "0x1a30767b5f4f01d00c2b01a44f01b5f136a5258f7a513d6f7d0627f778970d51", "0x1ba0ff653ae6bd81573fad7901533cc794806aa616f1a263c06fcdf07039d741", "0x094a5945a881842d8067ba77e9e699ccfc74ee8517620e6b090f5627bfd7293f", "0x21c84f232883c041a078e1cf608ec1f30a07b8859f6eb8eef7229fc6bca86f03", "0x10f83fe52b38a091bfad07decbf295e8610c63112873bb05b7ef08f7043f7bce", "0x037233401e03f5907192e47e733f792c15520c7f4975a82877db6dea638fd4db", "0x131743f65beda2de7e4bcfaa7a4bdca39d066f9c9d571529e62e7f5ce47512a2", "0x2c3e6fb700702366dd46d37f965a454869d6a3f1b8efd90cea90be0dc15deec1", "0x0bca2e8dd5719f2490699eac6bfc2b3e7c6591317c76ffb1516d126ce3ec162c", "0x09ead2ebea129a56023afa72ff1b77c6e867a72df81839fb76c2523f9452205a", "0x19a210d7be3606ebf9aecd9b0c8f3ab0bb04099584bce5a7ae2a35a0f808ce6a", "0x1b44df05ea46ec1231818008eccf838e627afb2ce4b7798aaa86f609c2423634", "0x0e4d978fa2ed0507dfa47dd154b51006d25578e18d6c9d83f8735e6a0cb7f1c4", "0x154e4d1a506fc0c10019f2f89d186f4af8a2d1b6ac3ada831ecb00f3a925ca6a", "0x23f27f2464c116f55a5b7482a1cf5e6c7bc99f12e28fbadc6fd4826072eb76e4", "0x2df196c92d5355817805c6cc3ca1029440e27db83b17fae40c35fe3518954753", "0x2b7a89ad1419e85f4d414f1a372feca6aabdd69f721f684f34fe829b2048c8d0", "0x22c29d74824817a0423ab1d70d5c9d5249b16a181034550669e7fa357d9dc33d", "0x2d44559bf653c112918fb033c8153bdce449b0f1e769e46bb91e5fac97ef7cf1", "0x21d70f181b322f74ab50c432ddf9736a1e3738c4e883625889434da50d884c8f", "0x2a437b970ff32645bd5303f9474b5743427333c6663d17f44d918e9f2ca005d4"] + ], + "M": [ + [ + ["0x066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5", "0x2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8"], + ["0x0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff9", "0x1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8"] + ], + [ + ["0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b", "0x16ed41e13bb9c0c66ae119424fddbcbc9314dc9fdbdeea55d6c64543dc4903e0", "0x2b90bba00fca0589f617e7dcbfe82e0df706ab640ceb247b791a93b74e36736d"], + ["0x2969f27eed31a480b9c36c764379dbca2cc8fdd1415c3dded62940bcde0bd771", "0x2e2419f9ec02ec394c9871c832963dc1b89d743c8c7b964029b2311687b1fe23", "0x101071f0032379b697315876690f053d148d4e109f5fb065c8aacc55a0f89bfa"], + ["0x143021ec686a3f330d5f9e654638065ce6cd79e28c5b3753326244ee65a1b1a7", "0x176cc029695ad02582a70eff08a6fd99d057e12e58e7d7b6b16cdfabc8ee2911", "0x19a3fc0a56702bf417ba7fee3802593fa644470307043f7773279cd71d25d5e0"] + ], + [ + ["0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad", "0x277686494f7644bbc4a9b194e10724eb967f1dc58718e59e3cedc821b2a7ae19", "0x023db68784e3f0cc0b85618826a9b3505129c16479973b0a84a4529e66b09c62", "0x1d359d245f286c12d50d663bae733f978af08cdbd63017c57b3a75646ff382c1"], + ["0x2a75a171563b807db525be259699ab28fe9bc7fb1f70943ff049bc970e841a0c", "0x083abff5e10051f078e2827d092e1ae808b4dd3e15ccc3706f38ce4157b6770e", "0x1a5ad71bbbecd8a97dc49cfdbae303ad24d5c4741eab8b7568a9ff8253a1eb6f", "0x0d745fd00dd167fb86772133640f02ce945004a7bc2c59e8790f725c5d84f0af"], + ["0x2070679e798782ef592a52ca9cef820d497ad2eecbaa7e42f366b3e521c4ed42", "0x2e18c8570d20bf5df800739a53da75d906ece318cd224ab6b3a2be979e2d7eab", "0x0fa86f0f27e4d3dd7f3367ce86f684f1f2e4386d3e5b9f38fa283c6aa723b608", "0x03f3e6fab791f16628168e4b14dbaeb657035ee3da6b2ca83f0c2491e0b403eb"], + ["0x2f545e578202c9732488540e41f783b68ff0613fd79375f8ba8b3d30958e7677", "0x23810bf82877fc19bff7eefeae3faf4bb8104c32ba4cd701596a15623d01476e", "0x014fcd5eb0be6d5beeafc4944034cf321c068ef930f10be2207ed58d2a34cdd6", "0x00c15fc3a1d5733dd835eae0823e377f8ba4a8b627627cc2bb661c25d20fb52a"] + ], + [ + ["0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1", "0x25fb50b65acf4fb047cbd3b1c17d97c7fe26ea9ca238d6e348550486e91c7765", "0x293d617d7da72102355f39ebf62f91b06deb5325f367a4556ea1e31ed5767833", "0x104d0295ab00c85e960111ac25da474366599e575a9b7edf6145f14ba6d3c1c4", "0x0aaa35e2c84baf117dea3e336cd96a39792b3813954fe9bf3ed5b90f2f69c977"], + ["0x2a70b9f1d4bbccdbc03e17c1d1dcdb02052903dc6609ea6969f661b2eb74c839", "0x281154651c921e746315a9934f1b8a1bba9f92ad8ef4b979115b8e2e991ccd7a", "0x28c2be2f8264f95f0b53c732134efa338ccd8fdb9ee2b45fb86a894f7db36c37", "0x21888041e6febd546d427c890b1883bb9b626d8cb4dc18dcc4ec8fa75e530a13", "0x14ddb5fada0171db80195b9592d8cf2be810930e3ea4574a350d65e2cbff4941"], + ["0x2f69a7198e1fbcc7dea43265306a37ed55b91bff652ad69aa4fa8478970d401d", "0x001c1edd62645b73ad931ab80e37bbb267ba312b34140e716d6a3747594d3052", "0x15b98ce93e47bc64ce2f2c96c69663c439c40c603049466fa7f9a4b228bfc32b", "0x12c7e2adfa524e5958f65be2fbac809fcba8458b28e44d9265051de33163cf9c", "0x2efc2b90d688134849018222e7b8922eaf67ce79816ef468531ec2de53bbd167"], + ["0x0c3f050a6bf5af151981e55e3e1a29a13c3ffa4550bd2514f1afd6c5f721f830", "0x0dec54e6dbf75205fa75ba7992bd34f08b2efe2ecd424a73eda7784320a1a36e", "0x1c482a25a729f5df20225815034b196098364a11f4d988fb7cc75cf32d8136fa", "0x2625ce48a7b39a4252732624e4ab94360812ac2fc9a14a5fb8b607ae9fd8514a", "0x07f017a7ebd56dd086f7cd4fd710c509ed7ef8e300b9a8bb9fb9f28af710251f"], + ["0x2a20e3a4a0e57d92f97c9d6186c6c3ea7c5e55c20146259be2f78c2ccc2e3595", "0x1049f8210566b51faafb1e9a5d63c0ee701673aed820d9c4403b01feb727a549", "0x02ecac687ef5b4b568002bd9d1b96b4bef357a69e3e86b5561b9299b82d69c8e", "0x2d3a1aea2e6d44466808f88c9ba903d3bdcb6b58ba40441ed4ebcf11bbe1e37b", "0x14074bb14c982c81c9ad171e4f35fe49b39c4a7a72dbb6d9c98d803bfed65e64"] + ], + [ + ["0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18", "0x11924f02fd19b09255aaa1cf46ea0518e3d7bfeef47421609491011db0bd0b02", "0x247fa7f022304a1994ff505456c2201ef9b717369498d3ffce446601ed9df845", "0x03fd7b19ef2c861f22f77ff810f54e277bc94eb76c02d79d986be3dcdf051c3f", "0x18bd41239c3e71579a677443ecffbd555a81eeeea69352a68b67c8563c0c2a06", "0x2d78c3a5d28de9ff35bf0a257635196e5730ca7f40493277078cd75da8b4ebdc"], + ["0x0a514a5c227f4cec95dfa029e8dd124c34895aa46bb27c0911f3780d5015540a", "0x192e16d17d956b257b85a652eefdf2ee09589eac5be80915775723d2cb1da06d", "0x298ce0c1e3113bb935c7058e7772b533b1aa9db0c0926bdc8917e5605ca3ac10", "0x094cb4e83621afd271e41bc71727f0158ebd612239ac9d698b17fe4be05b7fc8", "0x03d880395be93c27d649af5fd142e76b33918cb8841d5a28173bd5cf7d328791", "0x28eeae6b5866ad68e443bbaf91680db7d7e2b3037e38fef61b42cbccffceca81"], + ["0x278bb49a7b4e44aea46eb0f882cb692801a6e60fdd5b5c23c63cd65ccce4fe0a", "0x063edec1bed831f506af8db648d6fdea145345887e8bdcff109035a1d9b674d7", "0x1baef1cb5509b526a42061fb53657f99b3232500e855192cbe8c940e068c475f", "0x1324564ac7bdf9e22164e9858d7fa8e368b165eaea3daf4eb67ee59c0df2e5d4", "0x005761b8c6aecb1a8ca4ea4dfc2c8376064a4a8004ceeda210a55240562ddc13", "0x10c9e283159d58cb4cb2e35fde83a3ba1fdc28002ed9963d2a99f186178a148d"], + ["0x0c399e9f67aa40707a203feefb0b958bbdadcec5ca34901d253d026a2419f6a2", "0x083f0df3f1a0351d0330ec3ff602ca8cc353b7f6e762c7107184cd7b423449f6", "0x1a6764d5943fc4a720b4c0a19fdb8c711984307287a58b9b5f9f5d58212cb263", "0x011a63a26feabf87fa66bde66cc25a922c96382d76c6a7ff48f1537beaed683a", "0x08ca7b64657c3548f32bef5b63ad24288a41c0b251099ad27f9434307e3e64d4", "0x01998270471e9361955446b0cdb8bea915ec0675f1cd648ddcb04303507a4489"], + ["0x1d6b3d5f6ea369c26f825d2362933eaa31ea35ec0a77c1fbd9e01ca1523e4432", "0x119ef188bb3dd0d32306976c19941e8664be687e7a69692da27da215a6f06d40", "0x2d9e0ab5c06893dfdfd03481381ba86b6e6292df5609d71f2c64b2d9a79f809e", "0x25f16631bf77060f7ea34087c025bf135784319ef08cda2e31419ee0a529e658", "0x144c7a11da5a7c5dabae3f33fbd03cad86d18bc594c79a497ecb9894edb554f1", "0x0f971162627723f3feadacb28b0c104cb8f74de508752fa8d7c0db2af13de8ee"], + ["0x24be510095436206dd0abd0b0cbb95c883ab304aa52598b1a69306ec981a688d", "0x211610e2ad4a377426fadf7068b0c1a6c299a164c1c1a603eaed944870d0b9b9", "0x15a67d981041b1f6f09f3f9ebefd864e779d3af08157786ac077505e50ec79fc", "0x049327fa79d28c12a2c82406947f77f06775b0287468b3136877701dbe7c9598", "0x230940dcc5232658ff9c29697a3fd416d170e8c998f1aa85dea0c42d79f951aa", "0x1b121c049cd1159e289007e0c9da9995cc4bab4c26fb888ec3972a8a2e656964"] + ], + [ + ["0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d", "0x1b4bc5885d1cfc8eb691875300db5a0c7362ae381898acaf8b63cad04ecb36c6", "0x08a72fbb55dde3e93c5818571a424a54953695029eedbcf91eaeb012751c7f83", "0x0f95359a1f6845d4921892f83e500bbb1b3d3763d8fc762400af039b0abb83f5", "0x16f01751ce985328afde34d81619defb43e6c7b5dadf52d0f82472fbce7770d9", "0x1c391626328457fcafa629f3e6d33e2555e8d885e3c07cecc8af1f4d56596417", "0x00970f671b9ba35e3e3c642d1e0b8032023ed5bac91c2c1056f03965a42c5297"], + ["0x1fe9feb5c7f7c7a426bff032cd6a3158278b6c6b2cc57a871213fcafd6427989", "0x0cc7eabb154aa7955eac47a19f6437a2b8dec0fe9e5686150ff6e88b1a7b4bc4", "0x0393efd96399aa0726ef9af79be8b6c715e429906ca0d15076b5a990fea75ace", "0x0871233835b752ea030cf8a4f43771296eeb33f697d1b0825db47d39ac9e5955", "0x1a02798f047a51baaea34fcfb26ca6afe96a5fad1d2db4270497b6e6504891cb", "0x055665d76df3cd0fcb713c234ea79d06a31d6e3e4c3bcc657dba4c664d5a0da0", "0x26ee9691a638edc7c91887e302fc55e8e7758286a44845ad88fd7de3bb1052c1"], + ["0x00cdb2db9e4f9d732d217c5e3114821165d49e5a2d41556bcd53d0c4d433224c", "0x012f3bb29c972793182123f5c49306e16a3a787c4bcd9c798a131b70856d1cbe", "0x0bba9006404c5ede82b527677daf444ed43fd1e0dbdc5528dd2cd1f17ad73481", "0x17e4e73bf701f88d219acf1ca6390cc1e17c9f84b1713820837ca070be84a2dc", "0x234b8a077ef52b53a343b8da5b20cc358ad60760dd60276d485015f73d53d207", "0x2dc3fd77394b7b5ac1cbd1b46e6ded5b835d7217a4c50a487ae9a35a7fd45d9d", "0x1668477640fab14c72b1c16ff0192e48cf882f12276bd12f97f82c6ee2e61e48"], + ["0x09664216ca565c1a44fc2b98347ea8b36904b3877f2159dcc999895adeb4d70b", "0x111fd8dfce2bd3b7ba0cfa93e20fb685abf76d77305857b8df30914e4849ecef", "0x19f53c0a592b3ea93497a511e56f66753598265b1ab6774da48eec04e4d93426", "0x19b683c39d3b002fc3523b7bee5a60148b1dbdf18dd1c318e6a541e8cf66a174", "0x2547113a818779f13e3448719c7ef100b8036bb3e882dd5e6456c35311c1bd5b", "0x00cf148f8045cdbe7bb1013f72ebd4126a3e35cba9a970441ba8d5bc76943b0b", "0x3008421eed767a093322a09c3733973a038168cb28cd2e1f709076c00b869599"], + ["0x1463f51d4a4cb1eba16dbc115566aa48fe77b43c244c9988a3c658d2f56493d6", "0x16afd8f4c39038b8006a59d292aea84731c0f83832a61b82250ed90118e8fec2", "0x2296361f3bf154efbab996921936e9b1dff8352711f958638172055333e07579", "0x1c3160ebaeb10f809f69843cf8d5bbaca198d1f8e3439be29beb92d909ec891c", "0x094c66bdcff54382cd9213abe43312edb5b4d414c6e09acca24912a7635404c6", "0x2e883bd408c4c826d004ff777d7c0938434ab5bb84f3420e5d94b853b1746f89", "0x228af6d425e91a783dd18fd89a6b38bda053f2f23c094b875f27cb3abba2030b"], + ["0x214e41788bd2b990347c7f2a8f47612d4dfceb1a1e6da38165873df66ce51f59", "0x03fba82d3f783620873da94e9f4e84c8b529d76f54e4b5d7d4805272af9b9775", "0x066782fe3e869de2cebd7ebbf60fb435785329dfb12ad9bd1b4e46ed36289511", "0x1c5cd6b23ef336be01efa37a27e6b7aae5d1643fceeb212cdff51588835fb537", "0x2f3b4bf0f105f88e27248af094e29feed9ff3fad9a794e15830bd2b311539453", "0x2f4085eaa9f80a69b739fc23f2fe4057f64729b311783fcfab3a0a36fc1ff432", "0x2363603349e94f520fa1f98fe2507f6aae361934078aa59a16214c088185638b"], + ["0x0548541724f64e20128260899abe8fbcdff184a1957a9385fb715923bf0fc79d", "0x21c5e25a6991364e59a205e5b01c811deeb095680a72928369cfd2de71b14f98", "0x11c5cc53f6338c825817aff7792a2efbce8fff171300d41455a2edac37663d02", "0x27a0949fdc9f10495c4ee7214aa0edd2ad8eef68f577da8b96f9d87a39504bf9", "0x1c7fc68f3fbde4a23c455ef0d0dbce0ce556a0194e6d552c0455cbb5b0c230e2", "0x11d0f56fc00e7d85b3a2939fd33991dc8abc1ced0c3f3c530cbfb4500d63de9c", "0x01b2e9d20d9b55deb048cabe1636f0e96363bec886679cbd91f332fb2bade44f"] + ], + [ + ["0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27", "0x0e1f4e4d26e9da5f8ee3deaf48b493610be61d7d3db1d9754feca30879adc644", "0x0c298c14356a5a7f226c5a549e59184900385aafd8ea41d9746729964ef75f34", "0x19e070982d3ee675e1622ca20d13b2375e528b676706882eb8f1afe1c5045ea1", "0x0333e2923992e89dee570a650125eda75a20a72e69e10863a19d17b7beea9295", "0x1944aac72bf6fbcdec04361238c3c4d9510d5f07439a1b6ff41f652990be0139", "0x27d802ad019a42fd04892ad167d9e83596a730605890401319661675736359f3", "0x2bd05a040a0987ac6bc01f67242d54b7a2c527a970ad2815b273471eb9623e73"], + ["0x254b8126f45243f14dd8211df41fe5516b35952d56c62678c148e73cdbad3718", "0x2089c597feaa4ca9a202edfbc823763100e294c9e33000e513b2a216491d474a", "0x0ddeaa906cb65f3e9c9bea6344dda8db90c253c0f7f99ecef88786fefe0e5cc3", "0x1114c9120442750493d999d4dd45dbd4f3b75ab183209235396ce83d8ee9916f", "0x2e8b35a8c29e639dde8dfd49b4b347f00ee467863f6efcb355fa1534ef70783f", "0x20e6cc613ae6cb0a518425f53db1298a7f8859ee20aad08320d0a4f9bbfe8512", "0x2420dd1281fc0dfac176a752d15906b55f137b9cc320d5d5daa9df3f3d43d3e6", "0x17bd4f2726748d99925af9a2f2929e231c1869428c13b1e397bb0099191723a3"], + ["0x270712f18b1518fafe093660f492cdbc2fb70ffab31d8a4d8a1934be68792369", "0x107cfefa1e864045a668396526ed9f675b2bbf272ca635d8d3e8801099bb97d0", "0x04b96a296a35acf415929b8784b6bba64a630d29dff28b628fc98ef708230b57", "0x1f0465a9c133a1c6805d705be6b3ea9912a2d062c34dbef92de46955b83e7bd9", "0x27a2b7f5549e5eedb90105c0f8e20f0571ab7af0801f1bdd23eaad91f2229a13", "0x031b0afb7ab2f1d241f882178f7dcdad48591cc67905d651dbcafce94b14d073", "0x22e0323bbbdace5fbc74a0b3dedea6e1e3bf10e84dfc71fe395089ac197af744", "0x1eef36d62f3f864eae67c63324e47a6344e33a2d5bfb82f05bef9900c54e745a"], + ["0x2bfc3981a249aeaaec4ab9001727d32d4e6fe75598ee964fc85cf30d50df584b", "0x021630ec3f236ed219f73cc617b9f8b267dbee99a63c528544ea31b27cde49fb", "0x28890a03199b727fede5ed0090ed69494c053c97930fbb6c52358b0d7d104c16", "0x1b80f3f439396c2f466b8e9b25765a014970455a1beaed7a6fa308dac75fb582", "0x2a4bbad245a33e5d9701537f751410e4ff297b8f1d1d9098fe9c518c261a1b0a", "0x1e431f2b1b7edae4f8cbb5d307bf5131c352c2a215a870d739617f4b017c6d16", "0x255639889a259ebe59f74a8fdf2efce7fde1e3a666b35d8e6ec601d4d0b22689", "0x2d0d8a814cfa16c2323f174be2dcbe0c295829fc59bf2a89f13b4ead0eb056a8"], + ["0x16060a17e1b11f851ceab20464572b3d78d582ea050014843101485f65ab723d", "0x2741203d66c523c7639ea713b20346119c961cc1e9659a458af74cbee16d71bf", "0x2208c5004806c7aaf58314590bcbea16168fe62ec0497afc6bdd2938c12d9a23", "0x1c01f6db435dc4885eef9cdfed193250b9d3eb4cee366674b07bdd194ff349fd", "0x1f0e36c2cf9ac2c4388e74966d9ee7d1a0b3186916a08cfa306f6bb36d21e548", "0x199fc2be60e49e679ec2ede6cf3345dcb3b918e5b3e07c2cd8141333934e178f", "0x0a38d163b8a2fa3092999c1797b1af909bd971a25a656baefbdbdfa3628e678f", "0x198949eef2b27c2b9c3d699e3fe57da3d5b509c2b670afce400aba1aaa9ed51f"], + ["0x00e73217a106c402e4c6c166cd9ef1fd2a0b16ac1cb43646bc1c726f83177770", "0x17b2092b0f634576b654c6de21a1a8d812bd4c01559fff83217129082e2b2b20", "0x2f24d609cb23720eda55fae29ec6f19902c42d8bf904fb656202736d97b2eb69", "0x2df183fe2bc9b8b75773fa961c8d4117e582a80b656af5c58763e7024ea4189c", "0x15fe963f5bd0d92878c10a894e118018db82e63528afa4d4703e9881eda118d1", "0x0af594dc4030e8509701fbd3d8995f73126ad72a7af0fff344eee82a31ce77ff", "0x0b8e857d9fb1d554f3a4ec307ad907de7a436438603af1b28d4e4ee379960ce7", "0x07ebcd25a10e56693a28155fcdaf7b3519d9e0e08241e21789696cb76ee06297"], + ["0x04b959ca07e7182ca08f2351a03545bd7ab676f740b02331637ea1434c8545ec", "0x068e8e63411df2b3a9d7c567f66419a580d3ba15bbfdd1226effa3fd6bd47b3c", "0x0344d0c772c2f053664a7b9266b19d48ae5d2ab3d1c1a18150754ab4b836afd3", "0x07e0cca1a35ed15fbdb619bfaecc7a9a8f4c51293927562acea8eab817c6b84b", "0x222edf3e26bf74b2f503983189201d4ee8e6d6fad341d7ff50748dd739749df6", "0x2d4308b4823b465db653d36818181209d23cd12f844f72f7548d49e55055a601", "0x2e8e67fc85f9b4d00e9e1197b35bedf55afd7300a4c370987c83c15cf73cae3c", "0x22f1bc4ec138b596128ce5ee5b8184964cc262318e17ad21d45c552477f53e61"], + ["0x0fc9cc95222f92715cf7476010225e14cc38f314071e50e0f3bc9ec674a8aacc", "0x2f5a2a0cd0cb24896c94878a8106d57e82c68dcf1e209167a45ae9cf8570fed2", "0x2cd19b5c55bab1809e52cc9fc1a038c08935da19cfc563e7048d6bd1970a0c8e", "0x24ff2986781fe40ae61e8f5ca0ef17c5a5ea7bddbc127d431547c1f6a8f5cedd", "0x12a87d0c5419f448419840e5e5a92d276ace00963d987f2a1008913d98a27114", "0x0af3ceff2c865a901b9406d5d9b2fc58833d642f46c6493ca030ef595061ec6c", "0x27f42d86842f4d8a8c3aff2f47ffc1e179f097aaecce55bba0b0fdfd5b190aa7", "0x2b6b3bc340d4119e57831e4a2187013f1216ab3b639945dd92a984943241f1d0"] + ], + [ + ["0x0190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56", "0x1f8d3a9d2d31ab32d9bdb6375170dbba89f6f8f74d16e4fd02f3675d5fe2baad", "0x230c694139416f40422d713e13c056c45c3c631b346854523970eaea58a37df4", "0x2063a461ad06315ae5992a53a14bb598367624afc2833ccbb83af92ca0f6a334", "0x0c574e628f84b6ba9d17b9d2bfd4747e06dd68cda2383d64ce365927098c046f", "0x276428d88040a3e0f442424d2ffcb8d19becf3fb6ca02c1b5c61b5ddc53ceb90", "0x24bdf6101b2f223174e869d6aecbe8ea5b04a14c38fdf1494393cc6fdb3e42a5", "0x180fca184150c0e354b4b3a4a075824d4b68e8274943f4dd8b0c64eca25dc68e", "0x10726dcff87299c8532159976607633f1bc2ad24453c1bab26b726b82d756ebb"], + ["0x0607cd8ff9b889773c9eb68b8a4366469d470cd7c6004106caae95c10c424419", "0x2591580b73e7b5d5f34d9fdc0cf7fe3de7f6a18a255e4376fde3eb31dfa51d79", "0x093cff12150aecb3465c4c99f044be85dcc1eba21d429132c2260dd3d12ea441", "0x059116da88a081267dd888204fc6fb79046c3297ccb65f9e0fe0d50b4db44ec6", "0x2c948497373514e7d9846dea9ddf5755337ddb661043d6c628cecb8f55173bd8", "0x2c2729812be9ed432e75709133119cb0a14e1b6ea31c1279b7c3e495deaf108e", "0x2280d6d4718f9f06b551a988408f0515070e455ed63377e910be087fb79bd191", "0x1b1bba125505ae9675bcec7c9af579c5cc83533c9d555be398afa09cbf95d6a7", "0x17013257716d3cbae28e1c272cb6aaa2844136049ffbca05ca201523032c64d4"], + ["0x1da524cff60b64856dc1f5dde0ff62da7b182da26908f6ba6e590adebf91b40c", "0x2bb4565893b6ffc5799139cdc151158749c2c65db48672abaf24c5b3813c0e2b", "0x25081a00fc20ae366b1fe7ea6b09e62a51f6fd377f608368c12ba4e3bf89935f", "0x1b43719cd10b60c5647c097d1fa84b8f3c12c9c475ade13b388c7ec47240be11", "0x22dd201ecbab94a2ee393796fefcca63aa54d9a19ab9c7f20a0bedcfb9d191f2", "0x0b8e79838cd30707999c621621e77e69c0f433d543b79c668cf379b6623bac84", "0x02082d5647658eae648936cefbedfad2cd0538572aa6122ca68ccced68f432f4", "0x277bae2fc597a536adbe9c24bc8ee81731eddb574c6a5142c1c5a48c51f82e81", "0x30354c9f29c920c05e99d7cc747510e76f7fa69a71594a290eae7293c5a48441"], + ["0x22f33eaee3c481e65801b761a72832908f066fe21dab5fa5ec1d4c6e99dd6dfc", "0x1c5ce77776893d48147444b9f6d66a4da29c95707de832756c739eab8e87658f", "0x2ab8edd22fbe2a1cd3ce9a4212d0efb282ccac28af4d876fc946203070c920bd", "0x26e49154acca24424d5f8d29f650f9824de82eb7887329cbc83a56ae01dee4a2", "0x0badd77f516d4fa321d1099bc1e51909001591ad9919f08ce9718aeeb2bca4d6", "0x23671c5d1fb556063a64b5f664340936dc5ffedd4bdbaa2e96205704da5864f5", "0x020d7202ccde24901d6ce2d107e79e1fd78d6c9398ba7a4996f116adef14def3", "0x1d86496995f14264e7a054cc8224900368775c3e5ac6b5f54285f4a73c2171ae", "0x136961746d34fd196025173c4d79bf8b3d1d05291c584928d97258fd5fb4fb4e"], + ["0x075f84e9c719bb8de8e61083290daff19aaa4337454e5ba804257787470f2f54", "0x175505391c619b75530fa83e513184381e603d8449d1e070017ee8ec0a4d25f9", "0x29c5ce97710c1578a0990d862cf881badf10e4f6bde629199e803cd1c426be4e", "0x2caf86cff60521ccc5ec6e2e2c83b4707bb90f948644bfaa8f80b0afcd4cde10", "0x24f92793d67638b4abfdf48ce3b62ab5d0e1b250dc274d746f2f7d0544185b62", "0x02809dfe24c7fd7cd49b97b27150f4d38a340b60f0733fd4530cd4269b4811e4", "0x26709688150ed035f959687edf7747ee8ee946b770173dbe50390ab8c08c5f9c", "0x1e5ae4c295ad5a17e00f973f136f1230a6fb85637631b306d3705f80effac24a", "0x2310e2337e4d53c1635da18a2722178d55af583591bcc317eba842df247deaa9"], + ["0x2084be9a57e9adb80303a8dcaffd4bb77adb6815168b36a1d363b38425437135", "0x06ed1d14dedf763a3065f27e7a46d7fbf20d2b4e86a0db86692a269767d577e3", "0x1324544a54174cf7b3cd8ffc4b86320f2319d9b88c1779b89b1916018f3fb9b7", "0x2e923ea46d492247e12e0a7dccf6620f5eea6629b7532b3af246809398859633", "0x000bbbbb87eccc91d5fb07b6c55088ca514d68ddd93cf31c8ed2d2cc7f23b22b", "0x26010a3f5295bb4481310cbca5384a47af0f9905e4c76bf54b870ef0ffefa1c8", "0x0751a4a4af246255ce412c4bb47fa34a51b8628f3cd902077775c8fa488e7519", "0x28d2351619ccc6fb31ad4206e2c064bf4d9b2292b28463e53e4771f10670ddbf", "0x1815e4f7b40a7027878640a6cdc4b2854300cf6fd4953c2ac2c77625ef44ae04"], + ["0x0b303449f1bf4b92d2cbc26ab34b4215b6dd7af010747a705b2a6e3398882922", "0x140cdda33bb7a79b2baa851df5ad459e7df569b9f2c3da542d3b8d5b76b356ce", "0x1d18b25aac98b282e10b5a3a74ce5caa169a5c30bae52bba280ed517f3f82fef", "0x1ec6c32f513b8f30c7aab42e7d91aecbe54aeb188a84f8ca46bd7e9741b9a389", "0x089beeb21c346cb9bc182aa2b70f853f1a2258d56893ce5a948d9c645ecbc9bb", "0x2790643a66038cce4a6488847d8d2da2eea84961f8134b1be36947f803527e67", "0x159e25e00326a76f25c1143a5be6f53fa51ccf368d9974cc6d93cce8eb81d37c", "0x2486b884370d49a003fd041e800f0a898ab61b5e947997461ee3284241f3baaa", "0x111efc136a9dfe0ebcffae8943e679cc0fbf62fd0ce03b409fecd932a8281b10"], + ["0x0c099bc68243537203f97254f08dfb7efc09de8f96d72f3b3e0aaded45e18b4a", "0x035e9ecc464cb431cc92c3356e8a98547e843ed1324c1e971179fd1ad9fd51a0", "0x02f35e921dae87f1284c0c8ae737dbdc4936cbbb03a03a5918552fe565270a8d", "0x23a72c27f4f5e6ea5325d5b368f98b40693b2db1e8ca3d096739753dc5678303", "0x0e07b1d22eed54fdf966ffdfbcebb653b5dac3b2a91f50272876efb17158be2c", "0x05fa56d431d4bd09625a86d3623464dc90bd541ea41748f2026f65025ea9d2f2", "0x2d6f3e0e98413d5d6a1101b245c9e711bb2e956e27a5870784fd5403b39867cc", "0x213176bc1a04939fe7d6bc30691aabd6152ed24f309bff3939a0d91d54c67a66", "0x0a5a1148dad4562eab18162b3914b64d5753e9617a5154e93f7e43e6860687ea"], + ["0x1c5fd9060d4e0d999264429a5004c165570bd1675b09f977708b1ca48e616388", "0x129f06c930edd36fc2fb7044a6332751a2e3bcdbe756d883716cead6bc7063cb", "0x14a5ce1603228d6e6fade57c1da536659ba46d1b25566f12c28debcbedc5b4f4", "0x143617efcdbbc0d27a091f28039eba8abb39392e2a462850b1f9cd8532f5075f", "0x2885f2d44be0ecff57d92a4384edb5bebfb585bb23eae2a2ea50806bab8b7bd7", "0x04715db6d86b513d002589f1f9522f7de3b1a8bd702c167559ede97da2c0076d", "0x088887966c079d2e689a8d6d7bd913e92d326959bada59b99a653feaadf6c467", "0x12ded41f8047da3e6c22bfed3ec5bb52d027e560048db4c0f96ca9fa85e17bc3", "0x1f47c67a4325672f17b8bd1ddbd80e4e9e6c62419a9c204cc7e8821892431aae"] + ], + [ + ["0x0b1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098", "0x2fe429db8068e61b82624f25766273cd9fe6368ff097eab97aaa09be4c630e27", "0x2e750867942439083365d21fe760c7dfec9e3593c67de12a4255c6b01648b690", "0x23237985a96b177ff7c01486ab0d603d29991b8324abd6b07dbb96f5c21ba17f", "0x15ccec857b25934ffd429af92c910db31d00dc1c3fb83745a31d8131ea5baa85", "0x17102ad2d98043e5509e76c331e6b22d5fb62d074760806aa675764660eb56d2", "0x0a4ecaabde9d1ea11c81dafa8d5d4869bee7ad0bf4eb78397b71b8f989cf9812", "0x0ec1821648fddc448a1512aecc8ac37714923981940f5542737a468d4d887c8f", "0x255a493aa4becd9d137eb76941c4120784c1233f6c5fdf5d65c0832af543e415", "0x120f44670301b1435249294d9833d59e01682af4c8658719727678fd9ab7ef2e"], + ["0x1abb95b6e33243a050e563b5c4fd059de5513ec28994a6f60e57c98d3bc8f586", "0x0a5b604c958bc90071ad10618b1772599e0c8dddfb641131fef39daa58a39923", "0x24e82df5873953792baca345b7c19f61039adeb1190592bca18cf4f907c1a6fe", "0x10e3349eefd3a112417e110fd9e832078e54b5f4537cd018aee3dfbb90541581", "0x165adebe00c7ba019499018c96f5c5870eca5679c90c843d9527184a525fcca0", "0x01fb81218feeedf4e7e0e33dd8ecbe62d65c6b7d4233f32e073571ff862d89c3", "0x1be2802fbea51003aafae82ff4499d1158377b108f8b020c82b8460a8d603afa", "0x0418081de8c2958355a1e45e28ee51ba2c66cad04835f4fbd81e696de6398769", "0x1f3e937ab29f3a88c6fe438698a7198a5209aa6ac9f141319f3bb201e7fd6716", "0x0113e968769b0ea32cb7b5ff70484aacc96f13dc2827a8e5e611695e0797fc3c"], + ["0x110d213a836478aa301bc1fd4edd388507d87745b3abfba5bf282afd21f7242a", "0x2cdee0c635a4fcd9549f0f91b4f4a9b628aa7319e2eaa094a693b38b5cf9a242", "0x00d60f0585755d48577b465746de8e286e49925150f1784f29fb6b96dbd8f0ec", "0x2168dcf216d8369a626ccc61453236a389d02519f3052e87eff9ccb8aa299c46", "0x03530dd962ef23dc16f79b28c1fc1ddafe9458be15174cbbbf3a806de5f63cef", "0x1cedc6d4e1476741c1099557e58e642c42892aa36e2d0a793f670781a21b0dbd", "0x269c8c139a4f61e16bfaae9e8bbb1c69808c9071083b0a339dff9e4904b443d6", "0x0ea7bc52503e2039d277912e022fd6d0ded5bc687c6ff97194976f3a28bd30c6", "0x2180b9eb156eb33cad1aa750ea0fa3ddbfa4127296e497f86e6441e052a23b45", "0x18cd1471430adad31e45b529494fc8a7e319bd2fc0619c99207dfacdb657bbf7"], + ["0x18edb2d105bb53b768ae0137850dc2d2bf6d1303a1f8ee4aadf76d8f81990588", "0x2c962d7d54a98c3a82a638d8c82450813f42071a17c6c05f470b44958f57ef15", "0x1f495e93014314988dace5e4e867f5109e09fa00fce87929d1e0ece95a449345", "0x262903f36acf0dc055f610397df0794fbc30927ef185c6356bc33e5c31faef9f", "0x1b7e922b3dd503e6441ada966c8b3ba7b908cb2b98b5fbe1e4c2fb982455baa2", "0x1a88ae2fde12ba32e5f4eccacf11c25bc163bdedaaa8824474cae5869e5ec20f", "0x23407728269c70fe712b021915059dc8dc2124ae648e2cb549fc76362bc2b97d", "0x12ab318626d511c23d28baa9fb5b5802e0ab95e3cb17aedbaa25f4d084cfda57", "0x1cc69d8f34ee877838950e20a9d4c4bd3e9acaf3d693aa64cae04faa225a2e1e", "0x23d0fa965e920dfc530b52670b1e32e2d5fc2821fc918c0844a003b7141825ad"], + ["0x1e53e92df6c53ecec4c0de5b07dc4c9a0c5545f2abcc1fabf4ccb84a0a6e2c27", "0x2bc761185f59efb7b67bcf1d3e54da00daea067fe49e3f1d9334e5470438b454", "0x124331e0ecb1d9808a1d91efaa98950abe930c46fee5a30d5ad07976a5bc0263", "0x0046887724f29321895c2ef8bc0cf545df773c04baa097c352a4165395cca786", "0x247460ad4580a18639eada69b904c91b19f7d4387435707696c40bac3bfbdd33", "0x265412a4e3b5560aba502d20ed833deff707b7d425ba3c09f3b6392b6f1f4339", "0x02ad06fc9f81684542e0458aae19c0a7c18be94f1de3fce6a3e5d2335a01e90e", "0x0d1e34192343d66fc1b6591cb6a3b0602b0835a403c7227dbcbd72fd8000c6f2", "0x0b565179887ee30e381631d8e5dd357c70ee2ebb410617d2321f6d8537f98970", "0x2ea6b32af37cd765d728ddefa30918902a21e19b291400854f56393c56d69460"], + ["0x10fcb817e10f69f7074e64c393b807cdddf33c84a8b5cfe33f44b73fe18c0e36", "0x2e450d1fe7773c9889a0be55e44453bcc844c94b56fc0bb806eb9982ac553428", "0x2f421fcf54d77dd38930cd69076f9baadd3d3f1947371215a66c894d637e89b9", "0x13276081db012d1d4f4b7dd2d8a2f8a5180d2ecc33854cdd35f9ceb07bf40d53", "0x144d5be38d44c5bf8f3c5735334fb1a07c13702d86af39ba0b4220ec9a7568a2", "0x12691b599d32edc48ae99c7a73abd59e5b18f4bf773fa1051cabd2c49aaabf6b", "0x0578a55f0fda29909b9f850c3d74be6668e4444ac691764f1644a626498218e4", "0x12e3b04924b2cf6e407bd26b3cd47bca61d6ffcf7efa1aea1c2e0d8a49de64be", "0x1162a56ed3bbbb4b6760a16a300ba7202130086da4d5588a70926423ff8c242f", "0x03340cacb04d5a85614eacc4be3352938baa3fc714c2575aa9d85f739113c50b"], + ["0x2b1d8c11fc652c593543b6f9800bb7d0c9371dedb96f08bbbccffdc6cc44db98", "0x25c0f87c946f375e341f72f6a8dd63a94e86f4ad182715bcfcbf2b28df6b4a0d", "0x0543b2bc66f3b2d93d4c1882039ddb37c70c0b437ac23ac5bb9868e6df24485e", "0x2dd117218538e8acb0301eb40adfa2435f5bffa8028ff52f96a99d77fe927066", "0x269b06b31e89ff132daebc200efdc8ab068136fce65f2fc55a1dcb939b7fc6f5", "0x20d4401cbbf92877ecf616d7d28551cb0aec552fae9518dcf9218c38c1a0bc90", "0x2ee2da24b7f8e7035fb73b08c3414833ffa38e14b1faac198a860a5767d2feed", "0x06dd89fabf92546847b9c13b3a36bbc7e679c5bb0dd785403f3ff49bbe61c8e7", "0x1360f719034572b59410c529b62a62aa94565654597e42779f33400f1d17d652", "0x15ff827e034c02a90767f0152840e7fc6db983e496ea0519c0ff41dea8180628"], + ["0x19f473e40c05676d5f8d51e11336e9c65cb32828c397cc8125f1dc667b6cadf7", "0x0bfe6fc08e2a2e1b8911ae065b985388fcd105a490a4ab943b25558cf3d054b6", "0x203d9ee6462a586914fe7dbfc1bfa29773b7f9b3d63aea4120c601129c16660f", "0x1b912abf2e1649ad4834ca5b2a3831cc9c207d4d08e4bf274a79dca80e52fe24", "0x062caa3c9fd39b69864faf701dc8a4588571cb31bfd5c9c3c59dfd97e99f701a", "0x138c03a2ecea183cb8f265eecd7e93275b0bb98297c1545a72197dc6ddd9335f", "0x11589959fc2493292fb6c50730e74994ad7cd6d3533c3b00a57dae833cc701e5", "0x17b9facdbe747d7c5163ca00e3b0b825d012ed4357604e7185750d677c6b357f", "0x0c603d03f92860da8a68c6dcb1924d1a45099aea50f1a362edb2f2a7ddfe90ff", "0x05d56f0c844d169248503135e4deb9ffd6329d54cfceed4b947d78a568681147"], + ["0x0fcf3a4d9c6c3392de1bdfe25cfb86817ecb80c51be17d47f79750201f1fcd01", "0x0c182e438257c4ad7e7b79c3b68d60984e507ac597cb47dc31d913a7a540fd9a", "0x025a1ecbd7e7893f646f35d3e07ee997c94354737884fe6c26ae8155760db8aa", "0x20135ff263867f708ee0275170cc9788689c088b2933a361c775cf430748ef1f", "0x20e160f772998a2f7d0064c7efa15884ebc6d8b71821cd5336e2df14341c95ee", "0x150df11291b680e3ba925a0471c7fbb30e704ab4b554ea5d8c07b70b2b96202a", "0x17572029e8e897202d0e65c2172c571d4b91ca856e7ad3f118ad922127b87054", "0x0aff15650b805bff6f8b3515d5e29cf914b7349af8924e796009f8a4f1b7264c", "0x1a918fc117d9a6445e363ee5833dc01411034b95384d98eee47ae896f92a7d67", "0x2e5618411efea30cc7de310d4872597d087c1e122e02ebb117db0c2dff04fc0c"], + ["0x23b02d00fe2634889673a7d04736fe15b9f62652b1c0626a19af8d6085d70822", "0x2ff4d0b8798a82667793533730083c25223d589cdd079362f1e8c2e01d54476a", "0x1d897f60e87fce5ceed8da7f2f4a63fdee7ff9dcf179c08e05e9e5cdd8238ac7", "0x0ba6d4ceee2182d3f2ab2e4a3ad08fc31f7f4cc0fec91ad53e92bf8ada3e278f", "0x05ce94b8e9a60b28947710461d87c7757246266ae8fa5d3af3ea81776b5b8c07", "0x0c346b046af03cb9048c29353e1107d6b75e590bb2d422ea83c09a5da1ba0c65", "0x2fbf8cc6ec7efb30106423f2e67b0aa9403360e56e88b6c5cbaec34a80bdc7f4", "0x0d064e72449efc11d1e90b97749de3909490b912bb1f72f542f41d62ab2d847a", "0x02a88e0c35617665f3cc2fc77d90afc7a8d1001c71debcf2733ca0c71a19e1ea", "0x15eeb3e0541bcf010da0c47adb12f6df540b974d439c93e19ea4d02f9975d446"] + ], + [ + ["0x026dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e", "0x011a131a3778c3774233bc54096419d463d3abbae18322a7e77a511881665f93", "0x2a18ab4dc4777e13cb8358c1c423153570d1cb909544243abdacd4547c8ec3aa", "0x16ebd782cbcf6d63c38b87b27db2a4a5af5847a9a60889c4cf6aa318d6866b1e", "0x02b7ed47fac275d34f842f09b01ef9421014de040c26a591595b227ba7bc6fb2", "0x0c5e49e319fb9535073f07f9e055accaf3e3f24a35dcb46cab67dfc648efaf30", "0x0161e4ae5b2d24cd638ba5c32bc2317bf90d404e37e003f1055d9a96e406d30d", "0x223c7fc6d24fc53d1b428edb8f1c52d20ceec592187d2c7a6b0b147b6292b81e", "0x1ae060e39b338d09845e2e9ebeb70bfb74cd4af926217f5732be2b6cb7fe72a6", "0x046191ab41e93929ea51f190fd4e773ac8d5083328d4b2f04828dca3e69098c3", "0x14ba1b5383e3733c63d00c32c2bbffd8e54507ed33bf7544c86388191eca3e40"], + ["0x009813c803ff84a3694eedaf4b1c2172615275dc18ca654c799a70440946ccf0", "0x1495af03dc9180c886f0e1bdaf9d18e32e6b0d1b80370e7cbe5745dafc433523", "0x0d95e8cf8a66b56c32e7d11e0107e41e1297122d1acc41332f1b49895a3c97fc", "0x0b05f16108c4616a973b01d82e50d4fc9dcdcce67d2d21f852816bd234e9872b", "0x230b62315b30bc49d73dff8a9de79c620e03c747b14c432f170715e588d605aa", "0x15d217a31784741048f326e155af96e90b5aae734f06779e698864039c92e123", "0x0af9afbecae1761cc17d44b51ca66d1dbdeaf341e85f1082958f9cb72f7b55d4", "0x1da4f4e3c6790ae1b89c4118861d8ca2a50cc82a4e7f1ed3c5ba8cb944ba4689", "0x2860aa52dc2f967c0c1a0b942ac81e02189d031430c11a919a5aa895bcfb6151", "0x16ff33d67c85121bcee7d81cff1618927f1c92b4d1d21c2a07b6ae18b2b7b9b7", "0x1ba0e835f47626b0d82426900c49170a8be29c39d90337aa5fc10764e2321a1b"], + ["0x00202973f7fba5bd21ed58bfe7156d7b29010d41090f63f1bb290c1d5da1ad60", "0x119344c53707f00243983c6d024fd49a0f8af80e5871933e58ff87c3a1f48b93", "0x07c22f96f2f55653d04edc63150567a7a04609b0b79eecfacb1485dceb7bc873", "0x2f394cfd3e442503c3a22512aa4b76b95b743c7076ca4115a9fbbb7c6b07ee5d", "0x206351750037bdc90d4f3e7918619fc690c2b5857f8bfbd86d7c001e4cf2ca18", "0x1accea09c2bfd17f4061725c712fd1976a07e773e54d906da166215201a58136", "0x05e52c0ff8c04a8e5e3c7eafa1d0902fe63e35898934b00f4333b38fe614f913", "0x2e708baaf894bc5835e5fea81227fa8cfaef99086d12b0a3a7f3f85bbca61d28", "0x0ac23f00ff015baab1c8be9a90943c3c72d17818be7ad427c45eb3ff1828727d", "0x02134798f4ca7fb9928012c937f37de87432b8665aeedf373e7ffa6fe0c13d00", "0x0219f5e28a5fa52689d2b7be432624280c940c9bf9883c1fb0fe929f78873c1b"], + ["0x12305eadf64dac24a7913a62d95aefd45f48355576c671e56fde9cc7c8344ffd", "0x00a92bd6a919d1605615786f2efe80743ca57c10ec80cfb926722b5bed408b79", "0x0f716c54de41920c401a62df8f9186e19b9523e98637a5b113d61ccc30ba0213", "0x0a157e244f939125d57f9c8e66f7d88ec0fb3c05b90f526bac0871bca84677f5", "0x2218be861d524eaf03b9420b1368e9c5aa7cefee72d0e6ef80732ee9d7e6e2c0", "0x2f9bd19d0c8c3887a7fc0173f863f075e66b183ad89f13704930416e1d5cb7ec", "0x14eb401c1084a9ddcd5d0092e5d1a299aa0f55c351545c781703c01ce87d6b29", "0x13fe23be24261ba5b92d363989f58e17fceed4a858d1c61fc2cf2b71dbdb6936", "0x032fa2f166622f057f61a9405c9256223cab2ba82c9495607921755ab018f690", "0x2aeddbfa245756ad1e1658629f747b8da7593b195cc950324f95edc9eda42aaf", "0x123a6055681023b16570c70fcdf3ae8e387a973690b9e6761be22f9941d7ef76"], + ["0x25c783ad66d6a1fc6c84770bd637f6207097dffb0378d7e0395f8c0b86b505f9", "0x1c7d3a92caa435cdd974520bb6fb6cac81634cc9bf4e534df77736e06d768c3c", "0x2cd68fc31b67dc45fb6b16f42b5eb89dba2ae7e9aa50c5f1915275a81887190a", "0x1d4567c12db648d4a9c41324c0329325b76a07730fad72ef9e490a748674985c", "0x069ee4eb20b4860d4af91afe1781338f53aa354562ecd873e0e625af70746f26", "0x06cad0c2bd438c4dba2ed64bbf75066e731484c36d1f6738b6e98601e9fb498d", "0x1e0e166d734aa614c6b53db4f691179841a33f8105430a3ee70abca83ba6ec6e", "0x1c879c9428e19607d647f5ef1415e76f7c59fd01e52afb80486081851f9a5284", "0x215c0cd4e3f1bdb482b93e571879d7931be90023d7a220e8f93b21c8add41ffa", "0x1f41fc67ca1322b37b7aa01b631fd19105281f6c6a4d37fbf68fc1b5f62802c6", "0x1dce36062af7e4b0098f5590622ced7af9f28e88d476cde1391eb30408d5d266"], + ["0x222deb606f13cf28c73a67216d88b16f5958d5d292ba10ef3bc2c10f5a0b613f", "0x12fb88a0f6f749d68da9250d5adecf088442827248d67f989fd14b5c9cd4d4c7", "0x0066292e64e6a2c64673aed365cb50f7bd4e1d3b5270f6b2e9982590c3f8400e", "0x0a94a2d7c4093c638823b095733f37176d7e747ba24645b515ac2a241ffdda81", "0x0a226128da1d9bd5b329f55f52c75682def3369ab13359dcb7d212eefca86229", "0x1b5da83966361586e8810fed032435caa80a9b476db21290474ed1977fcef22f", "0x2fa75deed281db734faba5b70eaf57962f93e2eea1d3dcee34c81ab1e9fcc0ee", "0x128cb3150b15cbc4faab14bf7d676ef3682b52cabfc8d3419dfd98109d19ecc0", "0x052700b19ef6d42ea392e044a094cbfc308eea1f72f2a3428b1e721bfc32c6ad", "0x22d1e64d4ee15e60c459d851ef9f3495e937f5a90990382c97867c45b7940071", "0x252e74746677fd7584ceb0f8aa6936bd04f9528ef600737e9913fe4b5698eb28"], + ["0x1614d025472771fd870a9e9d422b3571c5494e7d679824d8fe1212177d5fa2ec", "0x2f6c4e097bb5851be12bbe2c712c2fa906f310b78048d695b4aad301ffc0d268", "0x08a1ef65f52128eb3b22df2b6aca30509b0af8af2f7888eee766c0c24871188b", "0x2f6f14502f20d958a9ff23b696cac3ae24967517ae8b2e9592daf451840bb98e", "0x17ceb42a19de6dd32e3b38cc2990e64273b52a5618263eebfa49d84518ea3bef", "0x2adbde5c7b73e9a7e22b913f99e40d95e689c65c428c2397cd273923cf68ddbd", "0x14bfe33115df293670393e1dc8da4d6947acc4b60249e5b1c8cae376665cd580", "0x2bf523cd8aa3be20ce7d891f8727a7b24b72a4d4838484de842acc782fd8bd32", "0x033b93a5cf15ffbafa2726f2527824a11af8e42e01d3a7ee159b273ca0a6520c", "0x249f416fae5ab52a435d65201006dd8ae8d54266e4d5643307551902423f7cc6", "0x19a9079a9897a237074252767912bed7b7635ae8ca0ede2dd3a42a75c1c6b81a"], + ["0x01358bdd6b7a51b1f5b5d094dbd8ee086ccdcfb9c27faad0806e8ef718d0e2b1", "0x1c06c782fbc0980b9e493b29a5e4a04aefc668cd4255d6cfe208e9e7c8b9a1c4", "0x24529638ebcdf26de8816287fec6370614e112e10c039190c103a75ced11b426", "0x12641cc3cf50ca67bc93bc8c19ed89d4613e9e281a51cdf313cbc8111922242c", "0x29012deffb112eb14034159c59162f866d4a1803b4d192a4329359f0f903266f", "0x1a8b8ad1ecb6cb888273a90bef8b1a2cfc03dd44e0b28b18e1074e404a9e0f4c", "0x17ea198f3ab261da000152f26b0eb0ebe088a709e8b06a18a3dc2108c2096864", "0x045aaa99ce1e06a3c02150804a91087f57a43b79797773e83216ca969e873380", "0x254e3acdbc75ac592679b032b65a9c91d2e092ab5e5719551b5da635b13e9471", "0x12a996abc8577021ac7880c16f058d9e06e9511187f0aadff6bb640e4316d26c", "0x0777edef4d91520fcd490a22dc569a97e540a0fdb527b4b1a3a854fe346b8e7f"], + ["0x1c2007eba4d1629846bb69404acc84565de5d24620f75cfcd9f11feeeb3f3748", "0x211865b7f9c1c791a33d703ad3280f69756324349afc8912a19b83de2cd06a0c", "0x12e4b5408f48641951739ea27e521067240b82aa51a42de2d4dc1e8225908187", "0x02185c7a4ad8cb21f19009396f134a2c3fd614d305e475ddd19f26f6d4b3f9ce", "0x09c4b2f61adf245266168cc918e96f7f8dfc35bd3df7b23fc641ef01bcc71cce", "0x281eca14bbc3920919e001150451c3e44ff18e1dd1171412ff5e663d74a073c1", "0x0533e8a454b8cd6df8d48fa9b0a9cb2952933e1a6b1d423cbc54d0533a72599b", "0x284ccf70859547fcb9c3c7b64cf0ad62e51726ec81b58eb01c1a1f8ec7a9eb70", "0x04fa5620a2c057dc552a59fdefe50a901068190fdc3df8761991cab50a01a449", "0x2d2640a74ede9af6c9888e5f68a84fac92b13337dad8fc6152fab34b55419908", "0x121a3764269fd35cdf1e621c3dc6318f47b862380ba00357849d8840059463ee"], + ["0x22f49d7244077e41f409c0b353afd1696e3aa15ffdb4a0bdb883ffe7a1a87217", "0x25542e07c1c13979bb14f8d4ee93dab7a3dc750806cf37f2c02ff53b4bb9e66d", "0x0084b88b1ce4598b701cf96a3379a02a3157d4193c8a8f1157459f6a34ec32fb", "0x2f6da385450911cd272e13601e7ce66c2b91d809307492f7ee578ae34d6f5fb4", "0x1802b97e54bf3a8978632cbe10e429705b03680325d26ea190c0f1ebc7362ea3", "0x0054cc81c7d1d59581ebcd26b16ccbdcbf1968d77f87a2081d13054f51118f7c", "0x19681b4242d11e28aa72530cf33a7d15719f1a888fff625e04652c77ee2b2de3", "0x1abfe4b1cf5db29d4078e5289bb143498abbbdc9af56720470a26a3dfa2ba855", "0x1d2279673f6cabf0a1c4b8eebf8e9c78361680b2e59d7ec19348819f5b3d5a14", "0x0f246d2fbb4e1217f09631fbc8770827c36751e6ad8d6fb16810e3395143ad80", "0x2f80ca151b077b50767281ea5d4c1f7457f8da444dda16d8149bb6c1061ed0aa"], + ["0x1951523a4270c54403dfe3218fd3d4ccefa43114f1b19fb2c2821a4374718b9d", "0x12b5a09e1e95e0d01fbcd234fad473d8ee2ba976fa22827ffa6dd03c8b25a64f", "0x2c184e904d7bfd368d4495b9e3027f9af6b9313c8f193f929ac9e24d10d7a36f", "0x16fc48e55d64d83010ad573377ea2422397fc3a7e6c88af808a566de0223f0c0", "0x2db1ac4c2b1c23a00027fdcf0f663af896d87415bb035b149d28ad3da98c6fcc", "0x170c05a5f8a55d5c9fdc5e8238b367be358917a19a28b4c47e46f3e73d42a085", "0x1eb7f6e5520215c15e274355b19bbf71abbf04aa426cd07da536cb3f909f6e57", "0x14111a74bd24730c833699eb41b38f1d4ed16fcf0fecc1655b76f2437d4a0c9a", "0x2d46b48e5090c0c56a390de373f4c9a2008db311fe31063cf4fed54629113585", "0x15f30ebdfb8b8ee644241039a26b408dc7a8de77f2cc6fed754b703ea92dde53", "0x1ee950c45a0c2f4a4b64688a7935ed2b63d4fe5b414afa05c1a284674409f165"] + ], + [ + ["0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6", "0x0fd547840f3a30a533a994d1fdb3f60ae5073f4484f34be951ee16a276fdeb9a", "0x05019671bda026670c7ffa9081795105963f56ce327fcf78451fba2bdb3ac1c6", "0x2952c18c15558f29b2ae77fc39e51a395f173a9097db404db765ab02906b27dc", "0x2353a60af6bd61e5eac2c9a4263d451fad07380654d4792378daf752e5cc33fa", "0x0ed6a3bd48174e370b4f264b37488b03a5e3f4c0f61cf32d3157ad3e3b86f6bd", "0x21103a7aa20c8d15501be8c23504c6a912c6100c5d88085cc2e42a52302f4483", "0x2fb232573e85d68c536d100c3a6ea9172884451e677b0d1cd0fb4dc4c27536b7", "0x302a085be040ff9a709ad0c73238b0d1e11e1d17409abaa34fc45de29b541535", "0x0683e640e6154ef73c3cd6b1d0f0fd86ebf7e292e63fa84cf0a883c2f1faa8ba", "0x1f09f3fb07f7f6476fac98946b7375095e014b28f23a07ac9fc7077144ac3979", "0x0598c38d2e2c78dfe4907c74e82325cb191d52608955b583e5826ebebd1857b5"], + ["0x1f930557a284998225f5f4e4dfbcf5ac211f1b12d91b0562ed3d63285d7a714a", "0x04c4061820cda9bf472df3f64d6afa004f1e8623d0a4f6142cca1f19a4c275fb", "0x0dbc22c3e54c924a882c22000951239cc263755dfcb38b27ef4f880e202cb5fa", "0x2fbb1c59e9e8999d91c40f4d44233122ab35ffc975edfb43c53ed07dbf0d9c76", "0x0b8f40d2c4d28c472085203a0e460af73bbecec3b2b3a63f27028f2ca8a71251", "0x028c01a9f01601bb46417ed466be6008595052f782e46857d81229e64e6bda02", "0x23ce8e402939cccf36176a5bd83183a0d54a24ee6cabe4fc7f814dfbf26f85ea", "0x0db82abbcd3a1b56f7fc8d116cb54c54fe26243702bd3d57e71f7ce0d470a40f", "0x2e703ea9af99161acf9949da7afb18d462d85b671656d61c2cdee3a72390213f", "0x16512c150c1d2fb7235efd2d4f0fad5fdd78f8d0cde53a66bc90206c82c4b597", "0x0298aa5d5a44565b75ef68df902d791d01d98a75e822ef553b1761c58d6fdf32", "0x203fd2078ab2a8f88b7606543145ee34daeab2aefca31bc04a476065697cabf8"], + ["0x018e8222f6907da5745eeb9cd4a9e62f28b8b710aa85fe729f9ea73a3ef0099d", "0x107757eb0c0799f781308d83d2e057ef8106f6b656b45e7636181e113a2cdf32", "0x0966a21b9615af2b7563dfe41b8b9fc06039512dc9c8e1196891eb77f856b608", "0x082046081498eee63c287c6fa3efcdefeba1b5272a77bba9cfddb56afa53c82d", "0x2c7ecbf14b2d6049a6439d0f29f10e26ec975acc3e3eddb77c831a509af59196", "0x144022e7e077ff22a2ce3dfe9923107d5aef046d0a1f2cb5f36191ab04eae4ed", "0x170403d414148f4681b8213550951e238edc009f46b00693ce3d9c5800fadd0a", "0x2997d92a5e9bc66c84f635e8cbf080eb720ecd4ca3e42c3ab8d088611880861a", "0x21427b3a9a2cdf1e2e6c628906b21e24271d72c18b0261be68cca44865dece11", "0x24bba58086a78541a8ebfd535c107c36946d78ba6cb26d227e615131f71d337d", "0x01fd5a6eba52e9ea1db389a1fc8dd3d0283d737c18eb06e090b6fd2dc88e0a14", "0x1276442d9383c52d50fc9b5ac34442a4ec8e9cd7aee6d6ceacc1a6f521aae4a4"], + ["0x180e924d757d0be4066feb146ed56212e38acf9df4957432653f370f905b8b07", "0x2acd39e3892ac429ed812863efa05eda746b55bb974694a4e77b9a19abb55001", "0x17b18621dbd61df085da4cf8a03395e3700269c7df4d98ce4851f90abcbb3631", "0x02a429c2d06dcf34d34730c3af8bc19b04abd652468de5a85b5d5cbfd9c23e6e", "0x197dfb64189c09aaef94a1f542d8c34aea27fffba704202d5286d62bd0eed372", "0x0fd3bdb79cad913432b7d3828e072dadc26cf4903d56b8976200723846c6577e", "0x29b9ffe05db2c52ddd1bf0e5c532eefe70497c7df4b97db2f0624836576a6b29", "0x0a2a006e3b086bf502c5b1540eaaec14b9c15bf88471cb6d479fb4563f016497", "0x237a9e020908cd0edbd9eae8772350e0e731e3228b892fc5f64fdfa9b9daa670", "0x006d349d6182ec30d68c9be010587c707f7e1e175c0d324e6added6337a72c2b", "0x0aabba39d220f30604d0c44dd47c3c70de3b79f5baa70a3a7a0ca02ae1b080c5", "0x16ee980a2c67de24fa1a34082f11c71b7c45966a6e8bc6aa1a1dbc7ef6a9bab2"], + ["0x2f7d0715d1391190e7b14a1242b6799eac3142e21f08ca02c21755eae77a55bc", "0x29788bb6cd947ea9efaeefd0eeb7fd563fcc2e40bd623ea2b2442b55d98dc5a6", "0x12cc274647fc572bb79035bfc3332a4e566a28011f69dd0874f01c56bc44c3e2", "0x2ef584c3aaeedbbe2b4b103a61e94ed40a97294156ad7ddf0de43b845249f534", "0x05f9a6a8d64cca12725dd15110f74aecf99dd30e57a7d99829cd8757b75b772f", "0x2979d1aeafdf97988560d4ebbacfa6e2b7f3d026946abbb9d5397645e6e81825", "0x153891052fca1290fbf83240d334fd4ce05de78adfaa2c9686488e0c47ce1fc0", "0x1b8c7eb04d351aff4e76af7f9fa1114fe45aaedafdeb42c1c23503b122639c7b", "0x2d8125dbef602bd970d11fad7cfe06c3c64f5687b09b960ab92b14f69efbea57", "0x10924807f6fdc4e9e586792e3ace3001f16bc02e84ada5df51d7bd37243ee1ee", "0x230918919b6826faa7124c5bd15d10c036d565e100b696a3be7afaedb2abba6b", "0x1db922b8c249ff7bf96121eae9d9555ef7770f3dd7b056191ae9ab38a5ccf6ed"], + ["0x02283ed8d5e6f9470b3f4f49a771061e4a4fc7dac683defcc0348a8862c6ce71", "0x06ab8672c936070a10757adb45031a5e2922f0fb8b5fab3a4f5e3872fb582ed3", "0x2c7d538b9e6d2b2e06e72f8aaab26dbddead1fef6a740a11e9953f8e8e9ee057", "0x28e4620d210536bcaa42ee46b1cdcb21bf215933bae4eec639efbd51f4bb6557", "0x00fe0def70bfba40679aef8d5a239b3a1b5a52fe8fd7edb754aee2b182d64b66", "0x22ae023520979741e5c58fb04fd25d12dc8f5fcb6ad15223a5da7e0f91c7b4f5", "0x105c0b246660c4bd8a6f1b36fc3cff86a2c432c0dc9321cb50abb98a10cd1bae", "0x2a5aba3b45e79eb2606b2a5b47eb907584aecfbfc0b4cd50cda1ce4854338597", "0x23a3b23d5edf5cb66160fd2523b3a383142291c0e0ee666682e946b1d57937d6", "0x26635f4df7172107dad6b7c3068d2d438bfbf486471039f9e65a9c8462a2c9c2", "0x2bb28ef42f5fadab6a6ffd5655b36580deb063ae3081d587bb1598878590f1cc", "0x096dd43a832ab68e35e57c98d7b01f2a2e5936807704593ac72c74001383f7e2"], + ["0x21f60efb132b62909990b9f994f381a9c02abc3ccb54c5c8e8c9c5664c6913d6", "0x1db98a562fcd1a5e4496e61264aad5ea3b455f46eabd8957ba671e9c31e5092b", "0x2f30800c0ee461010569d36b60685a38b02912a020bc4708598854f65822f15c", "0x1e32b1e2e6b59273a113d609663af6b30c95b36884fe5faf371de3d564213c3b", "0x1b1523463a45a2982889048681a422c02ea373f8b8c1bf16c74a375d5060c662", "0x05246ee7854b2e20e8612da021b30798e5f0d02a5bfd5e79d3f9ac6c79fa609b", "0x06cdf8055439ac8424c435e7e9bea3f0ae93eab171ac383ed2cedb460fcb04c4", "0x2f9a5cdb79645e3454c617d77a774feaf24ef603454c02076fc4c9d7548cc455", "0x01b1625d757786a19a93b37adf7f22ca8a502aa4462ca78f7da2d7c22b37d7f9", "0x28bf5488a525f5514400dce722430287fe8e4c810154056eb0f4d6fe61091cf5", "0x21891bee31fb7bd89f0e4422b3c8f5b393299af0d9825db9be73e7b20097923c", "0x2282e86ade85855d4ea0657c4add20625c6daa90bc93943b59a92dbb77b63681"], + ["0x1cde82acee60b84424e9bcee49a5464ee05d1cf0b70469208a675635ac715495", "0x1c4dde07d0f94d1aaa832ac2f5712d438b4e1804b5209ce55942d7afb24c6401", "0x116c45e4d88ceae4565c0e94da844eaf2775d5f5b435d94d2d3d38b583fa7841", "0x18820364804d22119347b728135b409956f7933defa1059d634b977d9d3abcde", "0x0c849d07b1d9e6ecbac517fc19237ff73424a0678f94699b23f76952afa4514c", "0x2b60a4d43d12cf31076e0690e931716c47a86e7728c34b2d3cb0cbcf95bbb74f", "0x03161d7b94e1b0411fc01dcfbd748a6df3156ff04536b3dd3101f7b2ebc3811b", "0x06438e8b0220464039a7b8022f06beaee502c5de269db82f91d88fe1b72834fa", "0x14898babc8810cbc626688531511a8473ed89a22569d47ba586c284e45bd0ae0", "0x0090dfcc0327a541672cfc26c7e1370583c5f9214177093010fd3fbf279aafd4", "0x038e0c2e29c79ccf46b5ea1bc589276aec95b74e8bb82e4385c0585637c885f8", "0x28331d0d31ca8675ad4767c490261bbfe5b84adb4ca2c5599a87f331908130f4"], + ["0x118a24510a2153f818f0a996c87de913587805f16cdb1939d9406941f958e8e1", "0x2cfc82712ed9d71ff4fdf63ee4ad116fac195794f8d910286c152efd9f959bee", "0x2ffccbc40031ebafecfc3a97284bd0f6dc4d45eceb8b8998f1a667bee369ed62", "0x09b6c00a37df2770cec0f1bf62a6aac3bd380c6ce9f4f96e0f0879237ffa510b", "0x2c4036616c156006337771c1e355fc0f2f238e64cbd69d068aabb4b58116886f", "0x041b909a658d136993b3f509a9e9d50138baca48f6b66399ac5c649e68dd3aa4", "0x25c075b41ea2d827a4955b6469db9d41760faf885f2c6e9c09407ebb1c4dc274", "0x115a91867233cc75d1c906a42930e93cb9c16afced390cc14435e5cfefb4e96e", "0x2f8fb37178b525758bf6aa527f25773e1ebcf8e1425379500c8245c741ba3fc4", "0x29a14dc4bac0a4c52bf30aaf6b9b8e05453d0d797246b64732d50f176a7ca257", "0x2c89dc7562b91d8f2f7daa209b7560520b6bc62ec631db41cc5edac1fb142be4", "0x14972bfc85de037b07e55332e6bc5b4f08f39ed4eb8a9721dffc4a586dd9a1df"], + ["0x164567b0de16b7a5550fca229bac7cb0779524325e4ca5e78a86078881660264", "0x18b49b773f5799888e9abe3f6883d7063333835b6cdd333580b2b4bf48f3b27e", "0x2007424b129ade2194c73e6e2c9d79360d1360c4fbb8c5f31330f938558b3ace", "0x0445e26e26f91707da2df5c188baf80ea2f48c703614980fa798971cd8ec60f5", "0x176804ec1cf85d35298351245d32236546838d9b98cf4242d601c7e8e501b49b", "0x25b6e65e90ffbf910d19fe3ae23d037f8f64da9fe3df483fc4f4977ca36a7b1c", "0x2fa2af7970e131f7efe3a7c788890ab860f76751e55b4ff634dd46cc4de660d8", "0x0c8fd4ece5c205190cf6c842d1683444079bf49835d5c8b8dfbb11af956ccaf3", "0x0e992f44463e2dfd267e6a4a1c3303ea7a1186252efd6c9fae9e5f0c1f6d8266", "0x02609ff97ef574fd68d16a3de0872c3b59a5b928258dd1469826a191dcbf5bd0", "0x15dc57879cb41d6015da9881f948b40d20f0e03fad87746d8575af009c96033d", "0x06d039b64e82d7975dd21a37b5ee79308f20e82e23489382ec2d176190587896"], + ["0x188ff303194112a7034527cc9dd0b4deb0960c9c106ce115178dd7087e4e8c02", "0x0b300de5b99c27d332091f8fb0d97cf04a86a51d4d2037788e0d4f38e8f4eab2", "0x2c53d6676d4d4c87d9eaf5d4da08d1e98d103a3388d59a7c0c3de51e2623aa3a", "0x19f5101715162976766e2b57a58674bc58e1ba2be18a59b07a07e4a93e038075", "0x2f5855a876a37f7bbbd6104accfcae507e9ddcd2a7219b487a76b17c525b50ca", "0x2c0de448a88dfeaacc9bcf2850b6ff4f701e1a538d69098bc94087cc35930966", "0x0ce587066eae0c345c3368c53dff2170cdb081bee52b243a1e6de6d4f82451d7", "0x2cea98cc64abd926df963da57f2ef4c434141cb53ac6311b2566edb957982713", "0x2c7ae475d90c475f73c0d29be8889d0c4b8536fee6c0389984bf9e4dbb1aae6d", "0x23238fda1417302dd03ce54607749610292945bddbd587241714fd3964af5f10", "0x1c674ff2ead27ce002f4befc7ad5f0f5123e59793c0fe21075e819ce56ce1e83", "0x2627be68d9cd0ccda3828d51621ba409f9acf09f1a9cc503a29ec306f8606ae7"], + ["0x083d832adf9bb4a25f686abeda9f16ebf53263dcf9ef4311781d09920d094ead", "0x0541af6b96524662084d1208d71b6b2a8d66d91179745b213679c2a2bbc94968", "0x2cf2c992c02a36334ff5dc851646ee7da04b44eb544ee3c0fadb8dc5eef2a585", "0x06c5df8fd61eca2fb4923f0a46dd4e416a3a3b48c10ded13133ffeab6fd153e3", "0x1a233c7cebfb0c6eb72dfd07aa2b537ccf291e84093aae36cc68002ffb83639b", "0x05f6d62f54518f039e79aa726bf15a5983583eca4062405400acca58ca9d2235", "0x2b09de93c6e3148cf7ff5731c8e144debb66ca896ecbe4089d2d22cbdb09777e", "0x0239ecd92517825174f796345db296562223760fb1b81c091b74a6a4a82968a4", "0x2945cb85e34532e3a22fc576703797893ce290d0156430a8dce61c9df89a8bd5", "0x00d3be6a5b12bcf1bc705c20c30f320b8881c6c2ec00e857685c0599262a3cf0", "0x11e7bc4a39d2730196b6c334f99750de5bb5e4fbca5d6a19eb7fe14abe845dbd", "0x0c7c9db952865fb9470f8aa1402536cb3b82276d9e288082ac7f83b10bcb6d17"] + ], + [ + ["0x0d064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592", "0x2b2ff5f27531b6f3d6a85d75e3e08f3a2f0dac3680a6c26d55ecbf803ca80569", "0x0b658849ce620bbeeff233b7d12258015ea9f87a5390f5614981eb6e4cb4a5fa", "0x118132fbc1cd83f95167cb4473d54c6bd2c417e2782e5efea16e72d47b48b70f", "0x0b5944768d61c1b3562a5749f4f06c4dd085bb562b838d7e2ef14a21fdf524c0", "0x2b04d6ffbaf7144012d92c5c6212803c0b5bcc0d7b1950b889d1fa6f3e56445a", "0x29be2a42834ae32de3320fb0ee46b4c102a3d1ae44c5dce152fdeab5450c9c44", "0x1946fe9de0a943d5a716eac08561cd91f9031fec82da9ab72883c7b218b11eb7", "0x1af3ca6240a55aba55df8e49835b92fa17e39ad5701ef70f8144109f894bf1d0", "0x081f58a91a4e0d100e0369fdd81a190035342fd0677ee1bf5215e47f8e58c2c3", "0x22a852af90680a8ca9688b71ed27c157d02b406bd6c7fd8121d7c7793ad2305d", "0x0b27ba82a0ffb98368981736ae927a227828985c00c3e5df8c1276b1001089a1", "0x04b46526207edc70a0d23c8438bc49a365635552dee240661a2cdeef966f20f6"], + ["0x2d8c70035731ad9efba92821a88119f6b8183a362be641729a93d6a327c03809", "0x09ef3492ad19dd1d0bfbeb191330a880ee7933c9d3b36bb5fa02283bae5d605e", "0x1458de516a534190c5550c6a1bed3af535c38b242eb9291373096ec60e39c1f1", "0x136ef2515955ff6619498fac59424816189f896ac0ed69b59854d105df47c4b4", "0x18cbfde0cd21c183797a2f089594a81cd828f3b0742371ed02eb83fb0064dd43", "0x22757da9e822345297bd060a3f71bb1e70ce977049c393235035677e84357314", "0x1622805125ddf344c18e351d11e82291618b975822ad0c903efbeada5a51d44f", "0x29765d8cf77619a580658d127fb6faa44d6c70a0f4d65dbaa960754b4195d9fe", "0x2bb0b6b08fc1bd11070edc42f23e807b82e8b88ef70355dfc74e096a7ff381cb", "0x04951e747b7ae6b99d9250108c5d2b70181a93ff1d4bf723781e1b938029827c", "0x17780b9469e81ca70c7cbb4347e7fb40c63ef68f3dde51d04cb47b3b83fc299e", "0x1913d51d9c71d042bfbf649d9e6e6ea5fdd82b4fd3173ff2fe02b85582528912", "0x2a9e342a56c8b6466d3fe533b89f1ab441b62dff3153d3ae6500c2c3be6365e8"], + ["0x07b620c8a78e09e49ce547aa783aa78f3e4594c49ab3dd6f602bc6c0351d823f", "0x27d6bd18703d7ca92aa24076d3187b6c0028d0b6213d9e5d2c66115237a19051", "0x2969eb5016f24b31accf173ca204668dc2229845bf6446cea007c113349bd4d7", "0x29c67bce04bfd020f4ff7eacab6cbde034b22fb86334675a361f059e50395311", "0x124474b08829d9b717c50884bc895cd3f81d519859d21235d7a74450d0a9427b", "0x2c7e28f59fe8a8a3bb2fa2b2b1e114ce283fe22a978a3df9f62a171cb1d65e4e", "0x165c0b978b4bb646a9ff225ac4900521292be54c879882d3f11eaa3103341487", "0x02066134bb299d9e359cb82a8380feb63b60e4b9859d9b9872edaf9152f92d4f", "0x09372ed18ba1a774eafe1bff6deec4bc0814b0899c6196fa15a7acd15ecc5ca2", "0x1e3a130e8caff9b5e563e8aaf84b2fc73668e351cfd28cf66f5012de61345b58", "0x255543a314afc5a2991413228c75eae398b90576b23b6cd86128665cc3bd9478", "0x076547449fa03845f185e61578a5a8f2683a19733fc04c73ac6a0b89bebb8453", "0x2f98bf081e0eb78f8025c03ee9c199f2e838c51e5a0aefd333e9f7cfb38f534b"], + ["0x231996b592528575567d39d00645a83b13929093bbfa00d6a661e4a690351d0f", "0x193f32a3f839f76049c9cbf2414590698a2118e83658327c4338aa3648d8f7d7", "0x0a5da659b6fcb1a4273e1b7e3b544d2cbd362cac497afd004b8ea920fdb04bff", "0x02a832ceed3837e742196e09491fe23e3f6e51126eab9acec96e71953102ef24", "0x098bb2c4c6334dfea474d04cb2e9761861f6b18a8058a52b619d6227a26228a8", "0x101749f9dd2605191c1963f25694ae267f6b44bfe2d1af34fefcb65e958784b0", "0x0c7b5e09343db5c63c110d3175d01bb498290d971b1e6dc0e9a0e9e7158356b1", "0x116a313d00cf99dc18e21f93a5bb198018bbea4b7cdced3e4d210971dd0a681b", "0x0404c0fa1bd1f7e059054cbb87f6b5c69d11457e59f90419ce4bd10bb8a803df", "0x0c1c216af33054c497ef04381f58582298b54335f632bd62add29e08067a59d9", "0x11cb20544f43437a688a7dcb573a7da4f8c7b4437349eedf3fce432a6f3c1653", "0x186f160ae866e10c4be0ea7d204cd64e57337c60c40b34c3a371d753f2ff001a", "0x1e1d5920edcfe9d6b2d0ddb2f6f741afb06590340fc07b182ea7c3ebbd933931"], + ["0x04e47a72e49b9c5aa3f69f6af22fa0ab640c93fc524dd3c508486d66f079852a", "0x235d0e71a350f1f23d9bb5182ac44ec9e4615e77801e5aadcab8336aadb1712c", "0x1219740c424743dbbf896996f0ee7a4076ba960a57e8d7679b828479218570d1", "0x2b501f1003e27aa809dc9e5cd84976a3b8c169c1e9c63977d7823f80d3f823be", "0x0f34db93ea8d2ad7d1eff86db5820cc7ada47bdcd8c82d01821f5c21a3ea2325", "0x04d02ab05826fa50bcc5f9af9e396477e68542d076b683ee61b85869d4535893", "0x2bcc82e75391be4ea9cd0f8a505f9e4f684778fc7a9b1bceb7868bb299cd2072", "0x0fe29b5bead54c5bbf426bb12844a2920884ac447906101cea9888986a030b11", "0x1bb2091870a4fac03682fe5b1e2eb56b14ad6e48f4676fe41454bfeeb0ffd4d9", "0x0f54c9c522a5c74e0d4e0c63611a7502657575b7a963c0e786d2a761c4e845bb", "0x160f5ac0b2481f8019e95e0b26445ba64dc03a4be8a15461496247e6ac29002a", "0x2f3d6b8e2361166089501b9147e84ab6b09792ac17a5f080d75b3e320affc86c", "0x1b59bb60e986194987fcea070498bcc7c93dd561ce8af5fade754ceac07b1705"], + ["0x0a8cb4b2bf3f0c5da671e48f83e5c1b3018f0d31200a6f19fd5195db22eef7f4", "0x1df5c9ef694afe61bc253ae908a8f6af0a08cdb9e78a9f322c22388322f16c2a", "0x134431128e5ffc0ab60136c5d851a11dcdd63cdcf17ad64fd77517701de675f8", "0x03ea4e2bffe02da5977ced1f1a6e852e921abe2e015f35b36ce4bd0246c2cd89", "0x06e03ca1146705522bb5e9dc73560eeee6b9b4bf51d48f953fbd1f006d758a75", "0x014c499ee51925b231da17ee7b55a75f96f462e431675ee36c7be4e9b069e260", "0x0611ecd1f379a0062b05c4aedb100bc015244c6a88f1631a456cc2acca8930cc", "0x22af37c0e4a88deae9f7fad83819910735cb4b49311e0aae11cb7534d0bcee6e", "0x299ef95aed8c75494db82e8679fbc6d5a3d2e29aecdcf6979a9b272a607dd5df", "0x103cc8384be1be1087b9bb47c0eb6049f85e0413f7b408f1dc2fa1e6fc4af91b", "0x206cf4290ac984434fa774bb0f8901a233905632b793c80b1d59966e96a73832", "0x0dd85dcf08fd38d22f316d91d812cb2a884308775afa9f667c6ca80954397c86", "0x24ce0acb522da527d3eab72865cf073d954babbed3cd1706aa69d767e9afe7cd"], + ["0x18bbb002b46f2e5fec2b120faf87822ca8e77ace94e03aab5c16c4b931739dc8", "0x1db2021eca3a3624a7d45bb16cf4a44e2af4fae0dc280030e7ebe55394f69d8c", "0x097c6133aea8fe48f3a5fc416bdf5e46d05de0723bc49e53b9fb5e83d350c295", "0x150ef9e932a74b8debf670080641339b12684ff5a303b2fb7c1d8d56f56ab61f", "0x1237f44f036b2da0067a94947334e3afa2ac4cf1009896766f5b191cde284972", "0x2d9ea99d2d237328266d59dd7e018bbd6bcc7941d9ff5f07a17baf0099f614d2", "0x0477f951e19f531b8434ad755b6783d61b679efbb87fd956e394db9c434e2352", "0x1d8b8ba772c4cda72e8ef9b19c424d55d57251b247c632bea255271afcfc70b6", "0x206aa2f36e32b2b06d6be48ad493d354ca7468753f526e6bd82549fc36cd4109", "0x28da9309acca103ecf19df72a722134d530bae6c660db3c364d0ebb200c2aeaa", "0x01b9435855d6cc4339240e9fa3819c2ff420980d6cf14721b75e4cb1fe57e118", "0x238832e643158e96689b5803b0b77601b59bdfb4926113a3455f1ff4df6e2b46", "0x0b43b8facc43cfc067b5513abcce846504b9395cdc14df96861a528a52ae2ec5"], + ["0x02bfae1b054ef2e924d75a8a01283da29103c57bad129ec8396ce274ba4524df", "0x1a46a26691841c26109a32ae07eb584a6b8af657273cdc4d8a112dea0bcc85cf", "0x107da0784dfb314d82859be44d37b4d2b6345c174b91651c65c98449682a5204", "0x2b45b3be2674fd820516acd6cc6183c4fae0f7edfa9afcd02dfeeccd02bfed46", "0x2082e9103cc45245924289111527312860f6e7ee94578f0118f4a920d0f8d525", "0x303a9e22855d95d07e8172f3a0536d4b95142f962b006a8ab09e7bb6335e8487", "0x2963514313f046f844f950ffea80f5e5b424b707f16599662e5a2e3668cbe5fb", "0x04b7f8d1d5ec8bf689adf12d656b94e15b0b229c1638c9c4757faf0d18fa6433", "0x259547168b64b2a228941a542f394a2699c081c149463dc2c3d21fd8b2e4f31c", "0x27919dd2f9d3dc9fcbda1a23b95cf23e3630e6fd5210faca6acf4629b88e5ff1", "0x2b9237e5941e1657efa507b892c3b8dd57fc8d52876ecb599dd5e1052b6b1f2f", "0x202e38e669883619ecbc6a6a45368b9b9a3e9ab67efef50f896dfe48b78d3dac", "0x262758fb3e076936995ff3140ef7d1b0a1e0fe4240a50747e2c3c120d977f3ac"], + ["0x06d101b19477d1627b9542581bf0cdfab38b05cdefdcb81965c5be00d780f192", "0x0cae80cc05aedb66d6e649b057dbc5ae9759da5d7b43d5e25a400e1f92e9d1aa", "0x12256b3b99d31d8a372986f95d66cc139dd23e935487da26b3e249ea7cbf91ae", "0x238965d658967afa2bce50ff18cbbe535327c65b0b76e50da30739ded25eb492", "0x23a6e143284e8f238c4b632ad78ace5b0dcd94a897cb05d1e297b4880e7433b2", "0x24e13a38f04d5e0fc0b6b6e0f782a6a523a8b3b0127224b8e23751b9cb9f8960", "0x09010d73677620aae1b0fa8023ff1c812313ae9c3bf43066ea60bc1ab477a7f8", "0x0a41e5a4421defd5ed7acfd48401395a409a67c3edf4c168ce3368ed944212d7", "0x2fc7d17f3a9afc1de289ad0f94126aeec834498120629cc87c4586c627780075", "0x1f86e3e9d147ed604c71e1fb6ef8459cfc40001bb4fc5ccc2661669b155abeba", "0x182d8f91ee2a9a26215b35f3c0eecf8ec5cc360124cf6b903e70ca83126975dc", "0x067d2b612d75f4f974312d04ae0fef43a35b60ef054c0f475302c55fc10bdab0", "0x0eab3f26417e6b53c532072de92d4aa78ccdf1da91660a461abb0f9fd7bdcd7f"], + ["0x18af61f6184ff85f104c2bef179b3ec5a5d242dfbebe8e27a2918f620e8a5be8", "0x195057af1319e24df1b905c6e2eb2957003cfc34b001c0e54b9dcf2ea5df6be9", "0x1d952ebffcbedd26036c54a1e8a2828fe320adf07a286e7f2c211b47f6c3ee86", "0x0370b757ac6cdd46610eec0c22d43a543d5e0482577bbdc14e71090307b5f69a", "0x22e076a3aa6ebfe996ba068bf5bffb17fa724338cd67f67ea25330195c628172", "0x126851f3eadc0183288a750153910a41e074b3544f0610a51273ad3698be0cb9", "0x0361f4082b75a6ebd23f9a6e7309d8c4e7520159da23441edd631a6ac14c20cd", "0x1abe8badb2d12353b9bb98152086a9421b7cee17761730e25ac284d6b1ed7b37", "0x15a7e64a5a46f5973e4e82a263ef905ed64f182b2041baa00a1359e7e9c5eda7", "0x0e154ebd50db3c2864dbe1ed72b0816210851b86c353692d1744cb3372bfa72d", "0x25528d5d31dbd77cfa6e7b1847f8e84c81c1ed5bae2a51c9e403cc754c54bb55", "0x21f0c6b896fb14220d811441629c78f8e8e27746026220e331cceb89a0ee89a3", "0x20addeb2afd20e752a39d2f21ebddc2772773b062922dc8dd3ba068836dba464"], + ["0x11e3a7c2d5f74371beb188c6e3d7a14b33128af8ee3287546d12d7777cef70cb", "0x2d4d35acd9f28a3e6bfd601472948293c1e4f084c714ddb1a075f2eae9ce21b3", "0x26309b52cb55f6ea5a9030b01378f65d2e6b7a9619926d9b1b1e21cba01fa7e1", "0x2aa84c1ef9e848a64f748b80e279ddcff871e9c4c3e2fafaaf79159b0b4e4018", "0x2fe31b0df04f276a525b619acc4a5ba3eb58d8c321c62390febab05ecdbc798d", "0x27c1b406bd19ed13d533550b8b621186b1fd47f671e6604680317e6638b091e1", "0x0cebcf30975b37267aedf521ee2bc753c3424dc4b6edf3984fb02ae1ead44daf", "0x291c0da731c016c0d6c4c75387030a962bf7a2eb35e15aac02fadf530278a3d1", "0x1216f05607e032e49038ac1458100e89ac8519a5a3cee4545b08850d8bf160e0", "0x19ae65945a1dbed3965f2de3a39ff2d54ab1dee0f333b88fb49edb3fc9ac7899", "0x2f996ae620d00a3d4e55ef7a6ce0b681388f1b7ff3875b725aea6eb9039d8b25", "0x2c825ee561c4ab6a22331177999c89806fbc34518387e807c20c359739ba9eb6", "0x0754947436c3cded29a60c9e898237c2183a49db7e70e7eb73aefb4b5c693246"], + ["0x2de5d6a7a27343dd0422ac71b8d409b43ccb0b672e978f8fdfd214f4d7866404", "0x025eb2ed84c520aba164e33f0353b5131886c0fbd18e55695541512dec563a0c", "0x0a12525f0781322371fd70b0928cce6e2eaaa67b8970dcdf319df25e8019a6de", "0x1bbf43ddb5a0b0d2845923b1ce128292359cbb313c5876fbb52f5e6b1fcb7031", "0x23e8c3606aee818d2afa8c4465d5ecb9c45bde78dd819c0f35a620593c1f42e6", "0x158880f5adb96dd1398128b9ff339f3d827da6463891cca129c012c06b16b321", "0x23a1ac07351946a974c8841e92092a4ffc6aefc7fa988e3c1f7e7c87e1512a90", "0x034c460fff28862ef7a509a1750a26ed1e5960fcb58c4f48c7d267c77e58dd66", "0x223db18f31c85e98e1dd7b7245dddda0ff8e319bd7d1a67fdbc7eef56d667818", "0x0099b97c878ce35c957d01b43dab07f8003e2c379b41ca61a6e56a9204fb16bc", "0x2c2b1e7c70fec2f58ca01bef5ac37cbb9471ae7914bf08df7e47dd8e3bc3ce93", "0x04625f2258edf0262ba0647cae426a486fc801dc0b59d20ec0f4d0af8cbd23ce", "0x239ca61a6ef7e501810aa89ab4996dbea8fbd47fd2f7a2c96a818e93a3c38c89"], + ["0x227cb43b9818924f2a2588964a0ad7ddfa3df62284b4b3b10199a501ed970622", "0x16c7c5c6161eda32c65bb347655acaa80bcc98bfc023f4ab12f5b2a899f37e3d", "0x27e37c68a01530f092cd37c4a26dece2737868dc2c3519435e1f2cb88f07b62c", "0x19dd1c6d45298248ad499531f33ce002505458d76178eca26298e39a62fb9501", "0x215f5563464e2df6a8daa8c34476a465e4ee9fa0ad01fc4399b649b2e07d1679", "0x00f36d166e99139b9bfc1ac3270a3d98c4afa81bf97436076f57383da50436a5", "0x1edd7c7deaf249e0fd3f5768aa92e9dad64118b491bcce12340c46f210b07ced", "0x08e1741a97f6348ed6d68f4b7bc6ec8b2dbf03f426769cc779ceee4ba1beb03f", "0x2f4aa8641ea4135031f4d97a7a2f679a8cbca562ba6aa54eae7d32ff7d04dbd2", "0x21a0a43c88ce26effbf8b9ad668056b5b0362e5009f3d80033db473228fb7fc8", "0x031b369d011f219e4a8fb21df9352878d93ff8035bcda834c3dcc41c3c2df85d", "0x020a72083579059cb659952d3f2a01ed90d21002275b5ea11f209c763baa8457", "0x19f11771049b5be81b43ca81e3611f4108a4b9dc30cd122441f74319c3adcde9"] + ], + [ + ["0x0e30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68", "0x12186bb22000ad84b6bf29179ade2d4e7e94ff07e51627e09580571061fa8ce8", "0x2399faa648aedf9024c6ac3ceafea248216e24a9e56caf5acd29ce2546a9f6b2", "0x03add29fe398ed2d44f233125ecd1509e3cede77e6be08b94af4fec87eb3e48e", "0x121af61f4dc5bb24890abeb9251e5cea94770ab062dc0c28bb8995dd8f183635", "0x2ca8ffee2d58f2945297b00cd0b511da167080d53949b3f1fceaca9616b6143d", "0x2c99ef5e064147da9782b914a294b6c14d21ea7eec1f72e8761671069d82a134", "0x0d7d07cd3798f44d832a6571c21706758693e5e93684ce2d1a5e8a53e0cc6709", "0x29195117106623ffffb0af525c838686d0d97259fc73a5194609ac7b7b171313", "0x01b62d4b17de67375b58f248a88dbf707cc9d1491bce0095644ca0219a01e40a", "0x2e1681bc7c22d24c433f81dd3a326fd0242bfc7e2bdeb6307e4d2aca32adda1d", "0x0065850d11d0eca87c3697b6f5e57f78ca86952bad1c9047dbd2eb6be9e9db30", "0x1a59b36b94f9d723577e504d600c493f2810f0e67112672c743abbb13abf43b8", "0x1a4b186b77cd53f961c8ccb7815d9781cef7a52af64d0bf746cb522512d3d0af"], + ["0x12826e5b9be1c9b85f7c98aaca9ce28a870687d3628d60def0ab3072b57b09b8", "0x237e39980f9007bbf8699dbece054fea1f19766be6101885d421fa3ea46b5348", "0x0540f5492497595e13080f02f6b1e653e2e51895160ffd5ca14d26aed93b8672", "0x12bbfbb110ec2971007ddac5f8e36f655465d05f2462996b2114efacac70afb5", "0x2f2ec51c48f8b73c51b264a70d2ba0b46bdb43f933de0faea8a7da2a97cb41f3", "0x26e36544d0b5952dde4007d11818465bde91c4dce65abc015e7556ba58b95ffa", "0x226bf94b86b177cfe7f03103d59e3f9ce2393821954708e7c723f8104a68c664", "0x25e311b37cee693545e2c2efc2043bc073552115b3a065cef13d36547b6b9dc5", "0x0f2336e0eee4685741ca23828c34c24f073491f0e72c139610524a56f71aa405", "0x0d9bb7dab4a189a3b6990a5526c82b0ae50ba7dd558f951bb9fd343cbb4b0e19", "0x2a4a6cc884cfd08af4b0dbe89b6d8e0e58113207aded8cbab2d075053efe998c", "0x1eb97819b3531ebb640ed6b42134335419101d1db60dd1a924ef9665f7a91af5", "0x226b91e352c65de4fcee112445bff20e4a67af0e110957319b2860d5087406bb", "0x0ac5b86128ee47944c12af531cf1458042c35adfcd9e5b6a7531973714559de7"], + ["0x22fea1297a4a5f08904d555c2e15d016102a4ed29c32b4bb10809ef14af42c77", "0x1808cbe7ddf2a3684d8a164fe2d150df62206f6be33d577dc5798f193aeed7a1", "0x1c1ccb44ff8ab6da854e9271f4bef26d2ac26cd7441f1b69d16eee0d7a7b481b", "0x1b8d209d66b2c1acbaba435e304ae20662d336d10330beb3355cf801f194733f", "0x11738ced3933c4b27de13911db71ccd58b7b31344ed9153dbddddb91fbdbceab", "0x1e97ce013afaa6e9c993e9cfdc9aaec91b06787819830985a72e9f7c6e516ab7", "0x066ab8beadae7bebd26a33adbd6bb392d6825da37a679e8af9ae8bc4813c3168", "0x21b37be521835c32b673a31d71aed1bc7f3ea96fe1d4c23f14623a0a851a3cd8", "0x1e86ec086805bc7712b7510def651249ba1d491076241d99d00c692880f39a75", "0x075d1aa6cd2b8d181c9e0f42275c9884ae6fa09186fe227e5c4673e56e3acd28", "0x142a83206747200fdb02773e766f504c65af82b200c0e7fd942f92be23d586be", "0x0ee4683c8da536b6b50773a469bbbde2e417a1cf9be221520af1e755968d7ff6", "0x168e771e9f8f860c49367ef919a00d4f128bab01c13d7dd72ce8d36bc6d1d835", "0x0c2a439067121449c1ef3dba6be1ff84f6ab7fac4bbd54ad7539e61826ca1971"], + ["0x24cc6751894087b831598b5bc7f9db3cbb48ce294d9208e1aa436cb5fa2e80e1", "0x033cccef05b0bcf7b77aa5560a0f949c90be5cc2c57122f9885d24a117c63f98", "0x0e8efc85cfebde295ce589de60aec0db43c81f4be7da44eb26fa4b71f7cb7ee9", "0x0a9d7ee7ee91677affd3ca4fc674625be897df79f82ec438e80f1e000c8b1f70", "0x09175b1fafacdc0e62b5f95e6ca67c3ffc96a26e37cfc734795b92f1e46124d4", "0x3016b074c814225e2d5c1091a8303eee4be476b1458ad54c16b4e1691f6b4724", "0x0c099861545e013a687cdd49a3a296a8d2c2e99691c2535da712d351d5e63c10", "0x0b71a06bb75b0a10bfd28a3788bf54a8a144b3287df9c591a2643c4100fe388f", "0x14937879c4c7127644c765b6362f8b98cfd32f8572d7aad9cc329bed5b507a69", "0x28f9e0058ebcf1591bc007cb02ac3acde0851427db20c7358dbef9fa9c57c2ba", "0x0df653524fff92dde8ec1c9a51c1bec30bf36a4f01e9b3b62eb13f8ffdf7b8bf", "0x02dfcfb280a3d372dbc15639eace45c0bac562c44e292f1429bc916578fb0bfd", "0x0b345890b33c23d167396c583d12e4f3d9efc904f261202512350190ab1961c5", "0x04f7f1fafee121bb811344f73f54f4a3583076739dd9dfc462b3ae6343c93cb0"], + ["0x2cc3d0503a0e1da952b081ba5dc5b117e646bed572a645266c6ec3ce0a1474b9", "0x2854c82b4b5f5df6dd3872e3f371372de0d12e16e9108766920b5458105e76bd", "0x0b1d810fcc721551e2a596e9009367fc6a924857ab29b703207b08c95ecd001d", "0x0b6eb2254edfae1d7503c3518e64cf19f3443d6cd03b71cfbf1be5936da4e046", "0x210a4a80e6eaa799f7ce05752bbda4d4ff0520742c943e1efeeb12a91229a5af", "0x1c1b2cf11f0d3a3a121be7d0ddfb24dc71f54b9bef943aee32963966922a8399", "0x1574c9e5caaa8a6a7fb4894d2c45d1901d1c42b3214fe9a72fd3cc668e399f76", "0x26ed5fff06ef9e1942bd3d0d3ba6848e47ec045cd26f93049d80cbfa6bcc73b0", "0x059de873c59806f55114bc3f8309f9b64cfcba7434aae220447ea0e9c4a66da2", "0x017e39ccba3432a135c0075d720c649562ee4d31b6da2e9c90bd72a039765e73", "0x2ae7f1414f1443735318163e1bfb1e1bcf5c271f37f6abf1aa86766b2e59e049", "0x12ea921acf5b8adc6a4e36be85713576d658099230b0b1766c666f12d92ab142", "0x1815d4c2e6a18f4f3fa538a004146d7f540fbe80a4605857714fba2795615df9", "0x18f6c40e3ccf885804b374433af0a962b2963fb9aa01e8bae8cc834b3e17a31d"], + ["0x11eedbe5a5969f33446503494b469a2b83f88d3aa477e5d6d7963a8333a61315", "0x009b63c75dfcab572d280b057fbc3640d35dd5f16244863ab8a31e0956da8802", "0x09fcacc3998065124de01bf7c0c8ba26ac4241f1f7deca1eefe5ef3d5015e3ad", "0x01a9ab3fc2059b0cff7e3cc431f7db45f59d8f7f724cd10a03f31a36638f8b52", "0x19bafd0d7942b839f36ad3d70d9c87b55674b9bdee02a7dc30e4f99ebcc1d94f", "0x00c474824afd2a880c6a85a7b7a5a434ac422c7a63aaf8ddc7c4d9325edef40e", "0x03a65a91d35b6e877908d5c419e7850f645f62b1c913765a214bb0f7a2915b49", "0x137908baac2e35e13f86834abfe98d1b54b7c25d6c85fc6c05ec7cded9175517", "0x1662f26cf04f5b969cdd6b93e890ef2b5b1124f51822888dc2167bbecf7c31e7", "0x0cd0a4c27de11aeb6460e32fa2bcb289cb83321723155304929eb0ca4eea03c9", "0x2030b7bc2a70905d031674efb420336fabb0769ac0125c35dfe2ff372c1aa4eb", "0x0b5342503af446ef824df4df6a088195fb67276657d420e6f312b2628e922986", "0x282a555f9ad4fb57698faa1fc3279bb8c28c1f8dc8c693225bd8520db4313489", "0x174c1a1095e95d4f098c8d60826776c2f73691db37ec3b937835b65b01ba13d6"], + ["0x189ae9e9b162ab1a19d599cedcef428bd1325c78740aaad6715b710bfac4c1e6", "0x28fd36f1c761ea7bce29e6f00067fa40b32e6b318f506b6c94bb847bf72b5b52", "0x05d2f0a3c223122ac01214250320b52ff5a3d242118e19778b2c8cd1a976c611", "0x023fba23ab4bc24d4880ba5a6ffd6eb5050dfb8d0f56476d3a30290eda372ac4", "0x26b8eab0dd0d95b7a8439e0ff7d3438a73a27b5993d81fcece729a824a3521b1", "0x19775ec781fd4089859f6b7f127c91eb83eeb7ec9eade14677b0a6b10b9e6e24", "0x0c073eaddb5d3f79e5bf83bac00f37700bd64502d8bf7d5a099fb3eff7d3b03f", "0x143991e8386d62334ca0d87832a0845b48416ef5158c18e7b9db8cd6aee223aa", "0x05fb897d71edd8d8eb1f3b5c823a5882a06d964056afd532e6c88893a25f2615", "0x2745a059d0962f1bf0dde1e1b97e0bbf4c4143d10fd3fdeb8d2b295ee4d7a9dd", "0x12a710de6d17f91af890102226853bb64209f1b41331a1d17305bf5b7b52172d", "0x09265fb314a676b6b3f827f07283a1ed4f300e8d90f967b20ff61f455d2ab2fe", "0x148ab15972a6925b714602710fe9e64c0a015053acb838d0e876a46cb5653f59", "0x1f7f9704cab1cfea2b2471d579ef99d193b234af90e62ca09b5a671c2428a515"], + ["0x1aad11449d6e2c6e1adcf9e89114c336c0145528f356ac049f52fd8cb084370a", "0x2b56c2e44f703a3b143da03c25749367f752b16817257e6d123b10bc85543432", "0x0c7513f762b64022a151d62302099dffd51791d9afd3dcf96cbfcf6035a2c27c", "0x0b26700fd4e950c25ad78fedb63fcb0d9ba73ecab858c071664866a9096f14d5", "0x173985fe17f3b0fb85de6104c02b46c3d79eee9dc28b567f02ab1a1c0ddec576", "0x20a9a6284cfc4381795e3b06837e9596815fd5b6f162bde02f97db687c8479fd", "0x217aa400b2b625bc36432a545e533124f99c1cb98eb85df747319e85d530470a", "0x148dc9335f621fff9c8d2fa72a9cf5b6febabe1f5ce77689c1a29e393185fba3", "0x0ecfacaad0c147e0b3c7e049771e6d4072b02ee4d171c0e53224214d17ade351", "0x1365a904c7f6721002dbce17077a89a92bb8038bd27af53333f447c4cf035a80", "0x1fba713b98742311dfb3fa356ff83eef234ce8bf2b0d4a52de7af4d2519f2f12", "0x0ab913f65e1ceb39ed8b83bd5d7fd900e78511edabcfe62314dd10d567858d8e", "0x08e13c2e61c446b53024d2116ab176c843600d00e676402c4641745158c243f8", "0x01fa02616024cd9bedf643ea36d262d1b24f38a557a77a82c686618c3c33edf9"], + ["0x0d7e1eae2cfec406402d34c259e5966f6e2eb261d4f08e29088325a6bb669a63", "0x184e5824689e4f81438567df435f39e1d35a819041d7eaf3af908429beb2bc2f", "0x18fde6451062016edeaa32e40a8fc30751e17e9bac192f8ca891c11f39ebff81", "0x04a572b86105dba5253d7ed1e76d35a126e6718551b976b208f593f08158dea9", "0x1d948e8774b180fa5e1a3932439dfe8c5f32a437657d21277e42614b4c9a3dc3", "0x20441aa5f4d5638e64d7ad9982b1bfcfde158f6a3cd6af62941e05cc8e533151", "0x178a58ff122d168cd4ff11a47280a4b8e5cdb313411b6f6e9a947c7fb577a51f", "0x256e145378d2604db8c509dda4552452b6c4a891fac5da199c7560768d948836", "0x25f64d42a750971afcb8023070f6ec97bb2362b196a5aae2af6a70f2e7b357af", "0x02f812121e2eaccc7d51bf266398d5ba8f601a2aa6d335eb69f7864642177667", "0x00c8f8722892a2f06c5ab454e407bd557e9c2ea77ef807ee0e3d89c6785b0d33", "0x0407d585a6a7efb561377e5f3972319a3e7285e146c5499ef6c8504a3d0b62e3", "0x11cb83e01ff5803b049a2b59ae9915b3e0045e1db694a6df9de9c4e7152d191d", "0x2e1c292e06b7f8a6e4344f10540675a63ca49e452f69565fcfbcd43bac0f3af4"], + ["0x0796a23ad6ed2ac995104a0d3e6c75e977ce29aba1d25e62a9a8a20364ea1be0", "0x1004c5ecbab6b7d12f6bb4caeab33dd56c1f829ee28f47c29fbfbb147e884654", "0x077559473737549dfb2016dfa72558bb2c1c816d7318763a5e4fd516b04914e8", "0x1bcbe67ed5fb7522adeafd1d9a150f8d57ada218db346915c86e6c00c00e38b8", "0x1b61a03e218362204fd20b67536e5e6ca7b96dbb53d53ed1602302988614876f", "0x2d3d269ee324e7c43c11aa84cd15bad65444ef8369df15749a8a6b2c8121e2b9", "0x0ea45d22479ef5773e58b0fe740868fc1e8b50bff76049d5b6ed5e723711867b", "0x2280250e212be2a48d293796a88ac62b05411012f46a66f87a0220a3dff3f79d", "0x20be703f86d7c0b9dad98ff8bb9fc92fe8ac0a84c6897a75d851146f74840b71", "0x21f8d854091ddb601dab1b01fb30c3d4f77cc3167fa3332c3b32377a07e6aac8", "0x0dbd093dc16e73832bde62d05cbb06f8271fa47229470462d8c18cf8a124f9eb", "0x2ff5bbbc022d1b74fe184c064e58d967f1aad1f0926c906a5e356cfc3b81ad24", "0x119816862c8226e9e5dfabf3167b3b2bf7fb3d19063989b24a16d97c94bd53d7", "0x06fbced52576a913e6cdc5c5c96fdc8f9f4e931fa90beeb46d9b3c2d775e1e36"], + ["0x299b8e8621d7d8c8d3d6286cb126b34ee53b2dc9a3697b8380c6e47f5711345c", "0x0a973a665693ed09434edb2cb0a971ad277a82b3385788552349ae09e8bd0c85", "0x2de9ee6529e5abc7aee93b794c4eefdd517c4fe12fa56bce06a3708d86336bbe", "0x2ea6b7a7265c503fcb284c2bb19512dae71ef357125c3ac755c6bc6cc37bdb66", "0x1380beac7b062c6b89914a976a8d0b9d3276a13c82c23fa21f4fa4403e3267cd", "0x1a5718f4a92dd8d179b932b0820f65c7bb93eabce398f997324f98ac76323b92", "0x1c7cbf2448de7114eed701b041809034e07b946a0340b777268529d582c225aa", "0x09c89e06cad5430153dd52cc66ae4f521bf4145df048681beb2e06a385050117", "0x296f3a9c104222692a44ad24f0f6fd8190027e0755567e9a7009ec71ef440ea0", "0x018393505ea6230669a8030f6e76130a14c1070a901ba5b640b88ae80d7d30b5", "0x1dca3060a6bbc4c324f7efba22274fd8d1f2560a4eeba8c8b0d38997e0d9c46b", "0x06da6d88c233e3182c5fa5ccda1392c0f89f7c6bec4e60da8df8054807eb0922", "0x0c61ec79b106e9dc6494a6359f175ff637839ca53ac8e7a13471c56646180390", "0x2cec67e62320bc6a0ca32518ec81c74363a4b6d259bd275a63425d6cede468d8"], + ["0x20f11ee81d2ac9a9ed1cac61d9cfdf10bf1b49cdfbb6d232872a1df1427c1839", "0x125478c8973bc395b648c822091f8df469504a71ca4fdf1dab59a708d0fe4719", "0x12b591b7af35ffd997b3a613687e449225625dd5d101cef2d6f2af02d9dbd6d7", "0x30544eda9c322c6c872671d667fc5fcf09cfb8d34e8e5812b6e738e7ab40d8ef", "0x2110c105efb481b679ceb2f112d6ea704442763ae2ac65edf8f15cfd169c560d", "0x08fd4397aa8b3a84dd1ba4e2d0eb7c6d1c5eda1f764814b5ffe204c8ec735606", "0x2487df9d5e066b76ffcb2f0ca190abf5fc1e5872c4b6a36a46870e9159201010", "0x0aad68c20fade1e3e2bf70fcef4b550ba00d6399e20d83402fe09b52ddcdf527", "0x06301679b6cdb17aa6c212ce342ecf681ab7cd96bf0bfb93350368004d97c353", "0x1e151fedfea11659c189a31ba27f2ccf6956084188eb2c4c99b827f645f1db61", "0x291bd9401de20916b9002a0066114b3bfae4d3c8308aba4afdccdf0aec12d66a", "0x00aab27e6279952c7291f036918f0b279d3b1d9f8e4e8ac380da77ec2fc24ea0", "0x1e8ee641308ba6fe5600b2df492cf2f14f9892ba1025826c53c77aeb7bcdb04b", "0x276e2623828949e6a2fdc917e2ed45dce0ee503cdaffc9add815f6d1d3c4f9d5"], + ["0x0a403e979943b8d2f947f6eda6d41170881341bb5e4fbbb3b4fe3dd7dccdd777", "0x2b0696d45980020a2a421073440e3a4fd39edc5288e6900a5958e0cd81e0eee6", "0x2f9f88fe9be36457e8a546455aa00a0f5100a7f32580b78f26a77bd0b7612181", "0x206733e327a64b78d3c48b6f7580d0887c1778343b67768859e2532d7d1c46a7", "0x00c272d10af2ef78a98dff7486c49d7505edd88c922e5672a3abb15cc49f4134", "0x1a327ff2c46f5969fcacb463506e102d682502381fc3f999b9ffbd4520ba4695", "0x2c0cbbe46422917152ca1906462bcb5a13ef536322a8715237da09b8c594cac5", "0x25f4103521e36d55e418162ef8ebfec6d45695520ef47b8548ba38b52a27fbf5", "0x007940eb04b61ec5341c1702f03993faed167db6fa2cea92290cd821b15fe4c2", "0x2ae1ec9e09577c82c97b4b09142ace51aaad1df7dc352cd4e5813d8cee9c98db", "0x1c97fc775f962fe05a7b66346b93c3260c8f6a90a7f5c63223a3386e19852ead", "0x27737fcd76dd296c28817646d30b1168c4d00e1f764c4565caa3276defd15c7e", "0x16b61b242d41e1975843309a01a36a14397d7c8e7beb4afbd9233b453aaccdba", "0x0c75ba60f8e0f6afa126e75703b83d9908116147b8b2db45ef24f3156b8f1855"], + ["0x04646253380f4bf642972ae81977779454aa0833fda36b1822cb9c09719e3dd1", "0x0264625c74f2a3bbbdc19481b7866757e639c124b4eb560da531fcef99773903", "0x09714e717daa3ceb3e9794d24abcd172831cba18066c4c048b0995e9e6df1dec", "0x14dac9059c9e78d96c7ef807ba342b946870679782231d2af0f6e4ab76cbd101", "0x129dd677c1f8aa2d36d2a7d5340645dfac34a64ae456f91b97de9f8e91313615", "0x10879ceabc3ad045d76f6cd5b26b56dc47b512d6509458f9ffde8da79e6649cd", "0x0f7c3f3cc96ceda039e43c86c1b680c77d6f49f50e94de23e4db42f8e9caf7d3", "0x10bd7824fc1b883b3da0072d2c6194c4a1e5957156594e908adbf6e6b1912b9b", "0x090da12e1595551d2500f90310b7701df97676404113c33e475b2e7749adb613", "0x24ceb0766de25fc22789286a09287be740310c41747320bdf2eb5c956e040356", "0x1c7dcecea59e6f7beb6d702e2fe74588415d30e5dc09970bb2d56acc8e08328f", "0x110a5e84de09209e9363c03c22b537ac6a7aaba2f6a9d1a1f6bfab71a960a583", "0x13822dcc3f6271b71549c2cd917b859cdac36af6848804d15a354d4de0f67ef9", "0x085e380905eb2cb7e753d0ab0ff4918b232c734418b6bfe1331de492fc76b21c"] + ], + [ + ["0x04523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe", "0x19a92ac6087ab89982fe5650e5e799f91003fd8b45400748d2c25e40f04c578d", "0x302608d750f16491df5a285f5f7f6a5ce6b554f5dacf0b69d450b24bbb4967d7", "0x1a3c7daa6b4af5662d0d8407b287674d83eae5b7563405f48def49981c98c424", "0x2db1c9855ac29acc679367dbf70f08d98894077df2411f91ef68dd90177c1e9b", "0x0f06ee47558f182d810bbcb214a25da7f70a567a0464b348e1b30eca7de99d27", "0x2166d78d948dafa963381cf1560d00bf3a0a1c288a743344c8643a58daf8cbb3", "0x2929be9bfe3f93cd34fceae665d96b1de1afb26bcaeea2f4edc454c50cbc4401", "0x1076d439c67997c37c6c1fda9a37dc2f762dd577946f36fcfdccd7898ec67cd4", "0x185c9ad0da87cf824624d02bec3ba4665822a0f6b3b25deff3afcc687ce1321d", "0x2702b1be39e91044fb73926c1104719f4c037aa4151823ceab24f0cec49f4648", "0x0af71a51cd463b9faeda93803cdc03186c7781845252fdf4e0155709d93dd375", "0x28667f9c7332073e293c80b98edffae01af4f67b4c52ab45e49db8b30f182d28", "0x2763c33f5b2d7bc3a23040afbcdaf998bb13254c272a5f8635a12606a59c2e5c", "0x0f81a8d8e08758e8a32aa8292666c4cb6ba3f5f06c4dcf4fc502ff97f03a85a6"], + ["0x113ad8b46c3eec20c9965b5a7b2e8a51529871d0401b4de6f63de9e5211623e2", "0x07930cd5256f8ab77ab92b08bbb5b195a44a2382c66e27514619efb94e649110", "0x28f8144bdae1b904ead70b3b72c7943037de6b48490efd3177783594edd28b9f", "0x2474f543d1f2f33b5ef3fbb190651135a59390c8a3661fae2df1d3f14432b608", "0x21715a84742c02d057ac41f743b166da023228425681950edfaff8581201a097", "0x1ef0e0c1f0b5f67644c486fecf02238cb7f4fa63a082a3c030daddce65a4b82a", "0x278e8dac8c56b28a23dba4d90fba91eb947f5092d4a7a9ec7802f61778488e87", "0x0faf33843e6733437e98995e6f7bfa6feefa73d7410d8585918c347f3cfe92a5", "0x2ba437d6ae6c588c6b71506c8b508347e634b65cee317af1fbb9cc2a997fc006", "0x24a6c1919f94aba9db98a5af38feaa5391cda79f9debfaf118670d7927e41db0", "0x04d80e7ef7e27a2b1397678ac42abcc6e2662c880503e4643fdfbace67273b92", "0x17f6a3aedb0005a9b0a258e31b8e6e2a48f3f9551cef6812a49075aebb8785f5", "0x1e62029129492c8bdf8514945950681361591a9f5eedc2449e5f229c85bb97db", "0x16bae774867656e64fc95f3c249f801f150fd7ee28d195bad9eae43743875278", "0x10f0172799be23a8fc3f156adfb6c512ba415e35167b563bf7b186fd12a41e57"], + ["0x1fc50a16dbdfa1c3b99038f47f81a1c5d1ef6e7b221d4ccca6e821220130e000", "0x2d8d3d924f2897199e38eafbc7e101d17d7e563488a9f3198060796ae84c1b08", "0x2aa9aae62cdb852490c650ff9e27c9b33d4cd4020ca66f5e1a6b374e662935bc", "0x1848a60efc89965073b95773f467666687e38d59be208e8377d31903921057e4", "0x0c893808103549d2030cbfe0004ea6655e24ee71a1f8c1f072d5cf6e17ae2499", "0x0ad80718c6e9d1c67b4a37b9e103db32f225fe42a9ba655ff065618b87b82aea", "0x020d87476f1243f490246f88736ee5fd6d33191f0561271487e9693fcfd7a649", "0x134b86642ff202388f4fe37356ca4f0ec3805566b7d4d412d8937a359ef9b401", "0x2c04878b4cb8156e9983d11574ed99dc7562d3fbb1878257abbc68852fdd2680", "0x1783a45215805ade9d359232120b183db54b43f9a7e8fb8dcd95ba9bbabbba59", "0x0fc96302e8662de23cc5c8c228ac8ac2dcdbfc488a59f4dd41e3f27095f7e195", "0x24b22e5ce671ce79dff8de16d7cd2bd6375d7ecaa016ecf59cfeb246dac80720", "0x052c33fce08d4a39fd805156c8affb84349428ba4920cfd2e7902ddcf9b0557f", "0x00f0d475225c99702bba4fd01276102b5cabff7bd4d147c0e3cdee4c07ac31b1", "0x1183e91b7ab7372f157d4c477691eeaffc9e8863fb2d806570c67f4b1858fc54"], + ["0x1214a9d6d7288fe85651a8cb83048c7669c83b5ed82ca2642fff01e852a44b4a", "0x1c0de2bfeafce164c9838067a8df6340f9d97edf0122333159b714f45c3f13b1", "0x1e394d80067f0e10baa95de0d99b4e39204a18727d1401b476ec976b5f173a82", "0x2ca2d8b0a793d90ed318cdb5f697193137155bcfb942d82bef558be5fab359bd", "0x28427ab007a68c7ab12371f13bd7dba0acf7e97ea6e64ae52d5219210fe8a2b0", "0x2cffc378d2cec76ba7080b37fc671a96328bcdfc4630fcc2f2133dcf29c70dd1", "0x00cfcaa1d7d382e1fe1fcb950e14df202a08793d7185255b025d562eb8d97544", "0x1d8724c5e641d96f6e372771b0a776bb742fd3c08e1ae250432246cd3bd01bde", "0x0fee8f9731397974100834649ee87a27ac92be7a3810303460141aafb542a429", "0x116f239abe820737b5e1e82b2ace3a45cefac489a6bff084e323036f54277108", "0x2a31cadb918d78b96dcd548b394425a42e2aa7a28a6b63e509261bfae6fa25b3", "0x240caf6d7ab2f7b6ab3d15efcf3074f5b2142a1e804f25012d988454809e096c", "0x2224c85f0c0b4093014db1e817d1ff16918f15e0cd231b848a48cf83324c4144", "0x0039a288951a0381e3aaf598ef132853b5d694716c20db87923f0bcf14c914a8", "0x17620d438499f6c0a66bb577add4cadd66ad39e3377d302bf83d3bba126b2aca"], + ["0x0d421a7c25af5538788f49475836712af5da156f88c5867568cd958e305026cc", "0x20e4a28303dd55e5cee332f30eebafbd7932e7b3531d942454c344b8b8c17cde", "0x20bd028c958d57b79e35218fe34e469ebdaa8e8e714e918d58191f65046b972a", "0x06ed98a185bb2358f334eb257ae5e3183599c054c1b4e2022569b8368da1abc8", "0x051deb4b234890e31f5ac8e69a1e532453774ae93a9e9360fe009ed377ae9c36", "0x21f1f6a630471e32a8b9ac4b7ed4b04c56b96a71ee20a66a5458c6b8d5c6d346", "0x0c39dbdf6e6d24a91a0a45f922c894be252baa127d9ac76909f86dc0bcc68a66", "0x305614aacdfd4167cd1bfdd8fcdece6892d84d4a65e86e6f7c6349fb75e48b96", "0x0ef9ae65eb922605d4260ab2021dfbb4774cd5ffaedc1b79dc681208be6f85c5", "0x1adccb898e5fe18b5c29a4708c4b112b56d0fa5d299b5edc07d6f5bc00428b8b", "0x18a2661c03ab9b0d8f7d01091c7e563efc033196747e34139d3f5cc7ac001e9a", "0x0f8aeec74144d00a3ca38bff10bb0f3a8dbff4af6197847db879745aeb57b5ea", "0x1f53514a97e8b57204e57bd6b1b1d9555f3b50368154154e67c2134fd3151591", "0x27bcd639c47482d2dc8b6d13da19fb8d63f3d6c875f6fea486da6ff2ee11e107", "0x0e9e8373114ad25af97d28e272fc42d8490373cab582193b874a10428ee6cd21"], + ["0x2de8ba83d2b6ab6a711fb9230adee1cba46de8c930c86d266acb8c1cb9684e24", "0x1bb15ee4d492a8e2cf1b10db1b738c6780066ea8347abe536357a723f6cf57be", "0x27fa2120431379cbd86205ff114f34dd2dbce13e1c2a0a8e46a1dc27e7b686fd", "0x1ab527614a37c2ffb00c0fad360abaa447ac1063fb9fc656d0148cdce2d7c372", "0x170cee2983fa3d3ecef2f806f40eed8d8e135ceff076fc530bbfee876c9e7f1e", "0x288851770f1a13822251da91c84e123593fae1c9cbce6c4ff2317e70bb658209", "0x1795384e91bafa554dedf5156cd799e11210ffd2afe817b5c63ad5b85e7fdd06", "0x2cda26473cfdcd185ba28cfdaa15e7de2359646a0287ebe8b60d702df009010c", "0x27ab4b40901465ef59007114ecf1fbfab6157c24f402246b86a60397267308f3", "0x27122781df7bb05f6ae9e14e8e99da5c23dc77cc06108c0ebb061e5d1be93626", "0x26812acd03db3412cad4bba1aef71bd44b0094d318ace0366c79e729ff0eb2e6", "0x213d29d4e1b6c01fc0d109ea6169490076d131d8e034b3040f7bd9c3c373ea17", "0x2132f71ac89892c984a0a73653f2d45222ada34181a9e6dbcea0d63961f934f3", "0x121395023931f6bb3ef28b6063eb7a2ed7839e083fdb92c1e5593c83edff5f53", "0x1f665ba33da4ab9d9806caff77ced39c9be254fcc4c5da8f570096111fb109b5"], + ["0x0ea7be82f1cb493b1bbd83ab7ca285bf0a1559ea05c3f59827b3b013d0a91fb2", "0x2ccf31a572412bb7d9cfa637707853217e7db5550b1cc30a894cdf483a3b63e3", "0x0564651bc1179170e3c97afbc4f493617017b43b213eeed86b9b1bffe521fe86", "0x0bc769cd7b34fcd1b454abff0c00b89b540a619b87c95444679c3ac6be84d450", "0x244b6b63f8041a5975f4640b18c7d067e4a0627f18751dc906016b8893c35123", "0x2ff4ee110ee1be62e2715dcd119c95b95413376e88ec3ddc3f06fc9db8c27a94", "0x2666ec1a67daa7beb057aa0e6e8a10396601a21884372369c012b49aaf849049", "0x2b0666971fd911529e70ef918d019f44b5c9d77442b6d1866f6e76832d478847", "0x2bb5bf03cef933e4ee87f511de3985cff0323ab7b718d4cbca3f429addbf3052", "0x2e37a7440e75b649a0799cffeb7f9dae38fadfc7cab6c5585e4a84f437729d02", "0x000371f0d49346df2d88b9f1ada8ac99dd8125cfa6c30f3738fb9932a853268e", "0x0d0327b593042de04f58e0ff93386d1608d33a86872c1d3e7e089120aac7a4ff", "0x04dbc4c8de708e59aa4b2116e53944bec97ed42309b4a184561d8f32d291f9c1", "0x290ed9ae7479f9be13af13f98bf88507e6fdf018710e4859fd2e48cc66ff9b24", "0x135aa38339bd927dd5064e4d572df55811b226bab54b0acaee511d60aedb02fa"], + ["0x1e3ae7e5775d352651d713ebdfcebf9ca8e905cfb792bf7874239450f914c8c5", "0x01d492c34b245bc12941bb163c5118bfcf85bc4f344042b2031ed8662a1f6ffa", "0x07333cbd0ff13c8ade1febe72892d9ad435c7b451aa72a8c05a7082395882865", "0x29ad5236ffbb598a2f8d238703608db7a497a7453ef9d579fbf05be38f8f76f1", "0x2e72b1b114dfee7e8d7f0161255c6895fa786070ce62d806c45a22d7d98a0a30", "0x2ad369a84b57f7455ba31064001ca7779d2b4b96b0b4a91f156abec366aab786", "0x15793f31caea39de315dc5bf5a3662ad5d8e1a12fa1a7280f2efaadafa97adf4", "0x056c55df543a8d4043a12f409cd2c4bcf43a770f3e38c3fc79ad214b42da834c", "0x1ee10e28c612d9d6ee72f1274850c3e829be5c06f5bb293280152a5610eb01e3", "0x29f356dcec3b79523c0589a7046ef0758486828b212146c3f5ce987af3fd719e", "0x27cea9c43fe0bf1ce9e53c0c026e839d80a7d869136603102cddf63cdf28b975", "0x0bdc078b1edd9cb1fd2c2a01a97bdf7d458648439fac1f28509b41a2dc9e7740", "0x2565a17a6bc56e87b0b63664319b8a47bf662c1f49e2ec9251be4fdf33d90f4f", "0x15b085b5eb678f8cedf21bfb30e2d64ae1cbdd7472449ed24e6034101c658868", "0x22bc96cbe7f8cbca81b29ba7df848dd6599035ff515b6d485550842e1a35a1c2"], + ["0x05943e3618a32cf050018a4e2375f4d027b8c14ac82a0de57cbb90c5122a64b4", "0x1c9b5c2c07fccfd9dc6b3abfe05675fc997eb7b8cbd8d8b4cb7e671615b0ecce", "0x290a7ae732f4754e0cb91923c9248971932607be2e829163f11612ff8a955b10", "0x1434ece209d491280c5ae05d7e26cf92d99bb7289a5c1cac09a38ce53b6e03df", "0x228e7399b0e05802852bdd5d5e09966f03c4c3aff53c683eb2f69e0fcc21c0bb", "0x24f0fa154fcc6d6459d6c56f711f25e38d57e90be7b8046c9e001815edb41404", "0x18800bda17a89832fea54f26741d86c6b6fb9e15b02e7bd065533cb5661d2a95", "0x16b11f24502aa4cc3b0c2562a18a24ab8f986431b244034d3fc29555402b5f4a", "0x020a9d575fea891302b106439ab03a8a951d8b2ef2b562991946eb2541f1fbad", "0x0f9c05f609ad14debeaff107b95accd60e62662259905105abfafa9e8e08eaea", "0x095f1db43c827e6f0b9cd4fe929e7b8c78c93fd02ec9e0f10992feb753b4ca07", "0x26bc00d9cd25124442832d97abd90866d3fa7a401bf38bd95fa7ad526548fea2", "0x173e80596756cd9aee04bd6dd9dc15e4b8ebbfefe3771d9819bd4d444726f79d", "0x12a643f4a327acd2454514dd469551e36ab0e3f24ecc3b28a76dc1f38214fe38", "0x11e1b0af7f5fc9f049877154ae173a1a72c7bc3ba192e438a9d0fa81fdfa4900"], + ["0x0603755180f66e98215d61e5346b116cc00cfd058274d7d969b3af95e78bb335", "0x0243930ba01dfd3945f2aa02d588922b47c1bef2ff8023a849b4ca66a1bfe98b", "0x1eb520feac62e4545f4fe7cdb675e36474b8b1fd19e15d7c73a2b1dfbb23fed7", "0x255dfbdf30553413a1f8f5113d60e98583838d13e11c1ee02b25a387ea00cccf", "0x18451132581b9adf996c6cae15b92d2e4c09fdc7d6c27b4426f32b5e66a0b723", "0x07221cad39d9b5f8db705a8723038b92b6baf87284131735eafbecd533dda6d1", "0x156f6a09e6a81d8eecf4dbf21646bb968b2406786cd1dedd4cc732b7532f7fe0", "0x18ea0ede9010c7bf0fac361b5b8e7f97c75ed93a13a7ad4a017d920c03c98686", "0x0b73119c98d25eb6de14246b1401bef485c9dc6accedc23494b9526a39d53221", "0x1c66828552cac1443334ed70b7fd7fb525f907ab64479d117864c92e911986c6", "0x10a66268dd9a2f368e95507efc2085eeeee8ce977ca1eff5b2e3d94bc342ff58", "0x1f14aab5a59ad452cf692b123c65873dd80ffc188798a4570eca792b3f2f257e", "0x01d34655b5776e24701621acb41324cacb50165e019bff1e65f98304f7d822a6", "0x16a1eedbbea79c5411a639e3bf0e90f6e3f740f141599af8e6a43a2069572f95", "0x14de448becba6ca0adb21b07455d2c2864c7b85382267026e28f0978822d65ac"], + ["0x19817db66fdb8215ecf70476c4044c3f41d78ac5a549c684e35845947dca0b11", "0x08f328e5e66c0b879b36c233f598bd8578d18e2da9f019f0411731524f42d90b", "0x259a2a1f046844724cf992aedc2635f6680f55e8a0fdac695ecd05fbc2cbbd19", "0x067d9294b4072b12c368c2816a53bb16b7e7e2a79979a416f2d02af862abedfb", "0x0e1d7ec2a54b11b36e65d7551e9a875a88ccc7a6c0470e7c26e199670a0859b2", "0x173b3b349ee888d934aee9c14e889cd7d785d1e3e4f1eb72a5c2e56c48fd54c9", "0x2977658a10de6e7921ab9e34bcf07bbca61a72549ae57d0c15691bd143d4d2de", "0x0396097733de5a1fa4a548749b73ff7c426f98d9e5ad16920614d337897f6b1f", "0x2a66defcf489c23eec5079a0ece1c5341027a59e7c592e760184b826d70dba9c", "0x10f43368c0567f405aa6aafcf367e3e68beff957c4b0cba17c30c62b3f95490c", "0x25a2a43ee612663dbd61814f2deb06ed005a7414f99825f8be66f542f95a7b2f", "0x182f1c93c6eb29867b1559c58207a6aeaf40b66eaaf579ca6bd7ca40aaeb7abd", "0x042eea616d905025147a482eb436a3b75535c9869b76d6cdace118e15c91fb77", "0x05ce7f592dca2148e198554fd64db8c479f29d23f1f16daf3cb8930d9456e4c5", "0x1844a81d4fab57aedbb4c4628e2e47fcb2922883eab0b2e1de16f248de4bb902"], + ["0x073965f7a9ba8cb33a955d42da55fd7c37a3f0226b029d36dcb3fbea95d642f3", "0x284a2f083ee32a6663081c800713e0f2395e348dcecc89fc81aa75a5db2ba12b", "0x08f78e6dc59cd4694c41abbca086569a9083ca8cc800bd9134e4d48ed9d89dc3", "0x293ca8a06c5f179d938065ea47f80f65ff21969a9429e400aa177ecf6b6ae853", "0x029b68e652deac818824da0c2a11b408d7a839a2e8576c55bfa5f1335ffc5b93", "0x09bc3e40bfe5f616fbd520f3894a0fdd37feb29429fd3a5015953171de3a70f9", "0x284181093e43419789263736e544817111fdcb559a43773f05186608acc542e4", "0x0b9d5a3a957eef251ae9c26e53423f9be6f2efc24bb18756893a9d80e56a0825", "0x04aa8e91dc30f9ca318fe24718fe595871f7897e92d57f2d87d4b1bcf9a635e1", "0x253a11c66463a6dcafd8399fca58ba27febbc307d8833c666e0d8df072c5f69f", "0x0e4fd498778c2c76a02d0d91d8f89825856e706f598337dfebbf3ca33397968f", "0x126ec8c200262c45d1133bf9da5f1e5fd62bcea1e493a080af1bd283ab86f122", "0x0cf030b10a1b4291e576ebabb39c583fea0fa6decfa98cff7a96dc06cb77da51", "0x110298fe7f2bcfdac0bcdc3affeeb436d7b3a377453ae778fabd37a9acb299a7", "0x0eef04f24ae210ee0a94bc5621574783e49d4d93365a2b3dd069fafd43055452"], + ["0x09a550431430846b6694125b5642b00607f36a1a29485361a3cf427da77eccd0", "0x19772e83816fc2c49b96427c6ad0573347fa49a5df691252592aebc390055a35", "0x2d8ec6adad3a646843c88cda01285f8f32d29c6b1025cb5421422bf8bdba7fce", "0x255b96258dc8e1644f1bcaecee773632f25a6ea803cd32a1e01f82573775f6fc", "0x186e1360041193e12f38099b0e35e767affc3410f6a8dfce9bc75567e39bc402", "0x29cb31e1afef4f252578aabd76f23a1320aac90d4a0a66c2225e3d94cc48d22f", "0x200fa20ed1b871313900c01f8b697760d030d8cc0150fdc58e04a0d8a2b344b1", "0x1a63a589d1710aa705136cb520c2f1c44d778e490c212d4b72e9f1538e5555cf", "0x133369b3bcc73ee793e869360cd50d8df60fe398ed9d9c0d0d03e669f796e87f", "0x1e99516c240d42bcaaad9c73f21a46193db8433349203035eea30398f9df7893", "0x13d84ca7f358aaffb1ee8ebae81c32e01adc01e90d09c9451af36e31af82170e", "0x05a78464a4b6bbca6e96d839827bfddbaa9d924840aef6555de643df167d4caa", "0x260ef13ac7e80fd2db3de9eb942edeef3f5e252d4c04508b1e1b130191ad0df6", "0x14829f09d4beebbe6fc30545047243fb3dab99c62aab7364a7a5b427457a02c0", "0x1328467c87ba73028921a89333bab97f8b24fcaa72f43837cbcfe5dfb7a945fe"], + ["0x068eb4e9d6e0a588b61a6ad501f380da0f009067666c0853d156e33d59c43515", "0x2dc5900039d4c8523ac379945cb9b58a54e01dbacd67f0c4baee85d353d3fe97", "0x1b72ac4374e95b7b7d28cd2909507f3006e8352d4af19e47b0b909682a03200e", "0x1f2a8dcafe79fd0ea22bb1563c3b28b23c5c4d7591d45e06744b3b379d426618", "0x19294dd22da673470377d671fabdf42cecd37ecbc018386a438706d6106b04a8", "0x1932bc6bb488b736e0d4bf306d41e622e66c1d685aa4598153054b40f75c0b00", "0x08d1d68b8437bc980aa7c59d83393b162a0827de74070d2d34b4eaedc17e7e60", "0x1c0343816b8cecba48519b59b0fb6d4a9bad309ee38311dc3e8cfe8bad75dfbf", "0x0709eab96cc6255f2ae917914f25085025490c423284916e23b608638ccce29c", "0x0c67a06b33cf73882b1c7152d4585b78223d85c77cddc2c7d3594824c5016565", "0x0740c1e9b8ed16e9fae204369c554cfb72007dccfd2530f2e34d544003ae5994", "0x02a84c424eb58f9c38b4380af38e0458468980988faa1f0d4c6e723845678523", "0x0bc367fd93ceacb599c614aa28068783a5d27eec1fc8fa1765015b76dd82f5cf", "0x0278b58503e0b9014104f8c446bed4c6de575c72d4dd9db3d1866846979aab9b", "0x0791d832e976b66bdaaff450731ff35d998595ab9748f695bb45d2c0fef06930"], + ["0x225e00a0da5a7f7496b70d0923a7cf7ff332bff06958cc0f3fad439874f6024d", "0x0cc378b44e58f668b45832fdab4a49372731ef2415c37f40b5ded5594aef3cca", "0x0d7d8273de237ba2d4d5e8051c5bd5e312d298b6726ffbd3af7e732af91dff27", "0x22ebe0a315e07be4b0928885f52449b011b3967e519e438c424cc0428c35726f", "0x02ed3cf0214f444d436655e03af8aee2b4d96961eea06e8133bd6e8d3e38234f", "0x0cb6fa0a5e11b9192a51904939d45a05af8055bdea3f379faac29d1309830e85", "0x039598a1443c009678602b8dd3474f276da5d62425083ec628a1737e8cca3e7c", "0x1af56e6575123f99c5d7ab7b83770f0fd60fb9f4038c2942644069e3c243793d", "0x0e8d9c0707dc5bf80a2f08c343c69cc659def86630af3141a003acb3d3e90c08", "0x1f6dd8e85d3597bb6d37b47a1f063122014c888250b38cf8e82e3e5471ef84a9", "0x0cc8f90bab68e6de84845da1899bfc52440bdddb940b208301ae94a95777cb72", "0x0c0dcf2b13552ec55c97166be347ca2f93b07e2a10164096d353fa280c796821", "0x001f126117a949dff900fa5d111a0ce2661bd9d5444577c491a9951cfb58192d", "0x138f67fbd9cb91ef5206d48cabb269ac42bd352cf371e43311bccad89acc509e", "0x11492ba406435f35623906ff45df11c39efb59fff09f501fb893d717e34f9d61"] + ], + [ + ["0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099", "0x069b1779dec3eaded3f07d0c3e6cecd6cffe78d747faedad9c90665aa2d92cb3", "0x1fa4effc83498d19aaa598b7771f88a0554dddda89d32dcf8a6f4cf776d13b99", "0x01676f5c07417ab54c37ec8ae1a8314bdeeb09964769881592043dffcb26bf41", "0x1f4e7bbc8d42779e58aa07bf54ff324b814fe687b4c8eb81b9b7e74448ee27ff", "0x0f6b18c98fc89fbfa99a04c8c96ae5db35c296479f484b680df905d4cbd1dfa9", "0x00e6cd10883e1e11c6c191d36329f30eb0045af06c2d86d0c439f5c1f4fef54b", "0x0425a9641fb01558bc7170a2ffc24eb6a514198b296a1629cc284d983bca8757", "0x00397a7d7434b0aa941348de45aec442cd5cad2c398884950e8233c58dd50335", "0x1d66f208fc04411a1385c22e203dc08f0bac2f7cd9dfaccdec20d3b93252ad04", "0x0ec1ed3ae3beac4ddd1fdb17b9c7c648e7ec81885a07a5bcbd967e6a3676f356", "0x0b3e601e36a5d82e0214362c8419474dc1cc2c0ed8126534d69a3f790b27c603", "0x163cb4e3a5ec92e57b25b095a3aaa8cfdc4ce59267718cc6090a07e14af10b0d", "0x2dca90f3e5a15b29895f48d7a1290d7a33646b89620dd0a8ccde3aa3a51d41cb", "0x2c78ee5ea16d38f0beb9dc0733c4bb1893cb33ff671b737a1122d64f729cff22", "0x2af324ec4f9e7786dcf00439c75a294bff753e3292bbf62e66471fa730f19c79"], + ["0x111d04c083f51a6fdf87412a537f6601076d61f435094ea16946efbfa4893e97", "0x187aae261ef3ee21b37023518a071675c6d00bde82bd7f5441448abb632a764b", "0x0da28ede7f63f75596a2568b2dd7a584576e5b282f284795b1a7aa21663822b1", "0x2043bfe52d2964e4a3b2da5e30107716cc764f9b1c8ba463f215ab1f7f03498b", "0x27b48a636a39b51a938aea3eb552091559fbfbe71e096d518c40d908dd2570ee", "0x17fe75a3d11b4b9d2acf7856d6dea3bbac62ade0c501347b16864f3c73ebb7f9", "0x2326c3dca7aab6b1852654fb13fff42a152ca9632124216cc7cc6f6d37522a59", "0x080c442909227f4a9da92e33237f9a82cb0c6f7d0c4155bdea5c6517b046eb9e", "0x2b1c00ea00893f9f91331bc907397db865c37d3bc6c4b39b81cd931696fd7837", "0x092f03c7e98e61c2a85943ffaf9c04dbb0145fc2055e4d5be90bb68b90109746", "0x2a0f77bb3624fc4826c9a2a66be4ec75dbc21642a16fcc4182d2d65c0fd8d7ff", "0x1083b742d35332a8b79b80e7dc04a72f7e86692e529b6a1ec5687334b607da7c", "0x053e95f9455bc6499d447b6cedd0b6aad9cbced97ccf10060f3c9ef51e28e76d", "0x05904dae3470d40ce12749b27d646e620e8519e2b17cfa016caeb89d9e34ee6e", "0x2e563b9dc5a3d4d5a93f476b466e371019c77fd6eea506126a4f79274f2f6b9b", "0x14560083d980d172dd40c9426cff41467acea41d7f48ff11ac5fcc087ba2d5b8"], + ["0x0133c5913f25ff5eaa860d0318f6a4b4349fd22f2d53530e5c785b70988a3a88", "0x169538094d4f752529471e3fddc9ef994cfad4f96dcc7d636f0fd509b8eb9c31", "0x199835da95f6eb22c591ebe514c7f283f674fcfa1eb787dfee5781a64f082439", "0x0dbd8662511dd7000991b39da129f9d03b565a0cd2f218d6eabbb49a25f105e5", "0x0dd0c118f15ae07e5db55077dfa46e08109954d99e18d72cd2caf613920e390b", "0x07c921bf45e354848a60b0e5f292bb03c2469498b9c1e4d322f4afd1867408c9", "0x1f694d1acbaab0ea5bc026a1864d568be555b89c0f49b6134e9b895ae141da86", "0x1604de6a2db122bdd5d839540a1005ed402425bac3b85e3a72224d337402bdec", "0x25970ce31b7b10cef221267bb1be1656ec29146df06fdb5b4f6fe6607523aa08", "0x14956f80a65b01f9ee97e2eb070e9df2711cb8bcb538dd98e532636cc60782e8", "0x01d799ae83ef6552f30edc47b9e82adc0503dc4b74da40ba0bbd2cc9eb1b0a53", "0x12417c001be86197013b2b4871c4e9b0dceb83991919a9cafacfe54666f590af", "0x2171fd11f94485466a819e24d0acef08b0c87d78b46d93bb9462b443fa40cdc5", "0x22e9bf2aa02fe65e3cc74fb3d83d4e3351869bd30528c378958af462efd645ff", "0x072ea2f5cdc8a3789fbcea414a91e7b27bbfb3151df510d080ff4ef7cc73f0d9", "0x260f751c7823abae61b8f3748c84791c0bd84acf7eb6854870250178e9a52cf5"], + ["0x08875f47d6f518c8c2df51a786bf2207aade284067228f440e7d0307520a56cf", "0x0a68830f19c0a729b2f89be27373d397ae1157bf507e7799d4220166ea0982d7", "0x2af560600b3e25abcc7f78a4d6e2cd3fd99bcba075ab82b55e9841bef7b9210d", "0x11b33a9f1818ed7f581cac020051de26fe28dc0bd8cb1a4457d5a8447bdbd6fc", "0x045c617f604c1ac9fb8d76e8d380322e5a3b69fa7b7c2ae2c8ec5966d6a4c788", "0x0e6197fe502328d0ef7f9b930355312b347204b877e7f85d9b569dc34f064c1a", "0x0cdfe099e7a154278dfb6c0388b9daa1e8ff323a20be6a6aa7a8438333f879cb", "0x15ded859d501c2733feaddde22ff36fa8ae85803aec7a204f42b1f6553bcc655", "0x2d4026bfa7b37a19a300abaf2e1d5c32dbcd42240ed860f681f61dd6d6214cef", "0x0bccb669cb016d498464944f7192ecff6716e6cb5f895d2715bcbbb65b1288c0", "0x05de1099c65f08a990ac0f1f45ec2fb872c771e10275dccfa4fce1146639d0d5", "0x2c465d9b5eb852d79338b427b3184d941f34046172a82cce44e2b8e5c4379478", "0x23918075c8fa0929befc2b171f99ebe9ddd6683594ef9a83f84d4acfd9592d59", "0x15d7fba62bac57be5d97452a3c06d9fa757f144df166479ee7306967480a287d", "0x02b6f16f812ba903901355955cc4ddb99f24f1c6e26430947e51811a68311bbf", "0x0f6673b7fb4be8cdea74aaa7802c9c73ff0d53a98e94a2bc60685d890a24fdeb"], + ["0x0ba9f44a107a81cb23fba66f2bc34152728f5f5ca68406649a7efe47c9473f21", "0x018ae39086eebb98d1fc5f05fa0f87ddcb149b0afe38d1bbb85a65697895e63f", "0x101544d131454f20b549b24a65ec84f1b3221fd9b43461ddc6d156833b34c52a", "0x026f2f58d63ca6ef59bb95206ce3ed3124885ec21762bbb1db1d6a7771ec6650", "0x25b974fc5129d82ae4c6246e35f802e03440ead09995865313c8ca91c820c2d1", "0x2d409bf78bd6f6a4eca7397d065023f0bb6732207925d3ce4beef9f621da2ba2", "0x17f732cc1354b1fb476e70568d2dcb0b6683d30b02415dfd385504736aa86de6", "0x040db0defe6ba4797b74a43125cf34d86a2b33e7a22e2710b0fb7a5568893aac", "0x29e89034942414a1ff6833d6e22742d4106e0f5f37d1f2ab80e5444e5a52c9c7", "0x121d2ba5bd8f232ecf44aacf1044cd6ab6f93f1e537d7d1541754fd49f51b225", "0x0f0913eb4ee7d3c02d8ce73d1cec2b6cbb176a92129b34a294adf066243ff6bd", "0x0a0fe66c0d4de00cc7761008732a0097fb14d6465f9d1df835e0423fb207d979", "0x0898ed1ec1a43687ff6aba32de5f819434528a0752b3928331899b0646b2f061", "0x11e0b2343ef371d2d6d22805974f2539b6e510d761e0da170d0da90095a13262", "0x1d59d5c10b0c9dd347899377da35b7e677c7d39ef1b49166b974a7f2bc99c946", "0x1a15b7e2de27125f2e6a74f4ec7cd2455f1bbfaeb1155f1af819bdb5fe54241d"], + ["0x0542832ab23b6c7a4b547a1066037152a2442e998c5381ba97698413153ba6f1", "0x04c5ebc771344cc0612765710bfcb1c2e6097abc3d346f049495f7d7b7f06cb1", "0x1a51740cda5e45ea4d4bd7bf5ce5466a66a11afb5bc93cf10d5309e07d410e4e", "0x2eb6ed568377b696ad3cb237064ec68e390c24886e1f122d21d7cf3290dc6d08", "0x181589b140c9109e492fc3ec7d8ca8e3c25a7ce58df06f13ef43561d58c5926e", "0x205a6d5aab2d224b668c70fcb41582ee9ebe1ff099292b4bc50af8b292c0ea42", "0x28239a882dc7b2f3ff7b9aa8de9e3d81af736d4ee6ed991d5c6b4fa540148f43", "0x1ab15f2fde6f535e77e615c8c2602193d45860cc015849df578f9fef9a5bb283", "0x032b6266f24017fde1b281d0fe206dff30b539d5c5ba13b5312e488d8d6f194b", "0x04e358f259a33244f4058a056110a26816bbec3c76ab6a5f7be93c9e0c92f3eb", "0x25a9ac2d1ef84abd98927b52c24f38796ea60e63858ec5b50196d7e169c93b84", "0x2f521f24bc02286ae2bf8484fbbc39843886755f52bfec7d3dd5df78d340721d", "0x1dc3f7a659530a13accad181b6e265474108d8b1469266552dfbc38cb679d06d", "0x2ba39845393fcc776fd383e535d567621c7f64005a83a6f7f48222bc902092a8", "0x04730fe04e0108c9a5145a5c48e60c5457e4708522157bfe0f82af5c664d6ea2", "0x075a09e41e74de8a2ac7fef27591e76a77c851e1a51185f31e99b5e08f01cc74"], + ["0x0ba1f764367360952942ccb6edf051c8f937906a816641e0d1e9e2ed26906fa8", "0x29faa7dadc8b7e9588d4a601e77bd80aadf272a1bfec3c443ca3ccac81d9e1e1", "0x1324558b8a5d4ba61b17790128be9f2440c0085dd5d6065b88f0a3b2537bdadd", "0x18faaf1c91e002f7dbbd12f408bd5c5b92f38e02ce3635824821e0347faf53ec", "0x0ee1288b29855e2e38dd26292b39e260529841344538d6499996a32e7cc523f3", "0x2380ab051d0ac580a7d116f4a9337eb31090a4c7ecbd4e638e7717b7a52bf106", "0x158926b9e94b10fcb321b293bb8a8647627a5bd31315808d397c1c94f650f2cd", "0x264fadcc791aa18e76751a895242c30cdbbd1197a90a456dc278e10bf0bff5e5", "0x2ea014b61ed575392239bd9411c0a6c4202b7334cf2e0dd8c3040528e4a3dfda", "0x2da2603a26d4fdec35318204ba5060663e15a0b1e4d9395258d5e6eecaea8fb1", "0x20a0e3f4e1249c4c6af100dfdf63f8bdc69ec7885bcd0d2c2e98d98f9bb9d104", "0x02f1d3eed36018f9679711e030bdbae51224b5efb8b1eb1cdca8ab886212f0fb", "0x0e388bb105242406e372080e997a31392cf4ffbd9c694163fc366eae770e435d", "0x25143649c13e08d4b00bf34d2aa1a8e450f89788e27766896217047155c5bf1e", "0x12ec24239ba1b0fc9f952550a223a52d209d8d22b8b21ac24881a2719276be0e", "0x079c04944d50b4777dd0bebe953600645ceca9d65fba020f97365146bef9c6ce"], + ["0x2e0611fa4ca3985d7bfaf512f21a4081141f4ed0dc4b022834d3cb6cfd8b7ffc", "0x2acf3493012bbd818724e7ceda2431e97c8933bfaeb5d7463b512e6e8e8f7fcc", "0x13473024ba419fc2a7743e7df8fc8375aab150d3753a54250a808d66f2d06b91", "0x29437af1b14f637a1f0e39955f2604bf20439fcb2a090e346aa65a9ebe69788e", "0x206e4d445315b764280cc643b9479f49946ea86d7304b6a2c692ac34d7c98d34", "0x1382c3c24bf2489fe9efd80a163e650111f5d9885e58a9ed729dca1f9a74e59f", "0x17cd11864fd2c73d0867d37264b4ca14df935a82f2a6f432c4998135fa5f4aa0", "0x2de279fcf77a270823a91a6cd1aafb58e9e3ab32fdff0b3b05c98d554db6fad3", "0x12ced5254e260a9db7abe0cbea26396680f6e57dc07732a755d409ef751200b9", "0x0ef5f9ee6ba1ae1d1264cf1a36e0fe4b8043ab0bddf9b9c3200fb687a8ea5c83", "0x06b7e18d01b47ff8e4ef08078e8128a06693be657489492ac4195a854722bdfd", "0x23aa7ccc3751b740eec9f35a29986bc958a4dbc7c4b12eab2be8376706deb20e", "0x2273c370eb5810c03903605d7cc94d5a92af6aaaa7b844f35189e77406a7e86b", "0x2a7310e75fafe902e20287a91abe388aae8420b1ea4660dd7c159c26b9632cd1", "0x20098399725ee15d93ffd3e481e4a7b95c8c5083f9d69bff1714eea7c7d82d49", "0x02ca2bac7c1aa0c64e684123f0ffe22173923052b6a01f3c29be80137fd8972c"], + ["0x0e6f23c0ef6f159dec68341a87830fb864b6c08cb954a14a2500876697897fb7", "0x23b34612e7d052f6b312ca0e0cf70034ad232d9bf63c88821085383b6f6ec4a3", "0x13f15bc6453df6f9383446550534dc57aedb10139e3053e83bafdd99356175f0", "0x0edf86bf1b1599fe27c66f3494862d75df7764070a8263cf88778f7287938d8e", "0x1641648c26b5a2dc297daaa6d4ddb6a2f258ba738f9094e7c5cda6efa8c993b1", "0x280c4522ad0ffd92c391e94c70f87120b8341890c3329af050625f2be52f3a41", "0x1d772098b6154921db8e7506e6f0372ca44f20af3386e13bcf71ff5dc0d61b1b", "0x053ed8ad550d8992f4b9814920183dd839bf355eaca8cc7b07020a22614a808a", "0x1d4f9ba4fd8ce4ef193b9f870f44956079538d63bce344f9016ac5ed63a99a5e", "0x0d53d61c8a5214e0c4715274ad67a5d6a2cfb9fc3c1e791d41de22c8ba8468a4", "0x12cf87253913d45d287e975f2b4f5b909d16a87d89c889057f666f6ba61389b0", "0x2b088cd30a10899babc325bba32aa343d329f9a8782469c4d25f0f237ff607fd", "0x19972ffdde7898ec8be4fb28e4b19efaa43c7ee20c88e29096ebe872e1c19475", "0x1fa6944703fe0012a16ee6042529ff02bc804313ef8c6d8b0f910a75e6f47739", "0x18237af733bc44418ac84e623f483a6be28b8f21d033fbf099d645ba20f1fc26", "0x13d9035a0dc798b04dcef0f08edd241524fdca0e95ba9cac05d207bd317e19cf"], + ["0x01a7a2a4a08d87e75f720302bead7ca21c8f7c2ed2debaced9b8b1b2da461cbc", "0x11680cc6e80b0e430a4cd3607017fa8331d86c4d03a96dfc18767c97cbe0a197", "0x1314b54f8786096244532c9f054b379636e2b58bfdceb3d48dfb2210b529b4e5", "0x1336b208e00d8ebac83246a96ebdde351063fa3f635887e753a0ce3e29c7eedd", "0x1887be87f7a352410482ef3bdcf7ef17976e087eb8990c76d7e971c44c048239", "0x1f405a9483311e1497568f1bdcd6d58cd6bc813982a0e71561b620003b888204", "0x209576be72db7b0c9fe2b8329125e7dff0489a8e900a5f14c1e6e48604134264", "0x00279702b135d144ede943195269c00bf620f058bf0186ce9fff3cb38b22245a", "0x02c9c3135cf64b89eb5b714d7b2ebcd81fc7edae637cc6116591df208b6b2583", "0x252e78b4838ad5007f518bb9c6a4ce501871f71128eee3f0c9784cd64b183fbf", "0x29a7d554e9ffbee639867842fd0e7d41ea9b1bc9621b654fcb398f71c95b668e", "0x305a0c2c2c4d35998e9913829f5602504363f21bd720347350b604193e79bc3f", "0x061d78e1953d1943e2d968335b73e15fecef89075e96c943d39702b214ddc5fa", "0x261f975babd7692822473b8e39f948b9cf98730a9785de393179d4bb99dacdc8", "0x1e3d6cef37f9bdac23d1b381a6c58d0ecf06a6ebf58dfa7a995a443ed7df68e9", "0x1d6657d791831169c56b6e9a201f8b7b240246a2d0f854430489b983454032d4"], + ["0x1d8005df48c8565987dbb442b482cae5bfc10ee486ecc5b670ce861345979d1d", "0x1fa772ebde6f3732444623d67fe991116298f8f30a2d1010c8ae6132a3d6907f", "0x056a8ecd232a674c63d7b603ef8cd06321c560df2fd3f6c2649af576467fd798", "0x2646341eb44b4800d56084cb48500fac48fc533891f557e96784cc6004d8928b", "0x231f2c98bda8d48bb4a6d9c98bbbc16027235a22a1ed4f88bc8d3a6e582209f2", "0x1cafcfb62926fbc04857b0bd7d7392b8d8add16b5cbefb54b4d5312826e89942", "0x0b7ab1ef17ff6235f7737f044161902f03d594cf4a0cc67b4ffb4711ade1eb0f", "0x179a82b77f2ccb94b38eb582ac4abbb16df429ecc22471be73cc7766f96d9948", "0x18b63685f6fed2aa1904856378442151dd1fa01c7ce6121d23e1e9ee20b42558", "0x0a27a8d1af6a0460ae1724f32f21a06b036668d0a863be50fcc47fec5763ce93", "0x186756775058d09c639cdabbacd01bf3c2744152156fbf7e8f3e999fb610ed38", "0x08bd9ddd192d797a19dd1da049beb39fa6596598a27031ea1c2b28966d96180c", "0x194184a825de9e9b63ed7a7bd071253ef5903e1e75a50536db93c26311a72017", "0x2e08b28bdcc417d9643b3008085a27f4a9876792d3915c8b9da3567a6dd6ce82", "0x28e55b0bed59191216d5dbe1dd05b22c009b079de877fd54aaf5401d2c867e02", "0x1c89d8f975f0304282ad8f7bd41c12c3b18ac6b80e4065fccda423bbb3ffa786"], + ["0x28122254823f8926acb7e98f557e796282e5e1271618858e76d49d0886da16f3", "0x2e63f1740332f57e8317f2592ebd8db0812714d6604132d525e33e19b3c98494", "0x0098b740976c2a1031e75132e050bf3838b739d061582543c1c7f95c152ee262", "0x06f53c79fed9e09848e112a0742d8ae84a04bd9ba5aa2765b1e5edfb1602140f", "0x1fcea89286dc1db61fe1111606af396e98cb53dab5199750aa5e5d11561fb145", "0x0a12e162620e71beeb203be56594416b083e7e94eec23e0f44a5ffe9e159508b", "0x1b1bbf4e9f706051716a0e28990caf17573086a5d818c038836696808b12d8e5", "0x089efed00e9d993f5fc1d5af2f2b5d47a9b70e6d5a603fbaaa8f65102123efd7", "0x2b202e1d2626c6793d68aacf9c3a8fffb27cdf5a0b83ff8f3504f9ab26a43d15", "0x03048a265d0eeb40e5a531633ac22bb825f75cee9036e66a061be3d4d248c862", "0x2532dd7487fcae0dc3a7ac50b80ec330c6fb6d4cf885f1135988bf6dfc010a6f", "0x12cee8e3d1cac1ca84517ab3def487c460aec058348ff220c801b78979af9e61", "0x21c0d1874decaf90613183ea827b91c1b2951839f71f329cb9c9b0753ffaefee", "0x017e9ed191c5641d768b0e55ec0d4a85f6e5419d32f5668d397d5b6cb805387f", "0x0c6c9ec31c9e3be0744919fc555c77c0c125927bd16de2807712b35ca26dd045", "0x20829ef3df9c183f8965e49c8f315c2995a6446a76053543eb750145f1a77400"], + ["0x2414d4aefc7b4857df681328e68a582d23b2dcffd579a8e6aeed6c61050e05cd", "0x1202e349d1d7b805846e90834efc911eb6b10c2a09eaeaa29ed288bd779b14f1", "0x024b96dbebfab6d23fa32c2c8e7758cb240bacd8143323c53cdb48dc8b65f8e4", "0x2a3c9f55afacee735a1b515526426384ad044291f7691974d9c05c634b43947e", "0x0f7bfcfab17db34c144cee44636bdeadfab44a6bf4fc8ef384ec89a4ae9ed209", "0x17203c4d2e1a428a17be2c27d1c4c5960dfc6aa36f22bdde8be56a0cd44e71ab", "0x22a8ee74367413eccf7aa03fdd420c6bb6255a6dd82081d6b14eda9a9752329b", "0x21e25f0a7f8edc38de25ba605a86cc08e08ccb03e77c5e0b9edabe74768b60c0", "0x06a78dfde1458ee341a089c15f953a2193527dffb43f552cdad595da7c6fecc6", "0x03fd94e51bbda6843d31a282530d54240aa496165d644d5d7737b1e5a7d60d52", "0x02efe529db1de3c01d6fe7fb8a71f1eaab6af1641fb1f7aad4f2b88cd13c9fe5", "0x0cab504b22a3573d09509f85d3fbd94e94417acb25392342bacd684006c37185", "0x1cb33ad2ba7dd0c2063443432a847bccce775a8daf868e0c474905a4fa36d70e", "0x0aaf37d1f53dd0556e347ec705962379077cd543198e1c27593f4454521261f7", "0x2a607facd3936fdd0e84e9bc3e4b4bac86e8102c2b5ad15cae550d28b3654e73", "0x14a2bd5a56f87009db981546533202f3af812d2ef4d6b037f2830853b9f9039c"], + ["0x2f710c72d6da19c7d87cbffd55665b472b0265d13e2326a9a33b96e95d3746b6", "0x168fdc32d4aa8dc9034ad4a4fafee89f0ed5c980d3db424d38f8ce5cd04c237c", "0x15bbd5619f0d59790804f2b9b37e069fc909a2796d1f77d0c62609deda2d0278", "0x1e16e9ca2502d696023bce3427244ad6553ce86bbc4c349a34ba61067c6b6d6a", "0x01dd0a5502743aaa9f583bd0ad35de13ad8d5fc98f1961f2612ad4c28fd9f9fa", "0x0ed2cfae7b36f470a7d1f6940f914e8ecd322bfd6b50f9ad9f6a2226e7a95db4", "0x2c785f9d8834f5cf5d08f106d5f9918340fd414abe24f0a9ff2b8e0492b44d83", "0x0d8dbc3fc854c0665c30c48846d7bb0eb18d3d78a4f70fef07f242e45b865eaa", "0x22f62e45e50084696ac2512a25db9925244cf0214b6b543d3a9f83b8e8e58ffa", "0x2f26bc13ae48520a439c9f546abb35a1222a307e38fafc3e7ffc843f6c77d7ad", "0x0af825f7ca24b4a285f544762d9defdc99f2b85c1b89fc5ff2079d3d50e6d4ea", "0x160590968429f480f55611c6448912fdf423d37bf483c36acccc1ac9a29d2a53", "0x2bb32cf60f8d469edb1b6c56493d4c9338b4051ae2514d4b6082ef18b1d5228a", "0x2a4a72e9dfe5bf25f6fde750a1847e5b44298ba58fb504be57a595e7fccdc404", "0x0c509a4bf48ad76e90410bea34a8919741608bbbb6b5503c93e732036f079d12", "0x199733da4aeed8d6cd148461617e8e46de22d3720431fc1605619b12a7fd4e2a"], + ["0x2e285441d0bed90bb41d6480836850e4d76da8211b04a236dbc7c3c30320c00e", "0x0b9ae9f5ee6ad70a651b4b66e34f521b130d18c49464d86fe5d4b1820489028f", "0x04760054bd5d07132548bed7657f17c61c038ebcdfdd4025c7b802e08948e108", "0x02a4c6d3259779c396ef8173ae5fe87bd611dbe25d1c048ada96306db1e3a40d", "0x1959db01f5c8bb0cf483490373e75b0451b87b43e59181be0b6016674f3f5efb", "0x1849cd0910d72eacc32d891b71faf500bcb93e1cef2504af443b94f8b1ce7212", "0x04b5dc2057b88170a718a102e0ca9177afc757ee26773a0290c6bab159ca4fb9", "0x17bdf338072884b522ce3c50ef4711091b9daf48a43374bdc0a830c37e5dcdc8", "0x2d9379e69b178208b8496b8a0a0a90d578b21f090c53042be4767e3c10d3b40e", "0x014057d02e5ebcf33c166e18fe904defa9e342a19e88d42336377f1c5e67ec30", "0x17818dd0254b291d0d8f4f1a458c6a21d8841153661812bbe986b1403cf270df", "0x1c95c2917353c53b4cdb7f750a0fe86ce10f8d5bdb018032d3f793797d7c0a35", "0x02495b3c1bfec60741808149333fc43f04d79dec56582c292829ffdfb3c1a3c4", "0x2adec8549dffde7238b2bda6e7732990a911700c8d35288baa39e67015953231", "0x178074303b90d8985e376584b8b8dfb7f952f8f4cf84d815f90baaa3b644c4c6", "0x1f5fc060028ba07d11fc9477f4faffe79a81040ea9a04c568267644895e6737f"], + ["0x2964901a2b42e9aea1a6593662aeb9e12077a287434bda4ec2012e36a19dc95c", "0x06c2194af72fac58ca13a2a5e3223104ef49a540fd2eaea0d67a920d8567040a", "0x0a5494c9bcfa06aa72c36fd22d98fe72dc14dc0e4e74e03d1755f38ac34050ad", "0x265ca211180b012c378e0198f0b5f7758c155e3675fadf92ca79156bd56fe339", "0x21f659fedaf6c2617f17d637cd6f54a27782f4e8431f87af5c8591932ce7dab7", "0x1e463ae3f4c3bd047aa1049f4f091a2f1d5d3550e3d5801fcff68f9a5e6828f4", "0x27412191fa2b2e5327a11d290e4b439a4124f48145c61ff4ece8448a4373eadf", "0x0b3a769c8b371562260395ee4f348f88bb056a2f0ec0f98e4e633bf7d943615f", "0x1adb4c87433d866e8fe5ae26d01477e3962879c20c8c3a170c0727167c06d0b8", "0x1fc26ed027db7b9e7241c2c760176662f634ba05a9ca7a850e184ae588cbe215", "0x10175fb6f81b16436af30682f36fbab396eddb7829a50e946c75f27e260987c7", "0x23d300373bb8ebf7dbcf314a3c0b1fdecd5cae23f7e7bb915bcdb6a6782b57fb", "0x0f0417fa6237167e741525261306c17664dc3efa9247aa0d4bcfff38e89dedee", "0x1e8fd20a8030fdd94e2c4353d8f82b4b212bf887bc59615814890b0f92a47d90", "0x18572826385dfc6eeca4d3c71d110b04abae013c5450d9e4947a3d019bb41b6f", "0x208b7c8c1ff8422d4a1bd13a02a94681ce217d925f40d2875f73def14de7a220"] + ], + [ + ["0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938", "0x1440dc2578f44694d18c25f892d98c23cfdb87a772200020e897823d4bc84d3b", "0x23aeeb0c6499b84bfc32ae3c42df9728798fd2ef774f1518b870bc57d1385900", "0x1ed9d3e9276acb7b4dae53eba148806fd9bb07b2dd06187212fab7dcbe63d72c", "0x2ff57f3f7e95b03411db790a86647467581197124d217520ef2e6332a5b35185", "0x15faefbf8584a38969b4a719ffe5f02c2191a8cceda0b775162203d30b80208b", "0x1e6eaab1191593de0d89cbb2399ab8aa955d829ad959428cd539be30b72fde9c", "0x2a3bb020c8a50d310ef5b5c77cc408b077fe2481454754c4568ff668fe5f0974", "0x051f815c454b6015c7ebf90c297b90e9604cd36acc6af07f99b5e51fdeb32234", "0x28b75c2ac167fdf184725317c7bbb8083e5ac5bba937bcfa6cefcb69e4048bf0", "0x023af324599683d9b71b61d093d63dcbbd97e44957333d2697fdd060c1e4b585", "0x05a07868a7c95f50a015879fe7cdf1eb6c317e4d489d4515208ddf40a32329ea", "0x2c5b4a65bc55ac5fbeebde53ce5fa68882faed2a92a7b3f5732832c72f7f2c30", "0x173f895e472c4eb16a2aff3b8e0417fb32b83eb1e3233471c76a0550505d0607", "0x206cb038cc328526d0c3dc5af19437d83219751c5ee8f61b0e9e2f5881366be3", "0x0240c57897161666f28d000b88d3353921d967420f401ce86bbee42be287a4f8", "0x1aaefc2e9925fcd453996fda804063fdab276b37c5f51dfdfef9255b4ec10cc0"], + ["0x130fc54477fd953377fc23abbd7a41be6764892a8787c759c1440fe0133c852d", "0x065e134cb8d84447d6ea1e17932bd4a341ebef2568313c24594faf9d7eca2110", "0x0e76c40392bd5f458bc187be54099312a0fefff44b441637020eb92670a6fcf3", "0x0b981765ecae69dd7af3b10ffa424b8aeb206cc4f49257265c6753b1cc54ebcf", "0x0e4fb044a9fcb4087e351341f25d98b1399b576e2d6654534f348219a0acdf86", "0x303e39ca88e8da6e5c963564712df8a7f8501a7af4a990e4ccec19e5f8fc805d", "0x01b77995dbf30cc55f9d4cd4849ced949349da81239a015440fdb38b876abee5", "0x23643add30be204734d029cf034c958144551060c1901c420a28c9688ec36a80", "0x1946a26ab8953f9be558105fa5179f175e76a24429dad5d532c2ceb3cfea05c9", "0x248b533f875e5ee8e751cefa4b1d0732fcd30151c3a5cc4abbbb1e93b4655d45", "0x2e7a1c51da61dd214a1789d6f1ee2957f69d21b1f16d1f9458eb25a406500bd3", "0x2065e374edb1f3cbbd2919dc04d14adb07062dd01ec1501b85522e7e0faf925e", "0x2f36535a83a09cf09fc38a20a725477aec56668f034a364a9f4a5605fffd33cc", "0x1123d3c97ff8e6b589d118bc40ca0b9ac12ae909558f2582551f7a42345b4621", "0x160b30c874d9c06704c92c266c7a5b7fd966a62a5db008f1bffdf443b1099a82", "0x1361d27c42a7b4bd6eaeb98a339592616c0d4d8fceadfdb16468162bdfa88d46", "0x00f1e8f86860c3b5c78bc14dfb67d22c6beb8992123658842f23f75ae3a92e99"], + ["0x2c9c91f48661771baeef6774578a78f69c355c8e907156fdf26db39d2446413f", "0x2c6b133e80abef84904fa4a75f968fbaabef890286d5fd11b87a1e52b7eb6d0d", "0x2ce8546cb59f420ede61692e764e0e9f6715b16a2c8047cd8131c97646f50d24", "0x0adaeaf28776b813d518f645c793e57bf16067fd80eb921dd5a67e895646c9c4", "0x2086a01b816438a2a41c59e43d73fa9aacf0c24e4f6bac229d65fba59922554a", "0x2348580de49aac01ce8fcb5aa2b467f6787dd8a96ccecd6fb47df7d5a4307398", "0x1fb6bd6df650d27e8cac05ac0b45eef0700e308b29b4bd41eecff58027edc45c", "0x03e9718237c1700d7dd213e026f307e8000b3851467fed9e6f51fa5020c2369c", "0x00925af35a3366801ac80a31d63f745fa807bda10560345ad572bef4cf2ce0d6", "0x0f8692d64a5b69a956c4e2006bfec344477fdf5f0c9aab866609842b9d75269d", "0x2bdfe7eb4fa803bc1dc0052a46d850ee3e091eba8a7f12579682f6f6fd5044d4", "0x13bdacc137bbcf51d8bc9d281931d6e71122dc6e93e7ffe8b835e3393775c3d4", "0x07d78ce0c1c87391a06a06c83d300d52524b29f183884e300e0eaddacd05f068", "0x0984c132b29a05f2b506ca07c06fe9a6584f36bb87506d2d316a4f353cac5f1f", "0x1b00faa85136b1bfc496e0ea9a6284cae525aa96612ffeeb514808955693879e", "0x19e1e46536704ceceac3eab991bd806e347be40a0b7956dcd7037352fdbc4347", "0x19c2540bbb1cd4e08f105437063c945cfef28ae9dd50b97e0b795f8dc5ae34e2"], + ["0x1dec0bafa3e8190621e5e095ef751ea03c836dbb8045b2a73f8d397cfb815192", "0x27c72332f59a00135baa94bde294911d135d1d95f53c52eb8b3b95594374906d", "0x16e64661144d816885b32f3f7809703477788268d57c14b1d939a26b29cb7ef3", "0x2018db386a3e4e57eada8d91408b155061df050140fb22f9a4f34fb4e2d02428", "0x12263b7e3f3de60899a2c22fee919972cd79dc289a87f31f1b44baf2439dc87c", "0x10e420edcb6da76170b24d777ce9d31612edb1593ea6d30e8cfdacfb6974f991", "0x0ebcb358f95f84b719c631d4045cef03ac6fc238f6834522cebd02e47411bb6f", "0x0c48e2f304f730d48e83dae5c78a46188500bc8040a49542eea5ef1a21b9d222", "0x00e766f03afbb7af630eaa8aff4fe60f3810f30f3f4438498efe0186333dadc0", "0x1b8a7909d7e7bd4f0bcc8003968e384ac2e8b405ad05cf610364d3ecb982db7e", "0x1d92e4213d840a330ecbdb08693dbf9a971bbd6229047eb88a03f334cadef227", "0x0d3b3fb86a44b7422429a249884c85644af1975641206e610070c02ef5a9f4cd", "0x25c7e8faf6c48a156cb91d81a997c6673d32694a3fdd64f5e9594e9f504bad83", "0x2d7af834c9cdf1b38c8cfed218f1ef0ce0b9908de9e7aa7a5510c4fb917a0281", "0x175af5e50e5685ec2dbb1cf7a2cd25d45680f6cddf68d7c0795dec98b87f6a71", "0x121f4a18d7b7d9650aab625ebe8695a8079439f2ab00c090279de74726234e6e", "0x21f08f9b3c23f3a02518114a96929b6d1056eb4d1db147ce0c8882e1b0f7bd1b"], + ["0x0a5f52ad6ec4a8aa377d8dd2ae3aaf6eea0c68c63a1d034fbda67133ca0b85cb", "0x087488f735b1fe2fa3c6c7148c4968e7f3479b1418a1a566743c1ca215dcfcfc", "0x06cf0db92f86b2732ee5fb881ef0176012dc4adfd849b9be4de17846a6ce5d99", "0x067c4411745db6c6aa659ec737a586a8f4a1cde0352e30aa0063794865fc1c04", "0x19909241cac50288c0d12343e0c12cf9b9790b405ef0a9001aa6be0289063aa9", "0x01d25b94bb7c49c0170ee1fb2a5824b70e4554bcc54b6c8f8cc0cc9d74f19a5e", "0x03274e735db2faf186787528254272ee01967e6ae9d825141378b8354d843965", "0x0cac320362e235b458d6d364cd0fff914f3c056adbb038dc2a861a49f7f70e24", "0x1111ed7a66ba2ccd4bea0d43eec86ea35ab40253a1209e3637f103dcb84fc429", "0x13e736cc70b7c828a38dd6394ece76b9ccdae2ca4f43963432502fe8c2ad19ff", "0x1f2805084976b142f7c74a416ff439ff1bcd8b8e7b0570130040754a61b71912", "0x27aa50a0e5d5588c1486e8e7fc8dda65489fffb866756c218f87e7280cddfa64", "0x1f3cc6f65d9d34370825a38fd1f48f509f7c56171b9e7a624d9b0ecdf6ac4eab", "0x1b11713791ea4cb2e17c8c5867502043d0a8cf955384c1c793c506b75fc0db29", "0x104560e95c49febb7a030862edb3a33c2b2a3d414b0536b2e54e25ab36e8f281", "0x08c45f3c4c486f6b5378c779c607b517200bb70b5533bdacef18519f625b925b", "0x2d2193c677bbcd56a74fc2ae50ab4f2cc69aa77ccfc33c7707452d5adac77edb"], + ["0x20ab7394bfdab344cbb6f2123800a0e23508e2125bfe795ab4a767cecb4d9306", "0x19f0e2e141896eae6d56d182b687b8a6c64cbb59e031b749f35822fc7ee353fe", "0x18f754a95b0af0e4706ff9024bb135164abd6fc16ee40cc2d6852d88a2ffc9f7", "0x193fe0e9b48010fa319c33b86b6b18f428f323fa237ca918a38faaa91ba49567", "0x011ff091dd551b6d586203ee0cafae2f7652e923aba82574a53b632a066f4884", "0x1da3e00601ca3fc0d90b197bd2a474b46efe3aff3b2cfaf1ebe15fa1afadf2db", "0x004ef41945559c1fb0b2116cb2be1f043bfce8dbc96feecccda47cbf68be59b5", "0x2f053fdf1a72d6ad8c9df97a04d637916f25e3425b6dc33e99ca7cac5cc7e4c7", "0x1daf74842c7e79104349ad399592c5c4cce16f79e1a86f50d941598772cca953", "0x2ae8da8d0b129a22f834d0d234c8917c2f877ff00dc16215498d4b748fb40df1", "0x099b0a6330926a4a1564dfe94f9a1104bb8374bb518a89de08c591c17dfaa059", "0x0b9aebf041146c119199757ea8ceee5abcea9ec42cdb28b921caf21e84847851", "0x055ef271e388278b1aca34d3cb00116bd6f7cb584b3c69f0de2a7afc8d98deb8", "0x26fbf1a351963fbbdab590dbd760ce6284273525a1b46c41f29226c65339f4b3", "0x12fd67863b2e03b6fb45224fb041ff280e936742b54c8e54d3823e090e144169", "0x00600cf26635b2d546431507589739010d1b757ceaae617bf95b8e1efa98643d", "0x0f528f5912be49455d4323b259e30ce2984d8170601eeb4bd7096b47353ab7fc"], + ["0x110ea322b0c26476c67bfa2c1b9d1713f93b3b9cf8320ce0dcd4b64288bda07a", "0x299c47f1e3ecc557ab1c9abe36f0d2ba0ece01051e07f0858e97a9ce16f5664e", "0x1cc053a6a4d6f96da77e5e73adb9d49bc4d0ef2cc2f69fade48040b7f8d71386", "0x09558ecc58bee4f3c578f62489dd900840a9889096c0a62114aa2db045a1d033", "0x093d7d5563e3ccd0b5f15a9b093fe6b863aacccf9af11ffea9b295b7dd42b1f6", "0x045dc0579ca66e7e096d4dd86b882e68af2d35d70cf5e3b1783caaa0ec424253", "0x0da02f6410e24058a1e90412cd5302c57197f7b1af2a99496f9cff3ffd58808f", "0x2dfb6dd598ada57ea71a8d68e6924608f0ec7838808688ee4b3fcd521f7be6d2", "0x1057062b40bdcf1fe2aaef45898c871146799a92c87d0fce64302d6bc83172df", "0x26e6d18aea75a94861a02333b5364ceceaa78adfbb742817218ca3af607b910e", "0x0565b96659025935d9c025c7ab20b1611db00b67ecc51426b342f8c7a17fed83", "0x2776bde52a1259472c1cc020e719f82191dec3ab7699b7d0fd769dd3fe392997", "0x0c1a324c49d15f87931821989b8c8437ea9eb46ed3aacf8895fd1cc311053e60", "0x27e68568e9cffd07f9253ef9dbc356251dc6b2d6a903d6c7046b5e90e1bcdc9a", "0x1db0e7e01722aad210e5296c36e9103e82d15765c318134d177146a1d9fd5358", "0x0aef8a4e47d5ec760e0565ae7acdabe7e8e98972de86dd2f447aaf216ab4cc17", "0x08c00c4e5b3467f01901f64f9f89c15bb0b90918d488b730cacc3296691e9200"], + ["0x054eabe6131681fa01fbc6dbf3e7d53595d0f8809987182142b890ac8af89cbe", "0x1a4befe11c0230c62de44ffafea0de903ba328c6d67af73680312b68f9acffda", "0x01e40665f5bb8c5c0dc9c11f39d47e9d33e717afa31ba74f92f8737a55efe134", "0x23c4abfeb83192362aae21b2e9ee5cfc765bf1000f798c3ae70133556abc78bd", "0x1669e44bf0223a77f48fffbc9f4f20b5814f6185ae11a210f8fdfcb5f71d603d", "0x2d5b3f523a9668cbe4887881bf7b40184f978713e358de270d87a600e5c5c92f", "0x10c1856f282f556d7cf6d4a293621506724ba6d3c582e4c261842f2a4bdb0ec6", "0x22cc4349f6baa3a8e0b61fc40ab97210e4bd3b3dec7f05bb8ef839c84692afbc", "0x12d019e37cd1bd76fee065bb7380a9bd8331a4dbcd1c9c776792bc19045c23b6", "0x27aa38fa051c434189df57bafd80723ee29bdccd59fbc1aa9af11891d3722e61", "0x0f0b9336db5c16d472fda3fb9ac13b13394c09ab9f484ecf6ad2060217b5896a", "0x275a6f59623354d71d38b4e200ce2e9676aab74ea8b8366fce33bdbc47d0586d", "0x02ebb6730d7bafeac23fc0b457ea824eeea3c55eca634bf24b2ac2a9a21483e1", "0x0ff215eb1e38dc67432e262df27eda7c3aa9419d5b6e299bd948e970fc35a62f", "0x247f9c7fa610322535feb0676cff549f1c177d0d39d3f1eee642e9253aafb82d", "0x2ad0bd9f71e2785084aa0b84616b7dada053207c418e65f4035be66a0cdc8c12", "0x0fc3ccef00d6a64080abbed4fed90b69c5e5803134c22b42cdca0a60f03ec33c"], + ["0x224d811fbdef8ec0a006d376a019e57c93bd596213a07823b7d4abce1fd8e621", "0x140762d30c5c3a0b0750b1400a86a9e2f5cfc2531b729370f3ad9fe1dcd43f96", "0x0976d7c3844bc8deea0f0337f89b2a131302ffd2d0a870181ca5fd5fb6d4fb63", "0x0152604201ca7df05994e9d5f058f3b6749cea63aa0cb5b4e1c3a00b6667958e", "0x1ab6d8fe39f87bb0ee5b883eea2725caa52c575740d5ac30b058f77113d05239", "0x1b62ba8037a83f1261544c307f019dbea1cc6a84d481ea8960b0fc670745e8ae", "0x239abc7c9f866aec28685c26f4e046a92d4360d36cb50890f422e18ed6f8a7b2", "0x02fed5a03200417664537df8fa30276b85d91bd2ed21de33d901fb4d82439857", "0x0996cae74d9627ca3c56c646095f39730274d25e82c42ce21cf789253d48a3f0", "0x304dbc0936862356e0024b2a32dfa3085abedbd337f22b89062be614d83cb083", "0x2a7de8f5ff476d81d393f1d274636ca956f05bd422bc9f3cc0fac0054b58cb02", "0x12c6f6c83a3530faced60c88f19a82fd12b7d938a79864ed20a545a52fdce11d", "0x201e03f1ff672629473a24f32d2d502acdc8fdd2883014de74c98f40a195b3e4", "0x118c3efe920c9c3f907c867743d35d2ccbff7c89e9c31bb6a17c552ef92b6c01", "0x0f705feba5f01cb27b27c104bc93f0c974f561fa26d5614f6a9d9e47d03bc655", "0x28d327a1c2d6012d9e69e9a3b4c11ad336d3c0dcdff4c5c84ddddf911eb645f5", "0x1bce67f4dc99547f2caff1b5c6d63e3ee2565a404190664533c1c65dd9d8d532"], + ["0x0e691fca423128a7d4afcaa582b1a94799ba1f5d2a5d53bc2bba56bbecb227a1", "0x180aa4babfa7539753d9c222e5e3359aca59e06bbefc7cf3a3ffa4f961fa1d5b", "0x2c54287eee368d5d52dfb068282d68e6b09b76bd1b5c9333b36848ac277744f5", "0x2f65361a4aed320fcd03a45c44dda740213571f3975ce20b96bffd960cbc6e25", "0x235bf178b5b56262d988bfc62708b0f85d57385cde2b4dacf9e6d592deb2afe4", "0x1794ec2b0eeb22fbd753b21fcd949e7bedb305f15a59eaf74a961c3046635f85", "0x083e1cd5943461ab505b200311bde4003fb4f7ed16aa58c8bc28f2e08e9f6922", "0x22a67a88776982d6a15f577dcf780ac485ebaae6fdf6fbe50b95ea266a7b6059", "0x2d1188d9e7e6ac24c4b2c9dc3dfcfb0fe4782d689f31b94b1fb15ef29d11f19e", "0x265c43c886f07d025200d56cd246b01670b3e82ab482f5879b10608cc05a37fc", "0x0f26d05e938f8317bd608eff0895d352dca712b653b1492f8c2ea96b26f9381e", "0x257689a4e22f6a8768aafe54218d31de4e409fdbf42319582536bb583313a395", "0x1edc57f174e1322b627c6f9dbe27ae2703c3f11c364b38188bf41d8ca0c1709a", "0x17b39f38636d5eff5e06eff089eb56051a602bc8f4bf1bb0ad2b2cd10cf07138", "0x306094ecfe63300b2f95bc98a0406c7898d86852330a7b69f9b04b5404b3eef3", "0x11afecc85590543bd2df8ab952be164670a3f32593e962d4bd493bcd3c84f84d", "0x1a8ba4f37d2315389c8560d74dac572a4447a02145516287053e6b9edefbca2d"], + ["0x189e279c92de0bab66707e6e6e310524e615cd4c6aacc665372a3b8e372d8ce6", "0x17208ea9cd4dc1a6deebe6a8d27a3181ab5f86c6a706e6fd007fc1eb678e9de6", "0x228a3488cabbf9f29efc0bce211a09031972b37f25ea35aca840dc2331a0cf35", "0x22122c6313fc9a4c6d0f944d3ce238272bf35147b1b788aab2b8dbceb6024c76", "0x06649a13e65023a713aaee5387d388e3609ae9b14ba4da10642ee0b7b4a16634", "0x1ed4c95c6283b45ec0cd88f511976f063ea2beb0695b8af7cc10589593a7978c", "0x15fe62a69b0438294395da1bfc93272d88797ceeef666ba2443f0c146f8ab7ee", "0x2b079a1d09b9d4a76d4e50c45c01fb7508b1c443a8fb21ebd28533e05def8864", "0x0c34496a7db5abb330b2f6ce9adaef5ae6e308c8fc2c5634097ae352aa7457d4", "0x04ffe27a92cb4300e774388edc3147ab9dcc4ab354c380f51ca7a2e7fe0463c4", "0x28b73b335c72f0774871a2030d444e5fb954979c1c568e112fb911a46c666768", "0x195821b99af2c217404ee582e29889072ba3cd994b74955c261b5ad364e5a9c7", "0x20a56fce37122b7400ab61a65eac815dd180f52fad2835f7fd9649063523881e", "0x235132912db2da07a4750c5ed5df2590e718404aefc48be6953432f64424042e", "0x1059db5e97f25826b0bbefd6bfaa6e9496c55ef5a88fefe9712691f6fbdf4298", "0x0b050c882073a581e767223705cd9510c04c30168c50ffe0c9875a28b6938299", "0x115e60c4e2937eb53c6e4a5488f801266e84d07547a0b1cd91b18f49efef9920"], + ["0x1d9bcbbd17b93b1913d2f79cdf12844441237206f0294746d93f8e5bdceb4725", "0x20007a0f5d37798789e0a8ef683536d9cf4831a6566eb727b41191d9f2974710", "0x16bae49f5ebb1ffe886b634d215de61ebf4f44d1cdc4f84670df8ed69310bfe2", "0x229aa5b547a63780d8d129e209fdb92f85662616d59da908075e668fd817822d", "0x29a5b1e4e2f25445496adec230ed53a35993b37630aecb5d76e56608d1b78cc6", "0x0bfce7b120068b9a30029dbdb36be01d071e8163fa1724f13c6ca89be29b729e", "0x20055568b33367bc12bf4aed7a0909c173588a5763c6a1a7598ba7c6c7e3c2a5", "0x2df1ff86644fcc42a1932cf15d314eed407608246f14a8098725ff7be809c87e", "0x1d4fb0f18f31c8270b4636e6b5d7a33e455b1050de1164182cfcb739cce965da", "0x19d6f1d110d9f873db002ff2ed828905bd6cc5d7921c238d7569daa9b2401d32", "0x282a01e8f2ce09cbdd862f98fdaba3f9af02443edc962cb34802d04477de1e20", "0x304b679008e8a1f09448423a05889e0df663a2b65055ca9ee5a99dfe13fb9a16", "0x1998147edaf3a92ab179c61ac2c36af5caf3e78bcbfb684cfea15db17b835907", "0x028a4572cb654261cf9358435923e65aff8f40393752748b76acfd2e3f5755c9", "0x15bd998c2729dbeaccc29b5d6e4f0fd96ad0a6037c84a1a1a785169fb336fb6e", "0x07cdf3309e130f9ceddd688af3885369fbacf6d8a44de4d450667c0d7641213f", "0x152d47acb9b06c9d12c2138a31416bbbbb991a65dc4d4f8ef91a3dd728e63b6a"], + ["0x1179184635a9780ee1312dcc3d15c7ef042b18ae9409670e28c4c7f0fb9b608e", "0x229da441a302929b0bae93741b7c75e11337c797e5721f9d7ee59235cda9a40c", "0x2e269dc78f70f9103b2bced3edbd41e156e64910887b4dddf8a3eee960f601b7", "0x21a91fed8bed14914c4fd491b6fa4dcbae7b3b8b3d456303af886c328abf4699", "0x29f07c1effc65b5589e1ca52cbe00bd65ef5e962d01200302670b6dce79eeb00", "0x0506a7a5de6b56ebec5e708a70a3cecb3a2cfd25e7a20ed495e295a93023c5a8", "0x0c02b148f4a1559b597cd320f00c02b96a7fc7c83811bd86a1e79cc3106b2201", "0x24a466f74e99a602894f421010f43a81c708b1b4ad076425190b85347f685b1a", "0x1fee18888425724970bd2897b54c7fa8e9c367dddbc8484da37864faff9f9056", "0x19711c41d76f64a371aba62f3f46710dee0c3aad217b7cb00bd12613b24ef52b", "0x2770d14a220152fa7083040be9b3cd38c8ace9e207073486bcfafcad706748b1", "0x08dffe684aa33f911d35e9a644b4bdbfcd15a4da49b6531816b60e8ce4f6b5e0", "0x1cbfab7cb05e2f28254b230bfce017f005fb4f2dd8935ad11765b347d2003667", "0x21d7269a53d3712b20543b0039aecc9466520133d299e8442000b33184a39e84", "0x21fde580a19886b13358f18a32d5aff685b4bd77d94f067f44f6e7a93350fd2a", "0x05232bf95807e48ad82a1eb4bc481e9b0720e95196dfe361f55c4d1cfc7926d7", "0x13602646b88ba31c0d544c757bd9181727835dbe690c30583a23f37f52fe5e3d"], + ["0x0e48466182ae8333af1891a6aa19736741ed0680d57c931ede13fc07ae82e88b", "0x1137b5c61b9684bec41e4dfaa76438256622a4378ea4e646a2844bbc85bf81cc", "0x1f4b85552b960d1c18b7b8f66af7305a6773d9b05faf51e0ed1a5f2ef2f95e7d", "0x0ba8a54914886fae16700c02efdf7767413a0bec5a19ed0cf0a7d8ac60c1f1c3", "0x30289c9678c0330f85cf8e362683a6144f22b841aa08f586f219dd9edaef78bc", "0x04890048fcdbde6366761cd58fcc6ac0a3360d9a64233d3ea4d8d6be8a23ec45", "0x1a4162e8a7704447be0c1d4d5cf2f777670f4841ea27ac2709cd6bffeed2cebd", "0x2e944b449c1369ce9766fa6f4f99a87630b5c1f2d63677a437a537d61b6c7470", "0x22d6e787f44daa6b6593dfde5576d2fdf5dc0447e65a1d5e7712e4e62c3bdcee", "0x0e08ddb69d5efd949c3d671e4e78e4fc7628c65ec1cfbc18ba6a101aa19dbf66", "0x27a573036509a8a29a90eaa34d2adaed5ed1ec6b207274f3c5ca23dad3880e57", "0x072372083f62195bcc2b5afab1038198a3f0546b62d171ea21c37c8f31551176", "0x151e0bc2110e4300dd82a4c92442c4751c65b294426c8c320c69e61831958ceb", "0x13f1acc389c4f8e752cc7e4b81c37ae2130c60df9c8b7e87dc5fb7459caf4916", "0x06823a9baa55623732b02fa270b2f887fd3804a85c1a7f2a355df3fbefc69dc1", "0x1e41936e6bc0c3ed665c2e2466ab9216b9973fe136d9f9aad95878c1b5607c6e", "0x065766d2980331a55c0a39d83be78bd127baee77d53a24268e064c71daaf2b6a"], + ["0x1c9d56f71c2f22c44d3a8c17bf5b40452e05471f0b6dfe9ffe4725eb29f73464", "0x113003c1dc7baf35e4536f95f4eab2f3badda2c7a1c6b5afc956234ade3e7129", "0x0d5fb9b0e1503f2b92697c473b69cf76d38fc12912e2c3cb33996dbb0cdfaa38", "0x2e164a524ee22eb5a8903fae1f35a3a78f882f3e3a9892b6ff4753baac934949", "0x01f9dcbde7d058134a510a711d036d1f1800e473a63b33a7e0fb04dc2e09e3af", "0x285b20799970b58c63ac9f4af564ce0f28209b61802214da5bfafd0cf24c6712", "0x0ce3dd727fdd11a8bc731500effa23763089ce3332cb730f9fe57146ee204810", "0x01079746ca51d9518a0c309296ca48206292798910494277be2bb65a6b134b3a", "0x23a85d4f91eda69f310c451d7d480c2f40c0d53382ddd3fcaaae627b9617170e", "0x240657d67f92b5e4261ace434fd286206c315565378ce8b81661523f0e6ddc54", "0x2384a384bcc2c4a17ff7c9e3e7d131d39173c431333a9c7c1d6fd7110e25902b", "0x25547b51b2c6874e4538ca9b34093b714ad36a8f356e4c78e0d66b1f190038fb", "0x0e59e1a990ec00f72edc37248349d7a5a6f7bcaef158110450f1e5985f0a5d99", "0x066c6090936f6b054f17dea91682954332b3e32d8f20a0ae171d417316d3622f", "0x1b25662843b0986ab1a4e9a766193efca47c70d49364f03d50c5edb5b5517ebe", "0x2647635477ee5fa9e7ac5983f92db34d7336646c63c63e2dd53d60b8714bd759", "0x26db2e85a9006ef5c11cd675a267d42efef9f5af90466b2aaf75eea8024b00bb"], + ["0x2234546f5e8541e8f72ad794891950b32b1cd891cc66775c5b635961642e9c15", "0x1b61468fab59c925f1986186bcb97965a858523a2582d434319a9525ae71158f", "0x011291ef514a10d6f0651e4ad0da5d4a489e3018927879da942defdbdf701ddd", "0x2df2fb2c2e321e3cce13d16091705a40c5c795f8b41b61dfd6ae7d97d63578b4", "0x01baaf8ff96bb2224bc34cf80c38bf13086f1e429bceec12090d8a7c376a9a82", "0x07b0d70ccff1b70dad9bb4b0142e3f6dc5bc95d3766affad378cc5042484dec9", "0x11f28ee5da80d19e31581b566a439537466d9ca7fdf14b7086830bd8ac13c4cb", "0x0013d7b03e8fc9fa647fca6cdca97146901df7c675a164913c2bd2a3b6ee3cb4", "0x2440e786179a7fbcfe8d29ab18d0fc6cfa383cfb747f7a2d15b77d82d9b0d9d3", "0x056149221712b88ec291fc218324142d02873cdd53199679fce4dfcb5dda9116", "0x162c5bbc81b44427be4e82c5e5253bd66c3054f5c5b73b28b29238487849a794", "0x178f2aa8df9a11ef33558dcc934971f7697e626cfef00ffcdeb6f3c9c1a7d10a", "0x24afd92f80e57788f40fbb2b79f29454dc485fbafb5a7263f462b7c84b4e500b", "0x0492ae5f5ac2a5102ea96e60ac8375553687151ae44042dbf5899232c8f2100a", "0x10dcb11f815c7e29c66be1dd3c5f7602c98e9fb1687c2d825b48789c521fbd0b", "0x0a11d587cb75d48544eec662ad27ca6acfec98f7a8b7963a294e4bb329b170df", "0x1dd6b095cb68459dcf6bdadd434aa81f80a55a08e6782c653a93afd8a65f3267"], + ["0x14c09d155c5d428198c234b553da338f227cbc12b0e42f2b9ce71563ee1495c0", "0x117fd528770fb17f718e29a2d91a63ec7c39ef1dd3039f0943f717d1804253d5", "0x120e7416d74308e24047f6828c68ae28bc288b216e8a25e8b0ebcf738480e390", "0x06995e510fd7669374c39d27903f342ac5bf8a1464807f308bef610b76cb693e", "0x1d814b3c17656c2327f94cc02472780b886b88394f1a5cbe34dc4f44ff134fce", "0x03b90da34b198cbca17e34aac98b169875ecf73aeb5c6ff1f00c9fe535aa9902", "0x27fa77a0658791e6755781c367683f9c9333a41364f7870edff1935a347485d8", "0x06d6ee531ba3fdced05e24cf9103d0962dd227f1de692c0199483e92ab24ba59", "0x1e507921be7c76124879ffce5b62dd0e96259e98cc64c27208d62b40bfe3e482", "0x0681adaea79cf457db5701931f0ee2f15ecbb159ed50cf746a15b85c6f8a5370", "0x1e6196147508bf2edc872c4e897a967778b119f69fb431a7f646d2018eab4010", "0x068efa35bc620124ab7d88990171bae4102ad21dfddfb387df0de0c8a3a189e9", "0x1b012224a4f050df841122d17c5ea4eded7c8ec2034743a432a2cee893976f29", "0x208d814151bcdcddfcf835a958c259a6477bfe4b3392710edf9d80787a25c5d0", "0x28f901fcaa860b0dc4192adef8ea4ae55af6ce432c85e0ce4d073e514ab24252", "0x1bd639879731823c871f9cd4714e3cc56a6eb19884b73664eed24b11929119a0", "0x1d3ee85f078fbeecda2473efc2bedd1ba7ec6f4795faaeae3b0de48d3080c625"] + ] + ] +} diff --git a/packages/app/src/locales/en/translation.json b/packages/app/src/locales/en/translation.json new file mode 100644 index 00000000..ce6a2e32 --- /dev/null +++ b/packages/app/src/locales/en/translation.json @@ -0,0 +1,160 @@ +{ + "ORGANIZER": "Pick your favorite projects, then vote for them.", + "YOUR BALLOT": "YOUR BALLOT", + "CONNECT WALLET": "CONNECT WALLET", + "SUBMIT BALLOT": "SUBMIT", + "VOICE CREDIT BALANCE": "VOICE CREDIT BALANCE", + "CREDITS": "CREDITS", + "GET TICKETS!": "GET TICKETS!", + "GET STARTED": "GET STARTED", + "CHECK OUT THE PROJECTS": "CHECK OUT THE PROJECTS", + "Remove": "Remove", + "Add to Ballot": "Add to Ballot", + "Expand": "Expand", + "Collapse": "Collapse", + "Ballot": "Ballot", + "Projects": "Projects", + "Guide": "Guide", + "MACI Key": "MACI Key", + "New Maci Key": "New Maci Key", + "You have updated your MACI key, and are registered to vote.": "You have updated your MACI key, and are registered to vote.", + "Invalid Maci Key": "Invalid Maci Key", + "The MACI Key you have provided is either incorrect or not registered": "The MACI Key you have provided is either incorrect or not registered", + "Ballot Submitted": "Ballot Submitted", + "You have submitted your ballot! Feel free to resubmit if you change your mind.": "You have submitted your ballot! Feel free to resubmit if you change your mind.", + "Voice Credits spent": "Voice Credits spent", + "Not Connected: Sign in to continue": "Not Connected: Sign in to continue", + "Unregistered MACI Keypair: Enter a valid MACI passphrase to continue.": "Unregistered MACI Keypair: Enter a valid MACI passphrase to continue.", + "================================================": "================================================", + "Removed from ballot": "Removed from ballot", + "You can add it back to the ballot later": "You can add it back to the ballot later", + "You can only add up to 8 options to your ballot": "You can only add up to 8 options to your ballot", + "Added to ballot": "Added to ballot", + "You can now vote on this project": "You can now vote on this project", + "Project Ballot ID": "Project Ballot ID", + "Project Website": "Project Website", + "Project Directory": "Project Directory", + "This is a directory of projects!": "This is a directory of projects! This page will be updated once the event starts to let you add projects to a real ballot and vote for projects that you meet at the event. Tap here to learn more 📖🧐.", + "When a voter is whitelisted": "When a voter is whitelisted they receive a MACI passphrase and voice credits.", + "Everyone will begin with 99 voice credits": "Everyone will begin with 99 voice credits.", + + "These voice credits are used to cast votes": "These voice credits are used to cast votes for projects on your ballot.", + "You can add up to 8 projects": "You can add up to 8 projects to your ballot and distribute your voice credits between them. Choose wisely.", + "Casting a vote": "Casting a vote for a project will cost the square (n^2) of the number of votes you want to cast in voice credits. For example, if you would like to cast 5 votes for Project A, that will cost 25 (5^2) voice credits.", + "You cannot use more voice credits than you have": "You cannot use more voice credits than you have. Since each voter starts with 99 voice credits, 10 votes (which would cost 100 voice credits) is more than any voter can afford to pay. This means that at most, a single voter can give 9 votes to a single project - at a cost of 81 voice credits - and have 18 voice credits left to vote for other projects.", + "You can submit many ballots": "You can submit many ballots during the voting period.", + "Only the final submitted ballot will be counted": "Only the final submitted ballot will be counted toward the final tally. Trust no one.", + "The ballot will be tallied at the end of the voting period": "The ballot will be tallied at the end of the voting period, and theprize pool will be distributed between all the projects based on the number of votesreceived during the event (via quadratic funding).", + "==============================================": "==============================================", + "On this screen you can add votes to each project in your ballot. Each time you click the button it will add another vote to your project. Feel free to experiment with the votes you want to give, then you submit once you are happy with the ballot!": "On this screen you can add votes to each project in your ballot. Each time you click the button it will add another vote to your project. Feel free to experiment with the votes you want to give, then you submit once you are happy with the ballot!", + "You can play a fundamental role as a part of the Porto community, both in supporting the local community, and in exploring new ways to finance public goods through quadratic voting.": "You can play a fundamental role as a part of the Porto community, both in supporting the local community, and in exploring new ways to finance public goods through quadratic voting.", + "During the venue, our Porto team will send you an email with a password. This is the “MACI” key you’ll use to vote.": "During the venue, our Porto team will send you an email with a password. This is the “MACI” key you’ll use to vote.", + "Below you will find instructions to help support local projects. Learn more about Quadratic Funding": "Below you will find instructions to help support local projects. Learn more about Quadratic Funding", + "The future is now.": "The future is now.", + "Project submission deadline: August 11th": "Project submission deadline: August 11th", + "Porto: August 11th - 13th": "Porto: August 11th - 13th", + "Voting opens: August 13th @ 2:00 pm GTM-3": "Voting opens: August 13th @ 2:00 pm GTM-3", + "Voting closes: August 19th": "Voting closes: August 19th", + "Count of votes: August 22nd": "Count of votes: August 22nd", + "Distribution of funds: September 2nd": "Distribution of funds: September 2nd", + "How does it work?": "How does it work?", + + "All Porto attendees will receive an email with a MACI key.": "All Porto attendees will receive an email with a MACI key.", + "This key will allow them to cast votes in favor of the projects that apply to receive funds. To vote, you must have an address in your self-custodial wallet connected to Gnosis, with some $MATIC to pay for the transaction fees and a valid voting key.": "This key will allow them to cast votes in favor of the projects that apply to receive funds. To vote, you must have an address in your self-custodial wallet connected to Gnosis, with some $MATIC to pay for the transaction fees and a valid voting key.", + "Voting is pseudo-anonymous, but to record the vote, your MACI key will be sent to your email address by the Porto team.": "Voting is pseudo-anonymous, but to record the vote, your MACI key will be sent to your email address by the Porto team.", + "During the event, you’ll be able to ask at the Ethereum Foundation booth about the funding process.": "During the event, you’ll be able to ask at the Ethereum Foundation booth about the funding process.", + "If you have any questions, please, feel free to ask any of the Porto volunteers.": "If you have any questions, please, feel free to ask any of the Porto volunteers.", + "Voter Guide": "Voter Guide", + "Ballot Passphrase (MACI)": "Ballot Passphrase (MACI)", + "What is the MACI key?": "What is the MACI key?", + "The MACI (Minimum Anti-Collision Infrastructure) uses zero-knowledge proofs as a protection against censorship and collisions in blockchain voting (read more about MACI on this page).": "The MACI (Minimum Anti-Collision Infrastructure) uses zero-knowledge proofs as a protection against censorship and collisions in blockchain voting (read more about MACI on this page).", + "Each voter gets a pseudo-random MACI key, which is used to encrypt and validate your votes. This is the only way to vote in the round, and it can be used to change your vote at any time while the round is active, so keep it safe and don't share it.": "Each voter gets a pseudo-random MACI key, which is used to encrypt and validate your votes. This is the only way to vote in the round, and it can be used to change your vote at any time while the round is active, so keep it safe and don't share it.", + "'Not your MACI, not your vote'.": "'Not your MACI, not your vote'.", + "Keep it safe! Anyone who logs in with your MACI key will be able to vote on your behalf - and even invalidate your previous votes. Thanks to your vote, community projects can access funds to continue building. Your vote matters, make it count.": "Keep it safe! Anyone who logs in with your MACI key will be able to vote on your behalf - and even invalidate your previous votes. Thanks to your vote, community projects can access funds to continue building. Your vote matters, make it count.", + "We know this might be confusing, need help?": "We know this might be confusing, need help?", + "Drop us a line at sponsors@Porto.org or join the": "Drop us a line at sponsors@Porto.org or join the", + "Porto Telegram group": "Porto Telegram group", + "using the hashtag #QF in your post.": "using the hashtag #QF in your post.", + "Registration": "Registration", + "Step 1: Get your unique MACI key": "Step 1: Get your unique MACI key", + "Porto team will send your MACI key the email address you used to register for the event.": "Porto team will send your MACI key the email address you used to register for the event.", + "Step 2: Connect your wallet and enter your MACI key": "Step 2: Connect your wallet and enter your MACI key", + "Click on ‘START’ and it’ll direct you to the voting website.": "Click on ‘START’ and it’ll direct you to the voting website.", + "Tap 'Connect' and follow the instructions to successfully connect your Wallet, (WalletConnect is also available).": "Tap 'Connect' and follow the instructions to successfully connect your Wallet, (WalletConnect is also available).", + "Once your wallet is connected, enter your MACI key in the field below and press 'Save'.": "Once your wallet is connected, enter your MACI key in the field below and press 'Save'.", + "Congratulations! You have just successfully registered.": "Congratulations! You have just successfully registered.", + "Vote": "Vote", + "Meet the projects": "Meet the projects", + "Web3 and social impact initiatives that contribute to the Porto ecosystem can register to receive funding. Within the 'Project List' page of the website you can learn about them and visit their websites and social networks to learn more.": "Web3 and social impact initiatives that contribute to the Porto ecosystem can register to receive funding. Within the 'Project List' page of the website you can learn about them and visit their websites and social networks to learn more.", + "If you want to vote for a project, press the purple button with the vote icon on the ballot process, once the vote is confirmed a pop-up will appear notifying the successful registration of the vote. Look at all the projects and choose the ones you want to support (up to 8 in total).": "If you want to vote for a project, press the purple button with the vote icon on the ballot process, once the vote is confirmed a pop-up will appear notifying the successful registration of the vote. Look at all the projects and choose the ones you want to support (up to 8 in total).", + "Disclaimer: These projects will not be presented during the event, it will be up to you to read and choose which projects you want to vote for to receive the funds made available by the generous donors.": "Disclaimer: These projects will not be presented during the event, it will be up to you to read and choose which projects you want to vote for to receive the funds made available by the generous donors.", + "You can choose up to 8 projects to vote for, or fewer, as you prefer. With your MACI password you can change your vote before voting closes.": "You can choose up to 8 projects to vote for, or fewer, as you prefer. With your MACI password you can change your vote before voting closes.", + "Define your priorities": "Define your priorities", + "Go back to 'Your vote' using the navigation menu on the left of the screen (the 4 squares symbol) and you will see the projects you’ve selected. On this screen, you’ll be able to add voice credits to each selected project. Each time you click the button, a credit will be added to your selected project.": "Go back to 'Your vote' using the navigation menu on the left of the screen (the 4 squares symbol) and you will see the projects you’ve selected. On this screen, you’ll be able to add voice credits to each selected project. Each time you click the button, a credit will be added to your selected project.", + "You can distribute your voice credits between the projects as you see fit, but voice credits and votes are not 1:1.": "You can distribute your voice credits between the projects as you see fit, but voice credits and votes are not 1:1.", + "This is where the 'quadratic' part comes into play: voting on a project will cost the square of the number of votes you want to cast.": "This is where the 'quadratic' part comes into play: voting on a project will cost the square of the number of votes you want to cast.", + "For example, if you want to cast 1 vote for project A, it will cost you 1 voice credit; 2 votes will cost 4 credits; 5 votes will cost 25 credits, and so on.": "For example, if you want to cast 1 vote for project A, it will cost you 1 voice credit; 2 votes will cost 4 credits; 5 votes will cost 25 credits, and so on.", + "Everyone will start with 99 voice credits.": "Everyone will start with 99 voice credits.", + "These credits will be used to cast votes for projects you have selected to support.": "These credits will be used to cast votes for projects you have selected to support.", + "You can add up to 8 projects to your ballot, and distribute your voice credits among them. Choose wisely.": "You can add up to 8 projects to your ballot, and distribute your voice credits among them. Choose wisely.", + "Casting a vote on a project will cost you the square of the number of votes you want to cast in voice credits. For example, if you want to cast 5 votes for project A, it will cost you 25 voice credits.": "Casting a vote on a project will cost you the square of the number of votes you want to cast in voice credits. For example, if you want to cast 5 votes for project A, it will cost you 25 voice credits.", + "You cannot use more voice credits than you have allotted. Since each voter starts with 99 voice credits, a vote of 10 (which costs 100 voice credits) is more than any one voter can afford. This means that at most, a voter can give 9 votes to a single project - at a cost of 81 voice credits - and will have 18 voice credits left to vote for other projects.": "You cannot use more voice credits than you have allotted. Since each voter starts with 99 voice credits, a vote of 10 (which costs 100 voice credits) is more than any one voter can afford. This means that at most, a voter can give 9 votes to a single project - at a cost of 81 voice credits - and will have 18 voice credits left to vote for other projects.", + "Register your vote": "Register your vote", + "Once you’re satisfied with your votes, register them by pressing the 'Submit' button on the website.": "Once you’re satisfied with your votes, register them by pressing the 'Submit' button on the website.", + "Then, you’ll receive a transaction confirmation request in your wallet, accept it.": "Then, you’ll receive a transaction confirmation request in your wallet, accept it.", + "Remember that as long as voting is open, anyone who has your MACI password can register a new vote and invalidate the previous one.": "Remember that as long as voting is open, anyone who has your MACI password can register a new vote and invalidate the previous one.", + "You can register multiple votes during the voting period. Only your last recorded vote will be considered in the vote count.": "You can register multiple votes during the voting period. Only your last recorded vote will be considered in the vote count.", + "The vote count will be given at the end of the voting period, and the prizes will be distributed among the projects based on the number of votes received during the event (via quadratic funding).": "The vote count will be given at the end of the voting period, and the prizes will be distributed among the projects based on the number of votes received during the event (via quadratic funding).", + "BALLOT (MACI) PASSPHRASE": "BALLOT (MACI) PASSPHRASE", + "SAVE": "SAVE", + "Timeline": "Timeline", + "PROJECT SUBMISSION": "PROJECT SUBMISSION", + "ELIGIBILITY CRITERIA": "ELIGIBILITY CRITERIA", + "Apply for the quadratic funding round with your project! If you are building tools for the Ethereum ecosystem or L2, if you are involved in Ethereum community education, if you do research or other activities for the Ethereum ecosystem, don't hesitate to apply!": "Apply for the quadratic funding round with your project! If you are building tools for the Ethereum ecosystem or L2, if you are involved in Ethereum community education, if you do research or other activities for the Ethereum ecosystem, don't hesitate to apply!", + "Remember": "Remember", + "The project needs to be based, or working with local communities, or in the surroundings of Porto.": "The project needs to be based, or working with local communities, or in the surroundings of Porto.", + "Public goods focused on Web3 / impact DAOs / decentralized projects can also participate.": "Public goods focused on Web3 / impact DAOs / decentralized projects can also participate.", + "Projects are required to have a focus on public goods or social impact, so they must have the quality of non-rivalry (the use by one individual does not prevent the use of others) and must be non-exclusive (any can access or use it). Read more about public goods": "Projects are required to have a focus on public goods or social impact, so they must have the quality of non-rivalry (the use by one individual does not prevent the use of others) and must be non-exclusive (any can access or use it). Read more about public goods", + "Public goods can be one of the various impacts of the project but it must explicitly mention how the funds will be used if they’re received. Example: Funding a free Ethereum course for a high school in Mendoza.": "Public goods can be one of the various impacts of the project but it must explicitly mention how the funds will be used if they’re received. Example: Funding a free Ethereum course for a high school in Mendoza.", + "Projects are not required to be web3 or crypto-native, but will need to submit an Ethereum wallet that they control as part of the application process. We encourage the use of self-custody solutions but any valid Ethereum address will be accepted.": "Projects are not required to be web3 or crypto-native, but will need to submit an Ethereum wallet that they control as part of the application process. We encourage the use of self-custody solutions but any valid Ethereum address will be accepted.", + "What does it mean to enroll as a beneficiary?": "What does it mean to enroll as a beneficiary?", + "Submitting your project makes you eligible to receive funds provided for the QF initiative at Porto, but does not guarantee funding. There will be a filter to the initiatives presented carried out by a group of volunteers from QF Porto to determine that the initiatives are in accordance with the requirements and that they’re initiatives that do not go against the law.": "Submitting your project makes you eligible to receive funds provided for the QF initiative at Porto, but does not guarantee funding. There will be a filter to the initiatives presented carried out by a group of volunteers from QF Porto to determine that the initiatives are in accordance with the requirements and that they’re initiatives that do not go against the law.", + "This financing is a donation and has no associated reports, returns, or obligations on the part of the project. How much each project receives will be decided by Porto attendees who vote during the event. If you are unsure about this, feel free to contact the team at sponsors@Porto.org.": "This financing is a donation and has no associated reports, returns, or obligations on the part of the project. How much each project receives will be decided by Porto attendees who vote during the event. If you are unsure about this, feel free to contact the team at sponsors@Porto.org.", + "Please note that the team will NEVER ask you to share your wallet private keys or seed phrase, we will NEVER write to you on social media or other channels, and we will not send you a private key or seed phrase for you to use. These are common scam tactics and we want to prevent these bad actors from stealing your donated funds.": "Please note that the team will NEVER ask you to share your wallet private keys or seed phrase, we will NEVER write to you on social media or other channels, and we will not send you a private key or seed phrase for you to use. These are common scam tactics and we want to prevent these bad actors from stealing your donated funds.", + "Unfortunately, the projects or teams will not be able to appear on stage during Porto, but we do empower them to use the hashtag #PortoQF in your social media posts so that you show and tell attendees about your impact on public goods.": "Unfortunately, the projects or teams will not be able to appear on stage during Porto, but we do empower them to use the hashtag #PortoQF in your social media posts so that you show and tell attendees about your impact on public goods.", + "If you post on Twitter, tag @Porto and use the corresponding hashtags to achieve greater reach. You can also post within the": "If you post on Twitter, tag @Porto and use the corresponding hashtags to achieve greater reach. You can also post within the", + "What do you need to do to sign up?": "What do you need to do to sign up?", + "The registration deadline is August 11th at 11:55 pm (Porto time).": "The registration deadline is August 11th at 11:55 pm (Porto time).", + "Submit your project using this form:": "Submit your project using this form:", + "The Porto team will contact you if they need to clarify something or if they need more details.": "The Porto team will contact you if they need to clarify something or if they need more details.", + "If you have any questions during the application process, send an email to sponsors@Porto.org before the submission deadline.": "If you have any questions during the application process, send an email to sponsors@Porto.org before the submission deadline.", + "This donation will be sent in stablecoin (DAI) via Polygon to the wallet entered during the registration process. Once the funds are sent the transaction is irreversible, so you must be 100% sure of the address you will enter and who has control of the wallet/private keys. If you are unsure about this, feel free to contact the team at the following email address sponsors@Porto.org.": "This donation will be sent in stablecoin (DAI) via Polygon to the wallet entered during the registration process. Once the funds are sent the transaction is irreversible, so you must be 100% sure of the address you will enter and who has control of the wallet/private keys. If you are unsure about this, feel free to contact the team at the following email address sponsors@Porto.org.", + + "About the round": "About the round", + + "The ETHPorto Quadratic Funding round is a collaboration between ETHPorto and Transformers in an effort to support the local community and explore new ways to finance public goods through quadratic voting.": "The ETHPorto Quadratic Funding round is a collaboration between ETHPorto and Transformers in an effort to support the local community and explore new ways to finance public goods through quadratic voting.", + + "During ETHPorto, our team will send you an email with a “MACI” key. This is your private password you’ll use to submit your votes.": "During ETHPorto, our team will send you an email with a “MACI” key. This is your private password you’ll use to submit your votes.", + "You can learn more about Quadratic Funding": "You can learn more about Quadratic Funding", + "The future is now! We hope you participate in this round and help us fund the projects that matter to you!": "The future is now! We hope you participate in this round and help us fund the projects that matter to you!", + "About Transformers": "About Transformers", + + "Movimento Transformers was born in 2010, when a breakdance group discovered that they could use what they loved (breakdance) to make a difference in their community, leading informal workshops and classes for children and youth deeply at risk of social exclusion.": "Movimento Transformers was born in 2010, when a breakdance group discovered that they could use what they loved (breakdance) to make a difference in their community, leading informal workshops and classes for children and youth deeply at risk of social exclusion.", + + "The Movimento Transformers emerged to massively increase civic and social involvement, in Portugal and in the World. Our mission is to increase the involvement of people in their communities through what they love to do. To turn this into reality we have three axes of intervention:": "The Movimento Transformers emerged to massively increase civic and social involvement, in Portugal and in the World. Our mission is to increase the involvement of people in their communities through what they love to do. To turn this into reality we have three axes of intervention:", + + "Volunteer - Which materializes in our project Schools of Superpowers (SPS) and Reformers. The Superpower Schools (SPS) project works weekly with 600 children and young people at risk by promoting their social awareness, talents and ensuring they are more active and participative citizens. It is with this project that this collaboration with ETF comes to life - our core value in the SPS project is Payback, which means giving back to the community. I transform you so you can transform society around you. Payback actions are implemented by our apprentices and their volunteer mentor to solve a social problem they identify within their communities. Here you will be able to vote on some of the incredible ideas our groups have come up with this year.": "Volunteer - Which materializes in our project Schools of Superpowers (SPS) and Reformers. The Superpower Schools (SPS) project works weekly with 600 children and young people at risk by promoting their social awareness, talents and ensuring they are more active and participative citizens. It is with this project that this collaboration with ETF comes to life - our core value in the SPS project is Payback, which means giving back to the community. I transform you so you can transform society around you. Payback actions are implemented by our apprentices and their volunteer mentor to solve a social problem they identify within their communities. Here you will be able to vote on some of the incredible ideas our groups have come up with this year.", + + "Associativism - Through two capacity projects, one focusing on secondary school association leaders (AELEAD) and the other on youth association leaders or community leaders (XLEAD).": "Associativism - Through two capacity projects, one focusing on secondary school association leaders (AELEAD) and the other on youth association leaders or community leaders (XLEAD).", + + "Awareness - Through T-Academy, an online community for civic and social participation, which emerges towards the democratization of knowledge and where content and training opportunities are shared in the areas of volunteering, participation, creativity, non-formal education, activism, sustainable development goals, associationism and much more! B2C model, where people pay to access the community.": "Awareness - Through T-Academy, an online community for civic and social participation, which emerges towards the democratization of knowledge and where content and training opportunities are shared in the areas of volunteering, participation, creativity, non-formal education, activism, sustainable development goals, associationism and much more! B2C model, where people pay to access the community.", + + "We also have a continuous growing portfolio of tailor-made training and bootcamps, aimed at young people, youth associations, informal movements, activists.": "We also have a continuous growing portfolio of tailor-made training and bootcamps, aimed at young people, youth associations, informal movements, activists.", + + "About ETHPorto": "About ETHPorto", + + "ETHPorto is an independently organized event with a Conference, workshops and a 48-hour Hackathon running in parallel. Bringing the first ETH event to the beautiful city of Porto!": "ETHPorto is an independently organized event with a Conference, workshops and a 48-hour Hackathon running in parallel. Bringing the first ETH event to the beautiful city of Porto!", + + "You can learn more about ETHPorto": "You can learn more about ETHPorto", + "here": "here" +} diff --git a/packages/app/src/locales/es/translation.json b/packages/app/src/locales/es/translation.json new file mode 100644 index 00000000..5824da24 --- /dev/null +++ b/packages/app/src/locales/es/translation.json @@ -0,0 +1,170 @@ +{ + "ORGANIZER": "Transformers <> ETHPorto", + "YOUR BALLOT": "SUA CÉDULA", + "CONNECT WALLET": "CONECTAR CARTEIRA", + "SUBMIT BALLOT": "ENVIAR", + "VOICE CREDIT BALANCE": "SALDO DE CRÉDITO DE VOZ", + "CREDITS": "CRÉDITOS", + "GET TICKETS!": "ADQUIRIR INGRESSOS!", + "GET STARTED": "COMEÇAR", + "CHECK OUT THE PROJECTS": "VERIFIQUE OS PROJETOS", + "Remove": "Remover", + "Add to Ballot": "Adicionar à Cédula", + "Expand": "Expandir", + "Collapse": "Recolher", + "Ballot": "Cédula", + "Projects": "Projetos", + "Guide": "Guia", + "MACI Key": "Chave MACI", + "New Maci Key": "Nova Chave MACI", + "You have updated your MACI key, and are registered to vote.": "Atualizaste a tua chave MACI e estás registado para votar.", + "Invalid Maci Key": "Chave MACI inválida", + "The MACI Key you have provided is either incorrect or not registered": "A chave MACI que forneceste está incorreta ou não está registada.", + "Ballot Submitted": "Votação enviada", + "You have submitted your ballot! Feel free to resubmit if you change your mind.": "Submeteste a tua votação! Sinta-se à vontade para submeter novamente se mudares de ideia.", + "Voice Credits spent": "Créditos de voz gastos", + "Not Connected: Sign in to continue": "Não conectado: Inicia sessão para continuar", + "Unregistered MACI Keypair: Enter a valid MACI passphrase to continue.": "Par de chaves MACI não registado: Introduza uma frase secreta MACI válida para continuar.", + "================================================": "================================================", + "Removed from ballot": "Removido da votação", + "You can add it back to the ballot later": "Podes voltar a adicionar mais tarde", + "You can only add up to 8 options to your ballot": "Só podes adicionar até 8 opções à tua votação", + "Added to ballot": "Adicionado à votação", + "You can now vote on this project": "Agora podes votar neste projeto", + "Project Ballot ID": "ID da votação do projeto", + "Project Website": "Website do projeto", + "Project Directory": "Diretório de projetos", + "This is a directory of projects!": "Este é um diretório de projetos! Esta página será atualizada quando o evento começar para te permitir adicionar projetos a uma votação real e votar nos projetos que conheças durante o evento. Clica aqui para saberes mais 📖🧐.", + "When a voter is whitelisted": "Quando um eleitor é incluído na lista de autorizados, recebe uma chave MACI e créditos de voz.", + "Everyone will begin with 99 voice credits": "Todos começarão com 99 créditos de voz.", + + "These voice credits are used to cast votes": "Esses créditos de voz são usados para votar em projetos na sua cédula.", + "You can add up to 8 projects": "Você pode adicionar até 8 projetos à sua cédula e distribuir seus créditos de voz entre eles. Escolha com sabedoria.", + "Casting a vote": "Votar em um projeto custará o quadrado (n^2) do número de votos que você deseja lançar em créditos de voz. Por exemplo, se você quiser lançar 5 votos para o Projeto A, isso custará 25 (5^2) créditos de voz.", + "You cannot use more voice credits than you have": "Você não pode usar mais créditos de voz do que tem. Como cada eleitor começa com 99 créditos de voz, 10 votos (que custariam 100 créditos de voz) é mais do que qualquer eleitor pode pagar. Isso significa que, no máximo, um único eleitor pode dar 9 votos a um único projeto - a um custo de 81 créditos de voz - e ter 18 créditos de voz restantes para votar em outros projetos.", + "You can submit many ballots": "Você pode enviar muitas cédulas durante o período de votação.", + "Only the final submitted ballot will be counted": "Somente a última cédula enviada será contabilizada para a contagem final. Não confie em ninguém.", + "The ballot will be tallied at the end of the voting period": "A cédula será contabilizada no final do período de votação e o prêmio será distribuído entre todos os projetos com base no número de votos recebidos durante o evento (por meio de financiamento quadrático).", + "==============================================": "==============================================", + "On this screen you can add votes to each project in your ballot. Each time you click the button it will add another vote to your project. Feel free to experiment with the votes you want to give, then you submit once you are happy with the ballot!": "Nesta tela, você pode adicionar votos a cada projeto em sua cédula. Cada vez que você clicar no botão, será adicionado mais um voto ao seu projeto. Sinta-se à vontade para experimentar com os votos que deseja dar e, em seguida, envie-os quando estiver satisfeito com a cédula!", + "You can play a fundamental role as a part of the ETHPorto community, both in supporting the local community, and in exploring new ways to finance public goods through quadratic voting.": "Você pode desempenhar um papel fundamental como parte da comunidade ETHPorto, tanto no apoio à comunidade local quanto na exploração de novas maneiras de financiar bens públicos por meio de votação quadrática.", + "During the venue, our ETH Porto team will send you an email with a password. This is the “MACI” key you’ll use to vote.": "Durante o evento, nossa equipe ETH Porto enviará um e-mail com uma senha. Esta é a chave “MACI” que você usará para votar.", + + "Below you will find instructions to help support local projects. Learn more about Quadratic Funding": "Abaixo você encontrará instruções para ajudar a apoiar projetos locais. Saiba mais sobre Financiamento Quadrático", + "The future is now.": "O futuro é agora.", + "Project submission deadline: August 11th": "Prazo de submissão do projeto: 11 de agosto", + ": August 11th - 13th": "ETHPorto: 11 a 13 de agosto", + "Voting opens: August 13th @ 2:00 pm GTM-3": "Abertura da votação: 13 de agosto, às 2:00 pm GTM-3", + "Voting closes: August 19th": "Fechamento da votação: 19 de agosto", + "Count of votes: August 22nd": "Contagem de votos: 22 de agosto", + "Distribution of funds: September 2nd": "Distribuição de fundos: 2 de setembro", + "How does it work?": "Como funciona?", + "All ETH Porto attendees will receive an email with a MACI key.": "Todos os participantes da ETH Porto receberão um e-mail com uma chave MACI.", + "This key will allow them to cast votes in favor of the projects that apply to receive funds. To vote, you must have an address in your self-custodial wallet connected to Gnosis, with some $MATIC to pay for the transaction fees and a valid voting key.": "Essa chave permitirá que eles votem a favor dos projetos que se inscreveram para receber fundos. Para votar, você deve ter um endereço em sua carteira self custodial conectada à rede Polygon com algum $MATIC para pagar as taxas de transação e uma chave de votação válida.", + "Voting is pseudo-anonymous, but to record the vote, your MACI key will be sent to your email address by the ETHPorto team.": "A votação é pseudoanônima, mas para registrar o voto, sua chave MACI será enviada para o seu endereço de e-mail pela equipe da ETHPorto.", + "During the event, you’ll be able to ask at the Ethereum Foundation booth about the funding process.": "Durante o evento, você poderá perguntar no estande da Ethereum Foundation sobre o processo de financiamento. A equipe estará no palco para apresentar brevemente este processo durante o evento.", + "If you have any questions, please, feel free to ask any of the ETHPorto volunteers.": "Se você tiver alguma dúvida, sinta-se à vontade para perguntar a qualquer um dos voluntários da ETHPorto.", + "Voter Guide": "Guia do Eleitor", + "Ballot Passphrase (MACI)": "Frase de senha da cédula (MACI)", + "What is the MACI key?": "O que é a chave MACI?", + + "The MACI (Minimum Anti-Collision Infrastructure) uses zero-knowledge proofs as a protection against censorship and collisions in blockchain voting (read more about MACI on this page).": "O MACI (Infraestrutura Mínima Anti-Colisão) utiliza provas de conhecimento zero como proteção contra censura e colisões em votação em blockchain (leia mais sobre o MACI nesta página).", + "Each voter gets a pseudo-random MACI key, which is used to encrypt and validate your votes. This is the only way to vote in the round, and it can be used to change your vote at any time while the round is active, so keep it safe and don't share it.": "Cada votante recebe uma chave MACI pseudo-aleatória, que é usada para criptografar e validar seus votos. Esta é a única maneira de votar na rodada, e pode ser usada para mudar seu voto a qualquer momento enquanto a rodada estiver ativa, então mantenha-a segura e não compartilhe.", + "'Not your MACI, not your vote'.": "'Não é sua MACI, não é seu voto'.", + "Keep it safe! Anyone who logs in with your MACI key will be able to vote on your behalf - and even invalidate your previous votes. Thanks to your vote, community projects can access funds to continue building. Your vote matters, make it count.": "Mantenha-a segura! Qualquer pessoa que faça login com sua chave MACI poderá votar em seu nome - e até mesmo invalidar seus votos anteriores. Graças ao seu voto, projetos comunitários podem acessar fundos para continuar construindo. Seu voto importa, faça-o contar.", + "We know this might be confusing, need help?": "Sabemos que isso pode ser confuso, precisa de ajuda?", + "Drop us a line at sponsors@ethporto.org or join the": "Entre em contato conosco pelo email sponsors@ethporto.org ou junte-se ao", + "ETHPorto Telegram group": "grupo do Telegram ETHPorto", + "using the hashtag #QF in your post.": "usando a hashtag #QF em sua postagem.", + "Registration": "Registro", + "Step 1: Get your unique MACI key": "Passo 1: Obtenha sua chave MACI exclusiva", + "ETHPorto team will send your MACI key the email address you used to register for the event.": "A equipe da ETHPorto enviará sua chave MACI para o endereço de e-mail que você usou para se registrar no evento. Se este endereço não estiver acessível, entre em contato com a equipe presente no evento se estiver tendo dificuldades para obter sua chave MACI.", + "Step 2: Connect your wallet and enter your MACI key": "Passo 2: Conecte sua carteira e insira sua chave MACI", + "Click on ‘START’ and it’ll direct you to the voting website.": "Clique em 'INICIAR' e ele o direcionará para o site de votação.", + "Tap 'Connect' and follow the instructions to successfully connect your Wallet, (WalletConnect is also available).": "Toque em 'Conectar' e siga as instruções para conectar com sucesso sua carteira, (WalletConnect também está disponível).", + + "Once your wallet is connected, enter your MACI key in the field below and press 'Save'.": "Depois que sua carteira estiver conectada, insira sua chave MACI no campo abaixo e pressione 'Salvar'.", + "Congratulations! You have just successfully registered.": "Parabéns! Você acabou de se registrar com sucesso.", + "Vote": "Votar", + "Meet the projects": "Conheça os projetos", + "Web3 and social impact initiatives that contribute to the Porto ecosystem can register to receive funding. Within the 'Project List' page of the website you can learn about them and visit their websites and social networks to learn more.": "Iniciativas Web3 e de impacto social que contribuam para o ecossistema Porto podem se registrar para receber financiamento. Na página 'Lista de Projetos' do site, você pode conhecer os projetos e visitar seus sites e redes sociais para saber mais.", + "If you want to vote for a project, press the purple button with the vote icon on the ballot process, once the vote is confirmed a pop-up will appear notifying the successful registration of the vote. Look at all the projects and choose the ones you want to support (up to 8 in total).": "Se você quiser votar em um projeto, pressione o botão roxo com o ícone de voto no processo de votação, uma vez confirmado o voto, uma janela pop-up aparecerá notificando o registro bem-sucedido do voto. Olhe todos os projetos e escolha aqueles que você deseja apoiar (até 8 no total).", + "Disclaimer: These projects will not be presented during the event, it will be up to you to read and choose which projects you want to vote for to receive the funds made available by the generous donors.": "Aviso legal: esses projetos não serão apresentados durante o evento; será sua responsabilidade ler e escolher em quais projetos você deseja votar para receber os fundos disponibilizados pelos doadores generosos.", + "You can choose up to 8 projects to vote for, or fewer, as you prefer. With your MACI password you can change your vote before voting closes.": "Você pode escolher até 8 projetos para votar ou menos, como preferir. Com sua senha MACI, você pode alterar seu voto antes do encerramento da votação.", + "Define your priorities": "Defina suas prioridades", + + "Go back to 'Your vote' using the navigation menu on the left of the screen (the 4 squares symbol) and you will see the projects you’ve selected. On this screen, you’ll be able to add voice credits to each selected project. Each time you click the button, a credit will be added to your selected project.": "Volte para 'Seu voto' usando o menu de navegação à esquerda da tela (símbolo de 4 quadrados) e você verá os projetos que selecionou. Nesta tela, você poderá adicionar créditos de voz a cada projeto selecionado. Cada vez que você clicar no botão, um crédito será adicionado ao seu projeto selecionado.", + "You can distribute your voice credits between the projects as you see fit, but voice credits and votes are not 1:1.": "Você pode distribuir seus créditos de voz entre os projetos como desejar, mas créditos de voz e votos não são 1:1.", + "This is where the 'quadratic' part comes into play: voting on a project will cost the square of the number of votes you want to cast.": "É aqui que a parte 'quadrática' entra em jogo: votar em um projeto custará o quadrado do número de votos que você deseja emitir.", + "For example, if you want to cast 1 vote for project A, it will cost you 1 voice credit; 2 votes will cost 4 credits; 5 votes will cost 25 credits, and so on.": "Por exemplo, se você deseja emitir 1 voto para o projeto A, custará 1 crédito de voz; 2 votos custarão 4 créditos; 5 votos custarão 25 créditos, e assim por diante.", + "Everyone will start with 99 voice credits.": "Todos começarão com 99 créditos de voz.", + "These credits will be used to cast votes for projects you have selected to support.": "Esses créditos serão usados para emitir votos para projetos que você selecionou para apoiar.", + "You can add up to 8 projects to your ballot, and distribute your voice credits among them. Choose wisely.": "Você pode adicionar até 8 projetos à sua cédula, e distribuir seus créditos de voz entre eles. Escolha com sabedoria.", + "Casting a vote on a project will cost you the square of the number of votes you want to cast in voice credits. For example, if you want to cast 5 votes for project A, it will cost you 25 voice credits.": "Emitir um voto em um projeto custará o quadrado do número de votos que você deseja emitir em créditos de voz. Por exemplo, se você deseja emitir 5 votos para o projeto A, custará 25 créditos de voz.", + + "You cannot use more voice credits than you have allotted. Since each voter starts with 99 voice credits, a vote of 10 (which costs 100 voice credits) is more than any one voter can afford. This means that at most, a voter can give 9 votes to a single project - at a cost of 81 voice credits - and will have 18 voice credits left to vote for other projects.": "Não é possível usar mais créditos de voz do que os que foram atribuídos. Como cada votante começa com 99 créditos de voz, um voto de 10 (que custa 100 créditos de voz) é mais do que qualquer votante pode pagar. Isso significa que, no máximo, um votante pode dar 9 votos para um único projeto - a um custo de 81 créditos de voz - e terá 18 créditos de voz restantes para votar em outros projetos.", + "Register your vote": "Registre seu voto", + "Once you’re satisfied with your votes, register them by pressing the 'Submit' button on the website.": "Uma vez que estiver satisfeito com seus votos, registre-os pressionando o botão 'Enviar' no site.", + "Then, you’ll receive a transaction confirmation request in your wallet, accept it.": "Em seguida, você receberá uma solicitação de confirmação de transação em sua carteira, aceite-a.", + "Remember that as long as voting is open, anyone who has your MACI password can register a new vote and invalidate the previous one.": "Lembre-se de que, enquanto a votação estiver aberta, qualquer pessoa que tiver sua senha MACI pode registrar um novo voto e invalidar o anterior.", + "You can register multiple votes during the voting period. Only your last recorded vote will be considered in the vote count.": "Você pode registrar vários votos durante o período de votação. Apenas o seu último voto registrado será considerado na contagem de votos.", + "The vote count will be given at the end of the voting period, and the prizes will be distributed among the projects based on the number of votes received during the event (via quadratic funding).": "A contagem de votos será dada ao final do período de votação, e os prêmios serão distribuídos entre os projetos com base no número de votos recebidos durante o evento (por meio de financiamento quadrático).", + "BALLOT (MACI) PASSPHRASE": "SENHA DE VOTAÇÃO (MACI)", + + "SAVE": "GUARDAR", + "Timeline": "Cronograma", + "APPLY FOR FUNDING": "SOLICITAR FINANCIAMENTO", + "PROJECT SUBMISSION": "ENVIO DO PROJETO", + "ELIGIBILITY CRITERIA": "CRITÉRIOS DE ELEGIBILIDADE", + "Apply for the quadratic funding round with your project! If you are building tools for the Ethereum ecosystem or L2, if you are involved in Ethereum community education, if you do research or other activities for the Ethereum ecosystem, don't hesitate to apply!": "Inscreva-se para a rodada de financiamento quadrático com o seu projeto! Se você está construindo ferramentas para o ecossistema Ethereum ou L2, se você está envolvido na educação da comunidade Ethereum, se você faz pesquisa ou outras atividades para o ecossistema Ethereum, não hesite em se inscrever!", + "Remember": "Lembre-se", + "The project needs to be based, or working with local communities, or in the surroundings of Porto.": "O projeto precisa estar baseado ou trabalhando com comunidades locais ou nos arredores da Porto.", + "Public goods focused on Web3 / impact DAOs / decentralized projects can also participate.": "Bens públicos focados em Web3 / DAOs de impacto / projetos descentralizados também podem participar.", + "Projects are required to have a focus on public goods or social impact, so they must have the quality of non-rivalry (the use by one individual does not prevent the use of others) and must be non-exclusive (any can access or use it). Read more about public goods": "Os projetos devem ter um foco em bens públicos ou impacto social, portanto, devem ter a qualidade de não-rivalidade (o uso por um indivíduo não impede o uso de outros) e devem ser não-exclusivos (qualquer um pode acessar ou usá-lo). Saiba mais sobre bens públicos", + "Public goods can be one of the various impacts of the project but it must explicitly mention how the funds will be used if they’re received. Example: Funding a free Ethereum course for a high school in Mendoza.": "Bens públicos podem ser um dos vários impactos do projeto, mas deve mencionar explicitamente como os fundos serão usados se forem recebidos. Exemplo: Financiamento de um curso gratuito de Ethereum para uma escola secundária em Mendoza.", + "Projects are not required to be web3 or crypto-native, but will need to submit an Ethereum wallet that they control as part of the application process. We encourage the use of self-custody solutions but any valid Ethereum address will be accepted.": "Os projetos não precisam ser necessariamente web3 ou nativos de criptomoedas, mas precisarão enviar uma carteira Ethereum que eles controlam como parte do processo de inscrição. Nós encorajamos o uso de soluções de auto-guarda, mas qualquer endereço Ethereum válido será aceito.", + + "What does it mean to enroll as a beneficiary?": "O que significa se inscrever como beneficiário?", + "Submitting your project makes you eligible to receive funds provided for the QF initiative at ETHPorto, but does not guarantee funding. There will be a filter to the initiatives presented carried out by a group of volunteers from QF ETH Porto to determine that the initiatives are in accordance with the requirements and that they’re initiatives that do not go against the law.": "Enviar seu projeto torna-o elegível para receber fundos fornecidos para a iniciativa QF em ETHPorto, mas não garante financiamento. Haverá um filtro para as iniciativas apresentadas realizado por um grupo de voluntários da QF ETH Porto para determinar se as iniciativas estão de acordo com os requisitos e se são iniciativas que não vão contra a lei.", + "This financing is a donation and has no associated reports, returns, or obligations on the part of the project. How much each project receives will be decided by ETHPorto attendees who vote during the event. If you are unsure about this, feel free to contact the team at sponsors@ethporto.org.": "Este financiamento é uma doação e não tem relatórios, retornos ou obrigações associados ao projeto. Quanto cada projeto receberá será decidido pelos participantes do ETHPorto que votam durante o evento. Se você tiver alguma dúvida sobre isso, sinta-se à vontade para entrar em contato com a equipe em sponsors@ethporto.org.", + "Please note that the team will NEVER ask you to share your wallet private keys or seed phrase, we will NEVER write to you on social media or other channels, and we will not send you a private key or seed phrase for you to use. These are common scam tactics and we want to prevent these bad actors from stealing your donated funds.": "Por favor, observe que a equipe NUNCA solicitará que você compartilhe suas chaves privadas de carteira ou frase-semente, NUNCA escreveremos para você nas redes sociais ou outros canais, e não enviaremos uma chave privada ou frase-semente para que você use. Essas são táticas comuns de golpes e queremos evitar que esses maus atores roubem seus fundos doados.", + "Unfortunately, the projects or teams will not be able to appear on stage during ETHPorto, but we do empower them to use the hashtag #ETHPortoQF in your social media posts so that you show and tell attendees about your impact on public goods.": "Infelizmente, os projetos ou equipes não poderão aparecer no palco durante o ETHPorto, mas os empoderamos para usar a hashtag #ETHPortoQF em suas postagens de mídia social para que mostrem e informem os participantes sobre seu impacto nos bens públicos.", + "If you post on Twitter, tag @ETHPorto and use the corresponding hashtags to achieve greater reach. You can also post within the": "Se você postar no Twitter, marque @ETHPorto e use as hashtags correspondentes para alcançar um público maior. Você também pode postar dentro do", + "What do you need to do to sign up?": "O que você precisa fazer para se inscrever?", + + "The registration deadline is August 11th at 11:55 pm (Porto time).": "O prazo de inscrição é até 11 de agosto às 23h55 (horário Porto).", + "Submit your project using this form:": "Envie seu projeto usando este formulário:", + "The ETHPorto team will contact you if they need to clarify something or if they need more details.": "A equipe da ETHPorto entrará em contato se precisar esclarecer algo ou se precisar de mais detalhes.", + "If you have any questions during the application process, send an email to sponsors@ethporto.org before the submission deadline.": "Se tiver alguma dúvida durante o processo de inscrição, envie um e-mail para sponsors@ethporto.org antes do prazo de envio.", + "This donation will be sent in stablecoin (DAI) via Polygon to the wallet entered during the registration process. Once the funds are sent the transaction is irreversible, so you must be 100% sure of the address you will enter and who has control of the wallet/private keys. If you are unsure about this, feel free to contact the team at the following email address sponsors@ethporto.org.": "Esta doação será enviada em stablecoin (DAI) via Polygon para a carteira informada durante o processo de registro. Uma vez que os fundos forem enviados, a transação será irreversível, portanto, você deve ter 100% de certeza sobre o endereço que irá inserir e quem tem o controle da carteira/ chaves privadas. Se você não tiver certeza sobre isso, sinta-se à vontade para entrar em contato com a equipe no seguinte endereço de e-mail sponsors@ethporto.org.", + + + "About the round": "Sobre a Ronda", + + "The ETHPorto Quadratic Funding round is a collaboration between ETHPorto and Transformers in an effort to support the local community and explore new ways to finance public goods through quadratic voting.": "A ronda de Financiamento Quadrático ETHPorto é uma colaboração entre o ETHPorto e o Movimento Transformers, com o objetivo de apoiar comunidades locais e explorar novas formas de financiar bens públicos através do voto quadrático.", + + "During ETHPorto, our team will send you an email with a “MACI” key. This is your private password you’ll use to submit your votes.": "Durante a apresentação do momento, a nossa equipa do Porto irá enviar um email com uma password. Esta password é uma “MACI” key, que deverá ser usada para votar.", + "You can learn more about Quadratic Funding": "Para aprender mais sobre Financiamento Quadrático", + "The future is now! We hope you participate in this round and help us fund the projects that matter to you!": "Abaixo encontram instruções para ajudar no apoio a projetos locais. O futuro é agora!", + "About Transformers": "Sobre o Movimento Transformers", + + "Movimento Transformers was born in 2010, when a breakdance group discovered that they could use what they loved (breakdance) to make a difference in their community, leading informal workshops and classes for children and youth deeply at risk of social exclusion.": "O Movimento Transformers nasceu em 2010,quando um grupo de breakdance descobriu que podia usar o seu talento (breakdance) para fazer a diferença na comunidade, criando workshops e aulas informais para crianças e jovens em risco de exclusão social.", + + "The Movimento Transformers emerged to massively increase civic and social involvement, in Portugal and in the World. Our mission is to increase the involvement of people in their communities through what they love to do. To turn this into reality we have three axes of intervention:": "Crescemos para aumentar massivamente a participação cívica e social em Portugal e no Mundo. A nossa missão é aumentar a participação das pessoas nas suas comunidades através do que mais gostam de fazer. Para conseguir isto, temos três eixos de atuação principais:", + + "Volunteer - Which materializes in our project Schools of Superpowers (SPS) and Reformers. The Superpower Schools (SPS) project works weekly with 600 children and young people at risk by promoting their social awareness, talents and ensuring they are more active and participative citizens. It is with this project that this collaboration with ETF comes to life - our core value in the SPS project is Payback, which means giving back to the community. I transform you so you can transform society around you. Payback actions are implemented by our apprentices and their volunteer mentor to solve a social problem they identify within their communities. Here you will be able to vote on some of the incredible ideas our groups have come up with this year.": "Voluntariado - através dos projetos Escola de Superpoderes (ESP) e Reformers. A ESP trabalha semanalmente com mais de 600 crianças e jovens em risco de exclusão social (bairros sociais, escolas TAPE, centros de acolhimento, prisões infanto-juvenis). Recrutamos mentores voluntários que partilham os seus talentos (algo que gostam muito de fazer) com um grupo de aprendizes através de aulas semanais. A partilha do talento é apenas uma rampa de lançamento para se tratarem de tópicos essenciais como auto-estima, violência no namoro, alterações climáticas, discriminação LGBTQIA+, racismo, desigualdades sociais e económicas, entre muitos outros. É neste projeto que a nossa colaboração com o ETHPorto ganha vida - o valor core da ESP é o Payback, esta ideia de que nós transformamos os aprendizes para que eles transformem as suas comunidades. As ações de Payback são implementadas pelos aprendizes e mentores para resolver ou mitigar um problema social que identifiquem na sua comunidade. Nesta ronda vão poder votar em várias ideias de Payback que surgiram nas últimas semanas, apresentadas pelos nossos mentores e os seus grupos de aprendizes!", + + "Associativism - Through two capacity projects, one focusing on secondary school association leaders (AELEAD) and the other on youth association leaders or community leaders (XLEAD).": "Associativismo - Através de dois projetos, um focado em associações de estudantes do ensino secundário (AELead), e outro focado em associações juvenis ou líderes de comunidade e grupos informais de jovens (XLead).", + + "Awareness - Through T-Academy, an online community for civic and social participation, which emerges towards the democratization of knowledge and where content and training opportunities are shared in the areas of volunteering, participation, creativity, non-formal education, activism, sustainable development goals, associationism and much more! B2C model, where people pay to access the community.": "Consciencialização - A T-Academy é uma comunidade online para a participação cívica e social, que surge com o objetivo de democratizar o conhecimento e onde conteúdo do mundo do Impacto e Empreendedorismo Social, através de partilha de Newsletters mensais, organização de workshops, entre outras oportunidades.", + + "We also have a continuous growing portfolio of tailor-made training and bootcamps, aimed at young people, youth associations, informal movements, activists.": "Para além disto, temos um portfólio em constante crescimento de bootcamps e workshops personalizados para jovens e associações juvenis.", + "You can learn more about Transformers":"Podes aprender mais sobre o Movimento Transformers", + + "About ETHPorto": "About ETHPorto", + + "ETHPorto is an independently organized event with a Conference, workshops and a 48-hour Hackathon running in parallel. Bringing the first ETH event to the beautiful city of Porto!": "ETHPorto é um evento organizado independentemente com uma Conferência, Workshops e uma Hackathon de 48 horas a aconteccer em paralelo. É o primeiro evento ETH na bela cidade do Porto!" , + + "You can learn more about ETHPorto": "Podes aprender mais sobre o ETHPorto", + "here": "aqui" +} diff --git a/packages/app/src/pages/About.tsx b/packages/app/src/pages/About.tsx new file mode 100644 index 00000000..22f0a4aa --- /dev/null +++ b/packages/app/src/pages/About.tsx @@ -0,0 +1,136 @@ +import React from "react"; +import { + VStack, + Container, + Flex, + Text, + Heading, + useColorModeValue, +} from "@chakra-ui/react"; +import { useTranslation } from "react-i18next"; + +export const About = () => { + const { t } = useTranslation(); + const color = useColorModeValue("gray.800", "gray.700"); + + return ( + + + + + + {t("About the round")} + + + {t( + "The ETHPorto Quadratic Funding round is a collaboration between ETHPorto and Transformers in an effort to support the local community and explore new ways to finance public goods through quadratic voting." + )} + + + {t( + "During ETHPorto, our team will send you an email with a “MACI” key. This is your private password you’ll use to submit your votes." + )} + + + {t("You can learn more about Quadratic Funding")}{" "} + + {t("here")} + + . + + + {t("The future is now! We hope you participate in this round and help us fund the projects that matter to you!")} + + + {t("About Transformers")} + + + {t( + "Movimento Transformers was born in 2010, when a breakdance group discovered that they could use what they loved (breakdance) to make a difference in their community, leading informal workshops and classes for children and youth deeply at risk of social exclusion." + )} + + + {t( + "The Movimento Transformers emerged to massively increase civic and social involvement, in Portugal and in the World. Our mission is to increase the involvement of people in their communities through what they love to do. To turn this into reality we have three axes of intervention:" + )} + + + {t( + "Volunteer - Which materializes in our project Schools of Superpowers (SPS) and Reformers. The Superpower Schools (SPS) project works weekly with 600 children and young people at risk by promoting their social awareness, talents and ensuring they are more active and participative citizens. It is with this project that this collaboration with ETF comes to life - our core value in the SPS project is Payback, which means giving back to the community. I transform you so you can transform society around you. Payback actions are implemented by our apprentices and their volunteer mentor to solve a social problem they identify within their communities. Here you will be able to vote on some of the incredible ideas our groups have come up with this year." + )} + + + {t( + "Associativism - Through two capacity projects, one focusing on secondary school association leaders (AELEAD) and the other on youth association leaders or community leaders (XLEAD)." + )} + + + {t( + "Awareness - Through T-Academy, an online community for civic and social participation, which emerges towards the democratization of knowledge and where content and training opportunities are shared in the areas of volunteering, participation, creativity, non-formal education, activism, sustainable development goals, associationism and much more! B2C model, where people pay to access the community." + )} + + + {t( + "We also have a continuous growing portfolio of tailor-made training and bootcamps, aimed at young people, youth associations, informal movements, activists." + )} + + + {t("You can learn more about Transformers")}{" "} + + {t("here")} + + . + + + {t("About ETHPorto")} + + + {t( + "ETHPorto is an independently organized event with a Conference, workshops and a 48-hour Hackathon running in parallel. Bringing the first ETH event to the beautiful city of Porto!" + )} + + + {t("You can learn more about ETHPorto")}{" "} + + {t("here")} + + . + + + + + + ); +}; diff --git a/packages/app/src/pages/Admin.tsx b/packages/app/src/pages/Admin.tsx new file mode 100644 index 00000000..01783cb6 --- /dev/null +++ b/packages/app/src/pages/Admin.tsx @@ -0,0 +1,305 @@ +/* eslint-disable no-useless-computed-key */ +import React, { useState } from "react"; +import { Button, Heading, Flex, VStack, Container, useColorModeValue, Text } from "@chakra-ui/react"; +import { useToast } from "@chakra-ui/react"; +import { useWallet } from "@qfi/hooks"; +import { BigNumber } from "ethers"; + +import { PoseidonT3__factory } from "../typechain/factories/contracts/poseidon/PoseidonT3__factory"; +import { PoseidonT4__factory } from "../typechain/factories/contracts/poseidon/PoseidonT4__factory"; +import { PoseidonT5__factory } from "../typechain/factories/contracts/poseidon/PoseidonT5__factory"; +import { PoseidonT6__factory } from "../typechain/factories/contracts/poseidon/PoseidonT6__factory"; +import { PoseidonT3 } from "../typechain/contracts/poseidon/PoseidonT3"; +import { PoseidonT4 } from "../typechain/contracts/poseidon/PoseidonT4"; +import { PoseidonT5 } from "../typechain/contracts/poseidon/PoseidonT5"; +import { PoseidonT6 } from "../typechain/contracts/poseidon/PoseidonT6"; + +import { JubjubFactory } from "../typechain/contracts/JubjubFactory"; +import { JubjubFactoryLibraryAddresses, JubjubFactory__factory } from "../typechain/factories/contracts/JubjubFactory__factory"; +import { Jubjub__factory, JubjubLibraryAddresses } from "../typechain/factories/contracts/Jubjub__factory"; +import { Jubjub } from "../typechain/contracts/Jubjub"; + +import { SimpleHackathon__factory } from "../typechain/factories/contracts/flavors/SimpleHackathon__factory"; +import { SimpleHackathon } from "../typechain/contracts/flavors/SimpleHackathon"; + +import { PubKey } from "../jubjublib/domainobjs/domainobjs" + +export const Admin = () => { + const { provider, address, isConnected } = useWallet(); + const color = useColorModeValue("gray.800", "gray.700"); + const toast = useToast(); + + const [step, setStep] = useState(0); + const [loading, setLoading] = useState(false); + + const [poseidonT3, setT3] = useState(); + const [poseidonT4, setT4] = useState(); + const [poseidonT5, setT5] = useState(); + const [poseidonT6, setT6] = useState(); + + const [jubjubFactory, setJubjubFactory] = useState(); + const [jubjub, setJubjub] = useState(); + const handleT2Deploy = async () => { + const deployer = provider.getSigner(address); + let t3: PoseidonT3; + let t4: PoseidonT4; + let t5: PoseidonT5; + let t6: PoseidonT6; + + const PoseidonT3Factory = new PoseidonT3__factory(deployer); + const PoseidonT4Factory = new PoseidonT4__factory(deployer); + const PoseidonT5Factory = new PoseidonT5__factory(deployer); + const PoseidonT6Factory = new PoseidonT6__factory(deployer); + + t3 = await PoseidonT3Factory.deploy(); + setT3(t3); + toast({ + title: "PoseidonT3 Deployed", + description: t3.address, + status: "success", + duration: 9000, + isClosable: true, + }); + console.log(t3); + await new Promise((resolve) => setTimeout(resolve, 1300)); + console.log("waiting for tx to be mined"); + + t4 = await PoseidonT4Factory.deploy(); + setT4(t4); + toast({ + title: "PoseidonT4 Deployed", + description: t4.address, + status: "success", + duration: 9000, + isClosable: true, + }); + console.log(t4); + await new Promise((resolve) => setTimeout(resolve, 1300)); + console.log("waiting for tx to be mined"); + + t5 = await PoseidonT5Factory.deploy(); + setT5(t5); + toast({ + title: "PoseidonT5 Deployed", + description: t5.address, + status: "success", + duration: 9000, + isClosable: true, + }); + console.log(t5); + await new Promise((resolve) => setTimeout(resolve, 1300)); + console.log("waiting for tx to be mined"); + + t6 = await PoseidonT6Factory.deploy(); + setT6(t6); + toast({ + title: "PoseidonT6 Deployed", + description: t4.address, + status: "success", + duration: 9000, + isClosable: true, + }); + await new Promise((resolve) => setTimeout(resolve, 10000)); + console.log("waiting for tx to be mined"); + console.log(t6); + }; + const handleFactoryDeploy = async () => { + const factoryLibs: JubjubFactoryLibraryAddresses = { + ["contracts/poseidon/PoseidonT5.sol:PoseidonT5"]: poseidonT5.address, + ["contracts/poseidon/PoseidonT6.sol:PoseidonT6"]: poseidonT6.address, + ["contracts/poseidon/PoseidonT4.sol:PoseidonT4"]: poseidonT4.address, + ["contracts/poseidon/PoseidonT3.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/AccQueue.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/AccQueue.sol:PoseidonT6"]: poseidonT6.address, + }; + const deployer = provider.getSigner(address); + let jubjubFactory: JubjubFactory; + + const jubjubFactoryFactory = new JubjubFactory__factory(factoryLibs, deployer); + jubjubFactory = await jubjubFactoryFactory.deploy(); + setJubjubFactory(jubjubFactory); + toast({ + title: "JubjubFactory Deployed", + description: jubjubFactory.address, + status: "success", + duration: 9000, + isClosable: true, + }); + await new Promise((resolve) => setTimeout(resolve, 10000)); + console.log("waiting for tx to be mined"); + console.log(jubjubFactory); + }; + const handleCheckDeploy = async () => { + const deployer = provider.getSigner(address); + let SimpleHackathonFactory: SimpleHackathon__factory; + let simpleHackathon: SimpleHackathon; + + let JubjubTemplateFactory: Jubjub__factory; + let libs: JubjubLibraryAddresses; + libs = { + ["contracts/poseidon/PoseidonT6.sol:PoseidonT6"]: poseidonT6.address, + ["contracts/poseidon/PoseidonT5.sol:PoseidonT5"]: poseidonT5.address, + ["contracts/poseidon/PoseidonT3.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/poseidon/PoseidonT4.sol:PoseidonT4"]: poseidonT4.address, + }; + JubjubTemplateFactory = new Jubjub__factory(libs, deployer); + + SimpleHackathonFactory = new SimpleHackathon__factory(deployer); + simpleHackathon = await SimpleHackathonFactory.deploy(99, address); + await simpleHackathon.deployed(); + + //NOTE: Deploy Jubjub Instance + const tx = await jubjubFactory.deployJubjub("0xDEADBEEF00000000000000000000000000000000000000000000000000000000", simpleHackathon.address, simpleHackathon.address); + console.log(tx); + await tx.wait(); + // sunchronous timeout to wait for the tx to be mined + + await new Promise((resolve) => setTimeout(resolve, 10000)); + console.log("waiting for tx to be mined"); + const jubjubInstance = JubjubTemplateFactory.attach(await jubjubFactory.currentJubjub()); + setJubjub(jubjubInstance); + + console.log(jubjubInstance); + console.log(await jubjubInstance.hash(0, 0)); + }; + const handleStartVotingRound = async () => { + const deployer = provider.getSigner(address); + + let JubjubTemplateFactory: Jubjub__factory; + let libs: JubjubLibraryAddresses; + libs = { + ["contracts/poseidon/PoseidonT6.sol:PoseidonT6"]: "0xf74e750e2b4C58Eb532d44b129BA954507CF6203", + ["contracts/poseidon/PoseidonT5.sol:PoseidonT5"]: "0x1DC58993421d92376C21230177DD46B9e9087Ad5", + ["contracts/poseidon/PoseidonT3.sol:PoseidonT3"]: "0xD94810B65FB5914EcdE631bd00a4768E7B6AD51a", + ["contracts/poseidon/PoseidonT4.sol:PoseidonT4"]: "0x23DD5d6472E88E411A6B78950669b7637F1E6151", + }; + JubjubTemplateFactory = new Jubjub__factory(libs, deployer); + + const jubjubInstance = JubjubTemplateFactory.attach("0xc7b53f0243201425D8bf83F98B9dC43A878BFD20"); + setJubjub(jubjubInstance); + + console.log(jubjubInstance); + + + const _coordinatorPubkey = PubKey.unserialize("macipk.ec4173e95d2bf03100f4c694d5c26ba6ab9817c0a5a0df593536a8ee2ec7af04").asContractParam() + console.log(_coordinatorPubkey); + const tx = await jubjubInstance.startVoting(BigNumber.from(3), BigNumber.from(60*60*24*14), _coordinatorPubkey); + console.log(tx); + await tx.wait(); + + console.log((await jubjubInstance.hash(0, 0)).toString()); + console.log( BigNumber.from("0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864").toString()); + }; + + // const [jubjubFactory, setjubjubFactory] = React.useState(""); + // const handleT4Deploy = () => { + // toast({ + // title: "PoseidonT4 Deployed", + // description: poseidonT4, + // status: "success", + // duration: 9000, + // isClosable: true, + // }); + // setT3("deployed"); + // }; + return ( + + + + + + Admin + + + {/* + + */} + + + + {loading ? Processing transactions... : <>} + + {/* Current PoseidonT3: {poseidonT3?.address} + Current PoseidonT4: {poseidonT4?.address} + Current PoseidonT5: {poseidonT5?.address} + Current PoseidonT6: {poseidonT6?.address} + Current JubjubFactory: {jubjubFactory?.address} + Current Jubjub: {jubjub?.address} */} + + + + + + + ); +}; diff --git a/packages/app/src/pages/Apply.tsx b/packages/app/src/pages/Apply.tsx new file mode 100644 index 00000000..8538dee5 --- /dev/null +++ b/packages/app/src/pages/Apply.tsx @@ -0,0 +1,271 @@ +import { + Container, + VStack, + Grid, + GridItem, + Flex, + Text, + Heading, + Button, + useColorModeValue, + useToast, + FormControl, + FormHelperText, + Input, + Tooltip, + useMediaQuery, + AccordionPanel, + HStack, + AccordionIcon, + AccordionItem, + Accordion, + AccordionButton, + UnorderedList, + ListItem, + Alert, + AlertIcon, +} from "@chakra-ui/react"; +import React from "react"; +import { useTranslation, Trans } from "react-i18next"; + + +export const Apply = () => { + const { t, i18n } = useTranslation(); + const color = useColorModeValue("gray.800", "gray.700"); + const [isViewportMd] = useMediaQuery("(min-width: 768px)"); + const currLang = i18n.language; + const backgroundColor = useColorModeValue("#FAFAFA", "#222222"); + + const headerYourBallotLogo = { + en: "project_submission_EN.svg", + es: "project_submission_ES.svg", + }; + + return ( + + + {isViewportMd ? ( + + {t("PROJECT + + ) : ( + + + {t("PROJECT + + + )} + + {isViewportMd ? ( + + + {t("ELIGIBILITY CRITERIA")} + + + ) : ( + + {t("ELIGIBILITY CRITERIA")} + + )} + + + + {t("Apply for the quadratic funding round with your project! If you are building tools for the Ethereum ecosystem or L2, if you are involved in Ethereum community education, if you do research or other activities for the Ethereum ecosystem, don't hesitate to apply!")} + + + + + + {t("Remember")} + + + + + + + {t( + "The project needs to be based, or working with local communities, or in the surroundings of Porto." + )} + + + {t( + "Public goods focused on Web3 / impact DAOs / decentralized projects can also participate." + )} + + + {t( + "Projects are required to have a focus on public goods or social impact, so they must have the quality of non-rivalry (the use by one individual does not prevent the use of others) and must be non-exclusive (any can access or use it). Read more about public goods" + )}{" "} + + {t("here")} + . + + + {t( + "Public goods can be one of the various impacts of the project but it must explicitly mention how the funds will be used if they’re received. Example: Funding a free Ethereum course for a high school in Mendoza." + )} + + + {t( + "Projects are not required to be web3 or crypto-native, but will need to submit an Ethereum wallet that they control as part of the application process. We encourage the use of self-custody solutions but any valid Ethereum address will be accepted." + )} + + + + + + + + + + {isViewportMd ? ( + + + {t("What does it mean to enroll as a beneficiary?")} + + + ) : ( + + {t("What does it mean to enroll as a beneficiary?")} + + )} + + + + + {t("This financing is a donation and has no associated reports, returns, or obligations on the part of the project. How much each project receives will be decided by Porto attendees who vote during the event. If you are unsure about this, feel free to contact the team at sponsors@Porto.org.")} + + + {t("This donation will be sent in stablecoin (DAI) via Polygon to the wallet entered during the registration process. Once the funds are sent the transaction is irreversible, so you must be 100% sure of the address you will enter and who has control of the wallet/private keys. If you are unsure about this, feel free to contact the team at the following email address sponsors@Porto.org.")} + + + + + + + + + + + + + {t("If you post on Twitter, tag @Porto and use the corresponding hashtags to achieve greater reach. You can also post within the")}{" "} + + {t("Porto Telegram group")} + {" "} + {t("using the hashtag #QF in your post.")} + + + + + + + {t("What do you need to do to sign up?")} + + + + + + + {t( + "The registration deadline is August 11th at 11:55 pm (Porto time)." + )} + + + {t( + "Submit your project using this form:" + )}: + https://forms.gle/JnHUU5suGk7JK5LH6 + . + + + {t( + "The Porto team will contact you if they need to clarify something or if they need more details." + )} + + + {t( + "If you have any questions during the application process, send an email to sponsors@Porto.org before the submission deadline." + )} + + + + + + + + + + + + ); +}; diff --git a/packages/app/src/pages/Ballot.tsx b/packages/app/src/pages/Ballot.tsx new file mode 100644 index 00000000..f967581b --- /dev/null +++ b/packages/app/src/pages/Ballot.tsx @@ -0,0 +1,518 @@ +import React, { useCallback, useEffect, useState, useMemo } from "react"; +import { Container, Image, VStack, Grid, GridItem, Flex, Text, Heading, Button, useColorModeValue, useToast, FormControl, FormHelperText, Input, Tooltip, useMediaQuery, AspectRatio } from "@chakra-ui/react"; + +import { MagikButton } from "@qfi/ui"; +import { getProject, getRecipientIdbyId } from "../data"; +import { Option } from "../propTypes"; +import { BallotOption } from "../components/prague/BallotOption"; +import { Hero } from "../components/Hero"; +import { BallotExplainer } from "../components/prague/BallotExplainer"; +import { Link, useSearchParams } from "react-router-dom"; +import { useDappState } from "../context/DappContext"; + +import { Keypair, PubKey, PrivKey, PCommand, Message } from "../jubjublib/domainobjs/domainobjs"; +import { genRandomSalt } from "../jubjublib/crypto"; +import { useWallet } from "@qfi/hooks"; +import { Jubjub__factory } from "../typechain/factories/contracts/Jubjub__factory"; +import { Jubjub } from "../typechain/contracts/Jubjub"; +import { BigNumber, ethers } from "ethers"; +import { getStateIndex } from "../quickBallotConfig"; +import { useTranslation } from "react-i18next"; + +const isMaciPrivKey = (key: string): boolean => { + if ((key.length === 71 || key.length === 70) && key.startsWith("macisk.")) { + try { + const pubKey = new Keypair(PrivKey.unserialize(key)).pubKey.serialize(); + if (getStateIndex(pubKey)) { + return true; + } + return false; + } catch (e) { + return false; + } + } + + return false; +}; + +interface SubmitBallotButtonProps { + isConnected: boolean; + disableSubmitButton: boolean; + my?: number; + onSubmit: () => React.ReactNode; + t: (arg: string) => any; +} + +const SubmitBallotButton = ({ isConnected, disableSubmitButton, my = 0, onSubmit, t }: SubmitBallotButtonProps) => + isConnected ? ( + + + + ) : ( + + + {t("Not Connected: Sign in to continue")} + + + ); + +const headerYourBallotLogo = { + en: "your_ballot_EN.svg", + es: "your_ballot_ES.svg", +}; + +export const Ballot = () => { + const backgroundColor = useColorModeValue("gray.100", "#0D1429"); + const colorModeSwitch = useColorModeValue(true, false); + const [isViewportMd] = useMediaQuery("(min-width: 768px)"); + const [key, setKey] = useState(); + const { maciKey, setMaciKey } = useDappState(); + const [searchParams] = useSearchParams(); + const { i18n, t } = useTranslation(); + const toast = useToast(); + + const currLang = i18n.language; + + const isValidMaciKey = useMemo(() => { + return isMaciPrivKey(maciKey); + }, [maciKey]); + + const { provider, address, isConnected } = useWallet(); + const handleInputChange = (e) => { + setKey(String(e.target.value).trim()); + }; + + const handleComplete = (value: string) => { + console.log("complete"); + try { + if (isMaciPrivKey(value)) { + setMaciKey(value); + + toast({ + title: t("New Maci Key"), + description: t("You have updated your MACI key, and are registered to vote."), + status: "success", + duration: 6000, + isClosable: true, + }); + console.log("changed"); + console.log(new Keypair(PrivKey.unserialize(value)).pubKey.serialize()); + } else { + throw new Error("Invalid MACI key"); + } + } catch (e) { + toast({ + title: t("Invalid Maci Key"), + description: t("The MACI Key you have provided is either incorrect or not registered"), + status: "error", + duration: 3000, + isClosable: true, + }); + console.log(e.message); + } + }; + + const numChars = useMemo(() => { + if (key) { + return key.length; + } + }, [key]); + const isError = useMemo(() => { + return key && !isMaciPrivKey(key); + }, [key]); + + const handleSubmitMaciChange = (event) => { + event.preventDefault(); + handleComplete(key); + }; + + useEffect(() => { + if (maciKey) { + setKey(maciKey); + } + }, [setKey, maciKey]); + + const voteOptions = useMemo(() => { + return searchParams.getAll("option"); + }, [searchParams]); + + //TODO: IDs of all the projects on the users ballot according to recipient registry + const recipientRegistryIds = useMemo(() => { + return voteOptions.filter((s) => !isNaN(parseInt(s))).map((s) => parseInt(s)); + }, [voteOptions]); + + const displayOptions: boolean = useMemo(() => { + return recipientRegistryIds.length > 0; + }, [recipientRegistryIds]); + const color = useColorModeValue("gray.800", "gray.700"); + const [ballotOptions, setBallotOptions] = useState([]); + const [ballotData, setBallotData] = useState([]); + const [voiceCreditBalance, setVoiceCreditBBalance] = useState(0); + + const isEmptyBallot = useMemo( + () => + ballotOptions.reduce((p, option) => { + return p && isNaN(option); + }, true) === false, + [ballotOptions] + ); + + //ballot option 1 number of votes + const [ballotOption1Votes, setBallotOption1Votes] = useState(0); + const [ballotOption2Votes, setBallotOption2Votes] = useState(0); + const [ballotOption3Votes, setBallotOption3Votes] = useState(0); + const [ballotOption4Votes, setBallotOption4Votes] = useState(0); + const [ballotOption5Votes, setBallotOption5Votes] = useState(0); + const [ballotOption6Votes, setBallotOption6Votes] = useState(0); + const [ballotOption7Votes, setBallotOption7Votes] = useState(0); + const [ballotOption8Votes, setBallotOption8Votes] = useState(0); + + //TODO: number of votes per vote option, lines up with recipientRegistryIds + //TODO: take this data along with recipientRegistryIds and use it to populate messages, then submit + const votes = useMemo( + () => [ballotOption1Votes, ballotOption2Votes, ballotOption3Votes, ballotOption4Votes, ballotOption5Votes, ballotOption6Votes, ballotOption7Votes, ballotOption8Votes], + [ballotOption1Votes, ballotOption2Votes, ballotOption3Votes, ballotOption4Votes, ballotOption5Votes, ballotOption6Votes, ballotOption7Votes, ballotOption8Votes] + ); + + const resetAllVotes = useCallback(() => { + setBallotOption1Votes(0); + setBallotOption2Votes(0); + setBallotOption3Votes(0); + setBallotOption4Votes(0); + setBallotOption5Votes(0); + setBallotOption6Votes(0); + setBallotOption7Votes(0); + setBallotOption8Votes(0); + }, [setBallotOption1Votes, setBallotOption2Votes, setBallotOption3Votes, setBallotOption4Votes, setBallotOption5Votes, setBallotOption6Votes, setBallotOption7Votes, setBallotOption8Votes]); + + const addBallotOption1Votes = useCallback(() => { + if (voiceCreditBalance + ballotOption1Votes ** 2 - (ballotOption1Votes + 1) ** 2 < 0) { + return setBallotOption1Votes(0); + } + if (ballotOption1Votes < 9) { + return setBallotOption1Votes(ballotOption1Votes + 1); + } + return setBallotOption1Votes(0); + }, [ballotOption1Votes, voiceCreditBalance]); + const addBallotOption2Votes = useCallback(() => { + if (voiceCreditBalance + ballotOption2Votes ** 2 - (ballotOption2Votes + 1) ** 2 < 0) { + return setBallotOption2Votes(0); + } + if (ballotOption2Votes < 9) { + return setBallotOption2Votes(ballotOption2Votes + 1); + } + return setBallotOption2Votes(0); + }, [ballotOption2Votes, voiceCreditBalance]); + const addBallotOption3Votes = useCallback(() => { + if (voiceCreditBalance + ballotOption3Votes ** 2 - (ballotOption3Votes + 1) ** 2 < 0) { + return setBallotOption3Votes(0); + } + if (ballotOption3Votes < 9) { + return setBallotOption3Votes(ballotOption3Votes + 1); + } + return setBallotOption3Votes(0); + }, [ballotOption3Votes, voiceCreditBalance]); + const addBallotOption4Votes = useCallback(() => { + if (voiceCreditBalance + ballotOption4Votes ** 2 - (ballotOption4Votes + 1) ** 2 < 0) { + return setBallotOption4Votes(0); + } + if (ballotOption4Votes < 9) { + return setBallotOption4Votes(ballotOption4Votes + 1); + } + return setBallotOption4Votes(0); + }, [ballotOption4Votes, voiceCreditBalance]); + const addBallotOption5Votes = useCallback(() => { + if (voiceCreditBalance + ballotOption5Votes ** 2 - (ballotOption5Votes + 1) ** 2 < 0) { + return setBallotOption5Votes(0); + } + if (ballotOption5Votes < 9) { + return setBallotOption5Votes(ballotOption5Votes + 1); + } + return setBallotOption5Votes(0); + }, [ballotOption5Votes, voiceCreditBalance]); + const addBallotOption6Votes = useCallback(() => { + if (voiceCreditBalance + ballotOption6Votes ** 2 - (ballotOption6Votes + 1) ** 2 < 0) { + return setBallotOption6Votes(0); + } + if (ballotOption6Votes < 9) { + return setBallotOption6Votes(ballotOption6Votes + 1); + } + return setBallotOption6Votes(0); + }, [ballotOption6Votes, voiceCreditBalance]); + const addBallotOption7Votes = useCallback(() => { + if (voiceCreditBalance + ballotOption7Votes ** 2 - (ballotOption7Votes + 1) ** 2 < 0) { + return setBallotOption7Votes(0); + } + if (ballotOption7Votes < 9) { + return setBallotOption7Votes(ballotOption7Votes + 1); + } + return setBallotOption7Votes(0); + }, [ballotOption7Votes, voiceCreditBalance]); + const addBallotOption8Votes = useCallback(() => { + if (voiceCreditBalance + ballotOption8Votes ** 2 - (ballotOption8Votes + 1) ** 2 < 0) { + return setBallotOption8Votes(0); + } + if (ballotOption8Votes < 9) { + return setBallotOption8Votes(ballotOption8Votes + 1); + } + return setBallotOption8Votes(0); + }, [ballotOption8Votes, voiceCreditBalance]); + //wrap all the votes into an array + + const totalVoiceCredits = useMemo(() => { + return votes.reduce((acc, curr) => acc + curr ** 2, 0); + }, [votes]); + const updateVotes = [addBallotOption1Votes, addBallotOption2Votes, addBallotOption3Votes, addBallotOption4Votes, addBallotOption5Votes, addBallotOption6Votes, addBallotOption7Votes, addBallotOption8Votes]; + useEffect(() => { + const intialBallotOptions = [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN]; + const options = voteOptions.filter((s) => !isNaN(parseInt(s))).map((s) => parseInt(s)); + + const initialVoiceCreditBalance = 99; + resetAllVotes(); + setVoiceCreditBBalance(initialVoiceCreditBalance); + + setBallotOptions(options.length === 0 ? intialBallotOptions : options); + }, [voteOptions, resetAllVotes]); + + useEffect(() => { + const newBallotData = ballotOptions?.map((optionId) => { + return getProject(String(optionId)); + }); + setBallotData(newBallotData); + }, [ballotOptions]); + + useEffect(() => { + const totalVoiceCreditsUsed = votes.reduce((acc, curr) => acc + curr ** 2, 0); + const newVoiceCreditBalance = 99 - totalVoiceCreditsUsed; + setVoiceCreditBBalance(newVoiceCreditBalance); + }, [votes]); + + const [txLoading, setTxLoading] = useState(false); + + const disableSubmitButton = !isConnected || !isValidMaciKey || txLoading; + + function createMessage(userStateIndex: number, userKeypair: Keypair, coordinatorPubKey: PubKey, voteOptionIndex: number | null, voteWeight: number | null, nonce: number): [Message, PubKey] { + const salt = genRandomSalt(); + + const quadraticVoteWeight = voteWeight ?? 0; + const pubkey = userKeypair.pubKey; + + // TODO:porto + // /stateIndex: BigInt, + // newPubKey: PubKey, + // voteOptionIndex: BigInt, + // newVoteWeight: BigInt, + // nonce: BigInt, + // pollId: BigInt, + const command = new PCommand(BigInt(userStateIndex), pubkey, BigInt(voteOptionIndex || 0), BigInt(quadraticVoteWeight), BigInt(nonce), BigInt(0), salt); + + const signature = command.sign(userKeypair.privKey); + const message = command.encrypt(signature, Keypair.genEcdhSharedKey(userKeypair.privKey, coordinatorPubKey)); + return [message, userKeypair.pubKey]; + } + + const handleSubmit = async () => { + console.log(isMaciPrivKey(maciKey)); + const signer = provider.getSigner(address); + const grantRoundAddress = "0xc7b53f0243201425D8bf83F98B9dC43A878BFD20"; + + const grantRound = new ethers.Contract(grantRoundAddress, Jubjub__factory.abi, signer); + + setTxLoading(true); + console.log("-----------------------------------------------------"); + const txData: [Message, PubKey][] = recipientRegistryIds.map((projectId, index) => { + try { + const recipientVoteOptionIndex = getRecipientIdbyId(projectId.toString()); + console.log("recipientVoteOptionIndex", recipientVoteOptionIndex); + let maciKeyPair: Keypair; + let serializedMaciPublicKey: string; + let userStateIndex: number; + let nonce: number; + let voteWeight: number; + + if (isMaciPrivKey(maciKey)) { + maciKeyPair = new Keypair(PrivKey.unserialize(maciKey)); + serializedMaciPublicKey = maciKeyPair.pubKey.serialize(); + console.log("serializedMaciPublicKey", serializedMaciPublicKey); + userStateIndex = getStateIndex(serializedMaciPublicKey); + console.log("stateIndex", userStateIndex); + nonce = index; + voteWeight = votes[index]; + } + if (isMaciPrivKey(maciKey) && getStateIndex(serializedMaciPublicKey)) { + console.log("User is registered, signing ballot with private key"); + const coordinatorKey = PubKey.unserialize("macipk.ec4173e95d2bf03100f4c694d5c26ba6ab9817c0a5a0df593536a8ee2ec7af04"); + + const [message, encPubKey] = createMessage(userStateIndex, maciKeyPair, coordinatorKey, recipientVoteOptionIndex, voteWeight, nonce); + return [message, encPubKey]; + } else { + console.log("user is not registered, throw message"); + throw new Error("User is not registered"); + } + } catch (e) { + return [null, null]; + } + }); + const messages: Message[] = []; + const encPubKeys: PubKey[] = []; + + for (const [message, encPubKey] of txData) { + messages.push(message); + encPubKeys.push(encPubKey); + } + + console.log(messages); + console.log(encPubKeys); + try { + const gasPrice = await provider.getGasPrice(); + const double = BigNumber.from("2"); + const doubleGasPrice = gasPrice.mul(double); + const gasLimit = ethers.utils.hexlify(10000000); + const signer = provider.getSigner(address); + + const tx = await grantRound.connect(signer).publishMessageBatch( + messages.reverse().map((msg) => msg.asContractParam()), + encPubKeys.reverse().map((key) => key.asContractParam()), + { gasPrice: doubleGasPrice, gasLimit } + ); + await tx.wait(); + toast({ + title: t("Ballot Submitted"), + description: t("You have submitted your ballot! Feel free to resubmit if you change your mind."), + status: "success", + duration: 10000, + isClosable: true, + }); + } catch (e) { + setTxLoading(false); + console.log(e); + } + setTxLoading(false); + console.log("debug log", txData); + }; + + return ( + + + {colorModeSwitch ? ( + + + + + + + + + ) : ( + + + + + + + + + )} + + + + Voting Ballot + + + + {t("VOICE CREDIT BALANCE")}: {voiceCreditBalance} + + + {t("Voice Credits spent")}: {ballotOption1Votes ** 2} + {ballotOption2Votes ** 2} + {ballotOption3Votes ** 2} +{ballotOption4Votes ** 2} + {ballotOption5Votes ** 2} + {ballotOption6Votes ** 2} + {ballotOption7Votes ** 2} + {ballotOption8Votes ** 2} = {totalVoiceCredits} + + + {displayOptions ? ( + + {ballotData.map((project, index) => ( + + ))} + + ) : ( + + + + )} + + + {t("BALLOT (MACI) PASSPHRASE")} + + + + + + {t("The MACI (Minimum Anti-Collision Infrastructure) uses zero-knowledge proofs as a protection against censorship and collisions in blockchain voting (read more about MACI on this page).")}{" "} + {t("Each voter gets a pseudo-random MACI key, which is used to encrypt and validate your votes. This is the only way to vote in the round, and it can be used to change your vote at any time while the round is active, so keep it safe and don't share it.")}{" "} + {t("'Not your MACI, not your vote'.")}{" "} + {t("Keep it safe! Anyone who logs in with your MACI key will be able to vote on your behalf - and even invalidate your previous votes. Thanks to your vote, community projects can access funds to continue building. Your vote matters, make it count.")} + + + + {/* + + + */} + + +
+ + + {/* It is important that the Label comes after the Control due to css selectors */} + + {numChars ?? "-"} / 71 + + + + + +
+
+
+ ); +}; diff --git a/packages/app/src/pages/Home.tsx b/packages/app/src/pages/Home.tsx new file mode 100644 index 00000000..1a87a122 --- /dev/null +++ b/packages/app/src/pages/Home.tsx @@ -0,0 +1,200 @@ +import React from "react"; +import { + VStack, + Container, + Flex, + Text, + Heading, + Button, + useColorModeValue, + Accordion, + AccordionButton, + AccordionIcon, + AccordionItem, + AccordionPanel, + HStack, + Stack, + AspectRatio, +} from "@chakra-ui/react"; +import { useTranslation } from "react-i18next"; +import { useSearchParams, Link as RouterLink } from "react-router-dom"; +import { Hero } from "../components/Hero"; + +export const Home = () => { + const { t } = useTranslation(); + const color = useColorModeValue("gray.800", "gray.700"); + const backgroundColor = useColorModeValue("#FAFAFA", "#222222"); + let [searchParams] = useSearchParams(); + const heroLightmode = ( + + + + ); + const heroDarkmode = ( + + + + ); + + + return ( + + + + + { useColorModeValue(heroLightmode, heroDarkmode)} + + {t("ORGANIZER")} + + + + + + + + + {t( + "You can play a fundamental role as a part of the Porto community, both in supporting the local community, and in exploring new ways to finance public goods through quadratic voting." + )} + + + {t( + "During the venue, our Porto team will send you an email with a password. This is the “MACI” key you’ll use to vote." + )} + + + {t("Below you will find instructions to help support local projects. Learn more about Quadratic Funding")}{" "} + + {t("here")} + + . + + + {t("The future is now.")} + + + + + + + + + {t("Timeline")} + + + + + + +
    +
  • {t("Project submission deadline: August 11th")}
  • +
  • {t("Porto: August 11th - 13th")}
  • +
  • {t("Voting opens: August 13th @ 2:00 pm GTM-3")}
  • +
  • {t("Voting closes: August 19th")}
  • +
  • {t("Count of votes: August 22nd")}
  • +
  • {t("Distribution of funds: September 2nd")}
  • +
+
+
+
+
+
+ + + + + {t("How does it work?")} + + + + + + {t("All Porto attendees will receive an email with a MACI key.")} + + + {t( + "This key will allow them to cast votes in favor of the projects that apply to receive funds. To vote, you must have an address in your self-custodial wallet connected to Gnosis, with some $MATIC to pay for the transaction fees and a valid voting key." + )} + + + {t( + "Voting is pseudo-anonymous, but to record the vote, your MACI key will be sent to your email address by the Porto team." + )} + + + {t( + "During the event, you’ll be able to ask at the Ethereum Foundation booth about the funding process." + )} + + + {t("If you have any questions, please, feel free to ask any of the Porto volunteers.")} + + + + + +
+
+
+
+ ); +}; diff --git a/packages/app/src/pages/Layout.tsx b/packages/app/src/pages/Layout.tsx new file mode 100644 index 00000000..6cf298ef --- /dev/null +++ b/packages/app/src/pages/Layout.tsx @@ -0,0 +1,34 @@ +import React from "react"; +import { HStack, Flex, useColorModeValue } from "@chakra-ui/react"; +import { Outlet } from "react-router-dom"; +import { LayoutProps } from "../propTypes"; +import { Navbar, SideNav } from "../components/prague/SideNav"; +import { GuideDrawer } from "../components/prague/GuideDrawer"; + +export const Layout = ({ + onGuideOpen, + onGuideClose, + isGuideOpen, +}: LayoutProps) => { + const backgroundColor = useColorModeValue("gray.100", "0D1429"); + return ( + + + + + + + + + + + ); +}; diff --git a/packages/app/src/pages/Project.tsx b/packages/app/src/pages/Project.tsx new file mode 100644 index 00000000..673cbfac --- /dev/null +++ b/packages/app/src/pages/Project.tsx @@ -0,0 +1,202 @@ +import React, { useCallback, useMemo } from "react"; +import { VStack, Container, HStack, Flex, Image, AspectRatio, IconButton, Icon, Text, Heading, Button, Box, useColorModeValue, useToast } from "@chakra-ui/react"; +import { HiArrowLeft } from "react-icons/hi"; +import { createSearchParams, Link, useNavigate, useParams, useSearchParams } from "react-router-dom"; +import { getProject } from "../data"; + +import { useTranslation } from "react-i18next"; + +const shortenEthAddress = (address: string) => { + return address.substring(0, 6) + "..." + address.substring(address.length - 4); +}; + +export function Project() { + const { t } = useTranslation(); + const backgroundColor = useColorModeValue("gray.100", "#0D1429"); + const color = useColorModeValue("gray.900", "#FDFDFD"); + + const toast = useToast(); + let { projectId } = useParams(); + let navigate = useNavigate(); + let [searchParams] = useSearchParams(); + const isInBallot = useMemo(() => { + return searchParams.getAll("option").includes(projectId ?? "notfound"); + }, [searchParams, projectId]); + + const handleRemoveFromBallot = useCallback( + (projectId: string) => { + return () => { + if (projectId && isInBallot) { + let filtered = searchParams.getAll("option").filter((id) => id !== projectId); + let newSearchParams = createSearchParams({ + option: filtered, + }); + toast({ + title: t("Removed from ballot"), + description: t("You can add it back to the ballot later"), + status: "success", + duration: 3000, + isClosable: true, + }); + + navigate("/projects/" + projectId + "?" + newSearchParams.toString()); + return; + } + }; + }, + [searchParams, isInBallot, navigate, toast] + ); + + let project = getProject(projectId ?? "0"); + + const handleAddToBallot = useCallback(() => { + if (searchParams.getAll("option").length >= 8) { + toast({ + title: t("Too many options"), + description: t("You can only add up to 8 options to your ballot"), + status: "error", + duration: 3000, + isClosable: true, + }); + return; + } + + if (!isInBallot && projectId) { + searchParams.append("option", projectId); + toast({ + title: t("Added to ballot"), + description: t("You can now vote on this project"), + status: "success", + duration: 3000, + isClosable: true, + }); + navigate("/projects/" + projectId + "?" + searchParams.toString()); + return; + } + }, [searchParams, isInBallot, projectId, navigate, toast]); + return ( + + + + + + + } aria-label="Home" /> + + + + {project.projectName} + + + {shortenEthAddress(project.ethereumAddress)} + + + + + + + {project.projectName} + + + + + + {project.projectName} + + + + + + + + {project.projectName} + + + {shortenEthAddress(project.ethereumAddress)} + + + + + + + EN: {project.description} + + + PT: {project.website} + + + + + {t("Project Ballot ID")}: {project.id} + + + + + + + ); +} diff --git a/packages/app/src/pages/Projects.tsx b/packages/app/src/pages/Projects.tsx new file mode 100644 index 00000000..2bd853be --- /dev/null +++ b/packages/app/src/pages/Projects.tsx @@ -0,0 +1,136 @@ +import React from "react"; +import { VStack, Container, HStack, Flex, Image, AspectRatio, Text, Heading, Box, Stack, Button, useColorModeValue } from "@chakra-ui/react"; +import { Link, Outlet, useSearchParams } from "react-router-dom"; +import { Option } from "../propTypes"; +import { Hero } from "../components/Hero"; + +import { useTranslation } from "react-i18next"; +import { getShuffledProjects } from "../data"; +const shortenEthAddress = (address: string) => { + return address.substring(0, 6) + "..." + address.substring(address.length - 4); +}; + +export const Projects = () => { + const fontColor = useColorModeValue("gray.800", "gray.200"); + const color = useColorModeValue("gray.800", "gray.700"); + let [searchParams] = useSearchParams(); + + const { t } = useTranslation(); + const backgroundColor = useColorModeValue("#FAFAFA", "#222222"); + + const shuffledProjects = getShuffledProjects(); + + const heroLightmode = ( + + + + ); + const heroDarkmode = ( + + + + ); + + return ( + <> + + + + + + + {useColorModeValue(heroLightmode, heroDarkmode)} + + {t("ORGANIZER")} + + + Impact real things in the real world. Today. + + + Transformers works weekly with 600 children and young people at risk by promoting their social awareness, talents and ensuring they are more active and participative citizens via a project we call the the Super Power School (SPS). Our core value in the SPS project is Payback, + which means giving back to the community. I transform you so you can transform society around you. Payback actions are implemented by our apprentices and their volunteer mentor to solve a social problem they identify within their communities. Here you will be able to vote on some + of the incredible ideas our groups have come up with this year. + + + Pick your favorite projects, then vote for them: + + + + + {shuffledProjects.map((project: Option) => ( + + + + {project.projectName} + + + + + {project.projectName} + + {/* + {shortenEthAddress(project.ethereumAddress)} + */} + + + {project.tagline} + + + + + ))} + + + + + + + + + ); +}; diff --git a/packages/app/src/propTypes.tsx b/packages/app/src/propTypes.tsx new file mode 100644 index 00000000..a8102f99 --- /dev/null +++ b/packages/app/src/propTypes.tsx @@ -0,0 +1,30 @@ +export type SideNavProps = { + onGuideOpen: () => void; +}; +export type LayoutProps = { + onGuideOpen : () => void; + onGuideClose : () => void; + isGuideOpen : boolean; +}; + +export type BallotOptionProps = { + ballotOption?: Option; + to?: string; + onClick?: () => void; + lastOption?: boolean; + + votes?: number; +}; + +export type Option = { + projectName: string; + tagline: string; + description: string; + ethereumAddress: string; + website: string; + thumbnailImageLink: string; + logoCdnUrl:string; + bannerImageLink: string; + id: string; + recipientId: number; +}; diff --git a/packages/app/src/quickBallotConfig.tsx b/packages/app/src/quickBallotConfig.tsx new file mode 100644 index 00000000..d50068d6 --- /dev/null +++ b/packages/app/src/quickBallotConfig.tsx @@ -0,0 +1,1307 @@ +export const stateIndexByPubKey = { + "macipk.1e06d7edca68f62263d66e5c23f1e9b8f090ccab9afb350f0c7f2c639e8cb814": "1", + "macipk.bc8448f4fb97f3c0b7a1a8d40487c37abadc4ab80998546e1116761bec491282": "2", + "macipk.e321bcc1c5734a3bcd0f5dd75fb0b8614fc2da7f1e311f9b59faf9048314acaa": "3", + "macipk.bfcabbc51fd5be394d48c9d1e3e965081589758af6c8731346988f24a5a0b904": "4", + "macipk.fff14b175881bdb9e142cdbb6f0bb4a603d7f4902ccf332a178c0c724eb40491": "5", + "macipk.860c56aad1a78ffd9eb0a132379a450d681e546424449e42cd20f67ee14d42a9": "6", + "macipk.de7fdfde2749e4354313ce77396679b48fd806bcd5e21714955ebcd82bbb58a3": "7", + "macipk.59f0d3b37817a760adb262d84b155398de259ce13799024f304e3633bc82bc12": "8", + "macipk.4c828abece99fcf6eb25e858ebd75ea01f9f630e1456b242ccf9152ef750cd89": "9", + "macipk.cf4067ec8dd744f3977d204eb9e5735a8a8115f752c5d0efd0a195f2e339bf84": "10", + "macipk.f5c88c6fa36ba16a3a305d608043aa97aaa5d7607ed51c901b19c108c8f48fa6": "11", + "macipk.07b58ea8b34483e0ec94406d0afa8012ac304435d45f1785d7dd8787a2ed7327": "12", + "macipk.7c573cfa95bf8f6ddb37f05e6dbcebce1d95cf0c880e5b933f60a1941172dc96": "13", + "macipk.8caea10efc3c79a084024060ea7f4c30d13ba97602a0a7e09ccfa3418d126c0c": "14", + "macipk.47f29c383b5aed376edc296d328559bb982d87fefd321179aa0fb92ed4a8a715": "15", + "macipk.f42abc41b20a0db7325d33b40525e9a1b7b167f197f75f84875738206111fc85": "16", + "macipk.d1d88ee215b5d806b5654ffd6b44098c9ba8735f2a663feace1462e4cc374c8b": "17", + "macipk.8415623519ff71a93fee7b48005e98832f7c225cf6fbddb69142cb72273a779f": "18", + "macipk.939848b1581dfcd16f02452107a5c5cf20252791acd96bc585ab7cfd8e6c9698": "19", + "macipk.14d1c28eb01555cf77663eb6ec5f165371d57d93f55014687cbc5ea5d02ab5ae": "20", + "macipk.7e9d3d9039ce792ed11a15a99551207daba3d4857a90f4b665f117a0ddf80906": "21", + "macipk.112304d793c8ae1a8816925d50697dd5b7664066330f4c2abfddfa03336bde9a": "22", + "macipk.0602e82c6fd0884329d9f6eb63532d8916d80900d6adf6874f0f089837a5598c": "23", + "macipk.cd696604ed4e3fc34131cdef1b51c667043abf6c75730ca9ab35862f7d39d71a": "24", + "macipk.cc5c3a783c4ad72c4dc0aab59c10f2a0b25ce18fd54c9baa30a146baa78d2690": "25", + "macipk.30e27817545d469120bfad5434a8b6045325e48892341338265030fa8ea48629": "26", + "macipk.1bfbd413841843fac36783bc0ffa4a6ccca5405d044ada5572cdd60e600ec9ae": "27", + "macipk.9cc408aaae7612052cc057f1738cf020e9c4700b8540f8a731c1382f83299716": "28", + "macipk.8fb21a37de832481294d626e9fb9e17a5e04a5b2848d38702c38b0d42cd8f42d": "29", + "macipk.78484807139e0cb1f5e2790d9f6f8f5e40a8def2aaa6a4cabada920d0d880515": "30", + "macipk.11317cbb718bf29f700dd0dc5234b579ab6dbbc4451ba697dd977d00c5c0512d": "31", + "macipk.93988ab63561537d9d0b1ebde7738902d0968901f2e3924d0bdc76c99493860d": "32", + "macipk.accaa667714f407f250d705d6e0a0dfe3d93edfcb704cf490d4d6af960b7580e": "33", + "macipk.7848357a032847295a0838515a695e855e92ca8161b3269491cf5c1eefead182": "34", + "macipk.601d7941d686d019fab17c1511333a0b1488a38dd60433d142930ec0eb2efc15": "35", + "macipk.d67b56185b2df31a00f77e7cc955b6bccca82941804128e221e46ceaa541bba3": "36", + "macipk.b98dda3024088653bd597aac372dd7e5960486c0e50d6a4b215503e4bbe6f405": "37", + "macipk.2ca8032f384a93aef867708f52c4d6311d11b66715e7c41d3640742a648af81e": "38", + "macipk.1c303a995bd639800810ef5978dcb7ad356c09bd2ab0d278c8460fb7928bdd2d": "39", + "macipk.bd78a4c4d412617ead69e8b4372d87a6268e4e0c914ac7cdc2b93b32251e09a6": "40", + "macipk.fd27476665c26ec34e421e051dd3496dfdebe4d2be06dec7e1783b4233a1cc0e": "41", + "macipk.441cb90238b6147bf07c5669abffcc26031a87c1ee3576e4c114bebbb3262516": "42", + "macipk.1abdfeb1ad28babab7bea99080d06d94808baeea18363e5b97fd64f3ad99cb2d": "43", + "macipk.32fabce993fc3db850f95445fcec1daebcd37a13b8a75670fc74050ef795e599": "44", + "macipk.6ec864b94bf2e97102a38c71d4ee65223ef128aa2c74f38f60b5756798b4aba0": "45", + "macipk.47bb71528ff0db6350f8d4bebed4bcecb40b7503ee4004fa54e0f5b89bae8da6": "46", + "macipk.d57ce45ad97cf6f4ef671432092d9b104feac381c6247ea47c233a267a21ec08": "47", + "macipk.d6bfe8ab19a31c6476f08c986dc0b2c9b4f361afcdf009ec4ef08a3146ef5e87": "48", + "macipk.6f14502d222c79560168cea68813da7394b351d101c2cf07d62b2483767abf19": "49", + "macipk.29ba55bf303714b1f0d876ec55385445a62b61276637d1c34752cb6cfac6661e": "50", + "macipk.9435262ddb0ed16bda04c5f63f0e32ac4a380a08d77b2175d32684d0d3013108": "51", + "macipk.d5c64050a4ef70195a64c89ab09cae3380322055524cf0eec362b1b841d371ac": "52", + "macipk.e5c11f4e8bfcb13c4ae48ede29591544f2049cc5bddf6c175e8a6a3ebfd8c392": "53", + "macipk.1bd26bda48c9bcb75ae2cf8dddf2aa26e57fe3bc15c24570ee6b4dfa7e5187a9": "54", + "macipk.f4ddda711d818d16d1ef11016d9c569622549275ec4c8eca5361a7957d905b30": "55", + "macipk.8df12339327900b540b7fb0cd8aa0f4179d17b91bdf2e2da7ec2840965ebb39c": "56", + "macipk.38dd41c47ba9d6b6b09673381416225968b17a1b8922be01b185b708a202e9a6": "57", + "macipk.70890bf2bb09f8c6f4c2238892d7fbc702a4f223c967ab209210d7c625939211": "58", + "macipk.dd20fd2394fb6682fb0a87468fa4acdc6d2399580bcba1f238483b93b3a0d22c": "59", + "macipk.fa2c8f8b9ec7912fcccad7bdcb7ac606e6bb23305b39d08a5f36981413ae0f19": "60", + "macipk.30fc7d477146fd49d62e26c707ea30319e590bfbdf59a236a85fd24970b3a00f": "61", + "macipk.999f04ece888b051b60835b20525925b6ad109bb5602a3cd6888554535906328": "62", + "macipk.8550c1bf31364d3bbae55bcc70ba63c75f036d05feb4077cdb322686e44798ad": "63", + "macipk.7e6118e5a303f059987cd034d244d3979706a6e8deb9a8aa365bb3e07d650d01": "64", + "macipk.22ef3208630cd32b44df9d78f4176b20d223fdf3b3c89c6a46e6a5eab82e8288": "65", + "macipk.d03591d26e73f6b694210b3c4fb7d675c65001cca7663d726c3dc0c6cc652a80": "66", + "macipk.f251793cac7ae80a03a65ae68e9cfa3fd982a5eff6266513536fe9796b17eb84": "67", + "macipk.215a9560916361de1e9ba9858f98301a379cbb72066c77909811dba91b409a28": "68", + "macipk.16f3b8930ecf732ea342a03e52efd0364d6ce6908810f31392f69edf2e9c0500": "69", + "macipk.2eda4de752118f458412d658f1b7181af9730df8385b38a69a37025326ebbb96": "70", + "macipk.832666754d5b06009190d4df16ce6235251c219728df8aead9868af5e950102a": "71", + "macipk.213ff6c8ca3e1ee21b2335764438c3dfb84ffc5eb0dad7dd48b6d952a754f39d": "72", + "macipk.6c285cc4863ceaf3d26161f24f668aec9ebcb9c6d58c4af7e4289e079ec66d9b": "73", + "macipk.5e86bbd84a8baf842d7e1235d20d04310cebd21a53e0150ba5c2a524209bd727": "74", + "macipk.056fc8b17a42e18ffc5c483ef50cdcb3e3d4a46981713366f96c580de5bef58e": "75", + "macipk.e1fba16a6945ecf8184b5362630bcf3f27741e8c8125a4c9825d1ecaa047c390": "76", + "macipk.d53ce990fb67d0305c1387248e0a1ae224b8c970684ec94c2efb9ca996edc29f": "77", + "macipk.21750159516ccdf2a027d7d84bfe0a68b9ee7bf4579626ac73a4f641e3d0e521": "78", + "macipk.3d4bf0cb332d60ccce453b1ba729f948913750988685a87084b6835858ac7426": "79", + "macipk.514772fe0cb2e27daea155561978abb1c1ba648b1708bbcc18d9bf0d4f429915": "80", + "macipk.1bb1897951c153223c6e6fbd2524ba1fa8b2c680045f015db1c356b480b07483": "81", + "macipk.162393576e3456aa81532160a21222420e25d5b540ad54fcb264d94cf6603d18": "82", + "macipk.9cdfee696d1a00bd97b18f4e9472f110bc1a4295294f4b8d677df69f1cb6c41b": "83", + "macipk.416fadb9c3d215171aa2fe617b3a7a1f3b942e813ad37f377723dd838bb02ca5": "84", + "macipk.8a0f99717df3b4705b3d23715e5d2486476c3f8247cd425ffe654ec7d5234099": "85", + "macipk.f8e034aba7a1b4546cb5ec2d5c0e7495f6d796b293bcd55360c974208c358007": "86", + "macipk.a020b652d8db4b68dcea33a90a6acde37c8f12fbb5d7a81a6809866e8b83e51e": "87", + "macipk.beff27e61848f4d0f2741df2760fac8c5e0f2fb2d69dd48fed64c23e8f2afe80": "88", + "macipk.86e42e677a0c553d18a65d5ce7e9aa39ab6edab1ef0cc2d577d741267a14ab2c": "89", + "macipk.48aecf0a0d6a6a99430e90a1f20786b87a4a2e2205183d307d7efe0f1792c924": "90", + "macipk.f05544770d7ca7aa8b5cad95d1a8fc257b1d0714233a77d2dd4786c035c2d019": "91", + "macipk.f81f68930620d5999ef35e2576423f0ed89567303a82ddcc020fcd9b9d075112": "92", + "macipk.f9369843c01eaffabad8674c7858a0abdf47174f8750319fc5e5d6a307b9d809": "93", + "macipk.68ff3614bf89b687017aa2e736b016d391b632c8212d95c31df25b84c7ac9901": "94", + "macipk.26902e7b9ac94f002dc2951283193ccbf3833ed1539aa88621c75dab11cf9907": "95", + "macipk.76b63f45642ec6f150ae6fa45de4a2a649002b64e990c165ec1653c7f660f286": "96", + "macipk.d5491647469eb3b75196ffbc44e9db76547e2907d679ab3c6daabb24ce838b8a": "97", + "macipk.8120b27c38433a61466c97d82d4ee8b1256057ed22e1801f26cadff9abfc450f": "98", + "macipk.958b16f28c28a94b0cb97a78c17518688b0b685054cc20e0afc28aa609c70a95": "99", + "macipk.39086065f545178c57fb7bfcb9e92bf0a59809e43a3e8a12a812593264bf8e1c": "100", + "macipk.25f7a1dbbb47de68cafc7d4c2fc6cb6331d948652d95c43fed96c3e3e72e3b11": "101", + "macipk.8e182ff756c0357d8431c86a47ebd54c9a83054497ff53a0b981955244897703": "102", + "macipk.5869f90732fbef698080f4a8f319e386d943541e06d08e971273334db6ace606": "103", + "macipk.6b23549ddb0d1d8c6d38ebcb79df363450a785ba4251ffde84f13e51efd61aad": "104", + "macipk.9ae7ebdfeb0d7233339ddfd69a63e04d85fe25fc3b6f1c9a40c905d1b9fc5381": "105", + "macipk.b71ef22f7f4d447077203eb3c73f58dd54964fe8b590d556123879aa53b1da06": "106", + "macipk.5a85ad6ba4d90bd8d492fc1b7f2e8e8585e901a3c72d9cac5282c66961ca538c": "107", + "macipk.a3e055b0d1e0015dc08537b73053e31402bf5cfd4bfb1bed8c0121419d3cad81": "108", + "macipk.17993f503dc2066179d9cca68fab20aa0e11055ca98a7c412fd8b13e8f43e780": "109", + "macipk.447b35c22537786550b3679651b64c4e62e36acc0e00eb5222cc6c54dc878ead": "110", + "macipk.7bb38ccfe9ffffd806bba1197cbc1ea7bfd2325c9cdf86e2e69852035976821f": "111", + "macipk.b6df72e905186f7f8bd6cbb2ec3b1d0bd1edf2044bbdbf93ea9e9699e0e5f08f": "112", + "macipk.5ec99ced5b130d67b0694f0f76f88dbc5544e90cbc6901bb8c8e81f888479fa3": "113", + "macipk.2f5f1e6af250bd56a917e23a99d6be56481629b3df84ffb3b8dbdc9676fb33a5": "114", + "macipk.e56645724a263dd0621d0e05547e951ab3752ca51546dd3c649c1a76acf088a0": "115", + "macipk.ac35e62b802f208db5501b955014cff64dbff0db45b949d9e7395dd9dc2b8811": "116", + "macipk.2e0c2119a4c68501e96046cdb75b759023756b355be5666af25cdcad1b99059b": "117", + "macipk.9542fd2d39589192d8a4503f33c486b50b3413f0b9a5731231b6f00fcfe76dae": "118", + "macipk.0ccd1a804f27a000658d67cd09b2752b5a19654cd61a696bc19e0b24815b58a5": "119", + "macipk.e5005eb7b4e3cb75a87affe0dc421caec28f0a248443181679362e53055e6723": "120", + "macipk.ffa762ba303ff05f4775935e87bab063834e3682d6924610ff36e336f53b680b": "121", + "macipk.68fb7813c41e028b6f763240a24baf5fdecc9dc15d33c98635347440ed85c11f": "122", + "macipk.937ecc50a5cc8f206b490e2d8ff9f6c7056f5aa4174cb06901d1b35e2ba21ba3": "123", + "macipk.7c7f6c61e356489ce58f94e609ed97d5d16f44d09621fd130cab49fefb97ce85": "124", + "macipk.9305d458a2c1aebdd76b35dc150037b588b88cb9c41932a1d28ff00a9e608a02": "125", + "macipk.44215792a761212825040a9e7e6c10ea47495df36c361653f41ec727406e3c96": "126", + "macipk.27b1fdbd451bcfda66910c0afe1c8766248e083e67944a3b781498d45e558113": "127", + "macipk.be38482c7ea97065f4ede92763c925b3866d4869659a8054ed3d9c05e8be4b2b": "128", + "macipk.8944d1dbbf5e557bb09949ee4bc3ce360efb387a90075f4ca7bb70b5524316a9": "129", + "macipk.7c036ee4b4d67a01c29bb7dbac38c8d562050b6697d5caf987ddfbb90e29659f": "130", + "macipk.fb5c66a34e22906b9d0d701cf87c9178ec7bc6e3b609e0251e4c57d564070a9d": "131", + "macipk.64c5614fb7aa8f33e05a231a82ab5543687a1f87194880fdf590dc14b33b198d": "132", + "macipk.061adb834ef2da5e63194c11d83d2ad867e2849d87981ac43f6abdcd25d4001b": "133", + "macipk.c2e6bed1ca0a07054a279645a80da1954609f5a00df3e0c975ce3380e7330224": "134", + "macipk.54e2a2d913f115766b1eeead341e19f434182c099df58b2fc78c62ea306fe318": "135", + "macipk.89fbadebb351e96edc5405723b7894a393f5793131f83a9573f8672b751b519d": "136", + "macipk.e48f5ea7ffdc2dc1c5990dc1ab262a8c3b97d67942f73689c23e4dd4f1f8d917": "137", + "macipk.c5d4c549a7afe08a9224e13b2cf68b86067fd4a9fe9746da6600c922ee2b3107": "138", + "macipk.6cf72a92cc5f493453d8e27b553279acfc6512802c7f5d4da090f17bbc7ce72f": "139", + "macipk.a1ba52973804e02dd913ad114eac067d2548aa1fc4458f49db751d6a7028bda9": "140", + "macipk.82cdc6162748d6c095f375c9cb28212d9c61ecaae507a6c9b01b8e98723a2508": "141", + "macipk.8134606336ecb9bc8da99f332a6370a4b65ecd0d53c04340867e01d859a82c1a": "142", + "macipk.f7079bb3328e916560e2ecd469532ff3d63ce5108b2a9e243196aeeb0a44ef20": "143", + "macipk.18a113d509eaf048d14b114af8a2e4209ee598cc62af73dfe3a17ed0c7be811e": "144", + "macipk.a35ce37604fcdb85fa08cfc3dde39817e1d95553a80a33f158c40c05507532a4": "145", + "macipk.b7e8fc87d9cffa638c5d0ff2e51ff37d3c692c01824f05fa380680a47888fea8": "146", + "macipk.403cff79b21f77737d584355af177349009e341ae9ba4665ce1afafc12a76984": "147", + "macipk.99b1a2af1a9998bd2c3c1d66d9ee4fa9cdef525112b3cc613b59c529f38f799f": "148", + "macipk.62117265b5cc21def60fb1cf0d24e253f61c6e895c6bafdb0965b769ee9bec08": "149", + "macipk.07ac96b7b409356e64da1fea9db53b5a0c18dc37df1fb617b0ca981c4d216daa": "150", + "macipk.17cde046065dcf7047cd55fbcb741af69f865ccf7b966ecdcee11d13ba59fa9b": "151", + "macipk.b965ad3d11009c3d0b262dd18de8b25c74cae135d3ffd93c224b3f17784673a7": "152", + "macipk.d2bcb64c9307d8513cb5cd6db5f21223e2195ce0b5561cee111940b4b0c21e15": "153", + "macipk.58dc792b6962e35b2e9b23d5f6a26426f12f0201918fc4428af148c49fc83ea1": "154", + "macipk.4a6c4dd3fcacc4332b02bac01d34e9c9621094b6f6553c5d7ca56a7880bbf317": "155", + "macipk.567adc1490e0d9c5b1f50eb02f573c7c3aa4d98fa9cfd8f213f47d9f6443c09e": "156", + "macipk.b864edbbbe2bedf428f32e919d2792ca7af4c1b67e22caeb64f8155af56c5927": "157", + "macipk.fda2d8bc879e728605f60d722a36e322daf867e9a14771e3a4f70af6907e091f": "158", + "macipk.9f2ce201690bfba514f16e354a45448a5d1122fdaea69e7222c8775c2603bf0c": "159", + "macipk.72cdd6a9ef60d8b20a7b76bdf14ba8ab6cff03c2e92724dc51b5bf24776ce1a2": "160", + "macipk.0d59ef6ef24bf7e73a67581540bde8cfaab915b75b7551ac15adff6de96443ae": "161", + "macipk.e058e5137a2b9bd6d3b82daf5b9829a38eb7bc46f7096d2e681933882d4fbb19": "162", + "macipk.da025447ca3ba1af36076ff8512e3ca00f744831c95a3c5523185f3f1995d120": "163", + "macipk.8f9efcf21ede8cd668fe0e78f5d22a39a9a0f204dfc33436e59a893eaa171e09": "164", + "macipk.cbeb1dcf800ffff2e53cf155051ec1e89b9f3fd1aafb6a11384d016a16269ca0": "165", + "macipk.687ae2f331672e61f7fe9f745e0ae7dd96773f64d18e3ca882a47cb08d42cda4": "166", + "macipk.be80b471d55d3bb4dc96c475e3f7cc4c7b7124133a85c4c7c96728e7eae6e6a2": "167", + "macipk.0fc5341d39705360bfe858a6e0580bcf883ece505b8f425df6aa8cfcce462d9d": "168", + "macipk.502c5a3ad673ed1f849af592ee9f8fefac69f472894d2a94001cb760f3e2461f": "169", + "macipk.bb91e15eaf070490cdefc1fd1c6f1a8d52c33fee3cf74301046e54f9fc651123": "170", + "macipk.c1935d980704358ebc661fb97970198161da34e195597fcd3302a14424c33bae": "171", + "macipk.ee6d65e6826ff65d5d1edcfaa6fc7669c562f3d16d164f9278bacf3fb9bf28a3": "172", + "macipk.de85e100ffedad16b87b459b1cbf0414d9500c046848e8ce1275e785d67a952c": "173", + "macipk.865a4a75a699bf6e4e2360b709dbc262bdd2d6873547f0de7338b183192b6e8d": "174", + "macipk.887123d2cdf3742f60e03c4307ac1dc9a7bceea6cbbabe001afd5309d8e70d01": "175", + "macipk.e6f8e51b2e555560399d0374434647c917b2fbd20d114850caca8d0186d20216": "176", + "macipk.801e8e5111c24905658a1091496ffcf46ace166581b2f3e9067b5fde52781c95": "177", + "macipk.cd6c5fd9ab21fe9c7607874454d6970ed0227dedf314c6e257bb6051f4cda687": "178", + "macipk.ce410b731fda72b6e0f7e41dec25cdfce97598c724502e661d0fec51f3b9ac1e": "179", + "macipk.0a0eb891cd822e457007cc5958d68034021ff62cf8825be4f659f5c2dfb0e62e": "180", + "macipk.fcc8ab1df2d6b462ed4803ac4d5cbd8eb39a301e4cc66db427eb428ad4018b85": "181", + "macipk.5f8e79b952e4aa4fd2098a1904dae12331fa73fe28eb505086ce5bac49efbd08": "182", + "macipk.7314460c1fca9d0a15b17df203114368635b188f34baa78f7b5410e83bc7aa20": "183", + "macipk.d345429ea74cccd7dc062b1912a590257e01d4c034ae1b584f4d408eeb4a51a4": "184", + "macipk.51f7b82a7006427475531939a6815892dbb0d085e6f2235440b3a348b552b722": "185", + "macipk.5c2467491266f2c9348369e06cc3339c92c8a2aa8ee1b54ad53b5092bfb1b50a": "186", + "macipk.9d3c111723faf4ad61bd9c480d88b7b94797cfc6cd88264d51c3e14218343d99": "187", + "macipk.20ca31bdc6d8de85d5e9a9a5c553e479aa71a2152be149758b8e84360a048e96": "188", + "macipk.d79fc7ae6ef0094015c8b79f6cc5bbfa034faff4636ec7f99d5235e412ccfa88": "189", + "macipk.816a802e1efe000f259230f631326848afe36251b0da5ff2bc5189040508b21a": "190", + "macipk.6f946f9bc5627ce5b7fb84b477103e6302463beaba046713f638edc5da2bae9c": "191", + "macipk.2d8e7d96d7b39de0a67467a947d6ae49982632a6c2b7f6838e4faf8c4e08e00f": "192", + "macipk.9fc1426264603274bf1cf8c6923e8443e8c1b4d290f560f85666e4f18c51b7ae": "193", + "macipk.b858d75eb61de7ca0e897e95cca03562f38b3eee9530282c07526a9a2f81a5ae": "194", + "macipk.8cd6e5a7851e728e48ea5d29d25f2dbf5118129d0acf7861fe7023f6cb491c9b": "195", + "macipk.af4822396a0d96226b82eb176a5553c61f97012666964e830a9a886d28820b13": "196", + "macipk.5c0df819dc2ba6c368a015686a85cd83ccfaea96681319210c799ff9033c0a23": "197", + "macipk.66bed4f8b4844d760318d38de4136d13b1b8e900a338f8d8aef99462bf87688b": "198", + "macipk.bd384acf0fbb96696e5c29b94772caec7f844763b4eaa0ede98970ac432654a1": "199", + "macipk.523933411ecabe39e81bea916a6006bb8dfa51dee2d38bd65f35f76cb1c162ab": "200", + "macipk.1c8ce8957a9e432f3f1d393931f257e0ff9d690d5185937808baa5cecad0c98f": "201", + "macipk.4266ece0a76ca78f9709aed211b2c3f4044ca0442fcd55997f8f9a93797779ad": "202", + "macipk.f48c684504921d8c857f86af41a2a49a628223aab946cb899d7a5c8750146728": "203", + "macipk.c2ea551aa1339f509fe711f470fdd123cde86911fb678d2d1800a6d1e071da82": "204", + "macipk.dd0c57e46b1455d542118bbe383301a2f09c9641edf7177ac4da5edfe5759d98": "205", + "macipk.487590b0778f76e7818fee8a6d18887c2a8775f2f6479baa2989ddae5a03f405": "206", + "macipk.785179ecffc792fd8da36b2dfcd00804034e1a02f8365dd3c2161e4a7dd9fb23": "207", + "macipk.7474520fecc99fbf7c74c41f6225a2de8577e0cc90a77592ebadad612231b025": "208", + "macipk.333aba6f6165b14770e47783c2ed0e53a3ae71c43d5fa0ecdd4b7a8e275a438c": "209", + "macipk.1a1fda0c4fe7fdd51dc6f1c21285cb22c3422a1eab4373c7ddc71965a1e7f728": "210", + "macipk.57a4c807a0f2df032632d8809a654d9ca1cb9a01a5669d3cb542da4de986489c": "211", + "macipk.7502d0cc4e7e3e610cf816e6fcf1b50e88739c185e9edd22de12cbdeaac15627": "212", + "macipk.b60499ac433c7312f773b5baccf27cb170f2ab31b0a2a0a5a5680c4223f1f295": "213", + "macipk.1a357f3fc358033ef7225327aff0c1eb20f8e75c2978f337f3e610b51c273803": "214", + "macipk.9214e8f46e18f667f3b69f77c309dcdeced0defacab9d015654047fdf82c4981": "215", + "macipk.55304928ae0e31fb434dd94adee32078134a06a99ac23460340eb193516b0498": "216", + "macipk.ea03c661276ed051f5b68bfbd7bfd9aa2cde54eb7596575924f62e7fd6a3ca22": "217", + "macipk.8cdf0a0308872fe2ade54774b6902921bbadcd2261042a639e728b51e8c7ae1e": "218", + "macipk.6df52a9ac4a14931522b09e94f1e285ee71a47ac7b6c43ee24f67a53b23e5009": "219", + "macipk.ec8a902432804f0ff61b8d34f2214283f659714268c32e33f8eeb10bf9a1362c": "220", + "macipk.e39c2788faf0821a5b9cf294759b78a6ca720364ae93841079f0dc268e68df98": "221", + "macipk.97dadec7308c05270e647cafe7deb74e9554793632c9bd4eabe96f41cc1f6923": "222", + "macipk.16a890aae560d8447818722531b9546d1a98d8ac6887be65464e15396feb280c": "223", + "macipk.8ed08b2211d7581b97d583f90b520db89fa3f56318b642fcf70dc07f9c87b609": "224", + "macipk.d2b8c1592f2d838536dfbb0e727ec5655404c499b0c965ff48da0227a3d4fc8b": "225", + "macipk.568d075f25f3a5d79b455397e96eba628df68141f5e158f929d4bc0d4bfb7a01": "226", + "macipk.f73034b9326c73b3b74ba147a801c20101706df4e0dee2e56f984c9cd54e078a": "227", + "macipk.dcc82e34838d2cbcdd38bf781bb9c95ae0732bf337c4e3c48db7733e323cc7a7": "228", + "macipk.e3c7e9944317aade13b42645be28775187052364268036237e3c6f4e27243792": "229", + "macipk.1c544a2a22fe0fb91529057d29ebf7f474e5e59cd5c6cfebbfe7d26ef4e3d791": "230", + "macipk.a90793b2cb86633cc10c29883b4df9c392e0eadfac024f97f0f6b0afe13f2182": "231", + "macipk.5f3c4b06a6cb9cc949e3e7d0c1758a0999a227a1f8008fe4a2eb5e8d99943b9e": "232", + "macipk.16696e51365420737e9758dc31711629f08748e33f16e815d8261ac7835b14a7": "233", + "macipk.d0eb1918a6c01266366a0fe50cc4c39672f3d84dd63e109b89a4ec9f02ab8f9d": "234", + "macipk.03ebe3d35bee1b05efb432bd94ba7d4dc074e483d421baf30b4756a03c7727a7": "235", + "macipk.c5a2ee31e87ec5d645892103a1334c50641b8ed7d7de4d3f0b0fda8defd2b40f": "236", + "macipk.71a4e277577ae8bc7f05313e1408c45687b2f4ef73f8aafca52b88acdc03840d": "237", + "macipk.7a7135c01578287b52d20f7bd714ed1b1c74d7acdf6084103637b2717cae2b93": "238", + "macipk.4d98cd18b9f825433def83e266be59d9819275f7c50d5e75393a939cfbef4f1f": "239", + "macipk.f87e1d0519bdefe320ca3a5a957f18c474fc250f490b5aa4fb3d959a62f02884": "240", + "macipk.bde188a26f6ea7258ce60217316a8c97a3855112d11d2ca0be9c16a58c270684": "241", + "macipk.718788f91a5568949ac291b125d46e3505b190eba2a63f7669e521e4a37a6899": "242", + "macipk.a77af37d6172ac8b0699e32db0ab51c508c2180f921c5b4a9a4e4ebcfe806b03": "243", + "macipk.51199e8d25db96984b5fb67d9ba374056f534c835e1868e1fda3dad853bd1c8b": "244", + "macipk.30b2d9a2ab82493d0c7ce6966a9471d42b7099547b3d4c3b61a9df8939b27daf": "245", + "macipk.ad1417bf228947cf74f7462b429363dc0a81d618ce9b24c94d6c40a1ebb16828": "246", + "macipk.c41fed08cb272ecb15da9e7eb7d4991f52275572a7b58ed7beaba160d3a226aa": "247", + "macipk.ee6d1383884e3bef27968bff2397120c3635fcb34e967f837b8f6d66f5d6542d": "248", + "macipk.9b79bad994c995a0db759c948ca7c7453436a37df6975757949dd40888052d09": "249", + "macipk.2d208c480bab9b01e2b04ac180f0c7a90727302685b569eeda840e731e4e082b": "250", + "macipk.59d32e66bda44205fd572935abdf61f57271a5ad21ce66270d7981a38744a30a": "251", + "macipk.edfacbf4878a521ebd3831ac301c92102f55d3775cb9524e8d57734c2d36e4a4": "252", + "macipk.5f27584601301f9f078f3de21f1c35ba38d190b96d88d8e5b5e0afe5f0a6968d": "253", + "macipk.7af98178117949abcc6d5b268c1bfb01558e83a89e2a9e55b68e849dc3ca6617": "254", + "macipk.7a42f1c098c293fa725f05c2273fd18178d53236f59287bc5afd6caa825edb0b": "255", + "macipk.cb4f3140826294d65bb5fdc2a94541883bdea17c3579f7a8ae1412b0c40b5f18": "256", + "macipk.3d2aed701f3e09c5a8eb1960cbd357f5370bf7aab2967aad8a401114eec6e7ac": "257", + "macipk.651b6878561abdf6edbfa46fb3e810ada91711a7bbb58284c24596d7dc3a081e": "258", + "macipk.42427c65ec4fc1041426a3badf38dda6bcb4854966303315814b73017e3c832e": "259", + "macipk.b969c8012850a89675be29b796c388d3748dde966fb01931ae21e671c13ef09a": "260", + "macipk.595128e9db195b9bbc01a2e52647297f7332ffbd102dcab62ec2af73eb1ca998": "261", + "macipk.09fbd4e1d1d5818b49a505440d215ca33d999fd185ccbc027e88378009082881": "262", + "macipk.4281a67197868900b702df4ba58979ea3e30ac7cf9bfc942106fa6f893cb3da4": "263", + "macipk.27b92a840551372423878248d6b15c9e70b6e105c7b5745995b5a8bf12a78d1c": "264", + "macipk.1e8aedd39d516125e3383ec7b2b960d0be3bc82dfd2e8718c9d21641e8c0bc9d": "265", + "macipk.2def37c0e5da7165c1d89fd0503c0ad331841b7558fb8640d3b2bc08de022416": "266", + "macipk.5c745b17eb8854c1bc5a617eaf3c34ab9cdb7cd58305304fd5772d1a4b77baab": "267", + "macipk.bdf166d9d86a601857f32d66ea157b92b728fd9e1303fe610c14604f0add548e": "268", + "macipk.c9d6817a99e15a56a2a63ede42f40a09b44193877b4f54a43e221262e4e7670e": "269", + "macipk.e5baa223135b01e3f78114c293d31f194338425c9b40ea1f22dcfdb345d7180e": "270", + "macipk.0b702851d11356fcab87ea7fbc42b5832fa5b755514729089fc12ada83bbb410": "271", + "macipk.5ed24eb4e57a7280c1e94839a0c1df0c98edd4e851ea0bb6b00dc24c9caedb9f": "272", + "macipk.3484fe237d50dd97de0b1c783a7fb047f90ebd44f5f09a78f6c612d2e05e7307": "273", + "macipk.109e0212ef5cb124cc6c8c10ed83d89cff8851e1dbec82126701d4b17746c39d": "274", + "macipk.c41829ce249bfba7e3e5ebc84d67681c15d31341c25caf52485564a222fb6624": "275", + "macipk.8c8cf5f6d321acf8ccaf166a147732dda3f950ccf635111c8b2f81ae7ef0ee81": "276", + "macipk.7e54d602c9eea9e02917b29253b034c0f87e99a7fe2905a5599edfb69692aca8": "277", + "macipk.f95117b0fa60a3774b3e194dc6f28c555c459e76904a40e2dd821159aa04abaa": "278", + "macipk.24002b44f4b47ee55b84fa3c52440d7b3999404bd8be781e36a10c291672f98b": "279", + "macipk.a1953e0ee0f231c2a0107f11f634ce2037054ef542b4b82b470f8a53d05eab9b": "280", + "macipk.32c9575b632002fc3f09e2dd7468aa13f1f1cf7c2f70a419140fae455f4a112c": "281", + "macipk.a81ffddca26dc1c646c875913a9770313171a871eb457a86e275a3d264687821": "282", + "macipk.aa0b503d3f557a4a4086494aa9577f292e9d3b70b2666aaf026cd2235ce16d16": "283", + "macipk.b7ef063e5432828447015a73b66d6d9993de9991526c2370d6a6f9a6e816fd20": "284", + "macipk.93110f245cb01bef2080b377c05a12a68fd427eca501635d7fe819139494fc89": "285", + "macipk.2d5eba7e3f9d2c62a0300c170d5e07991fec018b56026f5e490dadf36f078699": "286", + "macipk.645c0f64d906827c01e1b84dc76390ffcbf4593e0ffa8226a3ff33928ff8e10d": "287", + "macipk.fcca64f3615ed0822808f1d0c7e7ab5d5d748e42bf598ebe048d93cae72ca21f": "288", + "macipk.89915323a4f051290eaef476a7ea250016004d6a69b3f85a9c940a89b78dbd8a": "289", + "macipk.d8e2387c706723768b26a155904a9257bcb55f0443a1991a9d064461e6e6be81": "290", + "macipk.52dc28195abaae2a7a7ac2c16dcef2a66470e674484cd7ccd3e50c0194518319": "291", + "macipk.aeb025d49b673a055ada4d6968953ca9cbf6cb31143d70baee230dc1e55f7484": "292", + "macipk.61040e62ed87a210b062b616e79c4b630ded92f7ad2d7ae21dcdf18ecc6ccdab": "293", + "macipk.74df29c61ebe3ff92b9b177f4a9767308d9fae41501f9a5f82e13451bdc881a9": "294", + "macipk.51eee97a0c5932b6b63a9d1c555ffd1e0996044b8355715085a8ab601f883897": "295", + "macipk.f88f8dec972628e404f862a637c76cadf3a93658e472dfaecb35a30bca67da81": "296", + "macipk.ea8452003e5aec78e9a2366c3467776da132fd6fafed441e6ba684326c375a83": "297", + "macipk.a4c2d36189ab5aefff00f00fb4742b37e77196dc3ac0f2bc3a39b6e1bdffe413": "298", + "macipk.901546056649a84b66e6cc9211d2e1d67c6024f0bf8ccc43f881ed4d46e3ba82": "299", + "macipk.b808516d3fd4207478533f12d9a96edc08a424d8dc4067f1acb4c04f6658b304": "300", + "macipk.ac050afa3999b926b64b2edd90d64660c3d875b0ab455d1d72338a22e2137502": "301", + "macipk.45c4414973dca255171721877818e8ee660cfecbec131e51efaf7a5f71504509": "302", + "macipk.24596b0b36d2d734497eda33fa4dbba9bb0f3204f9c9f2ee4e387041bbbb5003": "303", + "macipk.d323acf328026e7c5c7b112acfd81e440cfff864e71e5fe07c9479c5e1c97691": "304", + "macipk.eed8ce1f2718b3e7bb7df119b2b635fb0542aa660f0c151bf1521c21acbfb593": "305", + "macipk.b7e659e85127470c0dcb87a4f9dc7538d5b5ac7aa14c0d9f00ac186272cfa615": "306", + "macipk.735106264a24bf7dd3299dc1e996215a29a37e84fc7dcdba5ec1aa69ebe3f601": "307", + "macipk.f20bad7ef8f3b82e15e64398e7ac4fc020372a9e8e1587ce1d9b8a396aab9f96": "308", + "macipk.d7319d37df0075f31a3aac815f54679dc5d3ca060a76cc45366331910e45ec8e": "309", + "macipk.c878ce2507bf543c2329a3793fc5b1e9cd98d7636de037096ca5a29a7c9094a1": "310", + "macipk.94fc38ef32fc215facf2203a4154a1629002edc647aae3faa970d9a3ceb81810": "311", + "macipk.9ddaedc43c8db94e76546388b97374194fc5bede5fa45441af80af2e58de1e9e": "312", + "macipk.1bae4b0853bfbf1b8b4dc9ba112855232e019b521bf7b8518129c23229f08f12": "313", + "macipk.249ae65014156d05d827c6e32c622ab52c2a84cae76ccee9ca38758f9d95b31e": "314", + "macipk.b93ecc112b7e0f7723c509f39c4e3fe7fc773bc2bf83c3ba2ed6897be04a2dae": "315", + "macipk.c9a04d914e147eee07b11d9aabc3cc1f2568e1da48addf2b29680a7d69a16495": "316", + "macipk.d8fa8fc7c8a1a1b722c9dd3338451f3a5eaacea55d61bda5abf6ca7034376081": "317", + "macipk.fa22488e41de2f3e55caea2ee776bb3d6c77b2c14a59cbfe078cdc1279e57703": "318", + "macipk.9221ea249de572d1db2402a20f934a7431d41c9de7037591530dc5c353c5542d": "319", + "macipk.ceae864f42e839c9997f8a3cda08e13379c5e47528e737cddeb1d4ddc55fe511": "320", + "macipk.341622ba8f3b58341d008950323a39a3d156c606e6cd789f3e6af5337a102a94": "321", + "macipk.d589e03b2a39af3ea9b5f63ffd5fc84929123bdff6c4ecfc5525aa92dc09cc1f": "322", + "macipk.c59303eec1a91d7fdf6725b3db5ce3396f3476d04478df514984fd6e0ca878a6": "323", + "macipk.19c93a067ad67b3d4c1e7d015d5e1ce3f2203702da6aba44e844224f4e371f1f": "324", + "macipk.bb1e952d8c183529b17ddb2652f66467b3065f959ab687ede99933cf376323a6": "325", + "macipk.58a168f941cbdd7d0bab6abd071934ce3ce29c695a6819233a529606f4282c2c": "326", + "macipk.9c3451f3db2ad07cf310825e2a2c66b8c5d322e7c754ba20c7aa5a35a6cd6905": "327", + "macipk.3a6644a60bb5749d4d24e4a8b81b15590e1afb8e985fc557196b04331c3a49a5": "328", + "macipk.84bfdb4371e5ac380a3bcd13c544dd145bfbe8fbb1d7b1880b3381013c1ee72e": "329", + "macipk.688c28db182a2c1ccf614ac86c2df49a66def0904289db269437fbb850da2f28": "330", + "macipk.a8dd3a769e17c0acd35efb017e00f60dde52fef964de4a3a22c884c787c7d8a5": "331", + "macipk.623d100fffa5b981ac3ed05b997c361522d89d9ac1803720b92a50d4232b0b82": "332", + "macipk.a8d83a47a273391a509c83cb165dd5db4e481d988c90706117072b125b64781c": "333", + "macipk.ed579898be9cc87b61a58ad3dd1199cabfbd764baea9fa0a72fb6f14719d6289": "334", + "macipk.79c89e2624d0e49853b047b710559c9e38bcb429b29c4d5f517adb4bb4e4680a": "335", + "macipk.0fa0ebdc6ca0dcb146c17c0ebb64eb2ade8f66ac4163ae91a20bb01619372929": "336", + "macipk.3ebf030a95d01bb809fafec2c1069282babbf634498d48fcdadea8fbd1bc5111": "337", + "macipk.1dddc95e062868abff44de136b574d93fd3b3d00d50af6c68c109340bc210020": "338", + "macipk.0a8ba41c79d53c83b4f68557573dc4f879c53facc6ced11e715cd1948b15a714": "339", + "macipk.5e2c6353a3b7370e99f0796818adb36081c95effd40181aa5030649bd283032f": "340", + "macipk.a7a6151ebcb48d1474482fdb7ab8ed2feca6f3d05cfbf5ec3efd1d763720be10": "341", + "macipk.11551584085e94fa25c1cad6b311d0329b1607ea93fd6bac6dfc697ce1c3eca8": "342", + "macipk.e1f573752db8c8e459ba7b0965d31c5642569462f6ba59a9630c9b9a229f6c2b": "343", + "macipk.fd2bcdaa1917e5dba74344dfebbef96f0ebf3fc60b02eeef191f522792519180": "344", + "macipk.a2e890fd376b8674cd942692c189050ed98832a573232ac6b71c86167e4b7884": "345", + "macipk.ccae1c2f230061096052ac80c79d506bf95c46eef710b7edd3e3b4f9f78d70aa": "346", + "macipk.c9a946aa1a2b669371405c1823f803960a9f3cc006747cf06b85d0c62f485292": "347", + "macipk.af55f99191da79e6a401281d94a3979dde3aa4c10c88822fdae71404c10d0e21": "348", + "macipk.32531eca4a98c01f57a7b583cadda0f31ed084ffed34f3e755ccfaaea65db62a": "349", + "macipk.f5db32a39a154aed0c57255dcbd5a48efe74a7b90f4735d01bdc9b9dd039c89f": "350", + "macipk.19b7cc0c088d10311d74577ba868bf0f3e90225ab307b8dada4f89e261c1b61c": "351", + "macipk.a0df523ac485f064e5647dcd2f36f91e3d28e216659b3cbd8556d57ec00fb60c": "352", + "macipk.96d52d46ae683c727f92efbbdfdea1a50a500c884d28206c1dfdf51c7b846f2e": "353", + "macipk.d70573605601c32ec8ef375d47091f5cea66f752665fdff7cda2a955ccb2d20c": "354", + "macipk.66f151023c4417a8942620b3ee19e579166ef336bd1cddf72c134a068fbb4c87": "355", + "macipk.f6fe24ab7e95f7b0ae0f2372b6e71af9e73c960e4d1f32c5a0050eb19d4d28a1": "356", + "macipk.dfc4af1fbe127217ecf57abe5ce7e96471123c04d06223679526b5c5dff0cd23": "357", + "macipk.c41ec7758e23d3fc65cfff730b4f5bc60aeb4ce73b61e083c42cdc7c1a46522a": "358", + "macipk.fc2bb563c09970f4d7c616a9e049d39b2be66a380e2f4eaaa9670da54b9f3a21": "359", + "macipk.b8a266a775517ca6bf7e15a1ae447a05882e000d5d9ba0b2d02bfe5a71a190a5": "360", + "macipk.958aedb0eff5159b9f3b6ed518c6a4b3aabd2e3087688c4c158311995d05730a": "361", + "macipk.edc3f8e39a7f2676ecd6f55685cc92cf7006ac5643844f3fc2a8cb458f976180": "362", + "macipk.5e58b024f70e8816f277c6ccb6c6033a9fffe2ef40bd29377f263606db7ba1a1": "363", + "macipk.af947c8e561d9c222a0be6c9fb97f8c4325b78e5e361103b273ab7855c41b410": "364", + "macipk.fcdcd59e5347d1b8cae19957d90516b5f6cc6f5bb7140826e82daf6ca72c9697": "365", + "macipk.10700059ec86c2784a373cf92bd31aa23347fc9554ac1200819fd0fd7e39490c": "366", + "macipk.0a29465755f64d27a8dd7f96e1b57889f6415a0ddde712a113435cd4e96d8b16": "367", + "macipk.0aa7949f78aacc2f5f33d72e60266602bfed0fc221e3f77610531031b5015a02": "368", + "macipk.64b4976358aa9dac1795597d65c23bdcf3ecc24bb0b4ac0c1c17fb5f35f653af": "369", + "macipk.7905118bab457b08ef2ebe946f594515a5f5d21b12ff9a3484809491d405b581": "370", + "macipk.5fb1a2575fae2ad33883bea802dcdfef976e2f3ca8ec5718cb1917f602b57e08": "371", + "macipk.d06d9fbfe80e098e3728a2a83c5fca18c63fbc2198b04825b098c08cfd9a23ae": "372", + "macipk.caee1eb94a332babdd4d1f70a872e58f9f3701f5fa450115102a9a3f07ae090a": "373", + "macipk.3200302ae8672f5dc76e6e40333ed649c24e63aa47812d08c294c7b7fbe2aa19": "374", + "macipk.30795727b583631d26b963f8950d6025d2d8800961b8328982a0f5f4e6513c83": "375", + "macipk.c9f562751cafb76d3a70bcf3b0aa2ebd27ac34d742c1400f0eefd57fe4e10e9e": "376", + "macipk.d7dcce3635b21add4c4756b41f95b32c2f1fc6b595e0577698a7ff33e7b63e27": "377", + "macipk.0880615d16c240298afcb32ff5678826b718b64ffe47a90103f45f0d48c50c94": "378", + "macipk.50132fbeeb1f02b661a2f6e210daa53a71367fade5cfada49f1eba185b1a0329": "379", + "macipk.9dcd315c9519a5978b3cfeb4c79446fb8c52a4bb87f43a2bc369fdebd4da2404": "380", + "macipk.9f9548160c85d123354943deb82aa3bad40fe7dfef4b1afa8fcff0ae956c402e": "381", + "macipk.537c61b4169bbacb540007019f4bb028d9891731219b3bd97dd34d78330e7406": "382", + "macipk.634410f98c61c6e3915131f53b554417847f314fd0878e5dd10c02a039820f1d": "383", + "macipk.3da82f6aa9a772ca8534f60b1d6f0d15fde1760664c0bd17890c457059e7a19e": "384", + "macipk.a988aa8ae4b7ba806b24d57d4db5d860c1cdd068cdb371174a4070909691b328": "385", + "macipk.cfeb6b436cd216e2d6ef1d7e75997009d6c7d169d13685f41a96b2997944d8a7": "386", + "macipk.aa24ca18da1fc3fd2229ea72c41b034b20b09ea22e50547062d0856e9efb89a4": "387", + "macipk.cd05ac6e73f2350e96e9e401de1e6598376e864a4ee18c33d17ec39da600ac17": "388", + "macipk.f64fc5e6ab1730b1c8baba25d525458826516723521ba130acf3f8cff5f1ad2a": "389", + "macipk.e3d80afbdcd13735d1461198317c361c88a0425b7926be75320213eeeecc4b16": "390", + "macipk.1d06fd6f27cf4f666bd7721c6ed8851ccb2effacc68c577caa255b6d7bade126": "391", + "macipk.4599b27ea6add54dd6a655e0df34b9871eb8170d61093faffa1d69f2f35caf14": "392", + "macipk.11b5ef12cdfe0c3e8ec88bfbf649a7ebf646d778c1c63ae788547279cacb0294": "393", + "macipk.3c222877635f5bc583c5627efdc3d854bd8f5b1a504b1a1d133c8f74e291b105": "394", + "macipk.08f502b953732b129c722ae9bcd4f5e66aea46ec16093ce828816a59c404d8ab": "395", + "macipk.61a14b6f1f0f98cad9c54e2aacc5d4e027062a6eca312d9c5159853069d0280e": "396", + "macipk.551c8e7011eee8f7328cd32c4946ad89dede588458de0132d758594510559a81": "397", + "macipk.d1d4be73cf96e85d108e538a035965377e641c8851e8a361447fc676e5faf884": "398", + "macipk.513b42e1401a2b7e168d5649c06a24c3d87893736dabdac9e3846bbc489bcc96": "399", + "macipk.2ba24cf3ca03a896e81e5c74df5b04768f3f06cdaccd1e6ca1a2017b22d06789": "400", + "macipk.d40142da78c8ce5f1a2dc20c2ed4adef64fa9a77ab6d052f287cabbc87aff526": "401", + "macipk.d757b48b374c07c412f7e5c398754bfa6816c0d1a78f99c8d1daa70561759612": "402", + "macipk.02cbbbff809b527a7c7cdb623ee553a9f57f6ca692c57ea0647b1e070889998d": "403", + "macipk.b5e83b6d10772cc157706b1534df63a8991371025b2aefa61837df89cf8c289a": "404", + "macipk.4f5b5d9f4b35ebb6967b455f29daa20aab25b0d83c095596d352d227de73a294": "405", + "macipk.44771bd93675bb97a388923fc561287b94b2d63f70dd4ae146d29d891609f997": "406", + "macipk.8a348d9cfe77ec0fa74a063efa72819ca58186420e35f64d30388a7575c96c82": "407", + "macipk.a32d8afda69a37bf2ea4b30b1c65c46038810d5b925f2eee68279a0d1919f68c": "408", + "macipk.2596593a6a5e5623ebbe0887f205db3f30e0908508cc62c9ed101a9af05ecf0e": "409", + "macipk.a667b24223fad722b3fba4c962f27226b7dfe9eb04ad412103a877a4dc8f3983": "410", + "macipk.c9ea19f0555a5d82353d78de780c725bddfafc57f3925cb6b0368666880048a8": "411", + "macipk.eae3801215ec15ff764d499648d3a6745b5e72bde1e5e541018f1cffc96dfd96": "412", + "macipk.e2750648a924bc2941b1f5ba9d1666cd4edebfbb7da208961c5b6f318b522814": "413", + "macipk.6ffa2cd1634ac08b02100d0c4365cc8c99a79bedc3fb45f0895bf0af339990a0": "414", + "macipk.0853b019215eceba6c5dc9a89f97be41b19dd17324cfbc0082fc5a5fc322489c": "415", + "macipk.795094c5456fd9f5bc09e2a77b33fe3239e825112acc27c1ffa8c14e93240784": "416", + "macipk.45e763f18ac935045d844670df7d6e10b80c845e4ffc2ab773834a5df6c6b7a8": "417", + "macipk.3c93f57af50e322f7169dc72ce80467ca62a2889ae01f80f53495dbe6fcb5009": "418", + "macipk.d00419e16cc886642af2d4b5f27d5f2bc2f778dfae380cbb5e1529faaa445daa": "419", + "macipk.4e1e9b0461ed0bc45805a299e421bcdab3d9ee6926461a0c3c7d683df8c6f297": "420", + "macipk.5a6020d14e26f6363771ddf0a10194f4fda0dc81bf76e0fced803acd89f28f23": "421", + "macipk.18fd045d59662c8e90688c0405606c6b32714c92ea49a99076305cf6eeae79a1": "422", + "macipk.45c83729b36bb6e015c062c1c690d5088b92f6e89d2d1426debb047234bef72d": "423", + "macipk.23045d2d5dc933aec29afc495e1785c420bdbc4c064ddd83e1594fcee14e52a8": "424", + "macipk.a137c9c0361465789d437a4dee8c8f044235e3960751cdf3a097e4083695c7a9": "425", + "macipk.7c83095a8d4936c781b96b3759b8d36e3b311bfb5b2ff0bd590f04ae5c4abda4": "426", + "macipk.145e0199c6743f89f09230a8cb03b9d9799658b9ac2c046c77b00b32d215c79f": "427", + "macipk.ab876a345385b0e6bc6747bc87929a8ebf131a2d5a54994ed6806f3b4ac657a9": "428", + "macipk.42178f1251322bab9cc0e891a337682c360cbb1936c776365732fb5f0e2c9628": "429", + "macipk.b3fd359bbe528091967cfa194325acbc7364f402a007321b730f3922a29f3c8d": "430", + "macipk.f60a3501cca97ebd439a64f59461e12edd217c1c68b7c1d7ceff499d40b23509": "431", + "macipk.aa95e5748b7ffc4598be25314715a320684c9adf02f2c9fb953fa9a54f5a0c84": "432", + "macipk.200cc62c9a595621d005538c6fea2fd944186dd19885157e81a813805da40a8d": "433", + "macipk.fe54cf2072db8b561fbffb88cf5bd4aa5aff34f1de8c08ea42b3429795849885": "434", + "macipk.c7b5891aaff77e167751d160c6dc88c85d457e38b6bae10ccae93663b8b61e85": "435", + "macipk.65a2db296d0334036aa7f9f1e6cfefe08f8b1cc8568e41541de193334437171a": "436", + "macipk.fb147d302d192de6bfcb4b88f576f7bb0c2c25893035b8152755e83e10c07d11": "437", + "macipk.397f515d90b69dd2ba3aef9c335aa798b62e607024da1a6c777514cf14b1361f": "438", + "macipk.dfb1ece450f154e337772b846326beb2536f6c2150c834bcbef317b75f663818": "439", + "macipk.34974c0a7569c58c2b5592bccffd7b9be1c100f1982e9968283204924ce11a84": "440", + "macipk.ef71fdddd494e1818f1fad7959c098ef22742f87ab55b686336f51a1d121bf0a": "441", + "macipk.2d67a2a66aaefd94140fd06031e2ee6b0510881deed6618000bbfd37fcee1d99": "442", + "macipk.952f94cdcce2640ee8a795ee6701715d137db97980bb9885e8889ae11741b7ad": "443", + "macipk.913406d7fcb8c5a87224fc9609d90253cf716d94324c031b9492940decb4bca7": "444", + "macipk.db280030dbe0ffb0900b116b77c5265eb08a6075aaf874bb63da76bdb6ae549d": "445", + "macipk.ec8320d331e2486c85803a6bd494022107ff59d9cf0cc51d7eda4aed9ea5018f": "446", + "macipk.6eb6e0978d646a801ab6b95a8bd4e4e7aab5d9f0e93d78e81eeafe343c126090": "447", + "macipk.56a63571fd5d2f5a472f353bfd00f407d823d3d7f7107ebe575cb693ba137c91": "448", + "macipk.0a649b8f7ade5c34a293bc5996a21bee4ad6a1c1bca569ff4d3568455d1e0404": "449", + "macipk.aefaf692f4049670a6aedab9158f6944c8c8553780397ce3de5f479bab6526a9": "450", + "macipk.486ce58acaab963a2d697067c1a333364b4bfcdbee77d42ec723d76569e88385": "451", + "macipk.b42fa17810f2bd29c7b9ee916d1b15a0418fd8eb412c0c256e2746d54254eba1": "452", + "macipk.b789104a550efce60efc540219bfecc73ff8e716c8d3ff13288d3494457ab29c": "453", + "macipk.d0b5a76ce4823af7b9493ce34674f2afdfcb514c414bb861dd0930fbdc15ba08": "454", + "macipk.e23be02cb0c71fa434d031b4fa89ae25c16bed7d950138c17cd18ba0e70389a7": "455", + "macipk.704f39fa6eef90cb9a624aee51ecbe6d4e9266656d58793b00170542a3c651a6": "456", + "macipk.6d72e582e8bfb5f0fae7963dbfbed34ed938b5e0270f01fb230ca1b40c950285": "457", + "macipk.a2bb377ddb8cc8a71df03945af8a99a6e7aaa93c3b595131a1f1a7f76e7c1d0a": "458", + "macipk.c121b8b7820b36cad894e90609791b17aa7f98bb8a5a53a4c6744d051a9e1b08": "459", + "macipk.47ff2615d77b06ae0961483ce06864e1ea6587fd172b36b95073626bf21fed14": "460", + "macipk.f9ff75efa438a402468d596309eab13d6bd7f21386a3fd5b53f71e914ae39c03": "461", + "macipk.c21102fc2062ef6d5a04623571e8a95ff42fb5c0e4b40325ca08f7f27c2ae591": "462", + "macipk.92fa6bbff455ff40d53a3b69e66eb072ba5ab3dfb9c436ccb9be334189690504": "463", + "macipk.6cf94c5399739c544b1f111803f01295ee840843ce68dd0be0b4cdea05673a08": "464", + "macipk.e2f1afb90000688f5db16668c9e77f86e1c6aa126074cc55cc3d673c32843007": "465", + "macipk.f6df1f362a5a9e213c39890745528bdb3db3e0a62a1b7c54ce093e93377adb99": "466", + "macipk.ca9f9d7e7b9aa979818be1198f4918c5e751a300f32fbb64b3dc745d25fdbb97": "467", + "macipk.6b4b4294fc861f590f043b20ff0a185027f8ecfef977a439c8d0a76d91e7a609": "468", + "macipk.b39febadf6dee56dcba13309c43d080647c85a6d03b4ed41eb59fc1919abca0d": "469", + "macipk.3a2b62f7fed7cae0a681e5666d25a42bf0d892fab8e27e19a680ae17659c2c87": "470", + "macipk.a68c2d84308bc11f91b0e1cebf34c858b3057b425ca7799c877fa488a3defc10": "471", + "macipk.3efdd4c3c9194c775ecc656fdfef53e3d3fd60de966e04f20575fee82f6c6218": "472", + "macipk.f1fca072c953fff064e7986cd8d169bbc891b6ea6ed25ad9f9ee23d068f1850a": "473", + "macipk.e137fcb691847718c5ea29838a84ac5c8f08e7e62eac8fda30074c085b05e614": "474", + "macipk.90d5abdf0c5f92424bc401f9e1cc155a73c54a2f4544021e7634ca5212ff1ba8": "475", + "macipk.962084f1f48bec4d4400bc6760d9ac73236f5d9bc5e7e576f0745cb6890c061e": "476", + "macipk.0d2c99b342dfb46661dce7a3ee3060160501b86628d9abe494f094d29e631e84": "477", + "macipk.e8caf416cc527c28e0eb68da69cd7e99161ca70533bd7dd03f01a2c424b9fc8e": "478", + "macipk.822ce411e8c193196f871d4726934374b51e283ad7834a2f7b2202d5b4d0a016": "479", + "macipk.c1aef4f601530a0a826e8ba7b281f12d6618de68c0e1bcce26650571a8f4372d": "480", + "macipk.6bedbc44ae24108fdc552ae7e932829369c2317fa0f827b7c277284da7fa5f28": "481", + "macipk.ac5eec280be71704dc3f18af48054bead68ffd39767c9cd4d86a8fd0b1fa7a02": "482", + "macipk.2a55439e3fdead57f121f797fa2ecfde068a4140d765f0be1e5b156048efb60a": "483", + "macipk.dc278aec07b0b0d73ce4d8afd02935ef17c3ace04fd53dbd0e9e01d286aa3e8a": "484", + "macipk.c88b89b81eec1e9ffa422acfca614b86a9d9cf5bf5768c7826a3ed9b07c3ca25": "485", + "macipk.97e740e521969861f7959dc77bfb624b41841bde7e2e3fd7c302e2d006226800": "486", + "macipk.3c62c49c7d7f3f0e704241ce99a260f822a6dcc85f2ff780a22b5a218fac8ca6": "487", + "macipk.ef0dd41d8ab6e03c14421882d8b961c80799cee9e70869f1b7be569e231c841f": "488", + "macipk.bde396b5a61f2e9ad541114479f416d54cea31376b1f611f927c2a0273b4179f": "489", + "macipk.e620ff05058282edd2a286ed423069ac06250b6bcd819d2dba2e7f24f1c4d884": "490", + "macipk.2d0fd50bccaf3bd9b89597a79fe1aaff4ad62d3d2a06dc907938e20896e43e12": "491", + "macipk.6bc3e2a62b01245402c58afcd6b71f2a835e8f911df939f4966d359440357faf": "492", + "macipk.61b87853b7c44db1759022095dbed317b351ebd003d9e95da591c4e9c8975324": "493", + "macipk.3c24b189e054258b0749ff2c04d29062aa667eba7fcaa7e025ecc13fd24f4e09": "494", + "macipk.c2478f6010175de5474609657a8380772a3feaa86f9145121103f448e3729813": "495", + "macipk.749c0892f3780f7d75335f66f3fe5cdc133d64dfe0b20ed6408ae2ac6867c315": "496", + "macipk.287d37332df775048255a0cfc637e9a790327b0195ae8e08855b62c1888a9e95": "497", + "macipk.f7184c4c3aa8ca293ae81299c2041c80ce3d25f04b685a0a592616002b18e596": "498", + "macipk.6a935047c8f5d058ce06088a3241eea60d87571c4fc7a5c619552182e33a791c": "499", + "macipk.69692c7083e34d42679beeb1ae1d10bca22eb6ec0ed6637d8f314d13cb821c05": "500", + "macipk.62f27dbd7a05ed7086954cec495ccf11ab60cfc4eda376150dbd2ab59a76411e": "501", + "macipk.7f2515616f12f02bc6f3670f82d3856072a7789c1aac7ad764736138fdb91892": "502", + "macipk.eae5144aa30530a83f9bd8cc8b83cbbd42c1f8231b3ad8fc3292b8d1f51a688a": "503", + "macipk.6fdd2eab63ae74b0b1e6aee8dd0a545f79f4df2d5e22aafb165e7ad18fe7e7a6": "504", + "macipk.890f13ee3a06de2da344568abe7dc77a33b4ceac3e696e62efbbfc38cd066209": "505", + "macipk.d04a03506d30f1df0106d0f68c3491e9781ac772188a440687896cbcaee15d9b": "506", + "macipk.d445d4b6e399136932bb0ec90aa3312eef331b0ac1bd7996c09c5d026c3ee4ac": "507", + "macipk.42d07a261947ff8d6adb077aa36638d3e21af1da8b2d56d7727a644863459b8a": "508", + "macipk.87097d2a03c262753fcfd434e49994157e85b77d3f2809079f52ecd2b75086a3": "509", + "macipk.295536f0478780e44dedfbaad495ab8bc12233734f8092eba02e0ffdb837bb24": "510", + "macipk.18c3277708951fd039af17bc413acff1a68106e9cf5901bc3e3ff5366d533206": "511", + "macipk.858a6d8e4751ff89a21050bdb2f64a0d26f2a1675c8883f6097f56638de3ef16": "512", + "macipk.a29cd1d877fdd077da2834324236d484cbbb040d420a3ab81417cdec3c3f49af": "513", + "macipk.f98486d1ed68fbe23459e241b3bdc171267f1b0a8d3acce63093ec3e35b2939a": "514", + "macipk.619b691cfa5ab8f5388cd6944ae0941d056fb7019b767ada5df502ef2119952f": "515", + "macipk.29e77bae6fdba974b877ec00204c6a95fe168377e7baaf118f6b03d04803c5a5": "516", + "macipk.b5c496c5e765944d3e9f936c648bb493f5d6fa5ef9118e53130cf9f0945a66ae": "517", + "macipk.70fb544d60cd1c9ffb3bbad6a9558e672f2c02ef653f3322e3cb298fb9e98f20": "518", + "macipk.56a459973065fa63111687cdca69910be0bfbbf012c9e272f79c36e211f59e02": "519", + "macipk.b2392144a74f9510de4b65034f5872d9d679c50f849926f6fe4a31f2c4fc2987": "520", + "macipk.3365f3538f8aec849086d35f78059ca3772c071c8daabe7db1bad0d34e112d85": "521", + "macipk.0feda0fce42de17a442130583067fa88c989769e8d5e3493a21ffbcb2f9f0109": "522", + "macipk.dfdf9ab61514095b8e971e6d7da82575f90d21128946a06a2bf2e7092f2053af": "523", + "macipk.26b1374d1de03460359440d921ca6bd3128b58ea84579efb60c3344417ccfa8e": "524", + "macipk.bd94e4262b4926a57008aab4a738a2f1cd0aa6ef8fdefa77ee4e07c48ef5e80d": "525", + "macipk.60c2924a46a26746a68fd5bd000c4ce7dbaa31875c1081f62b0bb872b0e7f19d": "526", + "macipk.e63d2833981bf5319446a3381a877e9fd5107ca3484ec6775aeb5c092811a517": "527", + "macipk.80ed5aa780a2da69586b5fd4672d0c5959abf30091579b4fd7ec9531a52f8880": "528", + "macipk.8f05fca78e71b0f08440c7187f247e46e26089850c4ec15584b3284c93616e00": "529", + "macipk.c37082a20f0078df10713f12ca3748a94de6dce63fada32ddc35e9e74f2b7180": "530", + "macipk.9cd9d56e887e5783993d890b627ac9be8621799da581c3233b2db05726075586": "531", + "macipk.a526d283289af96476f20a12ca4e51abbc75159bd8edb71a16a9892907d8b2a2": "532", + "macipk.b138e7b5b0c47f238db51aa2f324779045f74bb60509a396771abc24db07cb8c": "533", + "macipk.3215bfac51e85fecf248283b12e13146775703f89bfba71c3f472cfa7b202d04": "534", + "macipk.98a9aeb758d2f7893e027924ea620a48cf14533a5a8a1f53a4eb0379dc72088a": "535", + "macipk.628761202028e48a4926786a8be3f240fedcc7888aec14eb22451c508b90c799": "536", + "macipk.c8621676cd1ef52db2f5d08e1e9a5d9ca79d74e645cc41e6e93cf30713cfdf2d": "537", + "macipk.b488e8c64eb2f353f4afbef29a591776c2f67a1220354cd8e0ab8a4830ef16b0": "538", + "macipk.ede3b3215ceb41f906e516812f600f1fdd0f68444c772a0f7b8cc9c0d175ac97": "539", + "macipk.3e53e6570e3bbf77a712a5ad8306a331b132612d5e6505ffabfd07dda186c610": "540", + "macipk.885de420b1b6a0082aec6130838e7239ac429e337ae1c529d82c71221161f40d": "541", + "macipk.e2e42db1b9a09e98c47658f006dd779b5939f58dbc50742d67ae4e96d9a23282": "542", + "macipk.f11626e09113b198c24b1083e4bafe6a0dd4c8ec2065f5db625f263b5d602312": "543", + "macipk.823da15c76604f8f384603952706213c032fe769c89b93f0f6194e0b8897e413": "544", + "macipk.5d23bbe51204af83001cd632d3b79cfec36873582bf2bd777393be429988662e": "545", + "macipk.38ffd338c6915bebc4323b02b8e4de1f1871cebe7f6a26ba1c18ac8d90ff2811": "546", + "macipk.caab78a6d8dffd73e2f3b785a7e3117ec457c5733a0cb69946ca07b801c6792b": "547", + "macipk.a1079d4870a05801d710c86810be17244619fb393b92dbbbfc3768bd87516597": "548", + "macipk.b79b7abf5d8559bc1069d377be710f14f1d9ebe6ab5221c95e996134a0f4401e": "549", + "macipk.218a02289bfe5835486eef22fa7086f0247ed5a871b5c10bed344880c822559a": "550", + "macipk.fd2bb1a50368c5e1baae3d801e80f62b2e133b12bf115a3f1661123baf26e32e": "551", + "macipk.7af1c13c3412bfb91ebf47e7b099e52f37ec469e70656ab8f34b746a164fce9c": "552", + "macipk.7a260702598e5d3f5921b4af8c65ed970f75d90cef70d3fdaa379d92f89f019a": "553", + "macipk.4ad6c5733714c95ec789eb8582b1a4fd6fd62fc29eb788d0d8eeef5fe89f93ab": "554", + "macipk.05d58ee7703e74e4626fa0bd61698dcac014bcd9d0cc64d4016faf6c4bbe211d": "555", + "macipk.8547b69f7bba2c8347c31d37c07bd57331db825b105a0e40a11d30bee658d2a2": "556", + "macipk.353ad7057d8993028945dec669f6c16af591f508f904ba4dcc715724156a9a9e": "557", + "macipk.30d382616c5604ab4edf023eb7e95928d90b2656370d9d7264974ab4e5debc04": "558", + "macipk.431a69784a1e4098d0bde860ddd6455766e00d2ebe876421c5feff55e4f76781": "559", + "macipk.3ffb58e7f93fbfad16aa755fa43e85dc942b4318a2b7c89309c91161de38812b": "560", + "macipk.530f3a12c6dbe85490e6a15714c54276bf27f5a366fa390b03cd12872045b50c": "561", + "macipk.7293f8c90d78f369c598442a6c6ba0eb2d5289e06bccc9d20ee98790c5b804a1": "562", + "macipk.41460d55e5b1bd3dea0ed50c73bd3b3dfc88209c0503c08a569e2ac6c12a1d02": "563", + "macipk.9aa4ea4d124621085d64a8951aeb4ce5cc1c58a06c11354bf0ccff297adfcc0d": "564", + "macipk.4ed9248e5a248b0a120a82461b1b8b1db4efdd703ffd9a04b5369e0efe178f11": "565", + "macipk.de1cddd40ea8024b98bd005181dd695e5ff053efa5c7ae1053de3bf661860183": "566", + "macipk.064b2269f259676e196b0f967f497a47ade54757ba801b0708fb4c92936b6611": "567", + "macipk.5140a95ba861dc31e7e81fdbebfaeecaa011d5b866989e80ef6a981db653d29d": "568", + "macipk.1d6cf8a93602a72010f38210ebac89722709619ddea4b3d93fcc5e32c1bff801": "569", + "macipk.901b621dcd8ee770dd43401954d82c2f559b1f6189f79e5cb32667a1e5a1a1a7": "570", + "macipk.0209c7e21fad19e1fa918ffc76942d31bb3711b3b9247e84b2aef9a11e38c626": "571", + "macipk.48701c8f6b9695cf18a8fa16cfcb891bc4ff35046120fe45b63a9a193e7d8825": "572", + "macipk.13464fa6759e2bc692de268d9d6cac0a71803e1a1fcb7fd30b86aa6494d10595": "573", + "macipk.a7045a96b07ffa3a122d8336766a77f5e72cc8393c3ff258213eee4b34f03ca0": "574", + "macipk.aad90dcff40e81ffc5d9dba4d1767e917e4c8f20a63a0609eda19963bf671906": "575", + "macipk.019e68b9dca7ef9713dd136f92e5e3cf468120e99043d6dc4ca23a62fef06da4": "576", + "macipk.bcd20b60f06d1251a8668f462e71fcd28b38feb4209f763d4526254a1d3d531a": "577", + "macipk.3ae47b9198da82ff174129d4dcc39b11923fc071c0faa3d5f5437b5520059b21": "578", + "macipk.754e1910ea29dd73813af1b9b839a4245d6389ad3b19f829ca13a4168fb1731c": "579", + "macipk.ae786cbab00f9db53dbd6aa605cd6a266ac3cc7719e594de24c59154c2996fa1": "580", + "macipk.75e43fa18293b52ddca35fd2b4dba964626b5048b26870af1b27955eb1d1f1a1": "581", + "macipk.72024dbaf7494444a2d3b28cf7725ad81eb7d0daeac4a03c0f699a63fd9b09a1": "582", + "macipk.dd7b4a0a4ab20da72b35411ad8a9584a55c7c98b495a7d6d174e4b1fbbd33a1f": "583", + "macipk.018db2ce027da2f6b81069bf0af0fe1b7d64e6c10f8329a594d51d79161c802d": "584", + "macipk.b7e9efd4e05c806b4e4964dee054718bbe2fb349c6c843b7ca7d47018c825b23": "585", + "macipk.989d26d7a03f51a215f3abf280334879580c56af0d986a81d38a8b734c751d23": "586", + "macipk.6331d54bda55aa9be026003abc4df58be69852b1ef0c10906d7f80b65047712b": "587", + "macipk.36dce05a258916d66eaf19b886120fc8ba13b300af8223e97cb191b129206985": "588", + "macipk.bf9fc1d2bf85353ab9e37dc329cb4e45b8acd459c63681a8d1291996e094aaa1": "589", + "macipk.c5896571c023763e09e92b9cedaf021af1b8d8496e986a79f5114013ad226f89": "590", + "macipk.79fb1c491c03df5912f9e280a6a6473e701222066ab4cefafb24ab3d09e26c07": "591", + "macipk.110d795d0a324975e61accf2ff7fb0247097d26be3bcfa60d4ec22ade580369a": "592", + "macipk.f70b39ee7e6d5a31a1237527bec9b60e16df93afc3b89066102c958ff674b827": "593", + "macipk.3ec696fba9316a83ba2ddc92b089ae53c2fdf1159538d2d9357f049b2b394907": "594", + "macipk.ed2d92262154db8f7834bd19b41688e34131b5d944ffe8352d44191564eac683": "595", + "macipk.e0bd4311d7b27ea2ef8fdf07b33cf671b24d23e1b9a6001064037f62bd4be58e": "596", + "macipk.2e3141cbfd37a16edc1c9461538be2a1e1bc9bee6c0409185d69a08102ab27a6": "597", + "macipk.d3a31590d733fb21e30c022122e4fa88d382775e01ab70d58a8a5957b320a286": "598", + "macipk.389dabf9a66ca3ff88c2b0b680315179f8a3c84feb4311fae8e6d4e7a354d28e": "599", + "macipk.da3724ea71b59613c426648990eb488afece5830d06e7e563179871df9b90f21": "600", + "macipk.bef97e120d3589d4b90a3c7906b30b4d1fc76cedb7fae4065c7759de75f67911": "601", + "macipk.1053cea3841c41cb9d29442ad415c61c3331e3865e07655e009aca032ee80795": "602", + "macipk.a34de8270ed6f1fece437586e563855d5d646648b1c591c7a7a114569399a7a8": "603", + "macipk.c12505d214fd98c1116bc32c2599c778f1fd6db7ef1b837896ffc573f08208a1": "604", + "macipk.a925c44f7a51583c196bd89606abbed1e1a5ed779bd1214cce4a4d5b8aa3d12a": "605", + "macipk.4e6ef798d9df74cbe32fd052e4b1bf41736e7995064fa64b29e3311c8eeaff19": "606", + "macipk.c34176fd671826f472986a27bd43f56cf25a02d7340316ca5d45e172bd109b9f": "607", + "macipk.02172c3490bc62388a0e1201574224a8872f8d8e7fec1870a7f4f94297ed0fa1": "608", + "macipk.a0de8bdeb523da623a0366e6f7aac55129d668c89011d93913f5c6fd5fb7a107": "609", + "macipk.f00a84312993ed392682c526e8e7338a8e14eeaacae9d2a9b34db8bd30056307": "610", + "macipk.9b80554917f85214d07032e5c712973881fd3b5c6eebc22d084128db1a07709f": "611", + "macipk.6fb7a17f63fb839b460c65d2dd3fc2f9a4528488f6235e479fbac1380b68cc8b": "612", + "macipk.993c42c55a10066e486a784b2ecdec97dd290e9c9093dbde56fd03c204f3670c": "613", + "macipk.9f7b4928a56aab7997e3eb0882784a3124a1d83988557116392f9cb5a04df183": "614", + "macipk.4993fefd60b48b8d60194550e0b0bf5cb97f7d8b4539d54e6295a45de2f9f118": "615", + "macipk.9656eebc05ccfada43bc066bd0e9d8ad0abae12e124715cc4b051f5e6e2d981e": "616", + "macipk.25c36219df33aeff89fc24ac7b6942396235b684c6203e7f8269290bf580419a": "617", + "macipk.0505a1b9641fbee7908d313381ea6bd9268a21d7a1ea15045fb64b4e46572d1c": "618", + "macipk.6dacc64feb6d88e971d7e118827c22648fe0e6fe3bb3f827b8cec6b6972d161e": "619", + "macipk.5f1489e5a545ac4596157f45e0958183f2ee782e52f93436b03bdc6d9ef146a4": "620", + "macipk.1c2199614873c6031b0c0dfbe568d3dfa0a4e1e6ee17f040fce6870fb8a585a3": "621", + "macipk.1f3ed201ccc81666a2f5cc01338f3b6d48917fb6fe2b187f730e22e6c5901a9b": "622", + "macipk.8f799f119d09d0fb815b3481f8bca0344fab4c9b617b15f2babb47d8cece3994": "623", + "macipk.3a0890f24270ae5f8b59343a593ef877f29687852bee61868e298d5003d1db06": "624", + "macipk.1cf8767f2bab9fee6199003770cbe8828ec961ad3df6696f0bea156468124702": "625", + "macipk.1360008da669c6b90b4d4249893827d5359b630adae9b261fd3497bd3aa52c22": "626", + "macipk.7713b18db2bb79682dc03404e9bf28337db109a719d0b26b0dd7cc5d07171e19": "627", + "macipk.1ef78afdcdc9ef3d42e1b899bfe641d32bcc76aeaee81a72d0fbd357db0e168f": "628", + "macipk.581eab260ed35f685eb2cf09ade6154d231acda5e7e5aef08e302d3cba61c8a2": "629", + "macipk.226d59a5ab8a39df73d2bd7738487cb02866f7c84c74774cf808e68a45df45a8": "630", + "macipk.1b07c1a7b558120824a3e7d690afbfee0496a69e1a9db46d6b1ebe285bb4090d": "631", + "macipk.cec92a50226a9afa64b295adc34a9d6e017657a8a59a345bfbf4c124b4090210": "632", + "macipk.4860f1cc90ce2169d5d34f0110957a0c2824c8d35b6259b4927e046a7526a111": "633", + "macipk.b3ba3cd62a7f37f544e664c19460addae94780c3834cecbfb6e8dbedf976a5a4": "634", + "macipk.3193c58c1796d62b828d8aeb7a884a278daae4c7d3b957d5c312502bc9906c87": "635", + "macipk.b3f7ace9b779455343bc7d7daa0a4cd69b51208d59815e9b17188f969ae5fca3": "636", + "macipk.90fca5ab1d07a584e48d0b6d2a37b27533b8100760bec131287ac0409fc500ab": "637", + "macipk.865bf4dcf63018e986bef5eb4f177f25549438797fd415a48b0f372655a8961c": "638", + "macipk.5795cd8f6c84e8bb04341f386b623864b062a059e7884d0d1b73536347385820": "639", + "macipk.cfaa68d97ec3924f22f02aa273980fbfc3e208ac8d204f0fcdb5da6bee055f25": "640", + "macipk.cd810d044d719b38a3ab116d985935363337724acf40e2aad491a9ea72cfb6a8": "641", + "macipk.93ebc3468c18eb7b214ad6efbed038fc12331814c1e1c7acb5e4b7e01a343e20": "642", + "macipk.e62bd6ecea8608fb1f2260d06a0ba82e0da5a1cbf8be9ee413757751db8e4d12": "643", + "macipk.bb9bd13be62ba160ba4ee918730281a07a44f19b68dcfd388ebf94b0feda191d": "644", + "macipk.1cfeba9c341902528e882c7a937f7319f32a838deafa25a35988ccc4626a0e96": "645", + "macipk.84ca6633809bf553a4bbdd1fd0b29bcb7a0e9bd703812c827ca8c2409dc70097": "646", + "macipk.847a0c2815a18ce757402f3bbb8b23250c25bedeb4e515e49dde9aaf96f68401": "647", + "macipk.cc12bbcc10f2bb110e10129a90a4d957348d0f6f6cf646a98b746600366c5aa6": "648", + "macipk.51afe563382f2d7a317e5949865f5f83f6d4c72ef8d3239e5c11a08ae3222187": "649", + "macipk.b83049bbb456801f12a655bcac2387d885b751f2dd5535bb903a411292bc1c8e": "650", + "macipk.77b289623651521130d777a5cefdec2e3d3600cddc43ec725c5e1652661a920f": "651", + "macipk.a9b2c4d07e77cedce94294f4f64bad3203717c4969cf179f16303ee76b525f14": "652", + "macipk.c6f48631ccb268952862497eb21be119da67238b3a7b9dbf1c1a8de0c7521a24": "653", + "macipk.3a83f1eee7865315b119a093d3212fadb7648fe4ae820b4dfb04d4571b4f462a": "654", + "macipk.2d28c40c189b35438e4f2dfb8b72ee9289cf1400523c6662c4517d643045c121": "655", + "macipk.1d05067a6fad5437c8084eedd99fd8b42c3aff820358d539eeccacacd4036f86": "656", + "macipk.5ef855e6e763d417a45b6c2b04009f8c672a2421f145c2a21f2ba5691d0a61aa": "657", + "macipk.d7fd2e0f2817b8400ee60368a145fd5dab9e506aa9dd27c47e1116c672cd669f": "658", + "macipk.2e93fc9e9268aee40d9d223285fae20065de2a296c9305b1dafe38b9c895fb1e": "659", + "macipk.a0ab4f50979cdb43d10517390fec15290cc69a343aed93e087ec5adbdcda6e9f": "660", + "macipk.95cc5dca3489880ba45ba1fd8b08b4a9f67cee5bfdac8d2f1bb163659e1f820d": "661", + "macipk.43a45d762bfdd31b3759498a9e67e84287e0e36076713cc8834055f1bf983710": "662", + "macipk.41d05abb1e691f88f5e31e1247a52e5fa0ca9e6c3d804f29e7034fa0c4f5a626": "663", + "macipk.30d4fc2d1b24cce4e08c0d9462e9db6b8e3e7326331d31efd00e3a1a3a878d8c": "664", + "macipk.207613e439edab45c5e3dd63f86c826c2114f84c625e8be92d049b7e28d53f88": "665", + "macipk.23093777d90d5e2cbb463d573c6059742afde92a4704e99631993660a60da995": "666", + "macipk.5ac965b35fce96b16e56d49b7fcfbf1fcaf19bfeb0ede0c081838c8895fe890a": "667", + "macipk.1b99f535689f8c4f86a71dba7fd604d6938e5f31b93e6307c6f721ead929448a": "668", + "macipk.33873023255dcbe48d2e3e8107d68f2c2dc38e0a30333faf185ba3d431d5df97": "669", + "macipk.79da28ad297790fc13d7fb0da3e550bb1c2c39d9ed43d66e70282c649ee87c95": "670", + "macipk.3e19f659acb2a7f28b049b8ae98cc2173b95ac6be07b1cfc304f5f0707217983": "671", + "macipk.e7e9af92d14706e577bc15a30e4f4cf44a612ba5498c8cdcc6cfcad06b209924": "672", + "macipk.d3f972d0443c83f1564b8f9521893f70561a2dc8b5ff3be33af8f903310578ad": "673", + "macipk.a4bb06b9627fd5baf95e0a20f5b4b9af1c69800ee0ccbb9ec446808d6e15d61d": "674", + "macipk.c8f8aceaafb6f50b18ace39660abf96ee0ecf1af0160d6a9360db4cacc229e09": "675", + "macipk.91148d863198a0ed2784b554342993738a28499c44a7731dcaf4895a4abe6491": "676", + "macipk.a8f568dcf50be10626ec7c56f5ab0e083594efb6142882ce04d4d4f024c5e3ac": "677", + "macipk.cd9ed7c9f153c83de13f683a09a73ed3f02872ee2385c02bd33b1a77f4dd91a5": "678", + "macipk.925a7a39ca46a48df79c9016ed73155e92dff9405d399702afff0b6ad8ff2b93": "679", + "macipk.3daffca182b731fff7d21cae373c8855bc3cf2899736c930968ac2e4a0dc0d88": "680", + "macipk.35d2a771a122faf4b766e6de65f5deb5578fc5853c8d6a7e4fa7026925ae9fa9": "681", + "macipk.4c57e0e560e14fce36ee7a4aa9ed3a4a892dbb98590b070918fb6f5f1928be0d": "682", + "macipk.5245d212a9d4d2ba6fa79cf32fddd609a78798c0da958372d521153789f06a23": "683", + "macipk.c3dcc6d9cf43f65e1309e26c25e374079b422776fd0a3e78e420c6e451a1ef8f": "684", + "macipk.90020a8b8bab28678162aa62b179f6b22743572386a5bdd648e267cfff8dac1e": "685", + "macipk.2b8754682a06a4ff3ced74347cb39516bb074f273058d539683978393eea8d27": "686", + "macipk.b75de89b728517ff94af91f6acc3137234e88442b61c603357a96157bfc2dfa2": "687", + "macipk.2ffe6b8328c18091b1d2b9447ec89db4e71136f5a1a0d6f5cb8a0e0a1fb19b8a": "688", + "macipk.9ae56b6b1e1cd4880fa7267ecb113d880077a764805b3c3e9326665939be171f": "689", + "macipk.de261c10a3f44c2da7e9dd4d4142efe4e76c9fd62500a7a35d7b0ea2ad69bba3": "690", + "macipk.89abbfff0c263bd65633d34ffad6d74c38f71ac21c242886cb14c43ce0b38a0e": "691", + "macipk.901f86d29801907ead3830a7a713ed1f2767b66d7f8e6695b3e6079f579622a6": "692", + "macipk.4f470d01016ffecd3f0f36ab5127c778e49422207a3750fded15ccc62026a290": "693", + "macipk.076375a8f04c725e5ce4ba1e5d0d10e2c6d5b6d74c64889a4466a39e9c0ff999": "694", + "macipk.f6ca7c5b6df5aadcb263d976f2287c699eb20f068e711248bc7169b04dea889c": "695", + "macipk.f13bd973356100d5f3619a0bf42f640f09938eddaf5f23a3de5d7e58df935498": "696", + "macipk.17788dac22cfe2d9425c7e7153782cf5195893933c27936f6b94ab5907c9c99b": "697", + "macipk.4c7efa68612cdee2ed77861a1e7a7e3764551f9eee7204211a3c35eb416ebe16": "698", + "macipk.b14358104fb07fd49177fa9ce3f3b2b28eca175a31a8123bf48d4bd188395226": "699", + "macipk.ec545c0ba9450efbc7138b63583a1b9d3498fab8178abbbe824b2f6479641b82": "700", + "macipk.0ff370d91eb1804ffe0913295debbcb824597e2e49931c3412fcb88948a16aab": "701", + "macipk.4ddc00d02b3977f9eeea70f45e6ef5a269ead6b5d86f99c56d126306f6a3d22d": "702", + "macipk.72533f30f2e79a4a6b41aa85bcdaaa1d0b70b4263364b5bb359c9430e96d9a25": "703", + "macipk.d986fc51f905ca143561040a7c24612c82a3f66e6ea077ef0bcf7871471ff709": "704", + "macipk.d87d5e13b06c334b4892feee0faead78f1a8b0790a74afd143e8a89480b03fa9": "705", + "macipk.d01998ac3f0b59ee1d91029553107b485f6578896d255a288621cec6c0ee149c": "706", + "macipk.92ada076a3324dde70647fb95e1f8eef7803bb3c33cb51ffcb9803a52e58f322": "707", + "macipk.566430ac7c856728a21d7a7c67556c8d78d24f12706331c8c3c20ed72e3fb2af": "708", + "macipk.f116a0a6192f57d5ed3de930b4d0dee53f8ad38eb809d4bf940f080f98137d05": "709", + "macipk.d0a081c0686573b869345fc10fca1cf91f656c10b1bf381701deeb061403d21d": "710", + "macipk.560e4601a690feb8ab18e800a1bf586f5305de5a9e35602c040e9234ecb6d0a2": "711", + "macipk.a45b28911fda4c734216efa44283f8064fe5da8cd00091d55243194d5d14408e": "712", + "macipk.b0e39580d0b9119353cef925a76647015c2a8c8f6d7a4e041bbcd2f6f6eb9299": "713", + "macipk.49f08606814c56065ebce420569e38300ca516b3891c4e9013af92b72d4705ae": "714", + "macipk.8e22d37a6145b728da2b5bec73688f9b7a7008f15502b874579da83a7815b0aa": "715", + "macipk.53951566714bd9156922d9b6c9e66cd689cd5f936999a793f51d7fa078d79c03": "716", + "macipk.14cbc69414e302698bb49ffe4f88171151f30fb29125ac82aab85d3b25258b95": "717", + "macipk.f48918ffb0c1c245c67d759f4b353430770d2d4af9944b8b76acecbbc02c2391": "718", + "macipk.e07d8539d959933ec11d3ecb0046ccf7e2a0a79ed2f14c9bc0bcaae9ab46e0af": "719", + "macipk.f39b2e6c6c20ce0dac360e265fb755216453df5f98e3e2e17b697ccb6f4e2da9": "720", + "macipk.e6365590c4b761b0e2d8c04483b41644d397b3a96cd69c9075f88d7685d4d388": "721", + "macipk.52f7d16ac0a5742dcc87cb60f1032dc503e84641191b40d237daf5eb7ce38a0e": "722", + "macipk.792d7ce4c1d6a0f01dd85f6cc2c5e4bc602493209c467c79f9d1f00c203a740a": "723", + "macipk.8722730f0160ee53ab53d5fd8294828a41f4ea2dbc58411451148cfeccd42015": "724", + "macipk.3fc67a8a5bb26a8ffd0604cb1ca582520dfd223832dabe97322a3a6f7fedf92f": "725", + "macipk.7eb7a49029ab3be5eb70cfa17e799991f053142de3d6577df7d2e5580eb99e96": "726", + "macipk.1450cd5d0a0450564591ac7f1e5130686312488d4d14d0635325fe9caa1c4e9c": "727", + "macipk.5c803eca858c5e05076e8ac040943e153cf0c7a9c7bddd85c66ed5ba89438382": "728", + "macipk.2fad69733f4cc88226401cc1105fb72c47346c724625dab58737b831965e87ac": "729", + "macipk.3516da57ff4aab912faccf86a8187fc9d4e3059463e46f8b99e825e49738b89c": "730", + "macipk.3c0c05e01f2e2b0874182c5340a0e8d053fdeef2e262b83796156cf28457fd8f": "731", + "macipk.d7f8d8bf559d5bee3599e91a1e6e788f3525e70dbe6de5045684a687189170a7": "732", + "macipk.0691015bf514ea5a1cbbcc3f3b094e799968990153c791b62aeb0ce2f989ed9d": "733", + "macipk.88cc380911e970a2213b7d8907b2665e26d0b79e106d8a31ea778a31e3f8e381": "734", + "macipk.29fec7e4c39d3f329a53f8007b63018e0573a8768987ac43ba4425dc2c876f23": "735", + "macipk.192595da8141dda259c3a15f8d83a1c4f31645b809cb467aa4ef86634447dd8d": "736", + "macipk.eb68543cc3c62affe2c2600d340fab719b85a20039513b239c0215c3559dfa9d": "737", + "macipk.db93cc0648f2d1729b91431f01c71e05aaf101539319caf3ba9e70a177ff1b8f": "738", + "macipk.bd54799b1d0cbb0abee705ec660ab7719683f1c323b3ea4839d53b8dd309709c": "739", + "macipk.5cee0ccb26b5da69348faccea7bdc1951ab89b663ae33251974f4f6572979b2a": "740", + "macipk.96b5d23878051a3c468eb5b9dac31017dcaf9d88685abf59395bb9d4cb78040c": "741", + "macipk.eeb9a947307b271bc3841fad7b572892b5f49d7d8482adb4bb3ca8277b28eb82": "742", + "macipk.eb14813181a65c217bf59cb5f47279702615ed7acf5a663ae96086e13b3d0718": "743", + "macipk.8bb06f3fa20e04c7d08ab248dfa888a7c83307fd71fffc97786fa847191ca708": "744", + "macipk.efec80d82908248dbe47065f19f744b66e1d3494519f21d2ab9f87d02e20b626": "745", + "macipk.c8202d379ef20419ffc474d040a565d314a596d016fec65ab13692cb599983a5": "746", + "macipk.ec8c99c022e30aa9b1d83a18864566daa1baaace8fab980dd1ac895d75bd1086": "747", + "macipk.01b80cd5eeebb06315cbd1e85461ff433537e2a223465fe50a6e45a4b799af21": "748", + "macipk.5159ff3bf0cdfcfe9e47b86c8f81bce1ad1d4d1ba38e8388ff580795c6b4ca8f": "749", + "macipk.0a9f6a40549a1e87688c31ea31a0ef11e02d9186f8c57fe28ea7158eacae2c8b": "750", + "macipk.794a62401a0e12e7407570f873bdaefb3355e84ea4bbd8524c1e02f35e1d5ca5": "751", + "macipk.ccfec5beb88644c286364a412b35afa63f8fb9f45ba58f22918aa44e74bd9a28": "752", + "macipk.3168fe598d1cbd01ac9ef7ebddd82bfa29583e51dfc366c0ee8c24f71b464e01": "753", + "macipk.8e31f15b2bf0d07374efb9c4634c9cecfbad1ba53d3d132757dda532166b542a": "754", + "macipk.b61fed3b652eed16278bfb32fd7d7205992c3937ca3bcc72e2a94a1ad9793e2a": "755", + "macipk.7304828d200b22bf7cdeb35d980da3351502a1eb870e3dcb063459afe50f8e9e": "756", + "macipk.61c5c92d4a0d0849299093d32078b0a4a0e29e9492be940cb366d86f7bd00716": "757", + "macipk.2c5a40617aebb220c636b20a1aa2ffe62251e55bd6687060c0990c10da145981": "758", + "macipk.45f41abf904459494f9c6082b3707971eb3486786b483255ee4b0fb0b6a013ac": "759", + "macipk.59d975e467df43158b7ffe31de6709a8bab31d395071f474aacf006211901d8f": "760", + "macipk.488c5982edd1d747dced05899e04f76442675eac3a4337584836e102eb4dae24": "761", + "macipk.088faeea86748835c22e0624f6936cee3f7c130cd971e1b67673cf39ebaa2189": "762", + "macipk.b8091000e8b6b367d5be1b8299e791e9ea790d8d956cf9ec99583aab79ceb095": "763", + "macipk.6906f9d8154d9a0515fe065d2feda9e6aae6f00006723f6292d057fc7d773630": "764", + "macipk.12763e310dafff50cd931365c69de64bfbe88136ee185eac39f718bd0c1af000": "765", + "macipk.7192b64c66b3f6f6a824326464dcfe18b471f9627f22f68ae90b906c93cbd80e": "766", + "macipk.7b1f24f543b84adbd0779c5efc90a9ea21b324a6977c337daad9c114002d4ca5": "767", + "macipk.bcd76754545596051cefe3363b7da161ef188c9de33031b5d835da2ba3c20c10": "768", + "macipk.15149bf520c10c777b7041669b23470a028d29d784579f3be87c5f5a71bdc222": "769", + "macipk.7b14658bd3ecef6429566f123ae642f3cb13ce3c9f4710c1aaa815d30350b61d": "770", + "macipk.1595eee317f31ff56a9c9573b7318115d4c38c83bad13cdacb1f91b9568a890a": "771", + "macipk.a41bfed9895240199d71e45d44c3db08dcc5f8435b61934aa7227f9720feb629": "772", + "macipk.18d247b8a7ab1140c0714bebab3d77017efa2ac99b6c2f628cca901ea5dbef98": "773", + "macipk.ca97af9d83febefd762981a1e3c56028faa15fe5c6c1e0e69c90345a530106ac": "774", + "macipk.29d071f24aa0a0a160e702ebde5acc8ba3fbf9a098b70ee754798027bdc1f2a5": "775", + "macipk.f3ced6bb6b0e8466081e829efff6d4d324a1fa80501bc29a8c1530e7d174e19c": "776", + "macipk.43208f32bc325ca64bc0ff7edcad3de727e2598740d24edba0cb0b1eb832e729": "777", + "macipk.826b541b41150cb687e4252189a9f3bb1c815960ce7fe664b874f63879347206": "778", + "macipk.5ca1e35a47e982046ca0fb610d94179e76add3227ab5e5bade096b9ee8e7429b": "779", + "macipk.574a6460cf30041e4931fc649b85b3382f452fe5b9cd8096df9d0e3ccb72e223": "780", + "macipk.1777f2722fae7835a6c39a5153d196d26e3a6449083f22c31ab49c0724e54ca2": "781", + "macipk.f542dede23f2897790bf9b1fa7273cf5cabc71857cc45899cecf1f6d1d0c43a4": "782", + "macipk.c9a4f99758fae0ffe913432e167a54e412d062c8c62e7237fc52814255bc0e1d": "783", + "macipk.cabab731f1722915936c209423653d157ba59a70d53bcb949e7e38ca1a15259e": "784", + "macipk.d0c92df3bab8d698d49b93022e4cf2a233a5d8c41386761deb501e67cb0d8427": "785", + "macipk.89d0c7cabe66f8220dc6d71ee98149dc0272673221e8f926a1c56f77f4238d13": "786", + "macipk.6511dcf3aa1f71e46d017a0e8145b545cb0cbd9e362db95ab4abb5560b177c85": "787", + "macipk.56112c7aae537f6ff6eb7171ac68685c9d63f57c75fa84d22370a8fbc936ffaf": "788", + "macipk.5c1ff0811ac43953a08065810e918beb48bcbce99d831a43f9afdb7d2cc0ab82": "789", + "macipk.52f7a7436a6f4c96424abbe2ed0fe95ccf3fba80051cc46045da869128d25925": "790", + "macipk.752c9c138078233927e07b4abc914499429418b7a9ae199ca5cf8b1d0b8dde93": "791", + "macipk.885b88b704ca3b20d282fd8622bbecaaf116e6f00eae00241cb470ca11dffeaa": "792", + "macipk.100909979732df10ae598e97e1b269224d45a04fa981c852e4e09c5b9ece3007": "793", + "macipk.5620712e89601a0aa3c6df0bde3a6cb4a150308b67d1b069be5195b2d8bb76a0": "794", + "macipk.7b538843cce88f1fbf53089e82bfc64409387037bcbc9432cbf56c611d7d8e98": "795", + "macipk.cc13b8ef2f7c110804a2eeac8f419582ffd98bf77592a4a0b879a30eae3e2307": "796", + "macipk.0ed1c93c1e75bfd4cd3101eaa4bb7fc2768fbec2be89d0b0d77a1513429eba1e": "797", + "macipk.50363297ed02d61c2e40d30edbcddb8a4667d04682142b5cde36e113c2ec90af": "798", + "macipk.27dccc493adbc5082bf10a0d9bd4eafd3b706993a15e4c6d84aae1a55fdcb1aa": "799", + "macipk.301b8b2a5f352b6a9b237528ca9a3a5e8fed4a360b4d4f785dd16202d6f9cf20": "800", + "macipk.8ccc980046778f49ceb16c8bf3305071fb4358ef94490fe1507e553e3b00e72a": "801", + "macipk.f28c790bfe75c14a433b87cc4d730f9e80e8e18127ac5a5f5f520a36a3171129": "802", + "macipk.624f78309da9fc13961f09ff6bd22105aefd1f01e8366147fd80f8a079d7dba6": "803", + "macipk.23b102bca42d431f742d949870de252b3adcb89914114359b8e5a0c3ec32c8a9": "804", + "macipk.0c820b6163ba241052f644502c1600ebcf027a4c574de49464d2e8f6abeafb1a": "805", + "macipk.0a4ee555a3ee0c714f6f403123bcaedd367082acaa5c91b98ab96a3616b8b727": "806", + "macipk.e5901c202ba5c1b2ccbf60aa97373b1b77aea967b2ca081d8a8d77ef1ebb619d": "807", + "macipk.f98ed7b2cc6af66d22766b58ea809219b9e2e5f88f25947edf7ed46e8e856e18": "808", + "macipk.aeb6ee64dd53870bb405fb2847a9b914d44d936391f3fc33a93a3872b9720103": "809", + "macipk.a22a1973cc6c1ba4eccada19462341bcb87a17a9309d23626a39abad8908e223": "810", + "macipk.9547c0c5daa02698f1bd48f24fff043458bd8d54df415f3f3f19e7493406f01d": "811", + "macipk.bb5443981fe2c72e906c8a2fc234151b8f12866179a25133ad3fccf72cd223a4": "812", + "macipk.8ab1ff2cc74941d6756ea973de0a7dd4278d635f142e89aded9ca7ccd96da6a2": "813", + "macipk.fc1c683b5cb87cfc862b9481151e1cde0e322141bca8712a361c0e1e1ec08713": "814", + "macipk.445d2fa0cf6907f300fe50ec2b925b6c938a747fddb827954ee2bd03fba1e19a": "815", + "macipk.f45290111353fdbf196319187f4a991d0559604fc82be24391e7fb3dd878beac": "816", + "macipk.f194acf1e642e72e45adbfb5a4fd0bf397a700b8a111a2734d4a1919b33a139d": "817", + "macipk.51c09293a84fa3ac93a7e3173d53349053311dd5c0b875b78f2983fd18ff5408": "818", + "macipk.3be88278c119c21972fb5dc529bba4b556050bee78fd78236177b1cf89ff1106": "819", + "macipk.34e8e313c22bb8eab5bba3ad3df091643aa988fb9d1ad3163261fdf8ffacc6a7": "820", + "macipk.75b52e4c0080bd6797d60b1a90801c9faa13714e71208708e0eb97163afaba18": "821", + "macipk.91e89ca1e3704945823fcfb22a3b9f47de2801def1dd0f561ab538ead2c1b80f": "822", + "macipk.863152070cb30e10779952dfa782fbd7337fdc46d06210e5bc7d003dff99c615": "823", + "macipk.617e4ade58fd3047f52bd0cefad6d5196ba818e6ec5e38a5ca06af72103b7909": "824", + "macipk.799a2e5dbdc1348d0e9d41dd776549a7cc92190b878b9d6c0fa3ee1590641b27": "825", + "macipk.019784916ec1f2afa0362a068b2d39f8b855951a5a7c26f64989ed64b71149a2": "826", + "macipk.ca620a1d7d6a5e455999ff2e3137a1806b3c8bc3a7d02d5be176466520229ca4": "827", + "macipk.794f241a5e559d47d393b89cb4035e4b95f4ef8a6eeb78baecfa14230cbad682": "828", + "macipk.8a00b6c0e40f9eb0615fc92cb99f25db45f100271b70ec0a34f5dfbd170c5a2d": "829", + "macipk.2e8305eec7fcc6eba96652f136a433e9d06747f9c90cc26693ab3f441d08aaa9": "830", + "macipk.ba36ae0ac459dddd8a66de0618792e683994ff1d2a926bea92d9642e58a73430": "831", + "macipk.15b30927e92ac10cf0081effb4b8fdc3038db670374f938b2a5a2676862bba2c": "832", + "macipk.9ed2ca8f0ba1797fca58d515d555dd402fa6e2cd6218e45ef989e807d516389d": "833", + "macipk.24ffc26618f8951b0d77a1004364f7148ca7547a07ad0d0f808a1482301f001a": "834", + "macipk.f2242c57c8f13e13002bfe254eede266317a0a5de6e413aeedf8a8a4d4a0aca5": "835", + "macipk.47983efc04ff471950e7c92046ea94acb9fe26fe62b40c9356a3492934afdbad": "836", + "macipk.1a556f3365b2aeb390febc0f93fda9f725ef8743793f6ac538627d9a10d3d72e": "837", + "macipk.9969b0fe56b12327680aaadc1931613f973a74e50a51ecc0b1f5ff6b11b9948e": "838", + "macipk.2c30c2f5d3cfcda0b233c45e8b171028aba140c115c8f5dfa48a79b8162b4627": "839", + "macipk.fe8a573e615d360dbcb1cbe21a84d2e63f49ed4a4659e1efab5ded0838fb21a3": "840", + "macipk.d17df31395e1e2065f0afd29e6c0c5c8a85d501cc6fe7e38956cc9c1dbe146a3": "841", + "macipk.0d61ccd522cd7f5f066aa5775af6f45851d18e65ccce792e49d20b4b205c769f": "842", + "macipk.125cfe0937fdfd03aa0b6958fcfb0a96cc5041a41ec417ba20ffd843ff4f531c": "843", + "macipk.5c71a494468e28a8a7021d36b4ba5d8366aa33c7b91893a24f06ff5b3db787ab": "844", + "macipk.74e750ab5075ce9c422aa1629ddb2573e44c63449f8e06acf6b72310a4193904": "845", + "macipk.99dc08b193df3520b0dc67d5ecd5ffd9d7461bb76c2e3a2181776cbb2dce4727": "846", + "macipk.8b2d510e338590bf046a05875bee948563f817cd7a77c42671a9da7f8b089c8f": "847", + "macipk.4811d825f2c0e33faeb564cb97694e84fb4015c34f4ce18f68417ed8ae34daa6": "848", + "macipk.fd1848a4a36f9b2eb8af41d7a7f696eb5e2c788597ef3b47a48a22a2ee6ba21b": "849", + "macipk.f1b4936fb6dbc4d8c785cfe29fd6b55a566be91ce7cb46853af170ae2ce4dd14": "850", + "macipk.db04cd668881aa327a26ce90d13a39faf5cef694a27e100b5cf17af289cb631e": "851", + "macipk.d256975a172a962b2ccbdb8614b2a598872bd810c28f4873125400d2d5f85880": "852", + "macipk.8add93e5add38578263f1473fcfb3f6e3b52a43102655e5c96a5ec57ae131d03": "853", + "macipk.5e3bdc9dde6339838e61ee4a9c70369ad6e26cded79507c77ca84df0c3a78093": "854", + "macipk.32d923a5c24ce43d5302d0b79b6aabcd5f4b2c3849891376fca298c111586c02": "855", + "macipk.15a3f33a652f61c030f143cc8c16afe02f77686680fc2f08c1bfc0c8fa55368e": "856", + "macipk.495343f3e692e4660c0eb2408d49368d51c0803468567cff4bc7b149db388ea4": "857", + "macipk.ab866906aeb2b85532087778c9d19ddf2ad9adaef8e16ca14a6dcdeffd4baaad": "858", + "macipk.80f244d7c32bcae5a1bf028ad32cc525bc77eb378c5e949de3ecdb5474e73f11": "859", + "macipk.3d5cf1d107afa2696d1765dc53ee8f32bf67c5c096942cdefecccf2074ecd7a4": "860", + "macipk.64db08eb00c4315f136a8d2bd6f0841406f119da02f383794d310d0759fed528": "861", + "macipk.3ab8e1dbfec156abd2c0645f601562a36e3f1c7593daa5ff7cd9b268586d7301": "862", + "macipk.57da8df6c2b8031c1e11e4553dd34a86db2392b5edbace505811780574d5cd2c": "863", + "macipk.7b8f64abdd3def31f0844585001415976f36f2c7c55dc7205e96682a528acd29": "864", + "macipk.1100800b407c1970a4006bdb4a287db8baef35377708f620b8b139fdac6700ac": "865", + "macipk.736020997d5a29cf4b5ce7bc104768c3e14527f25d48f9e7e36452b9d8551705": "866", + "macipk.b974ad6fe7a18676732b6b3e3739f77881d0449081068a40910146095813478a": "867", + "macipk.f33cfb91a1fe41bdab89dc9a102c4c2b9fd37e121f1c5f5fccdcdbb60995360e": "868", + "macipk.d503eac90ece5f623552a1024d65384f83956a385070945514d8f42971a21018": "869", + "macipk.2375e34a3ce7f48b4bfca77b4abc7f3b2fd02efb6c27bf0f4168e398009fe320": "870", + "macipk.519b37aa0960ffb62bc2130ea0165d0c5dff93f214b5353636fbfc6127557a22": "871", + "macipk.be140bb5e16a3b15a8d6d78e28560a6356351f838d4fd00c38878b6287dc1124": "872", + "macipk.519ca69fe27c20f6e1b026765962d377794bdf83a7cb9411852842cfbbe3c82f": "873", + "macipk.bfc2c421649760594135f32ac629d0993ec0e3ac38d3050e7cfefe5a51804f10": "874", + "macipk.667b9513f7b07915a587666d9a88fbc7bf1769e8923cbcefd63fac8766152212": "875", + "macipk.07ab8c6297190b87fa6f985e191e0c5d1e6502f746ab8b2e70b3a2e6573dc005": "876", + "macipk.6308c4bf2f56c514e828bc8c09db8b64bad61a91248b7ff5a0bdb4a26d6bb425": "877", + "macipk.815d680920eaed8220e8bc27bf7a7471b9392dc4182d2a04706ff97792ba851d": "878", + "macipk.8585b3337aba2240e29f24c3d111cbfff74e7bc7dacdf61b737f9580d9b57e88": "879", + "macipk.e062b3a1f1456acc45f822f897c55d2fd440701d4284831729ff5076a52e1129": "880", + "macipk.7ab86e6900c6bada92e354116f7e4fbc0d8a1c121f510b1323f4302755603013": "881", + "macipk.4162bb93b3fc5db589e6d0ce62996777c523b48c37fda40b57714292890bf601": "882", + "macipk.c5262955b9c0bb1516ee550e38ae53f774a3d6e8f0eb28ff150e3b4459362087": "883", + "macipk.ed984ba442e9b6a69d52b7695a36ce2245e43dd4539a6510498d652b816a55a4": "884", + "macipk.452dee65506d85cbcdf9b8506035227f75021860c1340041e328eb1d10d84512": "885", + "macipk.89716846df8eb99180a8374b2b9cf0686dd545390666426a059efdd0407d0920": "886", + "macipk.b34c5f948766709dcd1830a73edc85a08ff0cad10700d009f434f1657139240f": "887", + "macipk.90d91f7ce73a641f214a36a778e94fa630274c30233b46bc7a88e8e0165ad006": "888", + "macipk.7d1a9652a7af045ec7fa01163f06826b3dcfbfc371ac5ead4addd7f6d80da126": "889", + "macipk.9b40e565b0409227bdb1937badcdc07287f37df368a68a867188237b4e327a95": "890", + "macipk.6b12e420aa253e6434a1773ee9eff439dd03a33263880dcfc493fe51236b7921": "891", + "macipk.060f7d7da82a471f56a89a4945e264a0035fef542c422e2a3f60d2b6c9093207": "892", + "macipk.9094d51115e4c8168902e7960bbf13d5073bef12bbd5373c1f8f73a297b230af": "893", + "macipk.7c41288814e7dc4beaee0407b99333290f3c7f8e474faf631f8f5eab46b7e8a2": "894", + "macipk.a6f30228f2944d6c7ba026bcc796b0a7e5c816ac247fa3300999b3c9e817870f": "895", + "macipk.c9e9cc74c594c453ecb4706aefc5d0f9435a0d6ac62427efde578ee5e19fb68a": "896", + "macipk.64b63ab1502b0800e2bc7881e223d4c1e7db23d66846dca6042de153a18b65ae": "897", + "macipk.8b7fd29f76ad05fc47c59f6396ab3b11c41624a4fdb6aac773e56b003b1eeea5": "898", + "macipk.9ec03176acd92fee41fb2ec69205e4d8bb60f32b84f33f760b35caffa42e299d": "899", + "macipk.295979f68611dd0120b2489089698afadd36e801988231fcac9f35acdd2f3095": "900", + "macipk.fd0cf96139e12917299b25cc9bea4840e14de1b60839bdcd539a159d1d76fa90": "901", + "macipk.44b8ab4d159811646d9ba852c69dcdf1cff315aa70192f21f78c3aee8b73019f": "902", + "macipk.e17985218ad9dcbb8423b7f01471c0b3724d553f2c81e9e2481da35ac6c1d20d": "903", + "macipk.e69d49d1a90673b88c1d1af1315b8fefef270fc7e63132638e4355cb8165332a": "904", + "macipk.c4ce59c1d3c1a91738e5fbdb7b27eae2c7748ae4a5d6b4a5d0e000f435c51209": "905", + "macipk.2f5687cd574458e7cd5efc0318c55be07a3442f73fc0ebe963b835138e5c200a": "906", + "macipk.c9a5501abd743cdcb61f9baf6ac5190f699a879b857ea8c6ae79300270f402a3": "907", + "macipk.1d5297e0b16135386bb2b1bc7dd738bb02c9456940975408f93d5679f877049b": "908", + "macipk.0f84cee2e75192d2ef2103a7962402894e7f24be52e22226a62d098b15049e22": "909", + "macipk.969c5bef569f14ec1f20ca22509d8e7c4b60981c0e29837cbdcf4435261447a4": "910", + "macipk.46073b70d5a6e42da8f356ee62cefd48a7f41aad86a9ec0dd768f436e833f999": "911", + "macipk.23c20c51e45ef2dbe604586d1831ccdbce6f86b53bede0c4efac9a6c04b21487": "912", + "macipk.a86743a5d3eea33e51cc2b37c88184747d48f2d86c56e16eef3d93cdfae20aa9": "913", + "macipk.3c71cba694a920c12e159520d722da07e101e27a1fc1f66ddb1abf2da9a5c69e": "914", + "macipk.62c890f73119fe547da6fdc732bdaa954b9bbbe984ac543b24d42fb04f97ee0d": "915", + "macipk.54b43ca594621eb55c5e82000367333f83c9fd2cf6a0e8d1ba4abb501dee6f06": "916", + "macipk.63855399ce925d7ea8a7be36534799df746d53aadf7a8b59a715d0f12221030c": "917", + "macipk.0aaf3dfb5d0e8c0db3cafe3ddbfd961e336619699e76aef1d930f083d5920d85": "918", + "macipk.f6a20aed3976e8bbbd8ac335c607296d4bdfe7b45df57808980a9eb692bb8b16": "919", + "macipk.75204a1618baa79f9d59ad22ae809dd940f369fe51d265b5f393bed19b487314": "920", + "macipk.ea9b2dfe37e30cd2d82661cdc27cd5119b94ab0c2b958fdb8c93b4bbe6da992c": "921", + "macipk.420e44a7fb8239bd02726754bc25d4089285e48ea2f363f6074daeb2a7e4f78e": "922", + "macipk.3d1e0c83109bb071ae3fffa9f5e037ea9709007d5198f9a826c8f3402dedb9ae": "923", + "macipk.6d07d7362a1f6998a1b58813df7391fcbe5d6b5d415a13bcca650bd4909a9216": "924", + "macipk.59cdaccf0ee12f07e08ce6caa477ea8e4eb9784e54a405c96b2ac56c1f446488": "925", + "macipk.9bdeca46f47fbbd30180ef149fb9336cc2b06130db5fdc7cac4f75ca5b84d926": "926", + "macipk.182c41e8882e29f321ead045fa4c915b17a78b6510a1dcfab1b888f9eb71a39a": "927", + "macipk.59a181e48b1a34e2cea1b5f0afc0bc4721145d73381ad62dd6f622a22ce1400b": "928", + "macipk.6b7e5f147297e01cacffd50d1fc1a7690950310cdaea9ac56c4e215dc13799a2": "929", + "macipk.ddf379a0e9cb4ad529b40a4408278b311c6ef2df220fd8c5e9cf6b471dc01394": "930", + "macipk.d58eb2b9897caa2e25279dca806f1bf197a5184addfecf28088301b8cbde6622": "931", + "macipk.f0f8850c19137b8557e9fd668deb50df1e74c3556807234f12efda4728fd998c": "932", + "macipk.6c7ae302a86a58f5a114f188c546f1a00a07c71d71908144ccf1925650a5b59c": "933", + "macipk.1bf1e373a6ab58d0116838d7deca0d287f5283cca345a9a1fc022cadb9ab689a": "934", + "macipk.6330a7c4b6261200122ccbfb8de20fbdbdc6b4751ef7d1692b2a0a448ac64f0e": "935", + "macipk.bc66414828ea6c20963db2aa69ae712b7e7583292b1d5d401bb576c6eff41824": "936", + "macipk.bf718a6d7b1ed4fdb0a7f8b9afc2d9cd39c074e65b16317d522bbcc087f61b9f": "937", + "macipk.c3dec61f547633a0cc46bd93c76e6977dcc635d88816d07df499e5935d731290": "938", + "macipk.e78b3d80d50e1e12a169120d003e60bfdd2863e38d0d1b9a5fc5d0e646662c0c": "939", + "macipk.5bc2f588468f60ba52d29e5f48c94b8fe958fca67f2656fd5fb6a36352a7dc8b": "940", + "macipk.8bbda4d5aec573f1cda0351bb15151058359a4edb358ceb77b470319eefdb0a2": "941", + "macipk.5554ee06cbe241b82d0163b48e9fb989e4447aa08922486cc1afb3a71f70c514": "942", + "macipk.fae6ef3636fd0c7f181618053f9bee8c4bf29ddeafc57ae862c45eee9b992e1c": "943", + "macipk.fd7cf98ab30e79b44efcc349757aaaf6452bc79758b725b25b6a37a0d9b74500": "944", + "macipk.89e03fddb8a85d35ac42f4a9f8478ed2062ed1adab1fc1efe10ca94d421047ae": "945", + "macipk.01eb12391b52ffca40f2c453a8a2154aa1dc0210711c3750cd8259aa6ded702a": "946", + "macipk.dca133fa718e6b04254ece7747e97dfb878e32f6e5b610a9ecdc6a367c9c662d": "947", + "macipk.3a9ec27d87070a91800f0cf0dd313bb1799d2c03c2696e7d6ad44eb91c9c8c18": "948", + "macipk.90e2c092a0483219e8765e672711ab0c13a8d5b72d5db411cbfc90239c99f8ac": "949", + "macipk.716f6de7f159f3ff92910d84a40891280f052eddc5b8ceaadd976ee828df1111": "950", + "macipk.639001cb39d41e1b859549653ff711fbe7a2aa14be9b0566f9df2e960a620620": "951", + "macipk.d5e92dd369c4e12d1a64da4f9f9dd94f387a5f292873fb650802e7d6e87ab282": "952", + "macipk.b1af0f1c3bd535b8646a59ebb0449ead870c885f007fcef22740a443b4f65921": "953", + "macipk.380d916189a1ae6d4d68ae3ce3fe944aa92156830394eeb6332bdd6cb367d518": "954", + "macipk.e5ba67d9fe98112caa25c041dad509259c7e15eacd62668e72112349b9db2b30": "955", + "macipk.d046be941b3c87970bbd0afaaef2552243f3800a4b621a7973c77ab700f01e29": "956", + "macipk.abe1034a221270f49b8849ffbdfec598046ee77cc534bacfb4df1359fa9a9bab": "957", + "macipk.5b735137bee3fd953e9434e2a7b887d80e51de17a9d7decc4b81b77e9b458a0f": "958", + "macipk.fce400971ae04f742889863d1afb2fbc3235b547a1e10c58689f3d69f749e705": "959", + "macipk.c50745ef04db294af04ed435e677416318f8d0f4387fedbce96481661038df8d": "960", + "macipk.c4841af053efeeaa2cfdcc349acf888deb3b2d68652bd928c7d620c0fc65230b": "961", + "macipk.90061e4a2373226897deda083e88702114453d352d75c27692112c487528a3a3": "962", + "macipk.29478e441653ccdb8b958559168b1ec8fcba652574439203f661ba5cb0984985": "963", + "macipk.fafde55d0dd276c756b867354532f7f4ebdbb6b4ce259ff0d00127265fb92a18": "964", + "macipk.e29ea238488c12735174a108d7e45e1ff58cdad2ff17debcc10ddc191e73272f": "965", + "macipk.e70ddb95815fe94af28ac8065c5ac63acf77963cfe172770fa4a2cee8875f716": "966", + "macipk.676396bd76c424d8c19597bd63a2838b8e979fd6798808d0191f3336c20e8091": "967", + "macipk.b4840ae4b26e0e6a00692c1c4b755c28c1945bc80abf0a465495cd2401b9f426": "968", + "macipk.82c74ab7031593d1a335d160dab85460cb76cff1fc9df4d8e46f7fea64e72aa1": "969", + "macipk.7688851efd7a1ec9674e26ed471f3a929db99e02a738336cc1e0796c51b73695": "970", + "macipk.126557ae00b86ca6b3ff6a9a50a292980d48a6542b1282946e716d401e9e8990": "971", + "macipk.9889b1b0f50e3a42cc96851460894ff61c53dc04a72fcde9a24b0e9bcd37af18": "972", + "macipk.289efc9733e3bf4904e468f66ef269ac241c05b1f84841b95a1cafbd5772b624": "973", + "macipk.af6e90c575d3e0bf46e2e05f55f20054040d4675ea5cce2b87da62a606115291": "974", + "macipk.26ff1fc8c86899dca5e900b67fe014cc2a39d7a415c366e52725dfda7442af9d": "975", + "macipk.22bff66d5c68189dda6a624c0d7a859803d02c1a53d3d68c86a5c70e1d0d011c": "976", + "macipk.09d26341c850eb463ea3789e5fd0412847b83c566abc752bb490d7f6c33a7a8f": "977", + "macipk.9cfc819f6275177068ad421aa445f794248c9cb5d75e841e049206c93f9249a8": "978", + "macipk.b3ceeeb55b0ba4fa9ab1b733acd047bed01a0883c94d0b4fd2723005eda7f80e": "979", + "macipk.9dc30216665866af5dc7b79d92af8af342e10021f395ca8ae0cf7d56ed6b4f9e": "980", + "macipk.a6a3d4871cf9c5003d19438b62e56e043d85df7dd5d48dfc1b376c7468477412": "981", + "macipk.999fcab5f62ca2cc383ef824bbbb6cad49dc77fc2da6842f20a2822876470cb0": "982", + "macipk.5cc9e4ed3b1669eaa0b47b2a87340237f3c4c3ece4a8740911313533a9da8210": "983", + "macipk.54296b390c51cd2c63016548796ce45cfe41d381bb21a5a47dea0b1ed2a6d686": "984", + "macipk.d3886bcb718a4af738a15cdee0e5850b87552ab07063ac931e76bcdea23b3799": "985", + "macipk.ee492173465fb3cea45abf920defcbbfc191da1abf8f99c7ae3735af4cbe401d": "986", + "macipk.813572dfb56c8ab7cddef620eadfdd3fcc306e1fd38f247cc2614e0e0626048e": "987", + "macipk.355a066de7bfb400457da22f3dde83e6db879ba58b8d5e72131ec6f2741acc8e": "988", + "macipk.625dd0f7d0512707770cbd6db4eef05b2f97e3bcff8d4270bb92899a229e208c": "989", + "macipk.80d369d2ce5e380087ef4776ab3f5a2151d0f2857cd6fdc984eac059e5ca2b0a": "990", + "macipk.9a8aef45630fc6f13460a4b80c6ad43491f5ec7673c457d98d6c9bb385275a9b": "991", + "macipk.bc2897a78c166514740e0e36a5c6de609ca002651f38ebd76aad1da8bfa9d396": "992", + "macipk.58324721040a0e3a432ad375fff455f1727056a19b484e4d30fd8c73ecf94e15": "993", + "macipk.4ad6b3f39ce50d2b25860b13895c4eb1f90512f337e8cbb056756c4676f0e720": "994", + "macipk.3299c4eb6070c3c62ab880f9609fe638f3605b691e17d8f988a4a7200822fd21": "995", + "macipk.0b8e1885f389de7c3edd351c01deecd4775b51a80b54d9644b5b7b275392a025": "996", + "macipk.10f753480583d889401c903c926f4f17041cbac7ceaaac681108432a90d5a09c": "997", + "macipk.f0faf33d192fbf90caa511bd5f14fc500833796295291bcfe803af2d9665e6a3": "998", + "macipk.e92f6d3813bb53269571e9bd81665a56bcc1b6ca2d85fa30d1b31083c0019012": "999", + "macipk.f6daf102912064056b877a59bd02dad9f5d5baf09d58a96aa593d1d09fcb239c": "1000", + "macipk.3ca3693376d9c653a44bb6e9ab9a9d35a29e91944099e1aa5874c8e754fc2b02": "1001", + "macipk.802bff5ccaaafb7370a6b6fac2b3b6c4cb87e792635a0be3e5a331327d10851f": "1002", + "macipk.681dd26a9e757b626bfba26bff838b7589bea83e83df0eba0a00345fa2faef28": "1003", + "macipk.7473b2986b809b136c44cc8c0818fb8ac54dab1cde4370b2e527ce2f823d7591": "1004", + "macipk.4f30fa1f8f78c8097a2317ca337828d11d3d3d1bd7bdb1c9ab9286d13a56239b": "1005", + "macipk.fd0569994fe8b4c44b277fb521f4b0af0385f717c55f63f2a29eda1bb9544fa7": "1006", + "macipk.f5fee3181c4f441152416e1462e4514fe17d244c19d13733340cb7195d66d49c": "1007", + "macipk.cb20d452933c4dccce9a590198a920b771f55613922c3807efbd6b9f8d200221": "1008", + "macipk.f151d314e9582a282e6ad69cc84b0fdf36e6121ae6eb0e4316bc4f153ea013a4": "1009", + "macipk.8f241bf70b8f853ee708976c24f96e76c7ad7b2155a73a4c3d44c57c8bc47ca6": "1010", + "macipk.73452a5a9b626c79d28ee22bf1baef1aeab0a60d91a536cf2eaff785b6991527": "1011", + "macipk.60895520e0111ce357254721fd9efee94153bcc3f40efb96d7a83d2a0d8beba8": "1012", + "macipk.943cd606589fb498032bbdb0dd5c5dcaeb9df330338b5551b992ff63f01f6b81": "1013", + "macipk.e20f5e974caa9789384b99deb971bc50c784be8276f331271b7eaa29c282dc95": "1014", + "macipk.5059108323324d8f300062a8c4d54263ad3d2ec7df396362e5a6d3f1ff414293": "1015", + "macipk.82f9f13e9f6af3c923310ea416e44213eff144c82352c883eebae15979e7b4a4": "1016", + "macipk.5c5c30364256dfd24802b56ae27fd98c3437220170c6481c7d7971ab673ade9e": "1017", + "macipk.8d8dd9206d58b8552f2eff81aefb23a4bdcb15a5076858e770fb3d6a6f268a2d": "1018", + "macipk.95cf7cc079784cfa59413fafb4933db96c3c4534bcbd5facf091d34ff8029c0e": "1019", + "macipk.faee40c308cca59089a4ef12c6dae8fc2faba7b3a1ff23ce856cc199f9e99315": "1020", + "macipk.1cf471501cd15467938b40f0a373fefcc90ac8280dc2009b85aec100ff63f02f": "1021", + "macipk.5ba8a1981bfb509532f1e8063eab4befc71395f74a21b01a407a4512b39cd917": "1022", + "macipk.640f4a47a4fb668795f506d69532f84f5ca03a502e422b20684d8b86d8634713": "1023", + "macipk.0d04d435c083cb8865d4832c11e6421f0379def24a4a375ce77793cdbea347a1": "1024", + "macipk.61936cc5e5b16a3f2ce9051e0bcfdada695288e579c8eb485e20329917190f8d": "1025", + "macipk.2207ce72fc38e898ac01d27a4a0ea8717676b549c5ec35d9cee56f383565a99a": "1026", + "macipk.8ce7f3ec750f57ea91417fc8d50bc4edf5a0dda6d9c9f76cf6bcf5565c9c6884": "1027", + "macipk.d0dcbd12274d076534691abdea42282fc08fb0e2ea03ecd8b9f42d90721c88a1": "1028", + "macipk.7ae99c262bdcf8a35acf96ac436c96bd5fc965d0b0b19b5113e5e69c9563fc05": "1029", + "macipk.55e7d37ed8b7c19aafa5ef4e88cf935af403ec86120bc3395a68c38850121808": "1030", + "macipk.01646744fceea2f1644b22aadf964b015c146aeb7926c304b55ccf39e9c629af": "1031", + "macipk.291f724066d7806a794f74bee96942a269f025f07b02ab1d1f528938b4a50f94": "1032", + "macipk.9378c9b5220ebfb7baacf3ea696f98f30399d55cb20e14cc24667d10ab268b8e": "1033", + "macipk.757a2a43d8455b79fa6b8f6a7ef341e37c51e6188e0a337cc139775e8ab65ba5": "1034", + "macipk.31f779a4fef7c3512fc7d430bf939c2a7e1fa18cc0a57ed21d6e7156e9169387": "1035", + "macipk.9f4bce7705835bf80d2f1f36c083f0db6203f3aaeaffc00c35725a0b5e2a3a9f": "1036", + "macipk.e20185006fefcaf5f89d8899d137082350a7352cc6b422cfd2f9f92e597e5e8b": "1037", + "macipk.8bb21e01de6e79eda3587a4ec407d6eb23a82d19d47c469e6b9dfc432365f604": "1038", + "macipk.b04bb660956c0e5a6ea38067f319d034fee797b049830c3d5f87d843eeb40b80": "1039", + "macipk.6fb0beef169472578e601d179b7020eca88bda3b14ed562d93d43e088bd4df25": "1040", + "macipk.26bc8320859f3663022e04b4e18d1567adb85579d30e9474ab4f225e2891e827": "1041", + "macipk.f3aacd2bbdca7497e31258debf28076ef7f61cc06bc9256599e1b6e2ac9b432d": "1042", + "macipk.73f7fe2b49c563a96eb84c41c9f95c53bb0e5f64a1ae46ec8185ea554050b029": "1043", + "macipk.8ee4975ceba4c05c007b0bc62e2eb3a212f8cdf2b6e54aab544619e74760b29e": "1044", + "macipk.ee05e4d05bd0875dedce5ccc6ad821fc33986a86645865e5679132c17fc5ed89": "1045", + "macipk.b878ae5ff58f8df25d1b903af402d614f2125e76d515ef6f0032c00fcb75a608": "1046", + "macipk.e1e6fbe6b539b750632bdb1ae7b108bdb03df47fb1835cf2fc99cafb4feea219": "1047", + "macipk.d922142a9463d0598db660207b4faebce3f959d750957cc610be19059a5bc406": "1048", + "macipk.d78136e04f4a5f1e03f7a0991e935168580f6272c396a48e24ff5900569e7c1b": "1049", + "macipk.207abc670fb7c7b6ad1a7fd5a4a22e079122af117fac203eca15239f2efb4983": "1050", + "macipk.0b04a1494739fc1b0d1a077f595d098d69a532dc20bdb2b4b097ac5e2619941f": "1051", + "macipk.f589f851b9522a3b01c377835753b2e9e7f1cfdb07cc37073909e1674d632282": "1052", + "macipk.08327131c98eb3b529ab781b1494df2dc6d8b1cfeba12265a98a2d175df99c0c": "1053", + "macipk.fbc6c60c7e030689f1ea3b6a904ebeed0ac8aef0a1a67035916127eaf134602f": "1054", + "macipk.a8f83cd52c53920fe31a1a441916e87ffee6d9a3980d56575c5216957f78d802": "1055", + "macipk.a853c00b275c8318328158660cf27119d535463ac11e7f82c8db14c67fbde9ad": "1056", + "macipk.c29c7e29693deda3e2128c444088cf5952734ccaf3e65c53bf52ba7c9a8c6a2b": "1057", + "macipk.3fea611f50fdd5ae9a065c469da871a894f5eb6c3681702e167bddb5b1a06a84": "1058", + "macipk.a3740b573560b95d4ee008fa0ccdda479de537d08db230b1186601ca3187f502": "1059", + "macipk.3edd294222d1e25945eadcec588be2413f83a91f5c911f6ce61a1a83da01ae2d": "1060", + "macipk.b7a4c31fb6b4357039fe3809b15da25fff260a85bec52348ce3487fbccc09fa8": "1061", + "macipk.20ed0b0e75be48c57e63d8c63ca81fd2df06acdaa234b03d9029a182bac4ee26": "1062", + "macipk.fba45812afda402664f202690c489904fed43ffff2ba16a6d3c9e896f4c2401a": "1063", + "macipk.655d04c1f97c66b41df86dbc55e187b8361ceb0bff711360c468f28085660b0a": "1064", + "macipk.f3cd78b261216256f06889f7d6666aaaa79f4ccb9234c338d3b832fcfa8e9a9a": "1065", + "macipk.9b5b771b6ca548ad054cb2cbb5649af63eee782cf8965eb269ee34844b3fa913": "1066", + "macipk.cdac6a287488014fb8a570bbaf7d65a8fd40a8ef0e42c71a9472f2a6c6292499": "1067", + "macipk.c9dca388f661cbeaa5e18eec19b94dd2164418dad70e334eea7a410e96c333a0": "1068", + "macipk.8452ecdb5efb3b38dc5c23f33da6c5f8e3b395d548f2210062404dc7f40f801a": "1069", + "macipk.a4ef54aa0aa21b6d245ade62fa0d6197ad12f267af39e8a95ee49131e30e80aa": "1070", + "macipk.a98f4d21eb2cac47e32308f6f5d57fc1e8b2b20c8ea0b677e372687108c7b214": "1071", + "macipk.b39ad9ff61e8d940b4b5ed681a19ddc54313e8e4ed800108425a1444ecc90488": "1072", + "macipk.4dea226ffdcb767a387d2ee806ba5021109436d5ce1ec829f4577b9a40f16305": "1073", + "macipk.b8355d4ebd52288c65460b5ae33d8db684d9067b85f949507163d399495e2c0d": "1074", + "macipk.cf06b2993db488d4c06d688c01ab0be0dd581877c0d4d93a7a9115a8e802a822": "1075", + "macipk.127158c2fef705e960654010ebbaa7c2dccac9fa9c863025fe7b959c9259c48d": "1076", + "macipk.973d0a8559c34913e95ea5f33f9db515c0bee2d2c64e148c9281b7c3011e1287": "1077", + "macipk.be19feeaa8661c331dba9e4e2745f405e32bb71ed8213e8cf7c4b4004df10084": "1078", + "macipk.78165811341e666c3bde4d3ab0ed3b13aff142e9fb7c3750981cbc08a955bba8": "1079", + "macipk.84a75c9d2338e1f6e5b13e09812f4136eb1af49e0c98a4d86c7493e8abd51612": "1080", + "macipk.65d867ecc373e499b2919abf735ff5c6c12b9b0d3d9690445c94184ef7b8591a": "1081", + "macipk.ebe750845f6b72aefa75bd131d83cfac2e4c897e788318fd0db5de8b0bc27f95": "1082", + "macipk.6ce72528aaa51dea136ee21c38928cdbc220a2b308e8286718d27e866fc53bb0": "1083", + "macipk.1094c139fe992b80a8243e5449cc2d0fc0a7be2094fa75891147a40f9816faa3": "1084", + "macipk.5cf0e3f5a2a0bd9072cedcc1839ae8493371c4e98d40ab959056486c905bb6a1": "1085", + "macipk.daf6787d217cf4ba9fa1b6627f12d3a3e052461104db6884b835ed280ff6559c": "1086", + "macipk.20d994e0987355edb5bb5b60ee67d780244f6706b69e8e8c0300bcbd2178778a": "1087", + "macipk.382e7ade0a600e9998100a07f8ef2292ae5cac9d9abd9228a4540039404f1a16": "1088", + "macipk.f136683bf0a117ec6a22d14658dc5762449542450131f9d1c5084dd7f38452a2": "1089", + "macipk.d3bcfe10a8ff4a628c2e941e5da41f9431e04db82b225defce129d8234fc4c0e": "1090", + "macipk.60c3024089ae005917467f26a05a57f0f26d768090e8bf9862a50f88b71a128f": "1091", + "macipk.aa64976a7f7e82364d30e71b2b5db1319ef6898eb41ef71a02a345594d14b799": "1092", + "macipk.24eb3956857dfa907c88412058fb6594bb61acab4f8f7b13078a90bd0e1bc314": "1093", + "macipk.ba65323b90fc27a5b0f9fe76546713739782f6236677c7a19743850aea6e30aa": "1094", + "macipk.619e4495d2ac7f285ed6cd385f914e56b58045ec95c0c5f11f5ff448304d6e2b": "1095", + "macipk.f47259598c09c221aed764dccec8528bde1402adea9c89aac9f4508b6a7ca8ab": "1096", + "macipk.af66fbe5b39eca47ef0bdbb9c40504fe98f943fc82cf2aca200ff035fbb18992": "1097", + "macipk.72fbcb8a7eb3b089dae87329e99939f2c709e2d829eab1c038e2922ba0767e26": "1098", + "macipk.3b0afb35a17562242b06bcc6669cc7bc883b73b7c67a87a04b7b797426b3698e": "1099", + "macipk.645964e18a5a9e7909755794cb8828eda27e98c7522b91e85e4b437ac3d62108": "1100", + "macipk.332b8001962394bb47de707f2aaf91f68894cbad946bd073995210f59cfd2a27": "1101", + "macipk.4907f7509f336d42b3e2e746a53cb4bb4f3a50a17041d8c3a9ce91358ce1598f": "1102", + "macipk.e6491921fb3804bb2ce21fa21c5001b40053e4cbcf7a2e7847b6bc4cc93ae987": "1103", + "macipk.b3ab53b0957cff85944871e542adb2dbfefdb506f704b1f16d87a7eb2d7d9ea5": "1104", + "macipk.113a3d99e520932249b3e326f6bd216625dea9d7c0243ec5765c239d43c17327": "1105", + "macipk.0ee2d3db538eb665f8912ce5b89d9ada7d3b138fec98d3aae3780a0009ea2a1d": "1106", + "macipk.c62fbba563849083f7c35bd081f787dcffb3a6da567b2fd900e668622c47f603": "1107", + "macipk.6ab6e40fd5984bd5c8b561bf52fb05da2f441be35a99f8a09f443be2e0f34718": "1108", + "macipk.523ba5e8966fc8052402820e85ced2cc4a76e504cde0d1812fb7c44d164e8d93": "1109", + "macipk.10393ac2cf8811031147d53b8ff105d25d0a88be5ee70e5afa1fff00024e2eab": "1110", + "macipk.13c4fa4485b3517f4318e4ff6493a302d5add071a8865a9c06108c7a152be429": "1111", + "macipk.036557dce26c801b834551a672553ec8942c318894d4caec3126293b10b2958a": "1112", + "macipk.9abfeac6265eb6458330a8b1379fc82821307024dbb9e30b26ddb76ca5acd69a": "1113", + "macipk.1cea1ae243132e2f4a1892acf53930225e369861c1e151c6b18567c2b908f1ab": "1114", + "macipk.3b600a1991fb8e66866772c3b45a6ebf01262e109633385c505de891257e5d07": "1115", + "macipk.daae22bc639883f2f037ff0436a17fe7a3a1e84a578dec361bf182b937d52511": "1116", + "macipk.277e11dbfd7858eda7eef8f67048e1e0cd31679c55be360f58df1dba7beace8c": "1117", + "macipk.83ed75ba1110bbd14818313b9bc8d5036f8134688ab2015053eb37e80d9f6b1f": "1118", + "macipk.f571f84503ddb64deac2583c8448a81f58da4fd60c8d554d66da952b2d1d151b": "1119", + "macipk.8cf8c311e82b36c1616d9f59f1d2379821a406d3d047afc5c5e3cb71ed6f4f0e": "1120", + "macipk.b84b2a8e35922fd7e178ecbe7e88b9cbc53131de472600b977b7a9f82162af87": "1121", + "macipk.26ed3ddddf9cdfd83435e82932ca1d5cedec059ab7ba496f2ff45775e9b94607": "1122", + "macipk.425fbbde0af1dde9222862faaaf568fa919a78cfa0eece6d3f8ab3447d2a9805": "1123", + "macipk.df810860844f7aed172b1d2549dc56402287cae7f12241bf2f7faf623bf2e489": "1124", + "macipk.b56b2d071a2a68cc8703ed9a8f2f793b5f3591912fd24a2ee6ab4a10ed9cd494": "1125", + "macipk.793e58db69395a626f97c0cc78600f85b249ddde6b119571d2648fd2f2a96c05": "1126", + "macipk.5666d432d05ed650c28443086270a52011c7f2d1758a38f0b74ac220138981ab": "1127", + "macipk.d712b6a338780e1fd61faedee2ab1ef6fbe85aabe318e9e1907a746cc6f4000e": "1128", + "macipk.39dea46cd500158d68a6e852744ab441f81af630c9de7b3b33d1fe15e5cfa003": "1129", + "macipk.ac54d7a61f569d4b96cd03273a6516983651ca8c11c4987bc979e037e1596a13": "1130", + "macipk.d27e717344837c818fe4cfa7cd08f9f7913585eaf6b100a1afb3851895a03b1d": "1131", + "macipk.0853b22c6f33da680d3f69764807a932334b3165d476c44a688e58d733544691": "1132", + "macipk.f95459ed5bba97c7cc599587af3121b3e905c83e916e5df9c8c01705b9d23e23": "1133", + "macipk.f1d95602370cbf4fbb3af27728560d064fb846c68b5db627f4d7d05b9cd25aae": "1134", + "macipk.e3fdd6067b9280a5465a3539d237a0c8e6dc1d755273453a7f2685de25847207": "1135", + "macipk.242d38cb2b4507547a9c12d6db9eb4d1a74e03aadd1d64b42238568fdcac8d13": "1136", + "macipk.921b83753e0e7049bce89eac3ece3290c27c441c664a69172435dd4f7bfe3184": "1137", + "macipk.428e7ceba8f99e65b57cc34913246ec5fba11432e01543aeed4fa15001c0e585": "1138", + "macipk.3b2f08bfab00e7211ab9197f50d38e92de461698388782efbd726b6de370bc19": "1139", + "macipk.62cd6c55f1c4e65ef199149384585a3737857eba57a8746578abd142ed1212ae": "1140", + "macipk.36cabdbe450886ec3e33cb87b58dbabc9ff7fbabccc0ee6316d54e76a9765b83": "1141", + "macipk.566cf7d21a7d72a11a8370daa0c2ec9d615eb92d009f5ef7328a5bc3c5115225": "1142", + "macipk.bba745a16fc9a32b884cc338f295aaeb68c91794a67d7f929cadfd09f99e1087": "1143", + "macipk.f8815f19fa91f142956293251225f921393aad97cf4b1931947c4b5a6d5f4529": "1144", + "macipk.d5eb98f1bfbe0c32c8320640409ee409bd5ccdf459406ff031ac1cee1ae0abae": "1145", + "macipk.035de6f4f103a86927847338ffeff93ed9cd104be5061bb7c4351ca01061b4a1": "1146", + "macipk.77a174c90fd472c35a96c357610631aa7ac6ac7ec39e7729ee6485771f01899e": "1147", + "macipk.5bbf34363f6758eb8672439af2ecb8f3f642da54cfd1bd91cf59e34c4ba93b81": "1148", + "macipk.80b5ba828fe7e6e7a97514449a231afd58d10808c93f68c06a33aadf7b9fe081": "1149", + "macipk.7aa5fefeb271aa4db415157d6619c8cb50dbbb065ecf1d896aebd6d57071ad02": "1150", + "macipk.5b41fb1202fa6bddac5896de00941f7bfe42d2f50544994154b56fd3dabe301f": "1151", + "macipk.3dea9e3e0d091e9bf1f0a6e331404e4917bc6671022399828453cfdaeb0add84": "1152", + "macipk.0a062f54f1ed7fcf0df5d850fddf3d454e25dc2de09caa08a72e80b9b9188229": "1153", + "macipk.03c21cc473a68477a284941100b1dd156617417ea7754ccf18b8b333fb25b9a1": "1154", + "macipk.01c87416006e5475d828a9460a6809825fcf81cc768106b7e91a2ec0d93e3e0b": "1155", + "macipk.8d97f0ee9ad23ed11c05e9693b8c5cac3ed472c947cc2ca9e167d227bea3ac96": "1156", + "macipk.e49bbd69c459310dfe7f4841ec171e96a37694bf9b96903d096fb6679d1cb28c": "1157", + "macipk.f67926eed6477e8ff350379931fd72efbe54571a8be5dcb52072c5dcbb9a449b": "1158", + "macipk.d985a05b8ea9b355a5930fe924548f0215b10e0fba20e90de8714a492b223b87": "1159", + "macipk.448f03f12776e22800cf4d47b67d49d52da9ddc20d7b0737b2268e7400e1af2b": "1160", + "macipk.8ccc34bc381c476812de90c68ad938157e159a28bb2631cab678c5403495e38b": "1161", + "macipk.a6bea5949a6d95b3dec936fcef28d172cb5da6c8396254ec3c0be82387baabab": "1162", + "macipk.9aac238e42e08d17c2a962f9aa52647acfaadf0e52c785e2eaf2d7f4d25b8c1d": "1163", + "macipk.b3985c620919678afa103a3ef7ac1966a23745636d4cdf2bb038e5fb8f2f638a": "1164", + "macipk.af6995ed2b8e8c266a977c53aaed0f7344a178624dcffbc5a271b849ec4f3415": "1165", + "macipk.d4dc56c2c60226115e3ca71d7cc6153fb2d5c90949e25d881759cadde1703b86": "1166", + "macipk.f31191c33e655f7c2d4180ad771a5ad4f189728c4973090e90fb7d17db06752b": "1167", + "macipk.286350413b2fb3af149aa6aa0fa93c4ddb27b30826a0a169e88f29b2537e6f07": "1168", + "macipk.686a956c30e6c9117e7f26a569b84686800c2d0d45028e213dcb3ab7948b1318": "1169", + "macipk.1c717edb3056165fd760849c6b9891fad64b857828c291f53d82c8296beaff88": "1170", + "macipk.3fa53c6e84014fae426ecd8746f45977db7f446e75f4d607e5fdcad51058e18a": "1171", + "macipk.26785319fcceea418b9af6a318e4234d7da6c75f44b419f68324e532218dbba4": "1172", + "macipk.72736e603c78c3d82b155c65671b27b020650b04753119bfb9d3d574c150971e": "1173", + "macipk.0c103eb6974723757ef50bb76410ce4e943524a5dbd332d2912accf89d281a2a": "1174", + "macipk.3788dc35acda1d8ca76b18b7a7e72b3397ac14c1df05dba7fff0f5724896cb08": "1175", + "macipk.5903687212723b94c568bc904c8adfdb4e76818ea61e5a67940957b9f2e7de23": "1176", + "macipk.ce9abf89a20d35f4006571e5742d799ac9777ba064dabd5c81f0636f78480621": "1177", + "macipk.e7775e2f70ded3b325dbca46b5a5cd3c31698fc9e66cbb5aa863901bd6d4c512": "1178", + "macipk.d634ff525c85dc82d7f6f2888db3a6e916d6e7f442b8e5daa3d5511c3f8add15": "1179", + "macipk.8377e1808906ed4511bfa37e340772967983a63d58cd501a8568d615f29b1c99": "1180", + "macipk.f9949f85a48ddd5137ebc33e310cae547b9766acf8dc0c9090ab0a79cf6d7413": "1181", + "macipk.2150e73b7e32886153f1ac13f16b77cccaea74f82e68d3cbf7d77e9428b76e88": "1182", + "macipk.daf21b1f44738a027883538e8d1e99044395281728158b221f83e857de9de01a": "1183", + "macipk.ea7891d37d9196f3d92ac1b44f175a2911e78958bd8405e538f50eee0fcc108d": "1184", + "macipk.d452a2ff343d4282ac727e15a3a9a2254b6a7b96e6f169acbf762c46e45ce625": "1185", + "macipk.2beb6219ed3aa0d8e5977220c26e9e07075578d7833d5de5d67f3bc5c53b2b88": "1186", + "macipk.6a269f530026e881df9aa854d691b5c2f3427277034bf43cef8175336f475a8e": "1187", + "macipk.692c4b07c51ad75526222b4ed9c2b90c64f260bf1a3c7921563477ee5743f10e": "1188", + "macipk.b0363df048f2b33b589320e37b1246ba63ed4deb63bd0b65194d7fcbc6f984a5": "1189", + "macipk.774323a38c59d9794abb7101fd7b71f492348f3f8e4e81e5dc5924e24415aa91": "1190", + "macipk.b94799ab956f865b9cceaeb86e0ed7580150e585769ac5994784272c07c94412": "1191", + "macipk.100b45747e88729881a21d475cd95c9f10d07fc242eda97c5d0a21728362b30c": "1192", + "macipk.1aa266d8c21c1d35015a35dcb6a772df2d4b0db64953f17b74b584fd656d438c": "1193", + "macipk.ea25de8c7e537287deb568085e77c4db79921b93c12c7e650db2e1111a77b524": "1194", + "macipk.4f10004aec8e5dc910a1496bbcb829b140d952c78a5851f6115712de6b641817": "1195", + "macipk.ae68c1ca0ad444af6da249c5ffd658986ea364f0a661ea1de3930548a107361f": "1196", + "macipk.6ec0867146bda3fe38d65b9a1cf69ebe2b7e1d3256ad94fcf0a8b2514789b70c": "1197", + "macipk.dc74668f35165f8033fcd09ab89dd9629f090438cb9467d6492bcfe08ee36c1b": "1198", + "macipk.5847e2a03e29d22a10431b88c18852efc68a84c466f32e8890900144f1f7e881": "1199", + "macipk.606c72f932f38d42e6c62ce5d040eaf70f1701ee3a52d70a1c5d22d5105ea817": "1200", + "macipk.a8534cc9568d0e465eef16700216655034d308a9b3d1e434979a335da3383e8e": "1201", + "macipk.1e7f01aee72d33ba13a2b75f5c325ffa3a1a219c851583bddc0f081398781b1a": "1202", + "macipk.5588556426097d991b0f6293ffcdb0a4472a5a9cf8f612e7aa326a54f2e50622": "1203", + "macipk.fc742f54584e310a5478015ed0492b59ecb11b07ac03d5892a4944cb763b5b21": "1204", + "macipk.7958105cc609398d79ba58905c7da41485e8fb8218291df34f469a395a34aa27": "1205", + "macipk.0646a42b604d932313494a3303d8cb2bcbb20095afbca33c19ed845ae305d482": "1206", + "macipk.0689f4db9af0fe5afd0d1c463e44bffdf3f8c2d4c1eb4ba7a35841aae3255dad": "1207", + "macipk.3225ae80ea1507d6a60dc9faac4b22db40ba10d8255659e50bbd6a6f97a430aa": "1208", + "macipk.06348e2f918ffc1eb64eee3f5e2d4a86e00ed957a0c3db461f3b093853f31413": "1209", + "macipk.d1ee6a71949d360dbaf8bf7cbe99de4bdba8c635865e0fa20d3bfc0107afab95": "1210", + "macipk.0098805902cf22621875e3fb17da2363ba900c2b4bfd73a218c5413a7d038390": "1211", + "macipk.c313362ed062c60c7c0fe728b4b95f29c9385caa0d03b8f7d41d074efc29c611": "1212", + "macipk.8b2a74c0bd2216b54180de571d4356f3d4882117b53297f6266210990b7814ab": "1213", + "macipk.ca828f34cf941428a4c0b6e7489b1309a918742c16785da23257da6f2ae4a2ad": "1214", + "macipk.57cf32755c9d760a835e95f3ee64a7320d76082056429d098fd89b3415c58611": "1215", + "macipk.48475c539966133a99858f45b48283a7c2045a25fc24f3a841c4d0fd8b1cf724": "1216", + "macipk.186fc3561f35fd96b6e770721564acc91b4cb0c49f205ec71e72ad2bcaca9f13": "1217", + "macipk.1fb90826f69a579f1a434a53df127af979f1d8ad046a63e012c6ecab892bf19e": "1218", + "macipk.93e1f70cee51e74a9753825e53577b58303443605dd9cb5b6cc15efdc52f1211": "1219", + "macipk.a0ee1b7f4b3c2c7bce62411822792406706fc0c8d14ab29cc76a96cb28c85700": "1220", + "macipk.29a3b5528666654b3bb944ce671714583e6158a53e25ffdd9c20569f056bb586": "1221", + "macipk.db420b9a7749c44498281179b76f494861968f1d59ede104e3e3d5d75bb63c1d": "1222", + "macipk.c2f0503d89faf8420d6dd2e2ae466384b30754b46c6f6df360a54a52e98d4c81": "1223", + "macipk.9992dd618658918f25b9a4d7e4b3ffe029a87f2d60a874d7f64beee99cecbaa8": "1224", + "macipk.dcbc37be01d22152a0c2ced8b6340ec2530031f941ab238258eb6bfb45c14f11": "1225", + "macipk.52c1e841bfffef480410dce0ac0b12c4734a60c603bbae7a9e9f3a6a87654222": "1226", + "macipk.b440b9a2f16d22f2f826255a6b0433e9e09989932a785a4f986a71a9aa38da04": "1227", + "macipk.1ae7f0653a0e38a7b11b4e0092877f050645abe91ea8681853a94018f2164022": "1228", + "macipk.540a0693fc1f57130e2cadac85d8e1c66ea98fef7e7e7d3aaef13c228aced82b": "1229", + "macipk.9e4db9146197c5ce761fdec983812762fd0cc2bb0ba5020fba60e418f11c469c": "1230", + "macipk.4e0fb7d204d69c0cc52d4f671c8327196a05cb35aa0fe85f8a86d2b802bc7a11": "1231", + "macipk.62eee80b8a44bbb0a78ac7f195758d5fded05e08f32985b21521899298a49508": "1232", + "macipk.593bd2b9ee6376abfcb9f49572c2f8089f70da0383811f0193ac196a0af3b00a": "1233", + "macipk.f94a0a33098242f25f4e64e8a1b2dfb2292b5a1eac4281626cf2a6a458e8599c": "1234", + "macipk.4f1d0f260080d0a5aa2a32215800d2170387977e6973e8a47745cdbdc3690fa1": "1235", + "macipk.d0d8f0b903878814ddfa514a4ba4825021b6ace99057f220bb0205b1cd926924": "1236", + "macipk.d626c1509087eba214f1540ae382ba19147841f898d4e6afba4cf538019cb886": "1237", + "macipk.332a9c11f3327fce6408a704e949077b03b7d3820991a33c56503a13d1e9d62f": "1238", + "macipk.e2b7f7d0be5ce8a16992b8deca7a6b2917db0242c84100e0913269e70f2f1712": "1239", + "macipk.add972b8d84617620e9d85a3ff0a43c615b527834389ad6447caf7feb442fc0d": "1240", + "macipk.f741332768ab41ddec008d44103cbe76a626a2fcc969764d09e049829f187325": "1241", + "macipk.71714ab79707a9f292b8dbd95571341eefd5b0991819e508ded102dd53ef2d9c": "1242", + "macipk.997708f3a58f1053d2fcaaf2b6ec6badb0cc335d8893184da4177cd82e2472a4": "1243", + "macipk.a88504967a760603840e5debc11b58c837648bc84f6261e115c3f3bb94f06083": "1244", + "macipk.a5675963cd2e3f9933f973d5a3429c5633f44f6fe1d60242f8e1618422e0489f": "1245", + "macipk.a12ee6287636e23608a228cd51a94692f9b06a78b7e08afd8afb6d817a66f529": "1246", + "macipk.0579d4db1740d8dbfd5612e257ecf8ee7abcf0c45c3cfcc39d0c28ffb799d818": "1247", + "macipk.c0e3b2e90423e1c71dc1a4c54a7525db6599dfecc79012bd456a430198008315": "1248", + "macipk.9bd07a9af8faea5362d51f194d5977c3a9bb3a9c9c86f61f4c60d5f4e21343a5": "1249", + "macipk.b8eb3e608f89bf1581694cbb309cf08ce09ea117813e474d8710bcb54fc94106": "1250", + "macipk.b1b2546926de8ff4b75fd61cbe193ecd37611b865cb9d2d363bfc1e329338ca4": "1251", + "macipk.0dd6925e157d7918e253c13fe635600ae7ab51369d1b5b96a3828f2b5a0c7984": "1252", + "macipk.f7a0679d1ed803f45f441c53b592063562c85cc57498df20ed550fd3e2b6f2ac": "1253", + "macipk.52455dc3528c83c3cf4fd0368903235e565d7ac1d1be52af996cbcf67e523602": "1254", + "macipk.92d94193a3aed500ffe4efed5ccc68103766412ee892323b3ff096c3c1d00ca0": "1255", + "macipk.6e0646d1a9f48056dfd41a49ee7bbfe82375947abf0a56d5a7da8a74f55e6a08": "1256", + "macipk.9ead9ccc5b0191dfe55de731f513cad6234ed39f637a7ac7fabf33c9c3e85523": "1257", + "macipk.2487aaff653389343c9dff387f1b7848cde61c03722e33b65c0b220ed29aaf9d": "1258", + "macipk.ba4ea315bd76dee8dcd0d05dc9c66254d75087e898f2fdcbe1d55b8181c82084": "1259", + "macipk.c43abc8b571d846c63bf23c48362a529a73b3cdc5bcd0d91cc2f58e548533a1c": "1260", + "macipk.c3a7dbf3ae4b80c82a4586257b181e28df8dd3116ed2ffa67c44079f9ba54306": "1261", + "macipk.e1632607403747854d8484711887f8e795c6ae83428406e21e11251ab5e12e02": "1262", + "macipk.8e635e273e0c10af2e4f79a23320c1a02b4c86b9110352a054d15f41b629ed1d": "1263", + "macipk.3b26f4585c1473ecbd8518aac4d1ce79c5ae46e4c76c736c52c9d08fe96a9e24": "1264", + "macipk.a56f47b47ad31b5255435003208cd5b2174673c54c863b8043657e21ce107f83": "1265", + "macipk.20ebaf55d90e1290da7a138b5d569b44e1df4ca89afcbc7b82df23f2122ba42d": "1266", + "macipk.d03571537e0eaca200e7a9ca48ed1f036933cadc42eca6654d16c39b1e95fd1a": "1267", + "macipk.72fde06aeecef989dedc1c25cbe1e3a6be5a7ea9e21739dfdc0c6af022538caa": "1268", + "macipk.eb3844c73f57200eddbd884c24eef57be4afd4c2d4c56af3f873992c991cc6a4": "1269", + "macipk.edb286acb81a362d7c11d75a1314ca2f5645c0b5b703ee4f2081f31567dd5a8c": "1270", + "macipk.45d2b84b400f4e8202a10611737e62d9b7ba8ce1647968c8c92131785fa27e89": "1271", + "macipk.bcb1b0024c48ca8a103186d3c0adab26b9611b9dcf916d449df4dda655376092": "1272", + "macipk.def338ca1683d71d42d50da22349d5ea344b20099f0919b522640b3355ea3c94": "1273", + "macipk.89f524f6dc7cd0127c677889f4b7e6b0d31ab7c36dbde53276c531ade2ec5212": "1274", + "macipk.424ca3ab623c1102dcf80233184ed487130d3da5ed9e91ce12e0c3b413d21d28": "1275", + "macipk.654b0384085374c8805642f7d52532ae6b118e9306fe63f32c9bc37826652a83": "1276", + "macipk.6edff2082e93d3ea716442e7569fee2a152283ee227214e6ce6f74791365d9a0": "1277", + "macipk.a08081124c85970939ec1e88fbecaa104e6bf0aba1484f3e5dda627e343671ac": "1278", + "macipk.56af2a64274b5f305b745d608ab38952b50ee406e58682751a394506910b749a": "1279", + "macipk.fd9fe87a634ef5081aa52654ef04fd6438c5dd7e45be7e5a250a4780e7fe1712": "1280", + "macipk.4f2ad1459b643259faa752723beb91a47b028f1d2489b2c167ff57fa20c8cfa0": "1281", + "macipk.558bb0e7add5d9378ccb3866ec4a39a1a9bcdad841a3af84f036d79f68919303": "1282", + "macipk.e105d84125a5b79c29b1c5040ed8c9dd07432fd0efdaa2b975f229bc1d19c503": "1283", + "macipk.f2fe5a70e30ea4d9f69099eb5f1e9154c557bdf4a980629f1f056f448f15f619": "1284", + "macipk.ed0ab84aceb5e913fa951f14e70acb50c38f4596f229b268beeae90a3e4ab795": "1285", + "macipk.e9fb94678546152c3f7ee29b529988a1173aac0b7ef94fb488ceb2f71ee8ac8a": "1286", + "macipk.faed7a42b100a2502829f4d0ce2e562297ce8b4bff740993905cc8ec7a8e1e8f": "1287", + "macipk.4aec5f988dfb483d574969c4613780403cfaf217cceaa10095f1085034503fa4": "1288", + "macipk.d3d81efb7fc8b671e22ddaac0e6853768382aaed3b6eefcf2e2875fff4d973a3": "1289", + "macipk.bd1801c3a377504a674398254c22a49ac4b03a018e3044e61a3e0b4e319f2191": "1290", + "macipk.a0be68b8224796838f719e5d38567d8796eded5be395b550f8cf771de02be28d": "1291", + "macipk.7c2cecb3b4c46963b10cc9e498dbdc7a271f8e6b19ccc4b822ba95293d206a0c": "1292", + "macipk.56a35141f819c9cdeb293f2e5d1fc211557777256ba22a1268cf185eade95084": "1293", + "macipk.93b0010e77fae0e29cd81edd2728bb0781b6711c997167c88d273cd8c8cc0281": "1294", + "macipk.941ec455d0a2e812964b26fe19c2b16964fba98cbacd1261f039780f0a9be722": "1295", + "macipk.7fff4122d40b2034c2ded1238a3a209a508db2d5680d21c67f73c707fd7e4cad": "1296", + "macipk.a49271bdc588c172c9ec0c32f2bebfc9040712987d44681d6ce5508aaada8d21": "1297", + "macipk.c8cf296a1a824fb2415c800376175326fc89cdf156bd90730140781862bfde84": "1298", + "macipk.fcff1d8fba4e3b8b54a7e25f4786f237fe0eb6d5cbfdea6de475dc2b8a5e2ca1": "1299", + "macipk.5bc797ce688a44a0e3b88b3471c2d212324e962c63d140640742423537c65730": "1300", +}; + +//get state index by pk +export function getStateIndex(serializedPubKey: string): number { + return stateIndexByPubKey[serializedPubKey]; +} diff --git a/packages/app/src/typechain/common.ts b/packages/app/src/typechain/common.ts new file mode 100644 index 00000000..4c90b08b --- /dev/null +++ b/packages/app/src/typechain/common.ts @@ -0,0 +1,46 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { Listener } from "@ethersproject/providers"; +import type { Event, EventFilter } from "ethers"; + +export interface TypedEvent< + TArgsArray extends Array = any, + TArgsObject = any +> extends Event { + args: TArgsArray & TArgsObject; +} + +export interface TypedEventFilter<_TEvent extends TypedEvent> + extends EventFilter {} + +export interface TypedListener { + (...listenerArg: [...__TypechainArgsArray, TEvent]): void; +} + +type __TypechainArgsArray = T extends TypedEvent ? U : never; + +export interface OnEvent { + ( + eventFilter: TypedEventFilter, + listener: TypedListener + ): TRes; + (eventName: string, listener: Listener): TRes; +} + +export type MinEthersFactory = { + deploy(...a: ARGS[]): Promise; +}; + +export type GetContractTypeFromFactory = F extends MinEthersFactory< + infer C, + any +> + ? C + : never; + +export type GetARGsTypeFromFactory = F extends MinEthersFactory + ? Parameters + : never; + +export type PromiseOrValue = T | Promise; diff --git a/packages/app/src/typechain/contracts/Jubjub.ts b/packages/app/src/typechain/contracts/Jubjub.ts new file mode 100644 index 00000000..b97110c2 --- /dev/null +++ b/packages/app/src/typechain/contracts/Jubjub.ts @@ -0,0 +1,1746 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../common"; + +export declare namespace Jubjub { + export type PubKeyStruct = { + x: PromiseOrValue; + y: PromiseOrValue; + }; + + export type PubKeyStructOutput = [BigNumber, BigNumber] & { + x: BigNumber; + y: BigNumber; + }; + + export type MessageStruct = { + msgType: PromiseOrValue; + data: PromiseOrValue[]; + }; + + export type MessageStructOutput = [BigNumber, BigNumber[]] & { + msgType: BigNumber; + data: BigNumber[]; + }; + + export type StateLeafStruct = { + pubKey: Jubjub.PubKeyStruct; + voiceCreditBalance: PromiseOrValue; + timestamp: PromiseOrValue; + }; + + export type StateLeafStructOutput = [ + Jubjub.PubKeyStructOutput, + BigNumber, + BigNumber + ] & { + pubKey: Jubjub.PubKeyStructOutput; + voiceCreditBalance: BigNumber; + timestamp: BigNumber; + }; +} + +export interface JubjubInterface extends utils.Interface { + functions: { + "blankMessageLeafHash()": FunctionFragment; + "blankStateLeafHash()": FunctionFragment; + "calculateCurrentMessageBatchIndex()": FunctionFragment; + "coordinatorPubKey()": FunctionFragment; + "coordinatorPubKeyHash()": FunctionFragment; + "currentBallotCommitment()": FunctionFragment; + "currentMessageCommitment()": FunctionFragment; + "currentSbCommitment()": FunctionFragment; + "currentStateCommitment()": FunctionFragment; + "hash(uint256,uint256)": FunctionFragment; + "hashMessageLeaf((uint256,uint256[10]),(uint256,uint256))": FunctionFragment; + "hashStateLeaf(((uint256,uint256),uint256,uint256))": FunctionFragment; + "initialize(uint256,uint256,uint256,uint256,uint256[],address,address,address,address)": FunctionFragment; + "isInitialised()": FunctionFragment; + "mergeMessageAq()": FunctionFragment; + "mergeMessageAqSubRoots(uint256)": FunctionFragment; + "mergeStateAq()": FunctionFragment; + "mergeStateAqSubRoots(uint256)": FunctionFragment; + "messageAq()": FunctionFragment; + "messageTreeDepth()": FunctionFragment; + "messageTreeSubDepth()": FunctionFragment; + "multicall(bytes[])": FunctionFragment; + "numBatchesProcessed()": FunctionFragment; + "numMessages()": FunctionFragment; + "numPolls()": FunctionFragment; + "numSignUps()": FunctionFragment; + "openSignUpPeriod()": FunctionFragment; + "owner()": FunctionFragment; + "pollResults(uint256)": FunctionFragment; + "polls(uint256)": FunctionFragment; + "processMessages(uint256,uint256,uint256[8])": FunctionFragment; + "publishMessage((uint256,uint256[10]),(uint256,uint256))": FunctionFragment; + "publishMessageBatch((uint256,uint256[10])[],(uint256,uint256)[])": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "resetBallotCommitment(uint256)": FunctionFragment; + "setVkRegistry(address)": FunctionFragment; + "signUp((uint256,uint256),bytes,bytes)": FunctionFragment; + "signUpGatekeeper()": FunctionFragment; + "signUpTimestamp()": FunctionFragment; + "signUpsOpen()": FunctionFragment; + "startVoting(uint256,uint256,(uint256,uint256))": FunctionFragment; + "stateAq()": FunctionFragment; + "stateLeafTimeStamps(uint256)": FunctionFragment; + "stateTreeDepth()": FunctionFragment; + "stateTreeSubDepth()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "vkRegistry()": FunctionFragment; + "voiceCreditProxy()": FunctionFragment; + "voteDeadline()": FunctionFragment; + "voteDurationSeconds()": FunctionFragment; + "voteOptionTreeDepth()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "blankMessageLeafHash" + | "blankStateLeafHash" + | "calculateCurrentMessageBatchIndex" + | "coordinatorPubKey" + | "coordinatorPubKeyHash" + | "currentBallotCommitment" + | "currentMessageCommitment" + | "currentSbCommitment" + | "currentStateCommitment" + | "hash" + | "hashMessageLeaf" + | "hashStateLeaf" + | "initialize" + | "isInitialised" + | "mergeMessageAq" + | "mergeMessageAqSubRoots" + | "mergeStateAq" + | "mergeStateAqSubRoots" + | "messageAq" + | "messageTreeDepth" + | "messageTreeSubDepth" + | "multicall" + | "numBatchesProcessed" + | "numMessages" + | "numPolls" + | "numSignUps" + | "openSignUpPeriod" + | "owner" + | "pollResults" + | "polls" + | "processMessages" + | "publishMessage" + | "publishMessageBatch" + | "renounceOwnership" + | "resetBallotCommitment" + | "setVkRegistry" + | "signUp" + | "signUpGatekeeper" + | "signUpTimestamp" + | "signUpsOpen" + | "startVoting" + | "stateAq" + | "stateLeafTimeStamps" + | "stateTreeDepth" + | "stateTreeSubDepth" + | "transferOwnership" + | "vkRegistry" + | "voiceCreditProxy" + | "voteDeadline" + | "voteDurationSeconds" + | "voteOptionTreeDepth" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "blankMessageLeafHash", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "blankStateLeafHash", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "calculateCurrentMessageBatchIndex", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "coordinatorPubKey", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "coordinatorPubKeyHash", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "currentBallotCommitment", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "currentMessageCommitment", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "currentSbCommitment", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "currentStateCommitment", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "hash", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "hashMessageLeaf", + values: [Jubjub.MessageStruct, Jubjub.PubKeyStruct] + ): string; + encodeFunctionData( + functionFragment: "hashStateLeaf", + values: [Jubjub.StateLeafStruct] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "isInitialised", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "mergeMessageAq", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "mergeMessageAqSubRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "mergeStateAq", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "mergeStateAqSubRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "messageAq", values?: undefined): string; + encodeFunctionData( + functionFragment: "messageTreeDepth", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "messageTreeSubDepth", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "multicall", + values: [PromiseOrValue[]] + ): string; + encodeFunctionData( + functionFragment: "numBatchesProcessed", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "numMessages", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "numPolls", values?: undefined): string; + encodeFunctionData( + functionFragment: "numSignUps", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "openSignUpPeriod", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "pollResults", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "polls", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "processMessages", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[] + ] + ): string; + encodeFunctionData( + functionFragment: "publishMessage", + values: [Jubjub.MessageStruct, Jubjub.PubKeyStruct] + ): string; + encodeFunctionData( + functionFragment: "publishMessageBatch", + values: [Jubjub.MessageStruct[], Jubjub.PubKeyStruct[]] + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "resetBallotCommitment", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setVkRegistry", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "signUp", + values: [ + Jubjub.PubKeyStruct, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "signUpGatekeeper", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "signUpTimestamp", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "signUpsOpen", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "startVoting", + values: [ + PromiseOrValue, + PromiseOrValue, + Jubjub.PubKeyStruct + ] + ): string; + encodeFunctionData(functionFragment: "stateAq", values?: undefined): string; + encodeFunctionData( + functionFragment: "stateLeafTimeStamps", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "stateTreeDepth", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "stateTreeSubDepth", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "vkRegistry", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "voiceCreditProxy", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "voteDeadline", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "voteDurationSeconds", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "voteOptionTreeDepth", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "blankMessageLeafHash", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "blankStateLeafHash", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "calculateCurrentMessageBatchIndex", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "coordinatorPubKey", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "coordinatorPubKeyHash", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "currentBallotCommitment", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "currentMessageCommitment", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "currentSbCommitment", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "currentStateCommitment", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "hash", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "hashMessageLeaf", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "hashStateLeaf", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isInitialised", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "mergeMessageAq", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "mergeMessageAqSubRoots", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "mergeStateAq", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "mergeStateAqSubRoots", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "messageAq", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "messageTreeDepth", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "messageTreeSubDepth", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "numBatchesProcessed", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "numMessages", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "numPolls", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "numSignUps", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "openSignUpPeriod", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "pollResults", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "polls", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "processMessages", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "publishMessage", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "publishMessageBatch", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "resetBallotCommitment", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setVkRegistry", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "signUp", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "signUpGatekeeper", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "signUpTimestamp", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "signUpsOpen", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "startVoting", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "stateAq", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "stateLeafTimeStamps", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stateTreeDepth", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stateTreeSubDepth", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "vkRegistry", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "voiceCreditProxy", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "voteDeadline", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "voteDurationSeconds", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "voteOptionTreeDepth", + data: BytesLike + ): Result; + + events: { + "DeployPoll(uint256,address,tuple)": EventFragment; + "Init(address,address)": EventFragment; + "Initialized(uint8)": EventFragment; + "MergeMaciStateAq(uint256)": EventFragment; + "MergeMaciStateAqSubRoots(uint256,uint256)": EventFragment; + "MergeMessageAq(uint256)": EventFragment; + "MergeMessageAqSubRoots(uint256)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + "PublishMessage(tuple,tuple)": EventFragment; + "SignUp(uint256,tuple,uint256,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "DeployPoll"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Init"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "MergeMaciStateAq"): EventFragment; + getEvent(nameOrSignatureOrTopic: "MergeMaciStateAqSubRoots"): EventFragment; + getEvent(nameOrSignatureOrTopic: "MergeMessageAq"): EventFragment; + getEvent(nameOrSignatureOrTopic: "MergeMessageAqSubRoots"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "PublishMessage"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SignUp"): EventFragment; +} + +export interface DeployPollEventObject { + _pollId: BigNumber; + _pollAddr: string; + _pubKey: Jubjub.PubKeyStructOutput; +} +export type DeployPollEvent = TypedEvent< + [BigNumber, string, Jubjub.PubKeyStructOutput], + DeployPollEventObject +>; + +export type DeployPollEventFilter = TypedEventFilter; + +export interface InitEventObject { + _signUpGatekeeper: string; + _topupCredit: string; +} +export type InitEvent = TypedEvent<[string, string], InitEventObject>; + +export type InitEventFilter = TypedEventFilter; + +export interface InitializedEventObject { + version: number; +} +export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; + +export type InitializedEventFilter = TypedEventFilter; + +export interface MergeMaciStateAqEventObject { + _pollId: BigNumber; +} +export type MergeMaciStateAqEvent = TypedEvent< + [BigNumber], + MergeMaciStateAqEventObject +>; + +export type MergeMaciStateAqEventFilter = + TypedEventFilter; + +export interface MergeMaciStateAqSubRootsEventObject { + _pollId: BigNumber; + _numSrQueueOps: BigNumber; +} +export type MergeMaciStateAqSubRootsEvent = TypedEvent< + [BigNumber, BigNumber], + MergeMaciStateAqSubRootsEventObject +>; + +export type MergeMaciStateAqSubRootsEventFilter = + TypedEventFilter; + +export interface MergeMessageAqEventObject { + _messageRoot: BigNumber; +} +export type MergeMessageAqEvent = TypedEvent< + [BigNumber], + MergeMessageAqEventObject +>; + +export type MergeMessageAqEventFilter = TypedEventFilter; + +export interface MergeMessageAqSubRootsEventObject { + _numSrQueueOps: BigNumber; +} +export type MergeMessageAqSubRootsEvent = TypedEvent< + [BigNumber], + MergeMessageAqSubRootsEventObject +>; + +export type MergeMessageAqSubRootsEventFilter = + TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface PublishMessageEventObject { + _message: Jubjub.MessageStructOutput; + _encPubKey: Jubjub.PubKeyStructOutput; +} +export type PublishMessageEvent = TypedEvent< + [Jubjub.MessageStructOutput, Jubjub.PubKeyStructOutput], + PublishMessageEventObject +>; + +export type PublishMessageEventFilter = TypedEventFilter; + +export interface SignUpEventObject { + _stateIndex: BigNumber; + _userPubKey: Jubjub.PubKeyStructOutput; + _voiceCreditBalance: BigNumber; + _timestamp: BigNumber; +} +export type SignUpEvent = TypedEvent< + [BigNumber, Jubjub.PubKeyStructOutput, BigNumber, BigNumber], + SignUpEventObject +>; + +export type SignUpEventFilter = TypedEventFilter; + +export interface Jubjub extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: JubjubInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + blankMessageLeafHash(overrides?: CallOverrides): Promise<[BigNumber]>; + + blankStateLeafHash(overrides?: CallOverrides): Promise<[BigNumber]>; + + calculateCurrentMessageBatchIndex( + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + coordinatorPubKey( + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber] & { x: BigNumber; y: BigNumber }>; + + coordinatorPubKeyHash(overrides?: CallOverrides): Promise<[BigNumber]>; + + currentBallotCommitment(overrides?: CallOverrides): Promise<[BigNumber]>; + + currentMessageCommitment(overrides?: CallOverrides): Promise<[BigNumber]>; + + currentSbCommitment(overrides?: CallOverrides): Promise<[BigNumber]>; + + currentStateCommitment(overrides?: CallOverrides): Promise<[BigNumber]>; + + hash( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + hashMessageLeaf( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + hashStateLeaf( + _stateLeaf: Jubjub.StateLeafStruct, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + initialize( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _stateTreeSubDepth: PromiseOrValue, + _messageTreeSubDepth: PromiseOrValue, + _emptyBallotRoots: PromiseOrValue[], + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + _stateAq: PromiseOrValue, + _messageAq: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isInitialised(overrides?: CallOverrides): Promise<[boolean]>; + + mergeMessageAq( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeMessageAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeStateAq( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeStateAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + messageAq(overrides?: CallOverrides): Promise<[string]>; + + messageTreeDepth(overrides?: CallOverrides): Promise<[BigNumber]>; + + messageTreeSubDepth(overrides?: CallOverrides): Promise<[BigNumber]>; + + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + numBatchesProcessed(overrides?: CallOverrides): Promise<[BigNumber]>; + + numMessages(overrides?: CallOverrides): Promise<[BigNumber]>; + + numPolls(overrides?: CallOverrides): Promise<[BigNumber]>; + + numSignUps(overrides?: CallOverrides): Promise<[BigNumber]>; + + openSignUpPeriod( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise<[string]>; + + pollResults( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + polls( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + processMessages( + _newStateCommitment: PromiseOrValue, + _newSbCommitment: PromiseOrValue, + _proof: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + publishMessage( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + publishMessageBatch( + _messages: Jubjub.MessageStruct[], + _encPubKeys: Jubjub.PubKeyStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + resetBallotCommitment( + _voteOptionTreeDepth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVkRegistry( + _vkRegistry: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + signUp( + _pubKey: Jubjub.PubKeyStruct, + _signUpGatekeeperData: PromiseOrValue, + _initialVoiceCreditProxyData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + signUpGatekeeper(overrides?: CallOverrides): Promise<[string]>; + + signUpTimestamp(overrides?: CallOverrides): Promise<[BigNumber]>; + + signUpsOpen(overrides?: CallOverrides): Promise<[boolean]>; + + startVoting( + _voteOptionTreeDepth: PromiseOrValue, + _duration: PromiseOrValue, + _coordinatorPubKey: Jubjub.PubKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stateAq(overrides?: CallOverrides): Promise<[string]>; + + stateLeafTimeStamps( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + stateTreeDepth(overrides?: CallOverrides): Promise<[BigNumber]>; + + stateTreeSubDepth(overrides?: CallOverrides): Promise<[BigNumber]>; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + vkRegistry(overrides?: CallOverrides): Promise<[string]>; + + voiceCreditProxy(overrides?: CallOverrides): Promise<[string]>; + + voteDeadline(overrides?: CallOverrides): Promise<[BigNumber]>; + + voteDurationSeconds(overrides?: CallOverrides): Promise<[BigNumber]>; + + voteOptionTreeDepth(overrides?: CallOverrides): Promise<[BigNumber]>; + }; + + blankMessageLeafHash(overrides?: CallOverrides): Promise; + + blankStateLeafHash(overrides?: CallOverrides): Promise; + + calculateCurrentMessageBatchIndex( + overrides?: CallOverrides + ): Promise; + + coordinatorPubKey( + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber] & { x: BigNumber; y: BigNumber }>; + + coordinatorPubKeyHash(overrides?: CallOverrides): Promise; + + currentBallotCommitment(overrides?: CallOverrides): Promise; + + currentMessageCommitment(overrides?: CallOverrides): Promise; + + currentSbCommitment(overrides?: CallOverrides): Promise; + + currentStateCommitment(overrides?: CallOverrides): Promise; + + hash( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashMessageLeaf( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: CallOverrides + ): Promise; + + hashStateLeaf( + _stateLeaf: Jubjub.StateLeafStruct, + overrides?: CallOverrides + ): Promise; + + initialize( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _stateTreeSubDepth: PromiseOrValue, + _messageTreeSubDepth: PromiseOrValue, + _emptyBallotRoots: PromiseOrValue[], + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + _stateAq: PromiseOrValue, + _messageAq: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isInitialised(overrides?: CallOverrides): Promise; + + mergeMessageAq( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeMessageAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeStateAq( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeStateAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + messageAq(overrides?: CallOverrides): Promise; + + messageTreeDepth(overrides?: CallOverrides): Promise; + + messageTreeSubDepth(overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + numBatchesProcessed(overrides?: CallOverrides): Promise; + + numMessages(overrides?: CallOverrides): Promise; + + numPolls(overrides?: CallOverrides): Promise; + + numSignUps(overrides?: CallOverrides): Promise; + + openSignUpPeriod( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + pollResults( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + polls( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + processMessages( + _newStateCommitment: PromiseOrValue, + _newSbCommitment: PromiseOrValue, + _proof: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + publishMessage( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + publishMessageBatch( + _messages: Jubjub.MessageStruct[], + _encPubKeys: Jubjub.PubKeyStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + resetBallotCommitment( + _voteOptionTreeDepth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVkRegistry( + _vkRegistry: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + signUp( + _pubKey: Jubjub.PubKeyStruct, + _signUpGatekeeperData: PromiseOrValue, + _initialVoiceCreditProxyData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + signUpGatekeeper(overrides?: CallOverrides): Promise; + + signUpTimestamp(overrides?: CallOverrides): Promise; + + signUpsOpen(overrides?: CallOverrides): Promise; + + startVoting( + _voteOptionTreeDepth: PromiseOrValue, + _duration: PromiseOrValue, + _coordinatorPubKey: Jubjub.PubKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stateAq(overrides?: CallOverrides): Promise; + + stateLeafTimeStamps( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + stateTreeDepth(overrides?: CallOverrides): Promise; + + stateTreeSubDepth(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + vkRegistry(overrides?: CallOverrides): Promise; + + voiceCreditProxy(overrides?: CallOverrides): Promise; + + voteDeadline(overrides?: CallOverrides): Promise; + + voteDurationSeconds(overrides?: CallOverrides): Promise; + + voteOptionTreeDepth(overrides?: CallOverrides): Promise; + + callStatic: { + blankMessageLeafHash(overrides?: CallOverrides): Promise; + + blankStateLeafHash(overrides?: CallOverrides): Promise; + + calculateCurrentMessageBatchIndex( + overrides?: CallOverrides + ): Promise; + + coordinatorPubKey( + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber] & { x: BigNumber; y: BigNumber }>; + + coordinatorPubKeyHash(overrides?: CallOverrides): Promise; + + currentBallotCommitment(overrides?: CallOverrides): Promise; + + currentMessageCommitment(overrides?: CallOverrides): Promise; + + currentSbCommitment(overrides?: CallOverrides): Promise; + + currentStateCommitment(overrides?: CallOverrides): Promise; + + hash( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashMessageLeaf( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: CallOverrides + ): Promise; + + hashStateLeaf( + _stateLeaf: Jubjub.StateLeafStruct, + overrides?: CallOverrides + ): Promise; + + initialize( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _stateTreeSubDepth: PromiseOrValue, + _messageTreeSubDepth: PromiseOrValue, + _emptyBallotRoots: PromiseOrValue[], + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + _stateAq: PromiseOrValue, + _messageAq: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isInitialised(overrides?: CallOverrides): Promise; + + mergeMessageAq(overrides?: CallOverrides): Promise; + + mergeMessageAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mergeStateAq(overrides?: CallOverrides): Promise; + + mergeStateAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + messageAq(overrides?: CallOverrides): Promise; + + messageTreeDepth(overrides?: CallOverrides): Promise; + + messageTreeSubDepth(overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + numBatchesProcessed(overrides?: CallOverrides): Promise; + + numMessages(overrides?: CallOverrides): Promise; + + numPolls(overrides?: CallOverrides): Promise; + + numSignUps(overrides?: CallOverrides): Promise; + + openSignUpPeriod(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pollResults( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + polls( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + processMessages( + _newStateCommitment: PromiseOrValue, + _newSbCommitment: PromiseOrValue, + _proof: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + publishMessage( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: CallOverrides + ): Promise; + + publishMessageBatch( + _messages: Jubjub.MessageStruct[], + _encPubKeys: Jubjub.PubKeyStruct[], + overrides?: CallOverrides + ): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + resetBallotCommitment( + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setVkRegistry( + _vkRegistry: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + signUp( + _pubKey: Jubjub.PubKeyStruct, + _signUpGatekeeperData: PromiseOrValue, + _initialVoiceCreditProxyData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + signUpGatekeeper(overrides?: CallOverrides): Promise; + + signUpTimestamp(overrides?: CallOverrides): Promise; + + signUpsOpen(overrides?: CallOverrides): Promise; + + startVoting( + _voteOptionTreeDepth: PromiseOrValue, + _duration: PromiseOrValue, + _coordinatorPubKey: Jubjub.PubKeyStruct, + overrides?: CallOverrides + ): Promise; + + stateAq(overrides?: CallOverrides): Promise; + + stateLeafTimeStamps( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + stateTreeDepth(overrides?: CallOverrides): Promise; + + stateTreeSubDepth(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + vkRegistry(overrides?: CallOverrides): Promise; + + voiceCreditProxy(overrides?: CallOverrides): Promise; + + voteDeadline(overrides?: CallOverrides): Promise; + + voteDurationSeconds(overrides?: CallOverrides): Promise; + + voteOptionTreeDepth(overrides?: CallOverrides): Promise; + }; + + filters: { + "DeployPoll(uint256,address,tuple)"( + _pollId?: null, + _pollAddr?: null, + _pubKey?: null + ): DeployPollEventFilter; + DeployPoll( + _pollId?: null, + _pollAddr?: null, + _pubKey?: null + ): DeployPollEventFilter; + + "Init(address,address)"( + _signUpGatekeeper?: null, + _topupCredit?: null + ): InitEventFilter; + Init(_signUpGatekeeper?: null, _topupCredit?: null): InitEventFilter; + + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "MergeMaciStateAq(uint256)"(_pollId?: null): MergeMaciStateAqEventFilter; + MergeMaciStateAq(_pollId?: null): MergeMaciStateAqEventFilter; + + "MergeMaciStateAqSubRoots(uint256,uint256)"( + _pollId?: null, + _numSrQueueOps?: null + ): MergeMaciStateAqSubRootsEventFilter; + MergeMaciStateAqSubRoots( + _pollId?: null, + _numSrQueueOps?: null + ): MergeMaciStateAqSubRootsEventFilter; + + "MergeMessageAq(uint256)"(_messageRoot?: null): MergeMessageAqEventFilter; + MergeMessageAq(_messageRoot?: null): MergeMessageAqEventFilter; + + "MergeMessageAqSubRoots(uint256)"( + _numSrQueueOps?: null + ): MergeMessageAqSubRootsEventFilter; + MergeMessageAqSubRoots( + _numSrQueueOps?: null + ): MergeMessageAqSubRootsEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + + "PublishMessage(tuple,tuple)"( + _message?: null, + _encPubKey?: null + ): PublishMessageEventFilter; + PublishMessage( + _message?: null, + _encPubKey?: null + ): PublishMessageEventFilter; + + "SignUp(uint256,tuple,uint256,uint256)"( + _stateIndex?: null, + _userPubKey?: null, + _voiceCreditBalance?: null, + _timestamp?: null + ): SignUpEventFilter; + SignUp( + _stateIndex?: null, + _userPubKey?: null, + _voiceCreditBalance?: null, + _timestamp?: null + ): SignUpEventFilter; + }; + + estimateGas: { + blankMessageLeafHash(overrides?: CallOverrides): Promise; + + blankStateLeafHash(overrides?: CallOverrides): Promise; + + calculateCurrentMessageBatchIndex( + overrides?: CallOverrides + ): Promise; + + coordinatorPubKey(overrides?: CallOverrides): Promise; + + coordinatorPubKeyHash(overrides?: CallOverrides): Promise; + + currentBallotCommitment(overrides?: CallOverrides): Promise; + + currentMessageCommitment(overrides?: CallOverrides): Promise; + + currentSbCommitment(overrides?: CallOverrides): Promise; + + currentStateCommitment(overrides?: CallOverrides): Promise; + + hash( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashMessageLeaf( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: CallOverrides + ): Promise; + + hashStateLeaf( + _stateLeaf: Jubjub.StateLeafStruct, + overrides?: CallOverrides + ): Promise; + + initialize( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _stateTreeSubDepth: PromiseOrValue, + _messageTreeSubDepth: PromiseOrValue, + _emptyBallotRoots: PromiseOrValue[], + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + _stateAq: PromiseOrValue, + _messageAq: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isInitialised(overrides?: CallOverrides): Promise; + + mergeMessageAq( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeMessageAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeStateAq( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeStateAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + messageAq(overrides?: CallOverrides): Promise; + + messageTreeDepth(overrides?: CallOverrides): Promise; + + messageTreeSubDepth(overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + numBatchesProcessed(overrides?: CallOverrides): Promise; + + numMessages(overrides?: CallOverrides): Promise; + + numPolls(overrides?: CallOverrides): Promise; + + numSignUps(overrides?: CallOverrides): Promise; + + openSignUpPeriod( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + pollResults( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + polls( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + processMessages( + _newStateCommitment: PromiseOrValue, + _newSbCommitment: PromiseOrValue, + _proof: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + publishMessage( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + publishMessageBatch( + _messages: Jubjub.MessageStruct[], + _encPubKeys: Jubjub.PubKeyStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + resetBallotCommitment( + _voteOptionTreeDepth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVkRegistry( + _vkRegistry: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + signUp( + _pubKey: Jubjub.PubKeyStruct, + _signUpGatekeeperData: PromiseOrValue, + _initialVoiceCreditProxyData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + signUpGatekeeper(overrides?: CallOverrides): Promise; + + signUpTimestamp(overrides?: CallOverrides): Promise; + + signUpsOpen(overrides?: CallOverrides): Promise; + + startVoting( + _voteOptionTreeDepth: PromiseOrValue, + _duration: PromiseOrValue, + _coordinatorPubKey: Jubjub.PubKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stateAq(overrides?: CallOverrides): Promise; + + stateLeafTimeStamps( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + stateTreeDepth(overrides?: CallOverrides): Promise; + + stateTreeSubDepth(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + vkRegistry(overrides?: CallOverrides): Promise; + + voiceCreditProxy(overrides?: CallOverrides): Promise; + + voteDeadline(overrides?: CallOverrides): Promise; + + voteDurationSeconds(overrides?: CallOverrides): Promise; + + voteOptionTreeDepth(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + blankMessageLeafHash( + overrides?: CallOverrides + ): Promise; + + blankStateLeafHash( + overrides?: CallOverrides + ): Promise; + + calculateCurrentMessageBatchIndex( + overrides?: CallOverrides + ): Promise; + + coordinatorPubKey(overrides?: CallOverrides): Promise; + + coordinatorPubKeyHash( + overrides?: CallOverrides + ): Promise; + + currentBallotCommitment( + overrides?: CallOverrides + ): Promise; + + currentMessageCommitment( + overrides?: CallOverrides + ): Promise; + + currentSbCommitment( + overrides?: CallOverrides + ): Promise; + + currentStateCommitment( + overrides?: CallOverrides + ): Promise; + + hash( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashMessageLeaf( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: CallOverrides + ): Promise; + + hashStateLeaf( + _stateLeaf: Jubjub.StateLeafStruct, + overrides?: CallOverrides + ): Promise; + + initialize( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _stateTreeSubDepth: PromiseOrValue, + _messageTreeSubDepth: PromiseOrValue, + _emptyBallotRoots: PromiseOrValue[], + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + _stateAq: PromiseOrValue, + _messageAq: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isInitialised(overrides?: CallOverrides): Promise; + + mergeMessageAq( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeMessageAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeStateAq( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeStateAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + messageAq(overrides?: CallOverrides): Promise; + + messageTreeDepth(overrides?: CallOverrides): Promise; + + messageTreeSubDepth( + overrides?: CallOverrides + ): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + numBatchesProcessed( + overrides?: CallOverrides + ): Promise; + + numMessages(overrides?: CallOverrides): Promise; + + numPolls(overrides?: CallOverrides): Promise; + + numSignUps(overrides?: CallOverrides): Promise; + + openSignUpPeriod( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + pollResults( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + polls( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + processMessages( + _newStateCommitment: PromiseOrValue, + _newSbCommitment: PromiseOrValue, + _proof: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + publishMessage( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + publishMessageBatch( + _messages: Jubjub.MessageStruct[], + _encPubKeys: Jubjub.PubKeyStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + resetBallotCommitment( + _voteOptionTreeDepth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVkRegistry( + _vkRegistry: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + signUp( + _pubKey: Jubjub.PubKeyStruct, + _signUpGatekeeperData: PromiseOrValue, + _initialVoiceCreditProxyData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + signUpGatekeeper(overrides?: CallOverrides): Promise; + + signUpTimestamp(overrides?: CallOverrides): Promise; + + signUpsOpen(overrides?: CallOverrides): Promise; + + startVoting( + _voteOptionTreeDepth: PromiseOrValue, + _duration: PromiseOrValue, + _coordinatorPubKey: Jubjub.PubKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stateAq(overrides?: CallOverrides): Promise; + + stateLeafTimeStamps( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + stateTreeDepth(overrides?: CallOverrides): Promise; + + stateTreeSubDepth(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + vkRegistry(overrides?: CallOverrides): Promise; + + voiceCreditProxy(overrides?: CallOverrides): Promise; + + voteDeadline(overrides?: CallOverrides): Promise; + + voteDurationSeconds( + overrides?: CallOverrides + ): Promise; + + voteOptionTreeDepth( + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/app/src/typechain/contracts/JubjubFactory.ts b/packages/app/src/typechain/contracts/JubjubFactory.ts new file mode 100644 index 00000000..b003373b --- /dev/null +++ b/packages/app/src/typechain/contracts/JubjubFactory.ts @@ -0,0 +1,1345 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../common"; + +export declare namespace Pairing { + export type G1PointStruct = { + x: PromiseOrValue; + y: PromiseOrValue; + }; + + export type G1PointStructOutput = [BigNumber, BigNumber] & { + x: BigNumber; + y: BigNumber; + }; + + export type G2PointStruct = { + x: [PromiseOrValue, PromiseOrValue]; + y: [PromiseOrValue, PromiseOrValue]; + }; + + export type G2PointStructOutput = [ + [BigNumber, BigNumber], + [BigNumber, BigNumber] + ] & { x: [BigNumber, BigNumber]; y: [BigNumber, BigNumber] }; +} + +export declare namespace VkRegistry { + export type VerifyingKeyStruct = { + alpha1: Pairing.G1PointStruct; + beta2: Pairing.G2PointStruct; + gamma2: Pairing.G2PointStruct; + delta2: Pairing.G2PointStruct; + ic: Pairing.G1PointStruct[]; + }; + + export type VerifyingKeyStructOutput = [ + Pairing.G1PointStructOutput, + Pairing.G2PointStructOutput, + Pairing.G2PointStructOutput, + Pairing.G2PointStructOutput, + Pairing.G1PointStructOutput[] + ] & { + alpha1: Pairing.G1PointStructOutput; + beta2: Pairing.G2PointStructOutput; + gamma2: Pairing.G2PointStructOutput; + delta2: Pairing.G2PointStructOutput; + ic: Pairing.G1PointStructOutput[]; + }; +} + +export interface JubjubFactoryInterface extends utils.Interface { + functions: { + "currentJubjub()": FunctionFragment; + "deployJubjub(bytes32,address,address)": FunctionFragment; + "deployMessageTree(bytes32)": FunctionFragment; + "deployStateTree(bytes32)": FunctionFragment; + "determineJubjub(bytes32)": FunctionFragment; + "genProcessVkSig(uint256,uint256,uint256,uint256)": FunctionFragment; + "genSubsidyVkSig(uint256,uint256,uint256)": FunctionFragment; + "genTallyVkSig(uint256,uint256,uint256)": FunctionFragment; + "getProcessVk(uint256,uint256,uint256,uint256)": FunctionFragment; + "getProcessVkBySig(uint256)": FunctionFragment; + "getSubsidyVk(uint256,uint256,uint256)": FunctionFragment; + "getSubsidyVkBySig(uint256)": FunctionFragment; + "getTallyVk(uint256,uint256,uint256)": FunctionFragment; + "getTallyVkBySig(uint256)": FunctionFragment; + "hasProcessVk(uint256,uint256,uint256,uint256)": FunctionFragment; + "hasSubsidyVk(uint256,uint256,uint256)": FunctionFragment; + "hasTallyVk(uint256,uint256,uint256)": FunctionFragment; + "isProcessVkSet(uint256)": FunctionFragment; + "isSubsidyVkSet(uint256)": FunctionFragment; + "isTallyVkSet(uint256)": FunctionFragment; + "jubjubTemplate()": FunctionFragment; + "multicall(bytes[])": FunctionFragment; + "owner()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "setSubsidyKeys(uint256,uint256,uint256,((uint256,uint256),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256,uint256)[]))": FunctionFragment; + "setVerifyingKeys(uint256,uint256,uint256,uint256,uint256,((uint256,uint256),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256,uint256)[]),((uint256,uint256),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256,uint256)[]))": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "currentJubjub" + | "deployJubjub" + | "deployMessageTree" + | "deployStateTree" + | "determineJubjub" + | "genProcessVkSig" + | "genSubsidyVkSig" + | "genTallyVkSig" + | "getProcessVk" + | "getProcessVkBySig" + | "getSubsidyVk" + | "getSubsidyVkBySig" + | "getTallyVk" + | "getTallyVkBySig" + | "hasProcessVk" + | "hasSubsidyVk" + | "hasTallyVk" + | "isProcessVkSet" + | "isSubsidyVkSet" + | "isTallyVkSet" + | "jubjubTemplate" + | "multicall" + | "owner" + | "renounceOwnership" + | "setSubsidyKeys" + | "setVerifyingKeys" + | "transferOwnership" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "currentJubjub", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "deployJubjub", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "deployMessageTree", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "deployStateTree", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "determineJubjub", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "genProcessVkSig", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "genSubsidyVkSig", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "genTallyVkSig", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getProcessVk", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getProcessVkBySig", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSubsidyVk", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getSubsidyVkBySig", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getTallyVk", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getTallyVkBySig", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "hasProcessVk", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "hasSubsidyVk", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "hasTallyVk", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "isProcessVkSet", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isSubsidyVkSet", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isTallyVkSet", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "jubjubTemplate", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "multicall", + values: [PromiseOrValue[]] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setSubsidyKeys", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + VkRegistry.VerifyingKeyStruct + ] + ): string; + encodeFunctionData( + functionFragment: "setVerifyingKeys", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + VkRegistry.VerifyingKeyStruct, + VkRegistry.VerifyingKeyStruct + ] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "currentJubjub", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deployJubjub", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deployMessageTree", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deployStateTree", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "determineJubjub", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "genProcessVkSig", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "genSubsidyVkSig", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "genTallyVkSig", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getProcessVk", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getProcessVkBySig", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSubsidyVk", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSubsidyVkBySig", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getTallyVk", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getTallyVkBySig", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "hasProcessVk", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "hasSubsidyVk", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "hasTallyVk", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isProcessVkSet", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isSubsidyVkSet", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isTallyVkSet", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "jubjubTemplate", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setSubsidyKeys", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setVerifyingKeys", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + + events: { + "JubjubDeployed(address)": EventFragment; + "MessageTreeDeployed(address)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + "ProcessVkSet(uint256)": EventFragment; + "StateTreeDeployed(address)": EventFragment; + "SubsidyVkSet(uint256)": EventFragment; + "TallyVkSet(uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "JubjubDeployed"): EventFragment; + getEvent(nameOrSignatureOrTopic: "MessageTreeDeployed"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ProcessVkSet"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StateTreeDeployed"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SubsidyVkSet"): EventFragment; + getEvent(nameOrSignatureOrTopic: "TallyVkSet"): EventFragment; +} + +export interface JubjubDeployedEventObject { + jubjub: string; +} +export type JubjubDeployedEvent = TypedEvent< + [string], + JubjubDeployedEventObject +>; + +export type JubjubDeployedEventFilter = TypedEventFilter; + +export interface MessageTreeDeployedEventObject { + MessageTree: string; +} +export type MessageTreeDeployedEvent = TypedEvent< + [string], + MessageTreeDeployedEventObject +>; + +export type MessageTreeDeployedEventFilter = + TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface ProcessVkSetEventObject { + _sig: BigNumber; +} +export type ProcessVkSetEvent = TypedEvent< + [BigNumber], + ProcessVkSetEventObject +>; + +export type ProcessVkSetEventFilter = TypedEventFilter; + +export interface StateTreeDeployedEventObject { + StateTree: string; +} +export type StateTreeDeployedEvent = TypedEvent< + [string], + StateTreeDeployedEventObject +>; + +export type StateTreeDeployedEventFilter = + TypedEventFilter; + +export interface SubsidyVkSetEventObject { + _sig: BigNumber; +} +export type SubsidyVkSetEvent = TypedEvent< + [BigNumber], + SubsidyVkSetEventObject +>; + +export type SubsidyVkSetEventFilter = TypedEventFilter; + +export interface TallyVkSetEventObject { + _sig: BigNumber; +} +export type TallyVkSetEvent = TypedEvent<[BigNumber], TallyVkSetEventObject>; + +export type TallyVkSetEventFilter = TypedEventFilter; + +export interface JubjubFactory extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: JubjubFactoryInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + currentJubjub(overrides?: CallOverrides): Promise<[string]>; + + deployJubjub( + salt: PromiseOrValue, + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deployMessageTree( + salt: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deployStateTree( + salt: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + determineJubjub( + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + genProcessVkSig( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + genSubsidyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + genTallyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[VkRegistry.VerifyingKeyStructOutput]>; + + getProcessVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[VkRegistry.VerifyingKeyStructOutput]>; + + getSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[VkRegistry.VerifyingKeyStructOutput]>; + + getSubsidyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[VkRegistry.VerifyingKeyStructOutput]>; + + getTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[VkRegistry.VerifyingKeyStructOutput]>; + + getTallyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[VkRegistry.VerifyingKeyStructOutput]>; + + hasProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + hasSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + hasTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isProcessVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isSubsidyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isTallyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + jubjubTemplate(overrides?: CallOverrides): Promise<[string]>; + + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSubsidyKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _subsidyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVerifyingKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + _processVk: VkRegistry.VerifyingKeyStruct, + _tallyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + currentJubjub(overrides?: CallOverrides): Promise; + + deployJubjub( + salt: PromiseOrValue, + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deployMessageTree( + salt: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deployStateTree( + salt: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + determineJubjub( + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genProcessVkSig( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genSubsidyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genTallyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isProcessVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSubsidyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isTallyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + jubjubTemplate(overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSubsidyKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _subsidyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVerifyingKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + _processVk: VkRegistry.VerifyingKeyStruct, + _tallyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + currentJubjub(overrides?: CallOverrides): Promise; + + deployJubjub( + salt: PromiseOrValue, + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + deployMessageTree( + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + deployStateTree( + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + determineJubjub( + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genProcessVkSig( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genSubsidyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genTallyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isProcessVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSubsidyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isTallyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + jubjubTemplate(overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + setSubsidyKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _subsidyVk: VkRegistry.VerifyingKeyStruct, + overrides?: CallOverrides + ): Promise; + + setVerifyingKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + _processVk: VkRegistry.VerifyingKeyStruct, + _tallyVk: VkRegistry.VerifyingKeyStruct, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "JubjubDeployed(address)"( + jubjub?: PromiseOrValue | null + ): JubjubDeployedEventFilter; + JubjubDeployed( + jubjub?: PromiseOrValue | null + ): JubjubDeployedEventFilter; + + "MessageTreeDeployed(address)"( + MessageTree?: PromiseOrValue | null + ): MessageTreeDeployedEventFilter; + MessageTreeDeployed( + MessageTree?: PromiseOrValue | null + ): MessageTreeDeployedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + + "ProcessVkSet(uint256)"(_sig?: null): ProcessVkSetEventFilter; + ProcessVkSet(_sig?: null): ProcessVkSetEventFilter; + + "StateTreeDeployed(address)"( + StateTree?: PromiseOrValue | null + ): StateTreeDeployedEventFilter; + StateTreeDeployed( + StateTree?: PromiseOrValue | null + ): StateTreeDeployedEventFilter; + + "SubsidyVkSet(uint256)"(_sig?: null): SubsidyVkSetEventFilter; + SubsidyVkSet(_sig?: null): SubsidyVkSetEventFilter; + + "TallyVkSet(uint256)"(_sig?: null): TallyVkSetEventFilter; + TallyVkSet(_sig?: null): TallyVkSetEventFilter; + }; + + estimateGas: { + currentJubjub(overrides?: CallOverrides): Promise; + + deployJubjub( + salt: PromiseOrValue, + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deployMessageTree( + salt: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deployStateTree( + salt: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + determineJubjub( + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genProcessVkSig( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genSubsidyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genTallyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isProcessVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSubsidyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isTallyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + jubjubTemplate(overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSubsidyKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _subsidyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVerifyingKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + _processVk: VkRegistry.VerifyingKeyStruct, + _tallyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + currentJubjub(overrides?: CallOverrides): Promise; + + deployJubjub( + salt: PromiseOrValue, + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deployMessageTree( + salt: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deployStateTree( + salt: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + determineJubjub( + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genProcessVkSig( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genSubsidyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genTallyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isProcessVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSubsidyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isTallyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + jubjubTemplate(overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSubsidyKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _subsidyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVerifyingKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + _processVk: VkRegistry.VerifyingKeyStruct, + _tallyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/app/src/typechain/contracts/MessageTree.ts b/packages/app/src/typechain/contracts/MessageTree.ts new file mode 100644 index 00000000..db212888 --- /dev/null +++ b/packages/app/src/typechain/contracts/MessageTree.ts @@ -0,0 +1,725 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../common"; + +export interface MessageTreeInterface extends utils.Interface { + functions: { + "MAX_DEPTH()": FunctionFragment; + "calcMinHeight()": FunctionFragment; + "currentSubtreeIndex()": FunctionFragment; + "enqueue(uint256)": FunctionFragment; + "fill()": FunctionFragment; + "getMainRoot(uint256)": FunctionFragment; + "getSmallSRTroot()": FunctionFragment; + "getSrIndices()": FunctionFragment; + "getSubRoot(uint256)": FunctionFragment; + "hashLevelLeaf(uint256,uint256)": FunctionFragment; + "initialize()": FunctionFragment; + "insertSubTree(uint256)": FunctionFragment; + "mainRoots(uint256)": FunctionFragment; + "merge(uint256)": FunctionFragment; + "mergeSubRoots(uint256)": FunctionFragment; + "numLeaves()": FunctionFragment; + "owner()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "smallSRTroot()": FunctionFragment; + "subDepth()": FunctionFragment; + "subRoots(uint256)": FunctionFragment; + "subTreesMerged()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "treeMerged()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "MAX_DEPTH" + | "calcMinHeight" + | "currentSubtreeIndex" + | "enqueue" + | "fill" + | "getMainRoot" + | "getSmallSRTroot" + | "getSrIndices" + | "getSubRoot" + | "hashLevelLeaf" + | "initialize" + | "insertSubTree" + | "mainRoots" + | "merge" + | "mergeSubRoots" + | "numLeaves" + | "owner" + | "renounceOwnership" + | "smallSRTroot" + | "subDepth" + | "subRoots" + | "subTreesMerged" + | "transferOwnership" + | "treeMerged" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "MAX_DEPTH", values?: undefined): string; + encodeFunctionData( + functionFragment: "calcMinHeight", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "currentSubtreeIndex", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "enqueue", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "fill", values?: undefined): string; + encodeFunctionData( + functionFragment: "getMainRoot", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSmallSRTroot", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getSrIndices", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getSubRoot", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "hashLevelLeaf", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "insertSubTree", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "mainRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "merge", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "mergeSubRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "numLeaves", values?: undefined): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "smallSRTroot", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "subDepth", values?: undefined): string; + encodeFunctionData( + functionFragment: "subRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "subTreesMerged", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "treeMerged", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "MAX_DEPTH", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "calcMinHeight", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "currentSubtreeIndex", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "enqueue", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "fill", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getMainRoot", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSmallSRTroot", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSrIndices", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getSubRoot", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "hashLevelLeaf", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "insertSubTree", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "mainRoots", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "merge", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "mergeSubRoots", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "numLeaves", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "smallSRTroot", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "subDepth", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "subRoots", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "subTreesMerged", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "treeMerged", data: BytesLike): Result; + + events: { + "Initialized(uint8)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export interface InitializedEventObject { + version: number; +} +export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; + +export type InitializedEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface MessageTree extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: MessageTreeInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + MAX_DEPTH(overrides?: CallOverrides): Promise<[BigNumber]>; + + calcMinHeight(overrides?: CallOverrides): Promise<[BigNumber]>; + + currentSubtreeIndex(overrides?: CallOverrides): Promise<[BigNumber]>; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getSmallSRTroot(overrides?: CallOverrides): Promise<[BigNumber]>; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise<[BigNumber]>; + + subDepth(overrides?: CallOverrides): Promise<[BigNumber]>; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + subTreesMerged(overrides?: CallOverrides): Promise<[boolean]>; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise<[boolean]>; + }; + + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + + callStatic: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + fill(overrides?: CallOverrides): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize(overrides?: CallOverrides): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; + + filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex( + overrides?: CallOverrides + ): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; +} diff --git a/packages/app/src/typechain/contracts/StateTree.ts b/packages/app/src/typechain/contracts/StateTree.ts new file mode 100644 index 00000000..1694e5a1 --- /dev/null +++ b/packages/app/src/typechain/contracts/StateTree.ts @@ -0,0 +1,725 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../common"; + +export interface StateTreeInterface extends utils.Interface { + functions: { + "MAX_DEPTH()": FunctionFragment; + "calcMinHeight()": FunctionFragment; + "currentSubtreeIndex()": FunctionFragment; + "enqueue(uint256)": FunctionFragment; + "fill()": FunctionFragment; + "getMainRoot(uint256)": FunctionFragment; + "getSmallSRTroot()": FunctionFragment; + "getSrIndices()": FunctionFragment; + "getSubRoot(uint256)": FunctionFragment; + "hashLevelLeaf(uint256,uint256)": FunctionFragment; + "initialize()": FunctionFragment; + "insertSubTree(uint256)": FunctionFragment; + "mainRoots(uint256)": FunctionFragment; + "merge(uint256)": FunctionFragment; + "mergeSubRoots(uint256)": FunctionFragment; + "numLeaves()": FunctionFragment; + "owner()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "smallSRTroot()": FunctionFragment; + "subDepth()": FunctionFragment; + "subRoots(uint256)": FunctionFragment; + "subTreesMerged()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "treeMerged()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "MAX_DEPTH" + | "calcMinHeight" + | "currentSubtreeIndex" + | "enqueue" + | "fill" + | "getMainRoot" + | "getSmallSRTroot" + | "getSrIndices" + | "getSubRoot" + | "hashLevelLeaf" + | "initialize" + | "insertSubTree" + | "mainRoots" + | "merge" + | "mergeSubRoots" + | "numLeaves" + | "owner" + | "renounceOwnership" + | "smallSRTroot" + | "subDepth" + | "subRoots" + | "subTreesMerged" + | "transferOwnership" + | "treeMerged" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "MAX_DEPTH", values?: undefined): string; + encodeFunctionData( + functionFragment: "calcMinHeight", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "currentSubtreeIndex", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "enqueue", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "fill", values?: undefined): string; + encodeFunctionData( + functionFragment: "getMainRoot", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSmallSRTroot", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getSrIndices", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getSubRoot", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "hashLevelLeaf", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "insertSubTree", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "mainRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "merge", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "mergeSubRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "numLeaves", values?: undefined): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "smallSRTroot", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "subDepth", values?: undefined): string; + encodeFunctionData( + functionFragment: "subRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "subTreesMerged", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "treeMerged", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "MAX_DEPTH", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "calcMinHeight", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "currentSubtreeIndex", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "enqueue", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "fill", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getMainRoot", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSmallSRTroot", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSrIndices", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getSubRoot", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "hashLevelLeaf", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "insertSubTree", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "mainRoots", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "merge", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "mergeSubRoots", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "numLeaves", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "smallSRTroot", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "subDepth", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "subRoots", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "subTreesMerged", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "treeMerged", data: BytesLike): Result; + + events: { + "Initialized(uint8)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export interface InitializedEventObject { + version: number; +} +export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; + +export type InitializedEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface StateTree extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: StateTreeInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + MAX_DEPTH(overrides?: CallOverrides): Promise<[BigNumber]>; + + calcMinHeight(overrides?: CallOverrides): Promise<[BigNumber]>; + + currentSubtreeIndex(overrides?: CallOverrides): Promise<[BigNumber]>; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getSmallSRTroot(overrides?: CallOverrides): Promise<[BigNumber]>; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise<[BigNumber]>; + + subDepth(overrides?: CallOverrides): Promise<[BigNumber]>; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + subTreesMerged(overrides?: CallOverrides): Promise<[boolean]>; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise<[boolean]>; + }; + + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + + callStatic: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + fill(overrides?: CallOverrides): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize(overrides?: CallOverrides): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; + + filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex( + overrides?: CallOverrides + ): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; +} diff --git a/packages/app/src/typechain/contracts/flavors/SimpleHackathon.ts b/packages/app/src/typechain/contracts/flavors/SimpleHackathon.ts new file mode 100644 index 00000000..9a9bb71f --- /dev/null +++ b/packages/app/src/typechain/contracts/flavors/SimpleHackathon.ts @@ -0,0 +1,527 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface SimpleHackathonInterface extends utils.Interface { + functions: { + "addRecipient(address,string)": FunctionFragment; + "controller()": FunctionFragment; + "getRecipientAddress(uint256,uint256,uint256)": FunctionFragment; + "getRecipientCount()": FunctionFragment; + "getVoiceCredits(address,bytes)": FunctionFragment; + "maxRecipients()": FunctionFragment; + "owner()": FunctionFragment; + "register(address,bytes)": FunctionFragment; + "removeRecipient(bytes32)": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "setMaxRecipients(uint256)": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addRecipient" + | "controller" + | "getRecipientAddress" + | "getRecipientCount" + | "getVoiceCredits" + | "maxRecipients" + | "owner" + | "register" + | "removeRecipient" + | "renounceOwnership" + | "setMaxRecipients" + | "transferOwnership" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "addRecipient", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "controller", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRecipientAddress", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getRecipientCount", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getVoiceCredits", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "maxRecipients", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "register", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "removeRecipient", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setMaxRecipients", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "addRecipient", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "controller", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getRecipientAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRecipientCount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getVoiceCredits", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "maxRecipients", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "register", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "removeRecipient", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMaxRecipients", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + + events: { + "OwnershipTransferred(address,address)": EventFragment; + "RecipientAdded(bytes32,address,string,uint256,uint256)": EventFragment; + "RecipientRemoved(bytes32,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RecipientAdded"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RecipientRemoved"): EventFragment; +} + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface RecipientAddedEventObject { + _recipientId: string; + _recipient: string; + _metadata: string; + _index: BigNumber; + _timestamp: BigNumber; +} +export type RecipientAddedEvent = TypedEvent< + [string, string, string, BigNumber, BigNumber], + RecipientAddedEventObject +>; + +export type RecipientAddedEventFilter = TypedEventFilter; + +export interface RecipientRemovedEventObject { + _recipientId: string; + _timestamp: BigNumber; +} +export type RecipientRemovedEvent = TypedEvent< + [string, BigNumber], + RecipientRemovedEventObject +>; + +export type RecipientRemovedEventFilter = + TypedEventFilter; + +export interface SimpleHackathon extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: SimpleHackathonInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + controller(overrides?: CallOverrides): Promise<[string]>; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + getRecipientCount(overrides?: CallOverrides): Promise<[BigNumber]>; + + getVoiceCredits( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + maxRecipients(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[void]>; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + getVoiceCredits( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + getVoiceCredits( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + + "RecipientAdded(bytes32,address,string,uint256,uint256)"( + _recipientId?: PromiseOrValue | null, + _recipient?: null, + _metadata?: null, + _index?: null, + _timestamp?: null + ): RecipientAddedEventFilter; + RecipientAdded( + _recipientId?: PromiseOrValue | null, + _recipient?: null, + _metadata?: null, + _index?: null, + _timestamp?: null + ): RecipientAddedEventFilter; + + "RecipientRemoved(bytes32,uint256)"( + _recipientId?: PromiseOrValue | null, + _timestamp?: null + ): RecipientRemovedEventFilter; + RecipientRemoved( + _recipientId?: PromiseOrValue | null, + _timestamp?: null + ): RecipientRemovedEventFilter; + }; + + estimateGas: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + getVoiceCredits( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + getVoiceCredits( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/app/src/typechain/contracts/flavors/index.ts b/packages/app/src/typechain/contracts/flavors/index.ts new file mode 100644 index 00000000..a88f6f1e --- /dev/null +++ b/packages/app/src/typechain/contracts/flavors/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { SimpleHackathon } from "./SimpleHackathon"; diff --git a/packages/app/src/typechain/contracts/index.ts b/packages/app/src/typechain/contracts/index.ts new file mode 100644 index 00000000..49458ba8 --- /dev/null +++ b/packages/app/src/typechain/contracts/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { Jubjub } from "./Jubjub"; +export type { JubjubFactory } from "./JubjubFactory"; +export type { MessageTree } from "./MessageTree"; +export type { StateTree } from "./StateTree"; diff --git a/packages/app/src/typechain/contracts/poseidon/PoseidonT3.ts b/packages/app/src/typechain/contracts/poseidon/PoseidonT3.ts new file mode 100644 index 00000000..70f3affb --- /dev/null +++ b/packages/app/src/typechain/contracts/poseidon/PoseidonT3.ts @@ -0,0 +1,142 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface PoseidonT3Interface extends utils.Interface { + functions: { + "hash2(uint256[2])": FunctionFragment; + "hashLeftRight(uint256,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "hash2" | "hashLeftRight" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "hash2", + values: [[PromiseOrValue, PromiseOrValue]] + ): string; + encodeFunctionData( + functionFragment: "hashLeftRight", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "hash2", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "hashLeftRight", + data: BytesLike + ): Result; + + events: {}; +} + +export interface PoseidonT3 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: PoseidonT3Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + hash2( + arg0: [PromiseOrValue, PromiseOrValue], + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + }; + + hash2( + arg0: [PromiseOrValue, PromiseOrValue], + overrides?: CallOverrides + ): Promise; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + hash2( + arg0: [PromiseOrValue, PromiseOrValue], + overrides?: CallOverrides + ): Promise; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + hash2( + arg0: [PromiseOrValue, PromiseOrValue], + overrides?: CallOverrides + ): Promise; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + hash2( + arg0: [PromiseOrValue, PromiseOrValue], + overrides?: CallOverrides + ): Promise; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/app/src/typechain/contracts/poseidon/PoseidonT4.ts b/packages/app/src/typechain/contracts/poseidon/PoseidonT4.ts new file mode 100644 index 00000000..fbd9cc21 --- /dev/null +++ b/packages/app/src/typechain/contracts/poseidon/PoseidonT4.ts @@ -0,0 +1,127 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface PoseidonT4Interface extends utils.Interface { + functions: { + "hash3(uint256[3])": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "hash3"): FunctionFragment; + + encodeFunctionData( + functionFragment: "hash3", + values: [ + [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ] + ): string; + + decodeFunctionResult(functionFragment: "hash3", data: BytesLike): Result; + + events: {}; +} + +export interface PoseidonT4 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: PoseidonT4Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + hash3( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise<[BigNumber]>; + }; + + hash3( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + + callStatic: { + hash3( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + hash3( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + hash3( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/app/src/typechain/contracts/poseidon/PoseidonT5.ts b/packages/app/src/typechain/contracts/poseidon/PoseidonT5.ts new file mode 100644 index 00000000..3a8dfde9 --- /dev/null +++ b/packages/app/src/typechain/contracts/poseidon/PoseidonT5.ts @@ -0,0 +1,133 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface PoseidonT5Interface extends utils.Interface { + functions: { + "hash4(uint256[4])": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "hash4"): FunctionFragment; + + encodeFunctionData( + functionFragment: "hash4", + values: [ + [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ] + ): string; + + decodeFunctionResult(functionFragment: "hash4", data: BytesLike): Result; + + events: {}; +} + +export interface PoseidonT5 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: PoseidonT5Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + hash4( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise<[BigNumber]>; + }; + + hash4( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + + callStatic: { + hash4( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + hash4( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + hash4( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/app/src/typechain/contracts/poseidon/PoseidonT6.ts b/packages/app/src/typechain/contracts/poseidon/PoseidonT6.ts new file mode 100644 index 00000000..680b7b4f --- /dev/null +++ b/packages/app/src/typechain/contracts/poseidon/PoseidonT6.ts @@ -0,0 +1,139 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface PoseidonT6Interface extends utils.Interface { + functions: { + "hash5(uint256[5])": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "hash5"): FunctionFragment; + + encodeFunctionData( + functionFragment: "hash5", + values: [ + [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ] + ): string; + + decodeFunctionResult(functionFragment: "hash5", data: BytesLike): Result; + + events: {}; +} + +export interface PoseidonT6 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: PoseidonT6Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + hash5( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise<[BigNumber]>; + }; + + hash5( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + + callStatic: { + hash5( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + hash5( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + hash5( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/app/src/typechain/contracts/poseidon/index.ts b/packages/app/src/typechain/contracts/poseidon/index.ts new file mode 100644 index 00000000..61d61d49 --- /dev/null +++ b/packages/app/src/typechain/contracts/poseidon/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { PoseidonT3 } from "./PoseidonT3"; +export type { PoseidonT4 } from "./PoseidonT4"; +export type { PoseidonT5 } from "./PoseidonT5"; +export type { PoseidonT6 } from "./PoseidonT6"; diff --git a/packages/app/src/typechain/factories/contracts/JubjubFactory__factory.ts b/packages/app/src/typechain/factories/contracts/JubjubFactory__factory.ts new file mode 100644 index 00000000..3bc07682 --- /dev/null +++ b/packages/app/src/typechain/factories/contracts/JubjubFactory__factory.ts @@ -0,0 +1,1643 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + PayableOverrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../common"; +import type { + JubjubFactory, + JubjubFactoryInterface, +} from "../../contracts/JubjubFactory"; + +const _abi = [ + { + inputs: [], + stateMutability: "payable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract Jubjub", + name: "jubjub", + type: "address", + }, + ], + name: "JubjubDeployed", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract AccQueue", + name: "MessageTree", + type: "address", + }, + ], + name: "MessageTreeDeployed", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "ProcessVkSet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract AccQueue", + name: "StateTree", + type: "address", + }, + ], + name: "StateTreeDeployed", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "SubsidyVkSet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "TallyVkSet", + type: "event", + }, + { + inputs: [], + name: "currentJubjub", + outputs: [ + { + internalType: "contract Jubjub", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "contract ISignUpGatekeeper", + name: "_signUpGatekeeper", + type: "address", + }, + { + internalType: "contract IInitialVoiceCreditProxy", + name: "_voiceCreditProxy", + type: "address", + }, + ], + name: "deployJubjub", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + ], + name: "deployMessageTree", + outputs: [ + { + internalType: "contract AccQueue", + name: "", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + ], + name: "deployStateTree", + outputs: [ + { + internalType: "contract AccQueue", + name: "", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + ], + name: "determineJubjub", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageBatchSize", + type: "uint256", + }, + ], + name: "genProcessVkSig", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "genSubsidyVkSig", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "genTallyVkSig", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageBatchSize", + type: "uint256", + }, + ], + name: "getProcessVk", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "getProcessVkBySig", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "getSubsidyVk", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "getSubsidyVkBySig", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "getTallyVk", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "getTallyVkBySig", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageBatchSize", + type: "uint256", + }, + ], + name: "hasProcessVk", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "hasSubsidyVk", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "hasTallyVk", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "isProcessVkSet", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "isSubsidyVkSet", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "isTallyVkSet", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "jubjubTemplate", + outputs: [ + { + internalType: "contract Jubjub", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes[]", + name: "data", + type: "bytes[]", + }, + ], + name: "multicall", + outputs: [ + { + internalType: "bytes[]", + name: "results", + type: "bytes[]", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "_subsidyVk", + type: "tuple", + }, + ], + name: "setSubsidyKeys", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageBatchSize", + type: "uint256", + }, + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "_processVk", + type: "tuple", + }, + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "_tallyVk", + type: "tuple", + }, + ], + name: "setVerifyingKeys", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x6080604052600360078190556008556200001933620001c8565b604051620000279062000218565b604051809103906000f08015801562000044573d6000803e3d6000fd5b50600e80546001600160a01b0319166001600160a01b0392909216919091179055600754604051620000769062000226565b908152602001604051809103906000f08015801562000099573d6000803e3d6000fd5b50600f80546001600160a01b0319166001600160a01b0392909216919091179055600854604051620000cb9062000234565b908152602001604051809103906000f080158015620000ee573d6000803e3d6000fd5b50601080546001600160a01b0319166001600160a01b03929092169190911790557f0ad794e7fb50257e0edc93fe4616c69ea691e7a6c653333b6a5b507d798947276009557ec31c90221285dc87ee66daadc19f64f922e45a613f4f5429d74ddc7d66e023600a557f2afdf0e1d10d07d0df3a8481202bf2595108195e34d4ccb88742641c576aa77d600b557f177bbb5acaafc1f1deb73b8ae33f97132089ab84039048a096e202b1f8c42910600c557f25c1a155f21ae70ca3b8bdb27961efdee58bdafff83274c18dd37d0f0a8bfbb5600d5562000242565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6143f3806200309b83390190565b61258f806200748e83390190565b61258f8062009a1d83390190565b612e4980620002526000396000f3fe60806040526004361061013c5760003560e01c806309c4fae2146101415780630bfbd4fe14610177578063141a8764146101a457806317b7f810146101d25780631afe11ef146101a4578063257752d31461021257806326960517146102425780632b0c71581461026257806341951d4f146102755780634f1b0e5f146102975780635b0c3fae146102b7578063715018a6146102d75780638bc1a599146102ec5780638da5cb5b1461030c578063935a2bc514610321578063a72821b714610351578063a761918614610371578063abc61c6b14610391578063ac9650d8146103b1578063b2e39530146103d1578063ba2ff7ab146103f1578063c7c8beec14610411578063ce0cce2a14610431578063db9f755b14610444578063ef5314ec14610464578063f1a510b014610477578063f2fde38b14610497575b600080fd5b34801561014d57600080fd5b5061016161015c36600461264b565b6104b7565b60405161016e9190612664565b60405180910390f35b34801561018357600080fd5b50610197610192366004612678565b6104e7565b60405161016e91906126f5565b3480156101b057600080fd5b506101c46101bf3660046127a8565b610512565b60405190815260200161016e565b3480156101de57600080fd5b506102026101ed36600461264b565b60009081526004602052604090205460ff1690565b604051901515815260200161016e565b34801561021e57600080fd5b5061020261022d36600461264b565b60009081526002602052604090205460ff1690565b34801561024e57600080fd5b5061020261025d3660046127a8565b610539565b61016161027036600461264b565b610562565b34801561028157600080fd5b50610295610290366004612a5a565b610638565b005b3480156102a357600080fd5b506102026102b2366004612678565b610841565b3480156102c357600080fd5b50601154610161906001600160a01b031681565b3480156102e357600080fd5b5061029561086c565b3480156102f857600080fd5b5061019761030736600461264b565b610880565b34801561031857600080fd5b50610161610b0d565b34801561032d57600080fd5b5061020261033c36600461264b565b60009081526006602052604090205460ff1690565b34801561035d57600080fd5b50600e54610161906001600160a01b031681565b34801561037d57600080fd5b5061020261038c3660046127a8565b610b1c565b34801561039d57600080fd5b506102956103ac366004612ab3565b610b45565b6103c46103bf366004612b46565b610f32565b60405161016e9190612bba565b3480156103dd57600080fd5b506101c46103ec366004612678565b610fb7565b3480156103fd57600080fd5b5061019761040c36600461264b565b610fee565b34801561041d57600080fd5b5061019761042c3660046127a8565b61125f565b61016161043f36600461264b565b61127f565b34801561045057600080fd5b5061019761045f36600461264b565b611355565b610295610472366004612c6a565b6115c3565b34801561048357600080fd5b506101976104923660046127a8565b612265565b3480156104a357600080fd5b506102956104b2366004612cac565b612285565b60408051600080825260208201909252600e546104e1916001600160a01b039091169084306122fe565b92915050565b6104ef612564565b60006104fd86868686610fb7565b905061050881610fee565b9695505050505050565b600081610527604085901b608087901b612ce6565b6105319190612ce6565b949350505050565b600080610547858585610512565b60009081526004602052604090205460ff1695945050505050565b6000806105a983600854604051602001610586929190918252602082015260400190565b60408051601f198184030181529190526010546001600160a01b031690856123e0565b9050806001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105e657600080fd5b505af11580156105fa573d6000803e3d6000fd5b50506040516001600160a01b03841692507f88db915e4f874e8dac9899209696366b0028ddfed81f4073132f9afe88efbed79150600090a292915050565b6106406124b5565b600061064d858585610512565b60008181526006602052604090205490915060ff16156106bf5760405162461bcd60e51b815260206004820152602260248201527f566b52656769737472793a207375627369647920766b20616c72656164792073604482015261195d60f21b60648201526084015b60405180910390fd5b600081815260056020908152604090912083518051825582015160018201559083015180516002808401916106f6918391906125b5565b50602082015161070c90600280840191906125b5565b50505060408301518051600683019061072890829060026125b5565b50602082015161073e90600280840191906125b5565b50505060608301518051600a83019061075a90829060026125b5565b50602082015161077090600280840191906125b5565b5090505060005b8360800151518160ff1610156107e55781600e0184608001518260ff16815181106107a4576107a4612cfe565b6020908102919091018101518254600181810185556000948552938390208251600290920201908155910151910155806107dd81612d14565b915050610777565b5060008281526006602052604090819020805460ff19166001179055517f85392fd56cfeb44bd3078be9ad4b18cbcc4ad1256a9fe8922ef360ef1ed26927906108319084815260200190565b60405180910390a1505050505050565b60008061085086868686610fb7565b60009081526002602052604090205460ff169695505050505050565b6108746124b5565b61087e6000612514565b565b610888612564565b60008281526006602052604090205460ff166108f85760405162461bcd60e51b815260206004820152602960248201527f566b52656769737472793a207375627369647920766572696679696e67206b656044820152681e481b9bdd081cd95d60ba1b60648201526084016106b6565b600082815260056020908152604091829020825160e081018452815460a08201908152600183015460c08301528152835160808101808652919492938501929091600280860192849290830191849182845b81548152602001906001019080831161094a57505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610980575050509190925250505081526040805160808101808352602090930192909160068501918391820190839060029082845b8154815260200190600101908083116109c457505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116109fa5750505091909252505050815260408051608081018083526020909301929091600a8501918391820190839060029082845b815481526020019060010190808311610a3e57505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610a74575050505050815250508152602001600e8201805480602002602001604051908101604052809291908181526020016000905b82821015610aff57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610ab9565b505050915250909392505050565b6000546001600160a01b031690565b600080610b2a858585610512565b60009081526006602052604090205460ff1695945050505050565b610b4d6124b5565b6000610b5b88878787610fb7565b60008181526002602052604090205490915060ff1615610bc85760405162461bcd60e51b815260206004820152602260248201527f566b52656769737472793a2070726f6365737320766b20616c72656164792073604482015261195d60f21b60648201526084016106b6565b6000610bd5898988610512565b60008181526004602052604090205490915060ff1615610c375760405162461bcd60e51b815260206004820181905260248201527f566b52656769737472793a2074616c6c7920766b20616c72656164792073657460448201526064016106b6565b600082815260016020818152604090922086518051825583015191810191909155908501518051600280840191610c70918391906125b5565b506020820151610c8690600280840191906125b5565b505050604085015180516006830190610ca290829060026125b5565b506020820151610cb890600280840191906125b5565b50505060608501518051600a830190610cd490829060026125b5565b506020820151610cea90600280840191906125b5565b5090505060005b8560800151518160ff161015610d5f5781600e0186608001518260ff1681518110610d1e57610d1e612cfe565b602090810291909101810151825460018181018555600094855293839020825160029092020190815591015191015580610d5781612d14565b915050610cf1565b506000838152600260208181526040808420805460ff19166001908117909155868552600383529320875180518255820151938101939093558601518051909183810191610daf918391906125b5565b506020820151610dc590600280840191906125b5565b505050604085015180516006830190610de190829060026125b5565b506020820151610df790600280840191906125b5565b50505060608501518051600a830190610e1390829060026125b5565b506020820151610e2990600280840191906125b5565b5090505060005b8560800151518160ff161015610e9e5781600e0186608001518260ff1681518110610e5d57610e5d612cfe565b602090810291909101810151825460018181018555600094855293839020825160029092020190815591015191015580610e9681612d14565b915050610e30565b5060008381526004602052604090819020805460ff19166001179055517f8f43c6d3469daf791f866fe1e4abbf6f0d05622995407c31724c500801558a3590610eea9085815260200190565b60405180910390a16040518481527f865b6bc6650679c23b8967ee4ae722034eb0634534e4963caf7cf662a6f3731c9060200160405180910390a15050505050505050505050565b606081156104e15750604051818152602001600582901b808483378101805b825185018035602082018337600080823584305af4610f74573d6000803e3d6000fd5b508083526020830192503d81523d6000602083013e3d01603f016020600160401b0316818310610fa357610fa8565b610f51565b60408051919052949350505050565b600082604085901b610fd1608088901b60c086901b612ce6565b610fdb9190612ce6565b610fe59190612ce6565b95945050505050565b610ff6612564565b60008281526002602052604090205460ff166110665760405162461bcd60e51b815260206004820152602960248201527f566b52656769737472793a2070726f6365737320766572696679696e67206b656044820152681e481b9bdd081cd95d60ba1b60648201526084016106b6565b600082815260016020818152604092839020835160e081018552815460a082019081529382015460c08201529283528351608081018086526002808401805497840197885295969395948701949293849290918491600389016060860180831161094a5750505091835250506040805180820191829052600284810180548352602094850194929390926003870190850180831161098057505050919092525050508152604080516080810180835260068501805493830193845260209094019391928391839060029060078901606086018083116109c4575050509183525050604080518082019182905260028481018054835260209485019492939092600387019085018083116109fa575050509190925250505081526040805160808101808352600a85018054938301938452602090940193919283918390600290600b890160608601808311610a3e57505050918352505060408051808201918290526002848101805483526020948501949293909260038701908501808311610a74575050505050815250508152602001600e82018054806020026020016040519081016040528092919081815260200160009082821015610aff57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610ab9565b611267612564565b6000611274858585610512565b9050610fe581611355565b6000806112c6836007546040516020016112a3929190918252602082015260400190565b60408051601f19818403018152919052600f546001600160a01b031690856123e0565b9050806001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561130357600080fd5b505af1158015611317573d6000803e3d6000fd5b50506040516001600160a01b03841692507f8dc46664f0d876fe5b8058862a21a8f61d559685d049cc798085a81c7881563c9150600090a292915050565b61135d612564565b60008281526004602052604090205460ff166113cb5760405162461bcd60e51b815260206004820152602760248201527f566b52656769737472793a2074616c6c7920766572696679696e67206b6579206044820152661b9bdd081cd95d60ca1b60648201526084016106b6565b600082815260036020818152604092839020835160e081018552815460a08201908152600183015460c0830152815284516080810180875260028085018054988401988952939794969588019592948593909285929189016060860180831161094a5750505091835250506040805180820191829052600284810180548352602094850194929390926003870190850180831161098057505050919092525050508152604080516080810180835260068501805493830193845260209094019391928391839060029060078901606086018083116109c4575050509183525050604080518082019182905260028481018054835260209485019492939092600387019085018083116109fa575050509190925250505081526040805160808101808352600a85018054938301938452602090940193919283918390600290600b890160608601808311610a3e57505050918352505060408051808201918290526002848101805483526020948501949293909260038701908501808311610a74575050505050815250508152602001600e82018054806020026020016040519081016040528092919081815260200160009082821015610aff57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610ab9565b60408051600080825260208201909252600e546115ec916001600160a01b0390911690866123e0565b60408051600580825260c08201909252919250600091906020820160a0803683370190505090506009600001548160008151811061162c5761162c612cfe565b60209081029190910101526009600101548160018151811061165057611650612cfe565b60209081029190910101526009600201548160028151811061167457611674612cfe565b60209081029190910101526009600301548160038151811061169857611698612cfe565b6020908102919091010152600960040154816004815181106116bc576116bc612cfe565b60200260200101818152505060006116d38661127f565b905060006116e087610562565b60405163f2fde38b60e01b81529091506001600160a01b0383169063f2fde38b9061170f908790600401612664565b600060405180830381600087803b15801561172957600080fd5b505af115801561173d573d6000803e3d6000fd5b505060405163f2fde38b60e01b81526001600160a01b038416925063f2fde38b915061176d908790600401612664565b600060405180830381600087803b15801561178757600080fd5b505af115801561179b573d6000803e3d6000fd5b5050505060006001600160a01b0316826001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180c9190612d34565b6001600160a01b031614156118615760405162461bcd60e51b815260206004820152601b60248201527a1cdd185d19551c9959481bdddb995c881b5d5cdd081899481cd95d602a1b60448201526064016106b6565b60006001600160a01b0316816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ce9190612d34565b6001600160a01b031614156119215760405162461bcd60e51b81526020600482015260196024820152781b5cd9d51c9959481bdddb995c881b5d5cdd081899481cd95d603a1b60448201526064016106b6565b604051638aa5627160e01b81526001600160a01b03851690638aa56271906119609060069060089060039081908a908e908e908c908c90600401612d51565b600060405180830381600087803b15801561197a57600080fd5b505af115801561198e573d6000803e3d6000fd5b505060405163f90100f960e01b81526001600160a01b038716925063f90100f991506119be903090600401612664565b600060405180830381600087803b1580156119d857600080fd5b505af11580156119ec573d6000803e3d6000fd5b505050506000611a0160066008600380610fb7565b600081815260016020818152604080842081518083018352858152830184905293845583830192909255815160808101835260028184018181526003606084015282528351808501909452600484526005848401529181019290925281519394509192909180840191611a76918391906125b5565b506020820151611a8c90600280840191906125b5565b50506040805160808101825260068183018181526007606084015282528251808401909352600883526009602084810191909152820192909252805190925090830190611adc90829060026125b5565b506020820151611af290600280840191906125b5565b505060408051608081018252600a818301818152600b606084015282528251808401909352600c8352600d602084810191909152820192909252805190925090830190611b4290829060026125b5565b506020820151611b5890600280840191906125b5565b5050604080518082018252600e808252600f6020808401918252918601805460018181018355600083815285812096516002938402880190815594519482019490945586518088019097526010875260119487019485528254808201845592845295519102909301928355905191909201559050611bd96006600380610512565b600081815260036020818152604080842081518083018352858152600190840181905294885587850194909455805160808101825260028183018181526060830195909552938152815180830190925260048252600582840152918201528051939450919281860191611c4d9183916125b5565b506020820151611c6390600280840191906125b5565b50506040805160808101825260068183018181526007606084015282528251808401909352600883526009602084810191909152820192909252805190925090850190611cb390829060026125b5565b506020820151611cc990600280840191906125b5565b505060408051608081018252600a818301818152600b606084015282528251808401909352600c8352600d602084810191909152820192909252805190925090850190611d1990829060026125b5565b506020820151611d2f90600280840191906125b5565b5050604080518082018252600e808252600f6020808401918252918801805460018082018355600083815285812096516002938402880190815594519482019490945586518088018852601081526011818701908152845480840186559490955251928202909501918255915190840155835160e081018552885460a082019081529389015460c08201529283528351608081018086526121b196506006956003956008958795869592948e9492860193928286019284929183019184919082845b815481526020019060010190808311611df157505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311611e27575050509190925250505081526040805160808101808352602090930192909160068501918391820190839060029082845b815481526020019060010190808311611e6b57505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311611ea15750505091909252505050815260408051608081018083526020909301929091600a8501918391820190839060029082845b815481526020019060010190808311611ee557505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311611f1b575050505050815250508152602001600e8201805480602002602001604051908101604052809291908181526020016000905b82821015611fa657838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190611f60565b505050915250506040805160e081018252895460a0820190815260018b015460c0830152815281516080810180845291928b926020850192916002808601928492830191849182845b815481526020019060010190808311611fef57505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311612025575050509190925250505081526040805160808101808352602090930192909160068501918391820190839060029082845b81548152602001906001019080831161206957505050918352505060408051808201918290526020909201919060028481019182845b81548152602001906001019080831161209f5750505091909252505050815260408051608081018083526020909301929091600a8501918391820190839060029082845b8154815260200190600101908083116120e357505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311612119575050505050815250508152602001600e8201805480602002602001604051908101604052809291908181526020016000905b828210156121a45783829060005260206000209060020201604051806040016040529081600082015481526020016001820154815250508152602001906001019061215e565b5050505081525050610b45565b60405163f2fde38b60e01b81526001600160a01b0389169063f2fde38b906121dd903390600401612664565b600060405180830381600087803b1580156121f757600080fd5b505af115801561220b573d6000803e3d6000fd5b5050601180546001600160a01b0319166001600160a01b038c169081179091556040519092507f31ab0bcf1a6c761cff6ed7b1181e6ea501637d77c4baaec103dc036b948ec3e99150600090a25050505050505050505050565b61226d612564565b600061227a858585610512565b9050610fe581610880565b61228d6124b5565b6001600160a01b0381166122f25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b6565b6122fb81612514565b50565b600060608403516040850351602086035186518060208901018051600283016c5af43d3d93803e606057fd5bf38b528b600d8c035278593da1005b363d3d373d3d3d3d610000806062363936013d738160481b1760218c0352600080516020612df4833981519152603a8c0352716100003d81600a3d39f336602c57343d527f6062820160781b17605a8c03528060f01b8352606c8101604c8c03206035525060ff6000538760601b60015288601552605560002096506000603552808252505080885250806020880352508060408703525080606086035250949350505050565b600060608303516040840351602085035185518060208801018051600283016c5af43d3d93803e606057fd5bf38a528a600d8b035278593da1005b363d3d373d3d3d3d610000806062363936013d738160481b1760218b0352600080516020612df4833981519152603a8b0352716100003d81600a3d39f336602c57343d527f6062820160781b17605a8b03528060f01b835288606c8201604c8c036000f5975050866124955763301164256000526004601cfd5b90528652601f19860152603f19850152605f199093019290925250919050565b336124be610b0d565b6001600160a01b03161461087e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161258e6125f3565b815260200161259b6125f3565b81526020016125a86125f3565b8152602001606081525090565b82600281019282156125e3579160200282015b828111156125e35782518255916020019190600101906125c8565b506125ef929150612618565b5090565b604051806040016040528061260661262d565b815260200161261361262d565b905290565b5b808211156125ef5760008155600101612619565b60405180604001604052806002906020820280368337509192915050565b60006020828403121561265d57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000806000806080858703121561268e57600080fd5b5050823594602084013594506040840135936060013592509050565b8060005b60028110156126cd5781518452602093840193909101906001016126ae565b50505050565b6126de8282516126aa565b60208101516126f060408401826126aa565b505050565b60208082528251805183830152810151604083015260009061020083018185015161272360608601826126d3565b5060408086015161273760e08701826126d3565b50606086015161274b6101608701826126d3565b5060808601516101e0868101528051928390528301916000906102208701905b8083101561279c5761278882865180518252602090810151910152565b93850193600192909201919083019061276b565b50979650505050505050565b6000806000606084860312156127bd57600080fd5b505081359360208301359350604090920135919050565b6001600160a01b03169052565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612819576128196127e1565b60405290565b60405160a081016001600160401b0381118282101715612819576128196127e1565b604051601f8201601f191681016001600160401b0381118282101715612869576128696127e1565b604052919050565b60006040828403121561288357600080fd5b61288b6127f7565b9050813581526020820135602082015292915050565b600082601f8301126128b257600080fd5b604080519081016001600160401b03811182821017156128d4576128d46127e1565b80604052508060408401858111156128eb57600080fd5b845b818110156129055780358352602092830192016128ed565b509195945050505050565b60006080828403121561292257600080fd5b61292a6127f7565b905061293683836128a1565b815261294583604084016128a1565b602082015292915050565b60006101e0828403121561296357600080fd5b61296b61281f565b90506129778383612871565b8152604061298784828501612910565b6020818185015261299b8660c08701612910565b838501526129ad866101408701612910565b60608501526101c085013591506001600160401b03808311156129cf57600080fd5b828601925086601f8401126129e357600080fd5b8235818111156129f5576129f56127e1565b612a03838260051b01612841565b818152838101925060069190911b840183019088821115612a2357600080fd5b938301935b81851015612a4957612a3a8986612871565b83529385019391830191612a28565b608087015250939695505050505050565b60008060008060808587031215612a7057600080fd5b84359350602085013592506040850135915060608501356001600160401b03811115612a9b57600080fd5b612aa787828801612950565b91505092959194509250565b600080600080600080600060e0888a031215612ace57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a08801356001600160401b0380821115612b0857600080fd5b612b148b838c01612950565b935060c08a0135915080821115612b2a57600080fd5b50612b378a828b01612950565b91505092959891949750929550565b60008060208385031215612b5957600080fd5b82356001600160401b0380821115612b7057600080fd5b818501915085601f830112612b8457600080fd5b813581811115612b9357600080fd5b8660208260051b8501011115612ba857600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b83811015612c4757888603603f1901855282518051808852835b81811015612c17578281018a01518982018b01528901612bfc565b81811115612c2757848a838b0101525b50601f01601f191696909601870195509386019391860191600101612be2565b509398975050505050505050565b6001600160a01b03811681146122fb57600080fd5b600080600060608486031215612c7f57600080fd5b833592506020840135612c9181612c55565b91506040840135612ca181612c55565b809150509250925092565b600060208284031215612cbe57600080fd5b8135612cc981612c55565b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115612cf957612cf9612cd0565b500190565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff811415612d2b57612d2b612cd0565b60010192915050565b600060208284031215612d4657600080fd5b8151612cc981612c55565b60006101208083018c845260208c818601528b60408601528a6060860152826080860152819250895180835261014086019350818b01925060005b81811015612da857835185529382019392820192600101612d8c565b5050505080915050612dbd60a08301876127d4565b612dca60c08301866127d4565b612dd760e08301856127d4565b612de56101008301846127d4565b9a995050505050505050505056fe9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dffa264697066735822122099bace46eae22507e4ff52eb588f53aeca13b24c3d3481a939024633f1fea3b464736f6c634300080a003360806040523480156200001157600080fd5b506200001c62000134565b7f0ef71f46e11a513c599eed9dd03576c33439bcfb1cee155316f90541e41649ba14620000a15760405162461bcd60e51b815260206004820152602860248201527f4d4143493a20424c414e4b5f53544154455f4c4541465f4841534820697320696044820152671b98dbdc9c9958dd60c21b60648201526084015b60405180910390fd5b620000ab62000194565b7f1dee9f497aa52e2ad4b049b789afb5056fbee5a0e3f1083a92d93cb3a5a70fb4146200012e5760405162461bcd60e51b815260206004820152602a60248201527f4d4143493a20424c414e4b5f4d4553534147455f4c4541465f48415348206973604482015269081a5b98dbdc9c9958dd60b21b606482015260840162000098565b620005e5565b604080518082018252600080516020620043b38339815191528152600080516020620043d383398151915260208083019190915282516060810184528281526000918101829052928301819052916200018d816200025a565b9250505090565b60408051610140810182527f12817f4161f2f5ded33f26c55735a77e80e4f8975483c8c2704745128417f711815260006020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905260e083018290526101008301829052610120830182905283518085018552600080516020620043b38339815191528152600080516020620043d38339815191528183015284518086019095526001855290840183905290926200025281836200030f565b935050505090565b60006200026662000532565b82515181528251602090810151818301528301518160026020020152604083810151606083015251631efdc45960e11b815273__$56e03346d0918fb20a2db08690fd2c2075$__90633dfb88b290620002c49084906004016200056e565b602060405180830381865af4158015620002e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003089190620005a1565b9392505050565b60006200031b62000550565b6020848101805151835280518201519183019190915280516040908101519083015280516060908101519083015251608090810151908201526200035e62000550565b6020858101805160a0908101518452815160c0015184840152815160e0015160408086019190915282516101000151606086015291516101200151608085015281519081018252875181529051639cfced9760e01b815273__$e63b1c9f9b66f613a0dd27ec595fdb417f$__92639cfced9792919082019084908490620003ea908990600401620005bb565b602060405180830381865af415801562000408573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042e9190620005a1565b815260200173__$e63b1c9f9b66f613a0dd27ec595fdb417f$__639cfced97866040518263ffffffff1660e01b81526004016200046c9190620005bb565b602060405180830381865af41580156200048a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b09190620005a1565b81526020018760000151815260200187602001518152506040518263ffffffff1660e01b8152600401620004e59190620005bb565b602060405180830381865af415801562000503573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005299190620005a1565b95945050505050565b60405180608001604052806004906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b60808101818360005b60048110156200059857815183526020928301929091019060010162000577565b50505092915050565b600060208284031215620005b457600080fd5b5051919050565b60a08101818360005b600581101562000598578151835260209283019290910190600101620005c4565b613dbe80620005f56000396000f3fe6080604052600436106102435760003560e01c8062329f2f14610248578063030ffa6e1461025f578063079410db146102875780630f4cf692146102bf5780630f78c3f2146102d5578063122db153146102eb578063133511b91461030157806313fb8932146103165780631c2a50a214610336578063203bfef51461034c578063213e7ba81461036257806331e766a5146103985780633364120a146103c8578063394b78a2146103e85780633bee85a81461040857806342bf25ab1461041e5780634c8104da146104335780635289052c14610453578063603baff814610473578063652c76e41461049357806370ee8e42146104a9578063715018a6146104be5780637296aaea146104d3578063793dbe32146104f35780637a38d18f146105085780637d0a81c81461051e57806383ca5a5b1461053e578063842ff2bd1461055457806388e8ee721461056a5780638aa0ba92146105805780638aa56271146105965780638ae8a05f146105b65780638da5cb5b146105d65780639bc609f3146105eb5780639c971729146106015780639eb1cab3146106215780639ed3c90c1461064e578063a78dac0d14610678578063ac2f007414610698578063ac9650d8146106ce578063c17268d9146106ee578063ca64d4ee14610704578063d5f7b1b614610724578063e5e7569314610744578063e71f900c14610764578063ec9289a814610784578063f2fde38b1461079a578063f74556bd146107ba578063f90100f9146107d0578063fcc2c3aa146107f0578063fed8fd441461080a575b600080fd5b34801561025457600080fd5b5061025d610820565b005b34801561026b57600080fd5b50610274610a4c565b6040519081526020015b60405180910390f35b34801561029357600080fd5b50607e546102a7906001600160a01b031681565b6040516001600160a01b03909116815260200161027e565b3480156102cb57600080fd5b5061027460725481565b3480156102e157600080fd5b5061027460835481565b3480156102f757600080fd5b5061027460715481565b34801561030d57600080fd5b5061025d610aa8565b34801561032257600080fd5b506080546102a7906001600160a01b031681565b34801561034257600080fd5b5061027460665481565b34801561035857600080fd5b5061027460775481565b34801561036e57600080fd5b506102a761037d366004612ee0565b607b602052600090815260409020546001600160a01b031681565b3480156103a457600080fd5b506081546082546103b3919082565b6040805192835260208301919091520161027e565b3480156103d457600080fd5b5061025d6103e3366004613028565b610cd3565b3480156103f457600080fd5b5061025d61040336600461312f565b61101d565b34801561041457600080fd5b5061027460765481565b34801561042a57600080fd5b50610274611236565b34801561043f57600080fd5b5061027461044e36600461312f565b6112e1565b34801561045f57600080fd5b5061025d61046e366004612ee0565b6114f3565b34801561047f57600080fd5b50607c546102a7906001600160a01b031681565b34801561049f57600080fd5b5061027460655481565b3480156104b557600080fd5b5061025d6115ff565b3480156104ca57600080fd5b5061025d611666565b3480156104df57600080fd5b5061025d6104ee366004613166565b61167a565b3480156104ff57600080fd5b506102746116fd565b34801561051457600080fd5b5061027460745481565b34801561052a57600080fd5b5061027461053936600461322e565b6117c0565b34801561054a57600080fd5b5061027460845481565b34801561056057600080fd5b5061027460705481565b34801561057657600080fd5b5061027460695481565b34801561058c57600080fd5b5061027460735481565b3480156105a257600080fd5b5061025d6105b13660046132d7565b61186e565b3480156105c257600080fd5b50607d546102a7906001600160a01b031681565b3480156105e257600080fd5b506102a761201e565b3480156105f757600080fd5b5061027460675481565b34801561060d57600080fd5b5061025d61061c366004612ee0565b61202d565b34801561062d57600080fd5b5061027461063c366004612ee0565b60796020526000908152604090205481565b34801561065a57600080fd5b50606f546106689060ff1681565b604051901515815260200161027e565b34801561068457600080fd5b506102746106933660046133d8565b6121e9565b3480156106a457600080fd5b506102a76106b3366004612ee0565b607a602052600090815260409020546001600160a01b031681565b6106e16106dc3660046133fa565b61227d565b60405161027e91906134bb565b3480156106fa57600080fd5b5061027460785481565b34801561071057600080fd5b50607f546102a7906001600160a01b031681565b34801561073057600080fd5b5061025d61073f366004612ee0565b612302565b34801561075057600080fd5b5061025d61075f36600461351d565b6124c0565b34801561077057600080fd5b5061025d61077f3660046135b2565b612898565b34801561079057600080fd5b5061027460755481565b3480156107a657600080fd5b5061025d6107b53660046135e8565b612cd8565b3480156107c657600080fd5b5061027460855481565b3480156107dc57600080fd5b5061025d6107eb3660046135e8565b612d51565b3480156107fc57600080fd5b506086546106689060ff1681565b34801561081657600080fd5b5061027460685481565b610828612d7b565b607d60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa15801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f9190613605565b156108c55760405162461bcd60e51b81526004016108bc90613627565b60405180910390fd5b607d60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190613605565b15156001146109995760405162461bcd60e51b8152602060048201526024808201527f4552524f525f4d4553534147455f41515f53554254524545535f4e4545445f4d6044820152634552474560e01b60648201526084016108bc565b607d546067546040516324a47aeb60e01b81526001600160a01b03909216916324a47aeb916109ce9160040190815260200190565b6020604051808303816000875af11580156109ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a11919061365e565b60768190556040519081527fc5624680ab5d50c84507f9e0dc2032163de2bda906ab8a661a53dd4d43bd5dc7906020015b60405180910390a1565b604080518082018252600080516020613ce98339815191528152600080516020613d498339815191526020808301919091528251606081018452828152600091810182905292830181905291610aa1816117c0565b9250505090565b610ab0612d7b565b607c60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b279190613605565b158015610b37575060865460ff16155b610b535760405162461bcd60e51b81526004016108bc90613677565b607c60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca9190613605565b1515600114610c265760405162461bcd60e51b815260206004820152602260248201527f4552524f525f53544154455f41515f53554254524545535f4e4545445f4d4552604482015261474560f01b60648201526084016108bc565b607c546065546040516324a47aeb60e01b81526001600160a01b03909216916324a47aeb91610c5b9160040190815260200190565b6020604051808303816000875af1158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9e919061365e565b60758190556040519081527f58deecc020170648ca539f41d6d967a2d071ce17a8296866ba3b3403977fd8ec90602001610a42565b606f5460ff16610cf55760405162461bcd60e51b81526004016108bc906136ae565b606554610d039060056137d7565b60715410610d635760405162461bcd60e51b815260206004820152602760248201527f4d4143493a206d6178696d756d206e756d626572206f66207369676e757073206044820152661c995858da195960ca1b60648201526084016108bc565b8251600080516020613d29833981519152118015610d925750600080516020613d298339815191528360200151105b610e045760405162461bcd60e51b815260206004820152603f60248201527f4d4143493a205f7075624b65792076616c7565732073686f756c64206265206c60448201527f657373207468616e2074686520736e61726b207363616c6172206669656c640060648201526084016108bc565b60865460ff16610e515760405162461bcd60e51b8152602060048201526018602482015277135050d24e881cda59db9d5c1cc8185c994818db1bdcd95960421b60448201526064016108bc565b607180546001019055607e5460405163125c7dfb60e11b81526001600160a01b03909116906324b8fbf690610e8c90339086906004016137e3565b600060405180830381600087803b158015610ea657600080fd5b505af1158015610eba573d6000803e3d6000fd5b5050607f5460405163b36543a960e01b8152600093506001600160a01b03909116915063b36543a990610ef390339086906004016137e3565b602060405180830381865afa158015610f10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f34919061365e565b905060004290506000610f606040518060600160405280888152602001858152602001848152506117c0565b607c54604051631ffc735d60e01b8152600481018390529192506000916001600160a01b0390911690631ffc735d906024016020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd5919061365e565b90507f99f34e3b6821c0bd1f5732936411fe3fd65fb78cbcd657c61bfb8deb08c0591f8188868660405161100c9493929190613816565b60405180910390a150505050505050565b608454421061106b5760405162461bcd60e51b815260206004820152601a60248201527911549493d497d593d5125391d7d411549253d117d41054d4d15160321b60448201526064016108bc565b6067546110799060056137d7565b60725411156110c75760405162461bcd60e51b815260206004820152601a60248201527911549493d497d3505617d35154d4d051d154d7d4915050d2115160321b60448201526064016108bc565b8051600080516020613d298339815191521180156110f65750600080516020613d298339815191528160200151105b6111395760405162461bcd60e51b81526020600482015260146024820152734552524f525f494e56414c49445f5055424b455960601b60448201526064016108bc565b426084541161117f5760405162461bcd60e51b815260206004820152601260248201527111549493d497d593d5125391d7d15391115160721b60448201526064016108bc565b6072805460019081019091558252600061119983836112e1565b607d54604051631ffc735d60e01b8152600481018390529192506001600160a01b031690631ffc735d906024016020604051808303816000875af11580156111e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611209919061365e565b50600080516020613d69833981519152838360405161122992919061383c565b60405180910390a1505050565b600080606854600561124891906137d7565b905060008160725461125a9190613898565b90506074546000141561128f578061128557818260725461127b91906138ac565b610aa191906138c0565b6072549250505090565b806112af57816074546112a291906138c0565b607254610aa191906138df565b8160016074546112bf91906138df565b6112c991906138c0565b816072546112d791906138df565b610aa191906138df565b60006112eb612e86565b60208481018051518352805182015191830191909152805160409081015190830152805160609081015190830152516080908101519082015261132c612e86565b6020858101805160a0908101518452815160c0015184840152815160e0015160408086019190915282516101000151606086015291516101200151608085015281519081018252875181529051639cfced9760e01b815273__$e63b1c9f9b66f613a0dd27ec595fdb417f$__92639cfced97929190820190849084906113b690899060040161390c565b602060405180830381865af41580156113d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f7919061365e565b815260200173__$e63b1c9f9b66f613a0dd27ec595fdb417f$__639cfced97866040518263ffffffff1660e01b8152600401611433919061390c565b602060405180830381865af4158015611450573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611474919061365e565b81526020018760000151815260200187602001518152506040518263ffffffff1660e01b81526004016114a7919061390c565b602060405180830381865af41580156114c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e8919061365e565b925050505b92915050565b6114fb612d7b565b60865460ff16156115435760405162461bcd60e51b815260206004820152601260248201527114d251d3955414d7d393d517d0d313d4d15160721b60448201526064016108bc565b606a6115506001836138df565b60058110611560576115606138f6565b0154607781905560408051606081018252607554815260208101929092526000828201525163bea140b360e01b815273__$8f0718d15a58b4353249f9bf6422c5f00e$__9163bea140b3916115b8919060040161393d565b602060405180830381865af41580156115d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f9919061365e565b60785550565b611607612d7b565b60865460ff16156116575760405162461bcd60e51b815260206004820152601a60248201527922a92927a92fa9a4a3a72aa829afa0a62922a0a22cafa7a822a760311b60448201526064016108bc565b6086805460ff19166001179055565b61166e612d7b565b6116786000612dda565b565b8260005b818160ff1610156116f5576116e386868360ff168181106116a1576116a16138f6565b905061016002018036038101906116b89190613965565b85858460ff168181106116cd576116cd6138f6565b9050604002018036038101906104039190613982565b806116ed8161399e565b91505061167e565b505050505050565b600080604051806101400160405280600080516020613d09833981519152815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250905060006040518060400160405280600080516020613ce98339815191528152602001600080516020613d49833981519152815250905060006040518060400160405280600181526020018481525090506117b881836112e1565b935050505090565b60006117ca612ea4565b82515181528251602090810151818301528301518160026020020152604083810151606083015251631efdc45960e11b815273__$56e03346d0918fb20a2db08690fd2c2075$__90633dfb88b2906118269084906004016139be565b602060405180830381865af4158015611843573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611867919061365e565b9392505050565b600054610100900460ff161580801561188e5750600054600160ff909116105b806118a85750303b1580156118a8575060005460ff166001145b61190b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108bc565b6000805460ff19166001179055801561192e576000805461ff0019166101001790555b611936612e2c565b600061194061201e565b6001600160a01b031614156119925760405162461bcd60e51b8152602060048201526018602482015277129d589a9d58881bdddb995c881b5d5cdd081899481cd95d60421b60448201526064016108bc565b606f5460ff16156119e15760405162461bcd60e51b8152602060048201526019602482015278135050d24e88185b1c9958591e481a5b9a5d1a585b1a5cd959603a1b60448201526064016108bc565b426083556086805460ff199081166001908117909255606f80549091169091179055607e80546001600160a01b038088166001600160a01b031992831617909255607f8054878416908316179055607c80548684169083168117909155607d80549386169390921692909217905560658b9055606689905560678a9055606888905560408051636ed44d3760e11b815290516000929163dda89a6e9160048281019260209291908290030181865afa158015611aa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac5919061365e565b1415611b5b57607c54604051631ffc735d60e01b81527f0ef71f46e11a513c599eed9dd03576c33439bcfb1cee155316f90541e41649ba60048201526001600160a01b0390911690631ffc735d906024016020604051808303816000875af1158015611b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b59919061365e565b505b607d60009054906101000a90046001600160a01b03166001600160a01b031663dda89a6e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd2919061365e565b15611c1f5760405162461bcd60e51b815260206004820152601d60248201527f4d4143493a206d657373616765206171206973206e6f7420656d70747900000060448201526064016108bc565b607d54604051631ffc735d60e01b81527f1dee9f497aa52e2ad4b049b789afb5056fbee5a0e3f1083a92d93cb3a5a70fb460048201526001600160a01b0390911690631ffc735d906024016020604051808303816000875af1158015611c89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cad919061365e565b5085600081518110611cc157611cc16138f6565b6020026020010151606a600060058110611cdd57611cdd6138f6565b0155855186906001908110611cf457611cf46138f6565b6020026020010151606a600160058110611d1057611d106138f6565b0155855186906002908110611d2757611d276138f6565b6020026020010151606a600260058110611d4357611d436138f6565b0155855186906003908110611d5a57611d5a6138f6565b6020026020010151606a600360058110611d7657611d766138f6565b0155855186906004908110611d8d57611d8d6138f6565b6020026020010151606a600460058110611da957611da96138f6565b0155607c546040805163442c38c760e11b815290516001600160a01b0390921691638858718e916004808201926020929091908290030181865afa158015611df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e19919061365e565b60665414611e395760405162461bcd60e51b81526004016108bc906139e6565b607d60009054906101000a90046001600160a01b03166001600160a01b0316638858718e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb0919061365e565b60685414611ed05760405162461bcd60e51b81526004016108bc906139e6565b607c60009054906101000a90046001600160a01b03166001600160a01b031663a27154ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f47919061365e565b60655410611f895760405162461bcd60e51b815260206004820152600f60248201526e0929c869ea4a48a86a840888aa0a89608b1b60448201526064016108bc565b604080516001600160a01b038088168252861660208201527f45acd56f401dc3db1d520e5e214f090b4ab3e3fbf42fd24596cb511edaad876a910160405180910390a18015612012576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6033546001600160a01b031690565b612035612d7b565b607d60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa158015612088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ac9190613605565b1580156120bc575060865460ff16155b6120d85760405162461bcd60e51b81526004016108bc90613627565b607d60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214f9190613605565b6121b257607d5460405163c15da65b60e01b8152600481018390526001600160a01b039091169063c15da65b90602401600060405180830381600087803b15801561219957600080fd5b505af11580156121ad573d6000803e3d6000fd5b505050505b6040518181527f1245b881cb30fdad22b2f9fde2d5c2a3605bbdf272d5e8a2235d8c9e81aba2ce906020015b60405180910390a150565b60006121f3612ec2565b838152602081018390526040516362a361bb60e01b815273__$c6850fb4e0ee9ead61bcd830cbea02ad6d$__906362a361bb90612234908490600401613a12565b602060405180830381865af4158015612251573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612275919061365e565b949350505050565b606081156114ed5750604051818152602001600582901b808483378101805b825185018035602082018337600080823584305af46122bf573d6000803e3d6000fd5b508083526020830192503d81523d6000602083013e3d01603f016020600160401b03168183106122ee576122f3565b61229c565b60408051919052949350505050565b61230a612d7b565b607c60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa15801561235d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123819190613605565b158015612391575060865460ff16155b6123ad5760405162461bcd60e51b81526004016108bc90613677565b607c60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612400573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124249190613605565b61248757607c5460405163c15da65b60e01b8152600481018390526001600160a01b039091169063c15da65b90602401600060405180830381600087803b15801561246e57600080fd5b505af1158015612482573d6000803e3d6000fd5b505050505b60705460408051918252602082018390527f20c94e460dce562bb3cf493d654a31e5adbf7abcce31a6b8da835c1211ed0dec91016121de565b6124c8612d7b565b607c60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa15801561251b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253f9190613605565b6125875760405162461bcd60e51b815260206004820152601960248201527811549493d497d4d510551157d05457d393d517d3515491d151603a1b60448201526064016108bc565b607d60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fe9190613605565b6126565760405162461bcd60e51b815260206004820152602360248201527f4552524f525f4d4553534147455f41515f4e4f545f414c52454144595f4d455260448201526211d15160ea1b60648201526084016108bc565b6000612660611236565b116126a65760405162461bcd60e51b81526020600482015260166024820152754552524f525f4e4f5f4d4f52455f4d4553534147455360501b60448201526064016108bc565b607d54606754604051631b9b8aa760e01b815260048101919091526000916001600160a01b031690631b9b8aa790602401602060405180830381865afa1580156126f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612718919061365e565b9050806127655760405162461bcd60e51b815260206004820152601b60248201527a11549493d497d35154d4d051d157d05457d393d517d3515491d151602a1b60448201526064016108bc565b6000606854600561277691906137d7565b6080546065546067546069546040516305fdea7f60e11b8152600481019390935260248301919091526044820152606481018390529192506000916001600160a01b0390911690630bfbd4fe90608401600060405180830381865afa1580156127e3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261280b9190810190613b19565b905060016000612819611236565b9050816128745760405162461bcd60e51b815260206004820152602360248201527f4552524f525f494e56414c49445f50524f434553535f4d4553534147455f505260448201526227a7a360e91b60648201526084016108bc565b60788790556074805490600061288983613c31565b91905055505050505050505050565b606f5460ff166128ba5760405162461bcd60e51b81526004016108bc906136ae565b607c60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa15801561290d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129319190613605565b1561294e5760405162461bcd60e51b81526004016108bc90613677565b607c60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c59190613605565b15612a125760405162461bcd60e51b815260206004820152601e60248201527f4552524f525f53544154455f41515f53554254524545535f4d4552474544000060448201526064016108bc565b607d60009054906101000a90046001600160a01b03166001600160a01b031663dda89a6e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a89919061365e565b600114612ad55760405162461bcd60e51b815260206004820152601a6024820152794552524f525f4d4553534147455f41515f4e4f545f454d50545960301b60448201526064016108bc565b6086805460ff19169055612ae8836114f3565b6000604051806101400160405280600080516020613d09833981519152815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250905060006040518060400160405280600080516020613ce98339815191528152602001600080516020613d4983398151915281525090506000604051806040016040528060016002811115612b9e57612b9e613c4c565b815260200184905260708054600190810190915560728054909101905560858690559050612bcc8542613c62565b60845560698690558351608181905560208501516082819055604051635bb9399560e01b815273__$c6850fb4e0ee9ead61bcd830cbea02ad6d$__92635bb9399592612c2392600401918252602082015260400190565b602060405180830381865af4158015612c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c64919061365e565b60735560006074556070546040517f76b880f3c8580b5bb05765c3b2160a2860692566e7f8cce8c58d23e77f3130c291612ca19130908890613c7a565b60405180910390a1600080516020613d698339815191528183604051612cc892919061383c565b60405180910390a1505050505050565b612ce0612d7b565b6001600160a01b038116612d455760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108bc565b612d4e81612dda565b50565b612d59612d7b565b608080546001600160a01b0319166001600160a01b0392909216919091179055565b33612d8461201e565b6001600160a01b0316146116785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108bc565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16612e535760405162461bcd60e51b81526004016108bc90613c9d565b611678600054610100900460ff16612e7d5760405162461bcd60e51b81526004016108bc90613c9d565b61167833612dda565b6040518060a001604052806005906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b600060208284031215612ef257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f3157612f31612ef9565b60405290565b60405160a081016001600160401b0381118282101715612f3157612f31612ef9565b604051601f8201601f191681016001600160401b0381118282101715612f8157612f81612ef9565b604052919050565b600060408284031215612f9b57600080fd5b612fa3612f0f565b9050813581526020820135602082015292915050565b600082601f830112612fca57600080fd5b81356001600160401b03811115612fe357612fe3612ef9565b612ff6601f8201601f1916602001612f59565b81815284602083860101111561300b57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006080848603121561303d57600080fd5b6130478585612f89565b925060408401356001600160401b038082111561306357600080fd5b61306f87838801612fb9565b9350606086013591508082111561308557600080fd5b5061309286828701612fb9565b9150509250925092565b60006101608083850312156130b057600080fd5b6130b8612f0f565b915082358252602084603f8501126130cf57600080fd5b60405161014081016001600160401b03811182821017156130f2576130f2612ef9565b60405291840191808684111561310757600080fd5b8286015b84811015613122578035825290830190830161310b565b5050908301525092915050565b6000806101a0838503121561314357600080fd5b61314d848461309c565b915061315d846101608501612f89565b90509250929050565b6000806000806040858703121561317c57600080fd5b84356001600160401b038082111561319357600080fd5b818701915087601f8301126131a757600080fd5b8135818111156131b657600080fd5b886020610160830285010111156131cc57600080fd5b6020928301965094509086013590808211156131e757600080fd5b818701915087601f8301126131fb57600080fd5b81358181111561320a57600080fd5b8860208260061b850101111561321f57600080fd5b95989497505060200194505050565b60006080828403121561324057600080fd5b604051606081016001600160401b038111828210171561326257613262612ef9565b60405261326f8484612f89565b815260408301356020820152606083013560408201528091505092915050565b60006001600160401b038211156132a8576132a8612ef9565b5060051b60200190565b6001600160a01b0381168114612d4e57600080fd5b80356132d2816132b2565b919050565b60008060008060008060008060006101208a8c0312156132f657600080fd5b893598506020808b0135985060408b0135975060608b0135965060808b01356001600160401b0381111561332957600080fd5b8b01601f81018d1361333a57600080fd5b803561334d6133488261328f565b612f59565b81815260059190911b8201830190838101908f83111561336c57600080fd5b928401925b8284101561338a57833582529284019290840190613371565b809950505050505061339e60a08b016132c7565b93506133ac60c08b016132c7565b92506133ba60e08b016132c7565b91506133c96101008b016132c7565b90509295985092959850929598565b600080604083850312156133eb57600080fd5b50508035926020909101359150565b6000806020838503121561340d57600080fd5b82356001600160401b038082111561342457600080fd5b818501915085601f83011261343857600080fd5b81358181111561344757600080fd5b8660208260051b850101111561345c57600080fd5b60209290920196919550909350505050565b6000815180845260005b8181101561349457602081850181015186830182015201613478565b818111156134a6576000602083870101525b50601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561351057603f198886030184526134fe85835161346e565b945092850192908501906001016134e2565b5092979650505050505050565b600080600061014080858703121561353457600080fd5b84359350602080860135935086605f87011261354f57600080fd5b60405161010081016001600160401b038111828210171561357257613572612ef9565b60405291860191808884111561358757600080fd5b604088015b848110156135a3578035825290830190830161358c565b50508093505050509250925092565b6000806000608084860312156135c757600080fd5b83359250602084013591506135df8560408601612f89565b90509250925092565b6000602082840312156135fa57600080fd5b8135611867816132b2565b60006020828403121561361757600080fd5b8151801515811461186757600080fd5b6020808252601f908201527f4552524f525f4d4553534147455f41515f414c52454144595f4d455247454400604082015260600190565b60006020828403121561367057600080fd5b5051919050565b6020808252601d908201527f4552524f525f53544154455f41515f414c52454144595f4d4552474544000000604082015260600190565b602080825260159082015274135050d24e881b9bdd081a5b9a5d1a585b1a5cd959605a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561372e578160001904821115613714576137146136dd565b8085161561372157918102915b93841c93908002906136f8565b509250929050565b600082613745575060016114ed565b81613752575060006114ed565b816001811461376857600281146137725761378e565b60019150506114ed565b60ff841115613783576137836136dd565b50506001821b6114ed565b5060208310610133831016604e8410600b84101617156137b1575081810a6114ed565b6137bb83836136f3565b80600019048211156137cf576137cf6136dd565b029392505050565b60006118678383613736565b6001600160a01b03831681526040602082018190526000906122759083018461346e565b80518252602090810151910152565b84815260a0810161382a6020830186613807565b60608201939093526080015292915050565b825181526020808401516101a08301919081840160005b600a81101561387057825182529183019190830190600101613853565b50505050611867610160830184613807565b634e487b7160e01b600052601260045260246000fd5b6000826138a7576138a7613882565b500690565b6000826138bb576138bb613882565b500490565b60008160001904831182151516156138da576138da6136dd565b500290565b6000828210156138f1576138f16136dd565b500390565b634e487b7160e01b600052603260045260246000fd5b60a08101818360005b6005811015613934578151835260209283019290910190600101613915565b50505092915050565b60608101818360005b6003811015613934578151835260209283019290910190600101613946565b6000610160828403121561397857600080fd5b611867838361309c565b60006040828403121561399457600080fd5b6118678383612f89565b600060ff821660ff8114156139b5576139b56136dd565b60010192915050565b60808101818360005b60048110156139345781518352602092830192909101906001016139c7565b6020808252601290820152710929c869ea4a48a86a840a6aa84888aa0a8960731b604082015260600190565b60408101818360005b6002811015613934578151835260209283019290910190600101613a1b565b600060408284031215613a4c57600080fd5b613a54612f0f565b9050815181526020820151602082015292915050565b600082601f830112613a7b57600080fd5b604080519081016001600160401b0381118282101715613a9d57613a9d612ef9565b8060405250806040840185811115613ab457600080fd5b845b81811015613ace578051835260209283019201613ab6565b509195945050505050565b600060808284031215613aeb57600080fd5b613af3612f0f565b9050613aff8383613a6a565b8152613b0e8360408401613a6a565b602082015292915050565b60006020808385031215613b2c57600080fd5b82516001600160401b0380821115613b4357600080fd5b908401906101e08287031215613b5857600080fd5b613b60612f37565b613b6a8784613a3a565b81526040613b7a88828601613ad9565b85830152613b8b8860c08601613ad9565b81830152613b9d886101408601613ad9565b60608301526101c084015183811115613bb557600080fd5b80850194505087601f850112613bca57600080fd5b83519250613bda6133488461328f565b83815260069390931b84018501928581019089851115613bf957600080fd5b948601945b84861015613c1f57613c108a87613a3a565b82529482019490860190613bfe565b60808401525090979650505050505050565b6000600019821415613c4557613c456136dd565b5060010190565b634e487b7160e01b600052602160045260246000fd5b60008219821115613c7557613c756136dd565b500190565b8381526001600160a01b0383166020820152608081016122756040830184613807565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe171e826ad4a870fd925e0bf0e87884e70e080879c2205ef10114f28a3b6f6dd712817f4161f2f5ded33f26c55735a77e80e4f8975483c8c2704745128417f71130644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000012bd407d897fbbca9f88adfd2d15252e69de8c1564eb4d3d27162e259172f1a1de2067f06dd7b8159b21a5490f8663f6bb031d9b35ed6d298b5489674cb9cda4ba2646970667358221220cc66c04d1d0fef90174f5ddc9fa31265ed24c1ec1a50f469ebafaed591bffb2764736f6c634300080a0033171e826ad4a870fd925e0bf0e87884e70e080879c2205ef10114f28a3b6f6dd72bd407d897fbbca9f88adfd2d15252e69de8c1564eb4d3d27162e259172f1a1d60e06040523480156200001157600080fd5b506040516200258f3803806200258f833981016040819052620000349162000673565b80806005600082116200009e5760405162461bcd60e51b815260206004820152602760248201527f41636351756575653a205f7375624465707468206d757374206265206d6f72656044820152660207468616e20360cc1b60648201526084015b60405180910390fd5b6020821115620001085760405162461bcd60e51b815260206004820152602e60248201527f41636351756575653a206f6e6c7920737570706f72747320757020746f204d4160448201526d585f4445505448206c6576656c7360901b606482015260840162000095565b8060021480620001185750806005145b6200017c5760405162461bcd60e51b815260206004820152602d60248201527f41636351756575653a206f6e6c7920737570706f727473205f686173684c656e60448201526c677468206f662032206f72203560981b606482015260840162000095565b6065805460ff191660028314179055608082905260a0819052620001a18282620007a2565b60c05250507f0ef71f46e11a513c599eed9dd03576c33439bcfb1cee155316f90541e41649ba6101d75550507f0404a2ed0a1df2006441895d9a65ffffdd4968cb5f555fe72a6da7aaec83e1a06101d8557f0b1c3d09dd575749a374a9dc1ee32af8c2312e24ad33a3e40fce8120b0f25fe36101d9557f1f60ed72fc1915366d2e52cfc7ddc0ff854c7aee9abbc07d1ca88ada842354dc6101da557f2ca1efc603fc121baf791319195ee3ab7fa075cee664d008f9ab2870f50283606101db557f2a0381fc4fb108733dfc58c355f2de753bcde61bd988eaa7d33fc967262be5ad6101dc557f12c6c7cce0332367373dafc95d75b98dd58980410434929dff09466a4ba262db6101dd557f2f212d3cc7e7334c4a10ced1be011b9cd70f73cca5522fc4137a51be8a17d18e6101de557f0968ef20d515d8d743b2cf66603f8b86f3fdeee932fdc911774bb8699566e11c6101df557f2e3604981890fb676c3dac1e14c5c201573f99d1b9e67025109baf274b10e9dd6101e0557f147d317fd4b7a1dd6cb961cfba444466b3c431ea638c8df74a89fc591d1a3a516101e1557f10ea2b72952b619afd5b9bc50561df8de0c6e1ba9b5ad66b179c39c420304a756101e2557f1c49f7b357d244d9144676ad23f79465ef5b88ef0f91762a3d35997688af9a5a6101e3557f05ca0cfef8158efc5c4af44122e2765179b5463618d5c5ac6185c192332cade96101e4557f0ae1595634e8a2e23620f33f9b2b5a23387a28f5833814646900110842f3a1096101e5557f08be8c2a6a099d9cdc96f9197af6ad99595d73419eb0694eaea432fa18baa2036101e6557f207f689ce35cf857ee6e68c42d31bb2191d1e84d7a295ccd63995ca7369d20eb6101e7557f2a6f6b7e4a2cd1a6466ed17debb0a27904e99adbd72be85566a87340f41efd056101e8557f0f0725795350566920bbf56d3f22c4d38e832e638c9cb91811f83194e9dd74be6101e9557f02cd50632e5c5b00a9a93f434797725ec0f85f11ba1b6a844f0cd10c70df63926101ea557f08868b85d2fa4c17eec0a7d8bca4671a00474bff80e801981437b77aa11d10b56101eb557f294a84b7b46ea0a781877a2c0efd1ee56758d9ee55722721867efe53f46452866101ec557f02cb8070979a018bb919f0d1a25d5ad3d5a376c4cf66f36d33434d221ca77e886101ed557f05dfce8303f471d776762f2ddd37f05191b8bf5064d8d28e892cd4ec21e7aab46101ee557f28a47617aa1e26bf42fd3b26e88aa717fd759bb92b22faaf5ad82090680b52316101ef557f1de9253f5fa546603817abd83d1a13c8562f2bf6a0069a546fe546ca0c03c1706101f0557f1cb9bd316e341b873dbbef94fd699c6e3a638451de2817db1620235db2b6c39e6101f1557f0654785b2917d7c659a95738add3d8eb51cbbefc0f521c2640bc74b0fec581626101f2557f2eed74eacf5de60a758f815cb5e73015455c38408143fc25810d03e1ec9e35246101f3557f16bea3363deb4753db67be8b19110b169ae39f33113a92773c41a8b025ca5a936101f4557f2b0dd3b7e0a7e234a4a1b48dd0e9083dc8bfc8cd7f72abdb93a1b8e5ef3e22ed6101f5557f0bc1ca795d5a059b1dc0c51f72c46f2288cb139ebf09f38ac3e8bca0485ed4976101f6557f249ca1610a7f80bbf422388c18ef9777fcdab26ee718e2b39e4011973a9023306101f755620007b7565b6000602082840312156200068657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006e4578160001904821115620006c857620006c86200068d565b80851615620006d657918102915b93841c9390800290620006a8565b509250929050565b600082620006fd575060016200079c565b816200070c575060006200079c565b8160018114620007255760028114620007305762000750565b60019150506200079c565b60ff8411156200074457620007446200068d565b50506001821b6200079c565b5060208310610133831016604e8410600b841016171562000775575081810a6200079c565b620007818383620006a3565b80600019048211156200079857620007986200068d565b0290505b92915050565b6000620007b08383620006ec565b9392505050565b60805160a05160c051611d236200086c600039600081816103f901528181610bd501528181610cd701528181610e960152610f960152600081816102fc0152818161062a015281816108b701528181610dca015281816111cb0152818161137001526116b001526000818161022601528181610426015281816104870152818161060001528181610e0401528181610ecc01528181610f16015281816111430152818161122201526115eb0152611d236000f3fe608060405234801561001057600080fd5b50600436106101285760003560e01c80631b9b8aa71461012d5780631ffc735d1461015357806324a47aeb146101665780633bfa6fce146101795780633e1a8cc1146101815780634d60dea0146101895780634ee3ab51146101925780635bf1fa4d1461019c57806360fd4010146101af57806369e7c586146101d0578063715018a6146101f35780638129fc1c146101fd57806381d6a24a146102055780638858718e146102215780638da5cb5b14610248578063a27154ba14610268578063b6a64acd14610270578063c00bdbcc1461027e578063c15da65b14610291578063d9c55ce1146102a4578063dda89a6e146102ac578063e93fb4d4146102b6578063ed3adab3146102c9578063f2fde38b146102dc575b600080fd5b61014061013b3660046119de565b6102ef565b6040519081526020015b60405180910390f35b6101406101613660046119de565b6103a9565b6101406101743660046119de565b6104d6565b6101406108a9565b6101406108f7565b61014060665481565b6101406101d45481565b6101406101aa3660046119f7565b610953565b6101406101bd3660046119de565b6101b16020526000908152604090205481565b6101d3546101e390610100900460ff1681565b604051901515815260200161014a565b6101fb610a6f565b005b6101fb610a83565b6101d5546066546040805192835260208301919091520161014a565b6101407f000000000000000000000000000000000000000000000000000000000000000081565b610250610b94565b6040516001600160a01b03909116815260200161014a565b610140602081565b6101d3546101e39060ff1681565b6101fb61028c3660046119de565b610ba3565b6101fb61029f3660046119de565b610c1f565b6101fb610e8c565b6101406101d65481565b6101406102c43660046119de565b610fd3565b6101406102d73660046119de565b611054565b6101fb6102ea366004611a19565b61106c565b6101d654600090610320837f0000000000000000000000000000000000000000000000000000000000000000611b43565b101561038d5760405162461bcd60e51b815260206004820152603160248201527f41636351756575653a206765744d61696e526f6f743a205f6465707468206d756044820152700e6e840c4ca40d0d2ced040cadcdeeaced607b1b60648201526084015b60405180910390fd5b6101b282602181106103a1576103a1611b4f565b015492915050565b60006103b36110e2565b6101d6546103c2836000611141565b6103cd816001611b65565b6101d6556103de6101b26000611932565b60006101d4556101d3805460ff191690556101d65461041e907f000000000000000000000000000000000000000000000000000000000000000090611b7d565b6104ce5760677f00000000000000000000000000000000000000000000000000000000000000006021811061045557610455611b4f565b60040201546066805460009081526101b1602052604081209290925580549161047d83611b9f565b90915550606790507f0000000000000000000000000000000000000000000000000000000000000000602181106104b6576104b6611b4f565b6004020160008091018190556104ce9060eb90611932565b90505b919050565b60006104e06110e2565b6000821161053c5760405162461bcd60e51b8152602060048201526024808201527f41636351756575653a205f6465707468206d757374206265206d6f72652074686044820152630616e20360e41b6064820152608401610384565b6101d35460ff1661059e5760405162461bcd60e51b81526020600482015260386024820152600080516020611cce83398151915260448201527764206265666f72652063616c6c696e67206d65726765282960401b6064820152608401610384565b60208211156105fe5760405162461bcd60e51b815260206004820152602660248201527f41636351756575653a205f6465707468206d757374206265206c7465204d41586044820152650be888aa0a8960d31b6064820152608401610384565b7f00000000000000000000000000000000000000000000000000000000000000005b6101d65461064e827f0000000000000000000000000000000000000000000000000000000000000000611b43565b106106585761066a565b8061066281611b9f565b915050610620565b808310156106cd5760405162461bcd60e51b815260206004820152602a60248201527f41636351756575653a205f6465707468206d7573742062652067746520746865604482015269040a6a4a840c8cae0e8d60b31b6064820152608401610384565b8083141561070a576101d4546101b284602181106106ed576106ed611b4f565b015550506101d3805461ff0019166101001790556101d454919050565b6101d454815b84811015610878576000610723826112ab565b60655490915060ff16156107c357610739611941565b838152602081018290526040516362a361bb60e01b815273__$c6e409f5c6bff7020676808cc3963e859e$__906362a361bb9061077a908490600401611bba565b602060405180830381865af4158015610797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bb9190611beb565b935050610865565b6107cb61195f565b838152602081018290526040808201839052606082018390526080820183905251639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790610820908490600401611c04565b602060405180830381865af415801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108619190611beb565b9350505b508061087081611b9f565b915050610710565b50806101b2856021811061088e5761088e611b4f565b01556101d3805461ff00191661010017905591506104d19050565b600060015b6066546108db827f0000000000000000000000000000000000000000000000000000000000000000611b43565b106108e557919050565b806108ef81611b9f565b9150506108ae565b6101d35460009060ff1661094b5760405162461bcd60e51b81526020600482015260276024820152600080516020611cce8339815191526044820152661908199a5c9cdd60ca1b6064820152608401610384565b506101d45490565b600061095d61195f565b6067846021811061097057610970611b4f565b600402015481526067846021811061098a5761098a611b4f565b60040201600101548160016020020152606784602181106109ad576109ad611b4f565b60040201600201548160026020020152606784602181106109d0576109d0611b4f565b60040201600301548160036020020152828160046020020152604051639cfced9760e01b815260009073__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790610a23908590600401611c04565b602060405180830381865af4158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a649190611beb565b925050505b92915050565b610a776110e2565b610a8160006112c1565b565b600054610100900460ff1615808015610aa35750600054600160ff909116105b80610abd5750303b158015610abd575060005460ff166001145b610b205760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610384565b6000805460ff191660011790558015610b43576000805461ff0019166101001790555b610b4b611313565b8015610b91576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6033546001600160a01b031690565b610bab6110e2565b6066805460009081526101b16020526040812083905581549190610bce83611b9f565b91905055507f00000000000000000000000000000000000000000000000000000000000000006101d66000828254610c069190611b65565b909155505060006101d455506101d3805460ff19169055565b610c276110e2565b6101d35460ff1615610c855760405162461bcd60e51b815260206004820152602160248201527f41636351756575653a20737562747265657320616c7265616479206d657267656044820152601960fa1b6064820152608401610384565b60006101d65411610cd55760405162461bcd60e51b815260206004820152601a60248201527941636351756575653a206e6f7468696e6720746f206d6572676560301b6044820152606401610384565b7f00000000000000000000000000000000000000000000000000000000000000006101d654610d049190611b7d565b15610d1157610d11610e8c565b60665460011415610d3b57610d266000610fd3565b6101d4556101d3805460ff1916600117905550565b6000610d456108a9565b6101d5549091506000905b606654811015610dc1578315801590610d6857508382145b15610d735750505050565b610d8a610d826101d554610fd3565b600085611342565b6101d58054906000610d9b83611b9f565b91905055508180610dab90611b9f565b9250508080610db990611b9f565b915050610d50565b506000610dee837f0000000000000000000000000000000000000000000000000000000000000000611b43565b90506066546101d5541415610e58576000610e287f00000000000000000000000000000000000000000000000000000000000000006112ab565b6066549091505b82811015610e5557610e4382600087611342565b80610e4d81611b9f565b915050610e2f565b50505b61010c8360218110610e6c57610e6c611b4f565b60040201600001546101d45550506101d3805460ff191660011790555050565b610e946110e2565b7f00000000000000000000000000000000000000000000000000000000000000006101d654610ec39190611b7d565b610f0857610ef07f00000000000000000000000000000000000000000000000000000000000000006112ab565b60665460009081526101b16020526040902055610f79565b610f1260006115e9565b60677f000000000000000000000000000000000000000000000000000000000000000060218110610f4557610f45611b4f565b600402015460665460009081526101b16020526040812091909155610f6c9060679061197d565b610f796101b26000611932565b60006066546001610f8a9190611b65565b60668190559050610fbb7f000000000000000000000000000000000000000000000000000000000000000082611c2c565b6101d6555060006101d4556101d3805460ff19169055565b600081606654116110405760405162461bcd60e51b815260206004820152603160248201527f41636351756575653a205f696e646578206d75737420726566657220746f206160448201527020636f6d706c657465207375627472656560781b6064820152608401610384565b5060009081526101b1602052604090205490565b6101b2816021811061106557600080fd5b0154905081565b6110746110e2565b6001600160a01b0381166110d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610384565b610b91816112c1565b336110eb610b94565b6001600160a01b031614610a815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b7f00000000000000000000000000000000000000000000000000000000000000008111156111ab5760405162461bcd60e51b81526020600482015260176024820152761058d8d45d595d594e881a5b9d985b1a59081b195d995b604a1b6044820152606401610384565b600060eb82602181106111c0576111c0611b4f565b015490506111ef60017f0000000000000000000000000000000000000000000000000000000000000000611c4b565b811461127457826067836021811061120957611209611b4f565b60040201826004811061121e5761121e611b4f565b01557f0000000000000000000000000000000000000000000000000000000000000000821461126f5760eb826021811061125a5761125a611b4f565b01805490600061126983611b9f565b91905055505b505050565b61127e82846117c4565b925060eb826021811061129357611293611b4f565b6000910155816112a281611b9f565b925050506111ab565b60006101d782602181106103a1576103a1611b4f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661133a5760405162461bcd60e51b815260040161038490611c62565b610a81611902565b8082111561134f57505050565b6000610190836021811061136557611365611b4f565b0154905061139460017f0000000000000000000000000000000000000000000000000000000000000000611c4b565b81146113f3578361010c84602181106113af576113af611b4f565b6004020182600481106113c4576113c4611b4f565b015561019083602181106113da576113da611b4f565b0180549060006113e983611b9f565b91905055506115e3565b60655460009060ff16156114ae57611409611941565b61010c856021811061141d5761141d611b4f565b600490810291909101548252602082018790526040516362a361bb60e01b815273__$c6e409f5c6bff7020676808cc3963e859e$__916362a361bb9161146591859101611bba565b602060405180830381865af4158015611482573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a69190611beb565b9150506115b3565b6114b661195f565b60005b838160ff16101561151e5761010c86602181106114d8576114d8611b4f565b600402018160ff16600481106114f0576114f0611b4f565b0154828260ff166005811061150757611507611b4f565b60200201528061151681611cad565b9150506114b9565b508581846005811061153257611532611b4f565b6020020152604051639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced979061156e908490600401611c04565b602060405180830381865af415801561158b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115af9190611beb565b9150505b61019084602181106115c7576115c7611b4f565b60009101556115e1816115db866001611b65565b85611342565b505b50505050565b7f0000000000000000000000000000000000000000000000000000000000000000811015610b9157600060eb826021811061162657611626611b4f565b01549050801561179957600061163a61195f565b6000611645856112ab565b905060005b848160ff1610156116ae576067866021811061166857611668611b4f565b600402018160ff166004811061168057611680611b4f565b0154838260ff166005811061169757611697611b4f565b6020020152806116a681611cad565b91505061164a565b7f00000000000000000000000000000000000000000000000000000000000000008160ff1610156117065781838260ff16600581106116ef576116ef611b4f565b6020020152806116fe81611cad565b9150506116ae565b604051639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced979061173d908690600401611c04565b602060405180830381865af415801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190611beb565b93506117948461178f886001611b65565b611141565b505050505b60eb82602181106117ac576117ac611b4f565b6000910155816117bb81611b9f565b925050506115e9565b60006117ce61195f565b606784602181106117e1576117e1611b4f565b60040201548152606784602181106117fb576117fb611b4f565b600402016001015481600160200201526067846021811061181e5761181e611b4f565b600402016002015481600260200201526067846021811061184157611841611b4f565b60040201600301548160036020020152828160046020020152604051639cfced9760e01b815260009073__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790611894908590600401611c04565b602060405180830381865af41580156118b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d59190611beb565b9050606785602181106118ea576118ea611b4f565b6004020160006118fa919061198c565b949350505050565b600054610100900460ff166119295760405162461bcd60e51b815260040161038490611c62565b610a81336112c1565b50610b919060218101906119a8565b60405180604001604052806002906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b50610b919060848101906119c1565b5060008155600101600081556001016000815560010160009055565b5b808211156119bd57600081556001016119a9565b5090565b808211156119bd5760006119d5828261198c565b506004016119c1565b6000602082840312156119f057600080fd5b5035919050565b60008060408385031215611a0a57600080fd5b50508035926020909101359150565b600060208284031215611a2b57600080fd5b81356001600160a01b0381168114611a4257600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611a9a578160001904821115611a8057611a80611a49565b80851615611a8d57918102915b93841c9390800290611a64565b509250929050565b600082611ab157506001610a69565b81611abe57506000610a69565b8160018114611ad45760028114611ade57611afa565b6001915050610a69565b60ff841115611aef57611aef611a49565b50506001821b610a69565b5060208310610133831016604e8410600b8410161715611b1d575081810a610a69565b611b278383611a5f565b8060001904821115611b3b57611b3b611a49565b029392505050565b6000611a428383611aa2565b634e487b7160e01b600052603260045260246000fd5b60008219821115611b7857611b78611a49565b500190565b600082611b9a57634e487b7160e01b600052601260045260246000fd5b500690565b6000600019821415611bb357611bb3611a49565b5060010190565b60408101818360005b6002811015611be2578151835260209283019290910190600101611bc3565b50505092915050565b600060208284031215611bfd57600080fd5b5051919050565b60a08101818360005b6005811015611be2578151835260209283019290910190600101611c0d565b6000816000190483118215151615611c4657611c46611a49565b500290565b600082821015611c5d57611c5d611a49565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060ff821660ff811415611cc457611cc4611a49565b6001019291505056fe41636351756575653a207375627472656573206d757374206265206d65726765a264697066735822122035d3c327cb697e983233470463d98dc00de7c855eb5feb0e729abb045039bd0564736f6c634300080a003360e06040523480156200001157600080fd5b506040516200258f3803806200258f833981016040819052620000349162000673565b80806005600082116200009e5760405162461bcd60e51b815260206004820152602760248201527f41636351756575653a205f7375624465707468206d757374206265206d6f72656044820152660207468616e20360cc1b60648201526084015b60405180910390fd5b6020821115620001085760405162461bcd60e51b815260206004820152602e60248201527f41636351756575653a206f6e6c7920737570706f72747320757020746f204d4160448201526d585f4445505448206c6576656c7360901b606482015260840162000095565b8060021480620001185750806005145b6200017c5760405162461bcd60e51b815260206004820152602d60248201527f41636351756575653a206f6e6c7920737570706f727473205f686173684c656e60448201526c677468206f662032206f72203560981b606482015260840162000095565b6065805460ff191660028314179055608082905260a0819052620001a18282620007a2565b60c05250507f0ef71f46e11a513c599eed9dd03576c33439bcfb1cee155316f90541e41649ba6101d75550507f0404a2ed0a1df2006441895d9a65ffffdd4968cb5f555fe72a6da7aaec83e1a06101d8557f0b1c3d09dd575749a374a9dc1ee32af8c2312e24ad33a3e40fce8120b0f25fe36101d9557f1f60ed72fc1915366d2e52cfc7ddc0ff854c7aee9abbc07d1ca88ada842354dc6101da557f2ca1efc603fc121baf791319195ee3ab7fa075cee664d008f9ab2870f50283606101db557f2a0381fc4fb108733dfc58c355f2de753bcde61bd988eaa7d33fc967262be5ad6101dc557f12c6c7cce0332367373dafc95d75b98dd58980410434929dff09466a4ba262db6101dd557f2f212d3cc7e7334c4a10ced1be011b9cd70f73cca5522fc4137a51be8a17d18e6101de557f0968ef20d515d8d743b2cf66603f8b86f3fdeee932fdc911774bb8699566e11c6101df557f2e3604981890fb676c3dac1e14c5c201573f99d1b9e67025109baf274b10e9dd6101e0557f147d317fd4b7a1dd6cb961cfba444466b3c431ea638c8df74a89fc591d1a3a516101e1557f10ea2b72952b619afd5b9bc50561df8de0c6e1ba9b5ad66b179c39c420304a756101e2557f1c49f7b357d244d9144676ad23f79465ef5b88ef0f91762a3d35997688af9a5a6101e3557f05ca0cfef8158efc5c4af44122e2765179b5463618d5c5ac6185c192332cade96101e4557f0ae1595634e8a2e23620f33f9b2b5a23387a28f5833814646900110842f3a1096101e5557f08be8c2a6a099d9cdc96f9197af6ad99595d73419eb0694eaea432fa18baa2036101e6557f207f689ce35cf857ee6e68c42d31bb2191d1e84d7a295ccd63995ca7369d20eb6101e7557f2a6f6b7e4a2cd1a6466ed17debb0a27904e99adbd72be85566a87340f41efd056101e8557f0f0725795350566920bbf56d3f22c4d38e832e638c9cb91811f83194e9dd74be6101e9557f02cd50632e5c5b00a9a93f434797725ec0f85f11ba1b6a844f0cd10c70df63926101ea557f08868b85d2fa4c17eec0a7d8bca4671a00474bff80e801981437b77aa11d10b56101eb557f294a84b7b46ea0a781877a2c0efd1ee56758d9ee55722721867efe53f46452866101ec557f02cb8070979a018bb919f0d1a25d5ad3d5a376c4cf66f36d33434d221ca77e886101ed557f05dfce8303f471d776762f2ddd37f05191b8bf5064d8d28e892cd4ec21e7aab46101ee557f28a47617aa1e26bf42fd3b26e88aa717fd759bb92b22faaf5ad82090680b52316101ef557f1de9253f5fa546603817abd83d1a13c8562f2bf6a0069a546fe546ca0c03c1706101f0557f1cb9bd316e341b873dbbef94fd699c6e3a638451de2817db1620235db2b6c39e6101f1557f0654785b2917d7c659a95738add3d8eb51cbbefc0f521c2640bc74b0fec581626101f2557f2eed74eacf5de60a758f815cb5e73015455c38408143fc25810d03e1ec9e35246101f3557f16bea3363deb4753db67be8b19110b169ae39f33113a92773c41a8b025ca5a936101f4557f2b0dd3b7e0a7e234a4a1b48dd0e9083dc8bfc8cd7f72abdb93a1b8e5ef3e22ed6101f5557f0bc1ca795d5a059b1dc0c51f72c46f2288cb139ebf09f38ac3e8bca0485ed4976101f6557f249ca1610a7f80bbf422388c18ef9777fcdab26ee718e2b39e4011973a9023306101f755620007b7565b6000602082840312156200068657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006e4578160001904821115620006c857620006c86200068d565b80851615620006d657918102915b93841c9390800290620006a8565b509250929050565b600082620006fd575060016200079c565b816200070c575060006200079c565b8160018114620007255760028114620007305762000750565b60019150506200079c565b60ff8411156200074457620007446200068d565b50506001821b6200079c565b5060208310610133831016604e8410600b841016171562000775575081810a6200079c565b620007818383620006a3565b80600019048211156200079857620007986200068d565b0290505b92915050565b6000620007b08383620006ec565b9392505050565b60805160a05160c051611d236200086c600039600081816103f901528181610bd501528181610cd701528181610e960152610f960152600081816102fc0152818161062a015281816108b701528181610dca015281816111cb0152818161137001526116b001526000818161022601528181610426015281816104870152818161060001528181610e0401528181610ecc01528181610f16015281816111430152818161122201526115eb0152611d236000f3fe608060405234801561001057600080fd5b50600436106101285760003560e01c80631b9b8aa71461012d5780631ffc735d1461015357806324a47aeb146101665780633bfa6fce146101795780633e1a8cc1146101815780634d60dea0146101895780634ee3ab51146101925780635bf1fa4d1461019c57806360fd4010146101af57806369e7c586146101d0578063715018a6146101f35780638129fc1c146101fd57806381d6a24a146102055780638858718e146102215780638da5cb5b14610248578063a27154ba14610268578063b6a64acd14610270578063c00bdbcc1461027e578063c15da65b14610291578063d9c55ce1146102a4578063dda89a6e146102ac578063e93fb4d4146102b6578063ed3adab3146102c9578063f2fde38b146102dc575b600080fd5b61014061013b3660046119de565b6102ef565b6040519081526020015b60405180910390f35b6101406101613660046119de565b6103a9565b6101406101743660046119de565b6104d6565b6101406108a9565b6101406108f7565b61014060665481565b6101406101d45481565b6101406101aa3660046119f7565b610953565b6101406101bd3660046119de565b6101b16020526000908152604090205481565b6101d3546101e390610100900460ff1681565b604051901515815260200161014a565b6101fb610a6f565b005b6101fb610a83565b6101d5546066546040805192835260208301919091520161014a565b6101407f000000000000000000000000000000000000000000000000000000000000000081565b610250610b94565b6040516001600160a01b03909116815260200161014a565b610140602081565b6101d3546101e39060ff1681565b6101fb61028c3660046119de565b610ba3565b6101fb61029f3660046119de565b610c1f565b6101fb610e8c565b6101406101d65481565b6101406102c43660046119de565b610fd3565b6101406102d73660046119de565b611054565b6101fb6102ea366004611a19565b61106c565b6101d654600090610320837f0000000000000000000000000000000000000000000000000000000000000000611b43565b101561038d5760405162461bcd60e51b815260206004820152603160248201527f41636351756575653a206765744d61696e526f6f743a205f6465707468206d756044820152700e6e840c4ca40d0d2ced040cadcdeeaced607b1b60648201526084015b60405180910390fd5b6101b282602181106103a1576103a1611b4f565b015492915050565b60006103b36110e2565b6101d6546103c2836000611141565b6103cd816001611b65565b6101d6556103de6101b26000611932565b60006101d4556101d3805460ff191690556101d65461041e907f000000000000000000000000000000000000000000000000000000000000000090611b7d565b6104ce5760677f00000000000000000000000000000000000000000000000000000000000000006021811061045557610455611b4f565b60040201546066805460009081526101b1602052604081209290925580549161047d83611b9f565b90915550606790507f0000000000000000000000000000000000000000000000000000000000000000602181106104b6576104b6611b4f565b6004020160008091018190556104ce9060eb90611932565b90505b919050565b60006104e06110e2565b6000821161053c5760405162461bcd60e51b8152602060048201526024808201527f41636351756575653a205f6465707468206d757374206265206d6f72652074686044820152630616e20360e41b6064820152608401610384565b6101d35460ff1661059e5760405162461bcd60e51b81526020600482015260386024820152600080516020611cce83398151915260448201527764206265666f72652063616c6c696e67206d65726765282960401b6064820152608401610384565b60208211156105fe5760405162461bcd60e51b815260206004820152602660248201527f41636351756575653a205f6465707468206d757374206265206c7465204d41586044820152650be888aa0a8960d31b6064820152608401610384565b7f00000000000000000000000000000000000000000000000000000000000000005b6101d65461064e827f0000000000000000000000000000000000000000000000000000000000000000611b43565b106106585761066a565b8061066281611b9f565b915050610620565b808310156106cd5760405162461bcd60e51b815260206004820152602a60248201527f41636351756575653a205f6465707468206d7573742062652067746520746865604482015269040a6a4a840c8cae0e8d60b31b6064820152608401610384565b8083141561070a576101d4546101b284602181106106ed576106ed611b4f565b015550506101d3805461ff0019166101001790556101d454919050565b6101d454815b84811015610878576000610723826112ab565b60655490915060ff16156107c357610739611941565b838152602081018290526040516362a361bb60e01b815273__$c6e409f5c6bff7020676808cc3963e859e$__906362a361bb9061077a908490600401611bba565b602060405180830381865af4158015610797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bb9190611beb565b935050610865565b6107cb61195f565b838152602081018290526040808201839052606082018390526080820183905251639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790610820908490600401611c04565b602060405180830381865af415801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108619190611beb565b9350505b508061087081611b9f565b915050610710565b50806101b2856021811061088e5761088e611b4f565b01556101d3805461ff00191661010017905591506104d19050565b600060015b6066546108db827f0000000000000000000000000000000000000000000000000000000000000000611b43565b106108e557919050565b806108ef81611b9f565b9150506108ae565b6101d35460009060ff1661094b5760405162461bcd60e51b81526020600482015260276024820152600080516020611cce8339815191526044820152661908199a5c9cdd60ca1b6064820152608401610384565b506101d45490565b600061095d61195f565b6067846021811061097057610970611b4f565b600402015481526067846021811061098a5761098a611b4f565b60040201600101548160016020020152606784602181106109ad576109ad611b4f565b60040201600201548160026020020152606784602181106109d0576109d0611b4f565b60040201600301548160036020020152828160046020020152604051639cfced9760e01b815260009073__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790610a23908590600401611c04565b602060405180830381865af4158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a649190611beb565b925050505b92915050565b610a776110e2565b610a8160006112c1565b565b600054610100900460ff1615808015610aa35750600054600160ff909116105b80610abd5750303b158015610abd575060005460ff166001145b610b205760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610384565b6000805460ff191660011790558015610b43576000805461ff0019166101001790555b610b4b611313565b8015610b91576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6033546001600160a01b031690565b610bab6110e2565b6066805460009081526101b16020526040812083905581549190610bce83611b9f565b91905055507f00000000000000000000000000000000000000000000000000000000000000006101d66000828254610c069190611b65565b909155505060006101d455506101d3805460ff19169055565b610c276110e2565b6101d35460ff1615610c855760405162461bcd60e51b815260206004820152602160248201527f41636351756575653a20737562747265657320616c7265616479206d657267656044820152601960fa1b6064820152608401610384565b60006101d65411610cd55760405162461bcd60e51b815260206004820152601a60248201527941636351756575653a206e6f7468696e6720746f206d6572676560301b6044820152606401610384565b7f00000000000000000000000000000000000000000000000000000000000000006101d654610d049190611b7d565b15610d1157610d11610e8c565b60665460011415610d3b57610d266000610fd3565b6101d4556101d3805460ff1916600117905550565b6000610d456108a9565b6101d5549091506000905b606654811015610dc1578315801590610d6857508382145b15610d735750505050565b610d8a610d826101d554610fd3565b600085611342565b6101d58054906000610d9b83611b9f565b91905055508180610dab90611b9f565b9250508080610db990611b9f565b915050610d50565b506000610dee837f0000000000000000000000000000000000000000000000000000000000000000611b43565b90506066546101d5541415610e58576000610e287f00000000000000000000000000000000000000000000000000000000000000006112ab565b6066549091505b82811015610e5557610e4382600087611342565b80610e4d81611b9f565b915050610e2f565b50505b61010c8360218110610e6c57610e6c611b4f565b60040201600001546101d45550506101d3805460ff191660011790555050565b610e946110e2565b7f00000000000000000000000000000000000000000000000000000000000000006101d654610ec39190611b7d565b610f0857610ef07f00000000000000000000000000000000000000000000000000000000000000006112ab565b60665460009081526101b16020526040902055610f79565b610f1260006115e9565b60677f000000000000000000000000000000000000000000000000000000000000000060218110610f4557610f45611b4f565b600402015460665460009081526101b16020526040812091909155610f6c9060679061197d565b610f796101b26000611932565b60006066546001610f8a9190611b65565b60668190559050610fbb7f000000000000000000000000000000000000000000000000000000000000000082611c2c565b6101d6555060006101d4556101d3805460ff19169055565b600081606654116110405760405162461bcd60e51b815260206004820152603160248201527f41636351756575653a205f696e646578206d75737420726566657220746f206160448201527020636f6d706c657465207375627472656560781b6064820152608401610384565b5060009081526101b1602052604090205490565b6101b2816021811061106557600080fd5b0154905081565b6110746110e2565b6001600160a01b0381166110d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610384565b610b91816112c1565b336110eb610b94565b6001600160a01b031614610a815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b7f00000000000000000000000000000000000000000000000000000000000000008111156111ab5760405162461bcd60e51b81526020600482015260176024820152761058d8d45d595d594e881a5b9d985b1a59081b195d995b604a1b6044820152606401610384565b600060eb82602181106111c0576111c0611b4f565b015490506111ef60017f0000000000000000000000000000000000000000000000000000000000000000611c4b565b811461127457826067836021811061120957611209611b4f565b60040201826004811061121e5761121e611b4f565b01557f0000000000000000000000000000000000000000000000000000000000000000821461126f5760eb826021811061125a5761125a611b4f565b01805490600061126983611b9f565b91905055505b505050565b61127e82846117c4565b925060eb826021811061129357611293611b4f565b6000910155816112a281611b9f565b925050506111ab565b60006101d782602181106103a1576103a1611b4f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661133a5760405162461bcd60e51b815260040161038490611c62565b610a81611902565b8082111561134f57505050565b6000610190836021811061136557611365611b4f565b0154905061139460017f0000000000000000000000000000000000000000000000000000000000000000611c4b565b81146113f3578361010c84602181106113af576113af611b4f565b6004020182600481106113c4576113c4611b4f565b015561019083602181106113da576113da611b4f565b0180549060006113e983611b9f565b91905055506115e3565b60655460009060ff16156114ae57611409611941565b61010c856021811061141d5761141d611b4f565b600490810291909101548252602082018790526040516362a361bb60e01b815273__$c6e409f5c6bff7020676808cc3963e859e$__916362a361bb9161146591859101611bba565b602060405180830381865af4158015611482573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a69190611beb565b9150506115b3565b6114b661195f565b60005b838160ff16101561151e5761010c86602181106114d8576114d8611b4f565b600402018160ff16600481106114f0576114f0611b4f565b0154828260ff166005811061150757611507611b4f565b60200201528061151681611cad565b9150506114b9565b508581846005811061153257611532611b4f565b6020020152604051639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced979061156e908490600401611c04565b602060405180830381865af415801561158b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115af9190611beb565b9150505b61019084602181106115c7576115c7611b4f565b60009101556115e1816115db866001611b65565b85611342565b505b50505050565b7f0000000000000000000000000000000000000000000000000000000000000000811015610b9157600060eb826021811061162657611626611b4f565b01549050801561179957600061163a61195f565b6000611645856112ab565b905060005b848160ff1610156116ae576067866021811061166857611668611b4f565b600402018160ff166004811061168057611680611b4f565b0154838260ff166005811061169757611697611b4f565b6020020152806116a681611cad565b91505061164a565b7f00000000000000000000000000000000000000000000000000000000000000008160ff1610156117065781838260ff16600581106116ef576116ef611b4f565b6020020152806116fe81611cad565b9150506116ae565b604051639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced979061173d908690600401611c04565b602060405180830381865af415801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190611beb565b93506117948461178f886001611b65565b611141565b505050505b60eb82602181106117ac576117ac611b4f565b6000910155816117bb81611b9f565b925050506115e9565b60006117ce61195f565b606784602181106117e1576117e1611b4f565b60040201548152606784602181106117fb576117fb611b4f565b600402016001015481600160200201526067846021811061181e5761181e611b4f565b600402016002015481600260200201526067846021811061184157611841611b4f565b60040201600301548160036020020152828160046020020152604051639cfced9760e01b815260009073__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790611894908590600401611c04565b602060405180830381865af41580156118b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d59190611beb565b9050606785602181106118ea576118ea611b4f565b6004020160006118fa919061198c565b949350505050565b600054610100900460ff166119295760405162461bcd60e51b815260040161038490611c62565b610a81336112c1565b50610b919060218101906119a8565b60405180604001604052806002906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b50610b919060848101906119c1565b5060008155600101600081556001016000815560010160009055565b5b808211156119bd57600081556001016119a9565b5090565b808211156119bd5760006119d5828261198c565b506004016119c1565b6000602082840312156119f057600080fd5b5035919050565b60008060408385031215611a0a57600080fd5b50508035926020909101359150565b600060208284031215611a2b57600080fd5b81356001600160a01b0381168114611a4257600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611a9a578160001904821115611a8057611a80611a49565b80851615611a8d57918102915b93841c9390800290611a64565b509250929050565b600082611ab157506001610a69565b81611abe57506000610a69565b8160018114611ad45760028114611ade57611afa565b6001915050610a69565b60ff841115611aef57611aef611a49565b50506001821b610a69565b5060208310610133831016604e8410600b8410161715611b1d575081810a610a69565b611b278383611a5f565b8060001904821115611b3b57611b3b611a49565b029392505050565b6000611a428383611aa2565b634e487b7160e01b600052603260045260246000fd5b60008219821115611b7857611b78611a49565b500190565b600082611b9a57634e487b7160e01b600052601260045260246000fd5b500690565b6000600019821415611bb357611bb3611a49565b5060010190565b60408101818360005b6002811015611be2578151835260209283019290910190600101611bc3565b50505092915050565b600060208284031215611bfd57600080fd5b5051919050565b60a08101818360005b6005811015611be2578151835260209283019290910190600101611c0d565b6000816000190483118215151615611c4657611c46611a49565b500290565b600082821015611c5d57611c5d611a49565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060ff821660ff811415611cc457611cc4611a49565b6001019291505056fe41636351756575653a207375627472656573206d757374206265206d65726765a2646970667358221220f80649095d1eb7e10092d74b15b65a36f51aba410679d6ea18218150930d38ee64736f6c634300080a0033"; + +type JubjubFactoryConstructorParams = + | [linkLibraryAddresses: JubjubFactoryLibraryAddresses, signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: JubjubFactoryConstructorParams +): xs is ConstructorParameters => { + return ( + typeof xs[0] === "string" || + (Array.isArray as (arg: any) => arg is readonly any[])(xs[0]) || + "_isInterface" in xs[0] + ); +}; + +export class JubjubFactory__factory extends ContractFactory { + constructor(...args: JubjubFactoryConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + const [linkLibraryAddresses, signer] = args; + super( + _abi, + JubjubFactory__factory.linkBytecode(linkLibraryAddresses), + signer + ); + } + } + + static linkBytecode( + linkLibraryAddresses: JubjubFactoryLibraryAddresses + ): string { + let linkedBytecode = _bytecode; + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$56e03346d0918fb20a2db08690fd2c2075\\$__", "g"), + linkLibraryAddresses["contracts/poseidon/PoseidonT5.sol:PoseidonT5"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$e63b1c9f9b66f613a0dd27ec595fdb417f\\$__", "g"), + linkLibraryAddresses["contracts/poseidon/PoseidonT6.sol:PoseidonT6"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$8f0718d15a58b4353249f9bf6422c5f00e\\$__", "g"), + linkLibraryAddresses["contracts/poseidon/PoseidonT4.sol:PoseidonT4"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$c6850fb4e0ee9ead61bcd830cbea02ad6d\\$__", "g"), + linkLibraryAddresses["contracts/poseidon/PoseidonT3.sol:PoseidonT3"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$c6e409f5c6bff7020676808cc3963e859e\\$__", "g"), + linkLibraryAddresses["contracts/AccQueue.sol:PoseidonT3"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$cedc09603cb2be64c780c22aabaab86809\\$__", "g"), + linkLibraryAddresses["contracts/AccQueue.sol:PoseidonT6"] + .replace(/^0x/, "") + .toLowerCase() + ); + + return linkedBytecode; + } + + override deploy( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): JubjubFactory { + return super.attach(address) as JubjubFactory; + } + override connect(signer: Signer): JubjubFactory__factory { + return super.connect(signer) as JubjubFactory__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): JubjubFactoryInterface { + return new utils.Interface(_abi) as JubjubFactoryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): JubjubFactory { + return new Contract(address, _abi, signerOrProvider) as JubjubFactory; + } +} + +export interface JubjubFactoryLibraryAddresses { + ["contracts/poseidon/PoseidonT5.sol:PoseidonT5"]: string; + ["contracts/poseidon/PoseidonT6.sol:PoseidonT6"]: string; + ["contracts/poseidon/PoseidonT4.sol:PoseidonT4"]: string; + ["contracts/poseidon/PoseidonT3.sol:PoseidonT3"]: string; + ["contracts/AccQueue.sol:PoseidonT3"]: string; + ["contracts/AccQueue.sol:PoseidonT6"]: string; +} diff --git a/packages/app/src/typechain/factories/contracts/Jubjub__factory.ts b/packages/app/src/typechain/factories/contracts/Jubjub__factory.ts new file mode 100644 index 00000000..9933d933 --- /dev/null +++ b/packages/app/src/typechain/factories/contracts/Jubjub__factory.ts @@ -0,0 +1,1243 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../common"; +import type { Jubjub, JubjubInterface } from "../../contracts/Jubjub"; + +const _abi = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_pollId", + type: "uint256", + }, + { + indexed: false, + internalType: "address", + name: "_pollAddr", + type: "address", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + indexed: false, + internalType: "struct Jubjub.PubKey", + name: "_pubKey", + type: "tuple", + }, + ], + name: "DeployPoll", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "contract ISignUpGatekeeper", + name: "_signUpGatekeeper", + type: "address", + }, + { + indexed: false, + internalType: "contract IInitialVoiceCreditProxy", + name: "_topupCredit", + type: "address", + }, + ], + name: "Init", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_pollId", + type: "uint256", + }, + ], + name: "MergeMaciStateAq", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_pollId", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "_numSrQueueOps", + type: "uint256", + }, + ], + name: "MergeMaciStateAqSubRoots", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_messageRoot", + type: "uint256", + }, + ], + name: "MergeMessageAq", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_numSrQueueOps", + type: "uint256", + }, + ], + name: "MergeMessageAqSubRoots", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + components: [ + { + internalType: "uint256", + name: "msgType", + type: "uint256", + }, + { + internalType: "uint256[10]", + name: "data", + type: "uint256[10]", + }, + ], + indexed: false, + internalType: "struct Jubjub.Message", + name: "_message", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + indexed: false, + internalType: "struct Jubjub.PubKey", + name: "_encPubKey", + type: "tuple", + }, + ], + name: "PublishMessage", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_stateIndex", + type: "uint256", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + indexed: false, + internalType: "struct Jubjub.PubKey", + name: "_userPubKey", + type: "tuple", + }, + { + indexed: false, + internalType: "uint256", + name: "_voiceCreditBalance", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "_timestamp", + type: "uint256", + }, + ], + name: "SignUp", + type: "event", + }, + { + inputs: [], + name: "blankMessageLeafHash", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "blankStateLeafHash", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "calculateCurrentMessageBatchIndex", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "coordinatorPubKey", + outputs: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "coordinatorPubKeyHash", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "currentBallotCommitment", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "currentMessageCommitment", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "currentSbCommitment", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "currentStateCommitment", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_left", + type: "uint256", + }, + { + internalType: "uint256", + name: "_right", + type: "uint256", + }, + ], + name: "hash", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "uint256", + name: "msgType", + type: "uint256", + }, + { + internalType: "uint256[10]", + name: "data", + type: "uint256[10]", + }, + ], + internalType: "struct Jubjub.Message", + name: "_message", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Jubjub.PubKey", + name: "_encPubKey", + type: "tuple", + }, + ], + name: "hashMessageLeaf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Jubjub.PubKey", + name: "pubKey", + type: "tuple", + }, + { + internalType: "uint256", + name: "voiceCreditBalance", + type: "uint256", + }, + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + internalType: "struct Jubjub.StateLeaf", + name: "_stateLeaf", + type: "tuple", + }, + ], + name: "hashStateLeaf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_stateTreeSubDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageTreeSubDepth", + type: "uint256", + }, + { + internalType: "uint256[]", + name: "_emptyBallotRoots", + type: "uint256[]", + }, + { + internalType: "contract ISignUpGatekeeper", + name: "_signUpGatekeeper", + type: "address", + }, + { + internalType: "contract IInitialVoiceCreditProxy", + name: "_voiceCreditProxy", + type: "address", + }, + { + internalType: "contract AccQueue", + name: "_stateAq", + type: "address", + }, + { + internalType: "contract AccQueue", + name: "_messageAq", + type: "address", + }, + ], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "isInitialised", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "mergeMessageAq", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_numSrQueueOps", + type: "uint256", + }, + ], + name: "mergeMessageAqSubRoots", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "mergeStateAq", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_numSrQueueOps", + type: "uint256", + }, + ], + name: "mergeStateAqSubRoots", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "messageAq", + outputs: [ + { + internalType: "contract AccQueue", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "messageTreeDepth", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "messageTreeSubDepth", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes[]", + name: "data", + type: "bytes[]", + }, + ], + name: "multicall", + outputs: [ + { + internalType: "bytes[]", + name: "results", + type: "bytes[]", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "numBatchesProcessed", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "numMessages", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "numPolls", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "numSignUps", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "openSignUpPeriod", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "pollResults", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "polls", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_newStateCommitment", + type: "uint256", + }, + { + internalType: "uint256", + name: "_newSbCommitment", + type: "uint256", + }, + { + internalType: "uint256[8]", + name: "_proof", + type: "uint256[8]", + }, + ], + name: "processMessages", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "uint256", + name: "msgType", + type: "uint256", + }, + { + internalType: "uint256[10]", + name: "data", + type: "uint256[10]", + }, + ], + internalType: "struct Jubjub.Message", + name: "_message", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Jubjub.PubKey", + name: "_encPubKey", + type: "tuple", + }, + ], + name: "publishMessage", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "uint256", + name: "msgType", + type: "uint256", + }, + { + internalType: "uint256[10]", + name: "data", + type: "uint256[10]", + }, + ], + internalType: "struct Jubjub.Message[]", + name: "_messages", + type: "tuple[]", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Jubjub.PubKey[]", + name: "_encPubKeys", + type: "tuple[]", + }, + ], + name: "publishMessageBatch", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "resetBallotCommitment", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract VkRegistry", + name: "_vkRegistry", + type: "address", + }, + ], + name: "setVkRegistry", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Jubjub.PubKey", + name: "_pubKey", + type: "tuple", + }, + { + internalType: "bytes", + name: "_signUpGatekeeperData", + type: "bytes", + }, + { + internalType: "bytes", + name: "_initialVoiceCreditProxyData", + type: "bytes", + }, + ], + name: "signUp", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "signUpGatekeeper", + outputs: [ + { + internalType: "contract ISignUpGatekeeper", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "signUpTimestamp", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "signUpsOpen", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_duration", + type: "uint256", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Jubjub.PubKey", + name: "_coordinatorPubKey", + type: "tuple", + }, + ], + name: "startVoting", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "stateAq", + outputs: [ + { + internalType: "contract AccQueue", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "stateLeafTimeStamps", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "stateTreeDepth", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "stateTreeSubDepth", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "vkRegistry", + outputs: [ + { + internalType: "contract VkRegistry", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "voiceCreditProxy", + outputs: [ + { + internalType: "contract IInitialVoiceCreditProxy", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "voteDeadline", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "voteDurationSeconds", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "voteOptionTreeDepth", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x60806040523480156200001157600080fd5b506200001c62000134565b7f0ef71f46e11a513c599eed9dd03576c33439bcfb1cee155316f90541e41649ba14620000a15760405162461bcd60e51b815260206004820152602860248201527f4d4143493a20424c414e4b5f53544154455f4c4541465f4841534820697320696044820152671b98dbdc9c9958dd60c21b60648201526084015b60405180910390fd5b620000ab62000194565b7f1dee9f497aa52e2ad4b049b789afb5056fbee5a0e3f1083a92d93cb3a5a70fb4146200012e5760405162461bcd60e51b815260206004820152602a60248201527f4d4143493a20424c414e4b5f4d4553534147455f4c4541465f48415348206973604482015269081a5b98dbdc9c9958dd60b21b606482015260840162000098565b620005e5565b604080518082018252600080516020620043b38339815191528152600080516020620043d383398151915260208083019190915282516060810184528281526000918101829052928301819052916200018d816200025a565b9250505090565b60408051610140810182527f12817f4161f2f5ded33f26c55735a77e80e4f8975483c8c2704745128417f711815260006020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905260e083018290526101008301829052610120830182905283518085018552600080516020620043b38339815191528152600080516020620043d38339815191528183015284518086019095526001855290840183905290926200025281836200030f565b935050505090565b60006200026662000532565b82515181528251602090810151818301528301518160026020020152604083810151606083015251631efdc45960e11b815273__$56e03346d0918fb20a2db08690fd2c2075$__90633dfb88b290620002c49084906004016200056e565b602060405180830381865af4158015620002e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003089190620005a1565b9392505050565b60006200031b62000550565b6020848101805151835280518201519183019190915280516040908101519083015280516060908101519083015251608090810151908201526200035e62000550565b6020858101805160a0908101518452815160c0015184840152815160e0015160408086019190915282516101000151606086015291516101200151608085015281519081018252875181529051639cfced9760e01b815273__$e63b1c9f9b66f613a0dd27ec595fdb417f$__92639cfced9792919082019084908490620003ea908990600401620005bb565b602060405180830381865af415801562000408573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042e9190620005a1565b815260200173__$e63b1c9f9b66f613a0dd27ec595fdb417f$__639cfced97866040518263ffffffff1660e01b81526004016200046c9190620005bb565b602060405180830381865af41580156200048a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b09190620005a1565b81526020018760000151815260200187602001518152506040518263ffffffff1660e01b8152600401620004e59190620005bb565b602060405180830381865af415801562000503573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005299190620005a1565b95945050505050565b60405180608001604052806004906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b60808101818360005b60048110156200059857815183526020928301929091019060010162000577565b50505092915050565b600060208284031215620005b457600080fd5b5051919050565b60a08101818360005b600581101562000598578151835260209283019290910190600101620005c4565b613dbe80620005f56000396000f3fe6080604052600436106102435760003560e01c8062329f2f14610248578063030ffa6e1461025f578063079410db146102875780630f4cf692146102bf5780630f78c3f2146102d5578063122db153146102eb578063133511b91461030157806313fb8932146103165780631c2a50a214610336578063203bfef51461034c578063213e7ba81461036257806331e766a5146103985780633364120a146103c8578063394b78a2146103e85780633bee85a81461040857806342bf25ab1461041e5780634c8104da146104335780635289052c14610453578063603baff814610473578063652c76e41461049357806370ee8e42146104a9578063715018a6146104be5780637296aaea146104d3578063793dbe32146104f35780637a38d18f146105085780637d0a81c81461051e57806383ca5a5b1461053e578063842ff2bd1461055457806388e8ee721461056a5780638aa0ba92146105805780638aa56271146105965780638ae8a05f146105b65780638da5cb5b146105d65780639bc609f3146105eb5780639c971729146106015780639eb1cab3146106215780639ed3c90c1461064e578063a78dac0d14610678578063ac2f007414610698578063ac9650d8146106ce578063c17268d9146106ee578063ca64d4ee14610704578063d5f7b1b614610724578063e5e7569314610744578063e71f900c14610764578063ec9289a814610784578063f2fde38b1461079a578063f74556bd146107ba578063f90100f9146107d0578063fcc2c3aa146107f0578063fed8fd441461080a575b600080fd5b34801561025457600080fd5b5061025d610820565b005b34801561026b57600080fd5b50610274610a4c565b6040519081526020015b60405180910390f35b34801561029357600080fd5b50607e546102a7906001600160a01b031681565b6040516001600160a01b03909116815260200161027e565b3480156102cb57600080fd5b5061027460725481565b3480156102e157600080fd5b5061027460835481565b3480156102f757600080fd5b5061027460715481565b34801561030d57600080fd5b5061025d610aa8565b34801561032257600080fd5b506080546102a7906001600160a01b031681565b34801561034257600080fd5b5061027460665481565b34801561035857600080fd5b5061027460775481565b34801561036e57600080fd5b506102a761037d366004612ee0565b607b602052600090815260409020546001600160a01b031681565b3480156103a457600080fd5b506081546082546103b3919082565b6040805192835260208301919091520161027e565b3480156103d457600080fd5b5061025d6103e3366004613028565b610cd3565b3480156103f457600080fd5b5061025d61040336600461312f565b61101d565b34801561041457600080fd5b5061027460765481565b34801561042a57600080fd5b50610274611236565b34801561043f57600080fd5b5061027461044e36600461312f565b6112e1565b34801561045f57600080fd5b5061025d61046e366004612ee0565b6114f3565b34801561047f57600080fd5b50607c546102a7906001600160a01b031681565b34801561049f57600080fd5b5061027460655481565b3480156104b557600080fd5b5061025d6115ff565b3480156104ca57600080fd5b5061025d611666565b3480156104df57600080fd5b5061025d6104ee366004613166565b61167a565b3480156104ff57600080fd5b506102746116fd565b34801561051457600080fd5b5061027460745481565b34801561052a57600080fd5b5061027461053936600461322e565b6117c0565b34801561054a57600080fd5b5061027460845481565b34801561056057600080fd5b5061027460705481565b34801561057657600080fd5b5061027460695481565b34801561058c57600080fd5b5061027460735481565b3480156105a257600080fd5b5061025d6105b13660046132d7565b61186e565b3480156105c257600080fd5b50607d546102a7906001600160a01b031681565b3480156105e257600080fd5b506102a761201e565b3480156105f757600080fd5b5061027460675481565b34801561060d57600080fd5b5061025d61061c366004612ee0565b61202d565b34801561062d57600080fd5b5061027461063c366004612ee0565b60796020526000908152604090205481565b34801561065a57600080fd5b50606f546106689060ff1681565b604051901515815260200161027e565b34801561068457600080fd5b506102746106933660046133d8565b6121e9565b3480156106a457600080fd5b506102a76106b3366004612ee0565b607a602052600090815260409020546001600160a01b031681565b6106e16106dc3660046133fa565b61227d565b60405161027e91906134bb565b3480156106fa57600080fd5b5061027460785481565b34801561071057600080fd5b50607f546102a7906001600160a01b031681565b34801561073057600080fd5b5061025d61073f366004612ee0565b612302565b34801561075057600080fd5b5061025d61075f36600461351d565b6124c0565b34801561077057600080fd5b5061025d61077f3660046135b2565b612898565b34801561079057600080fd5b5061027460755481565b3480156107a657600080fd5b5061025d6107b53660046135e8565b612cd8565b3480156107c657600080fd5b5061027460855481565b3480156107dc57600080fd5b5061025d6107eb3660046135e8565b612d51565b3480156107fc57600080fd5b506086546106689060ff1681565b34801561081657600080fd5b5061027460685481565b610828612d7b565b607d60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa15801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f9190613605565b156108c55760405162461bcd60e51b81526004016108bc90613627565b60405180910390fd5b607d60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190613605565b15156001146109995760405162461bcd60e51b8152602060048201526024808201527f4552524f525f4d4553534147455f41515f53554254524545535f4e4545445f4d6044820152634552474560e01b60648201526084016108bc565b607d546067546040516324a47aeb60e01b81526001600160a01b03909216916324a47aeb916109ce9160040190815260200190565b6020604051808303816000875af11580156109ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a11919061365e565b60768190556040519081527fc5624680ab5d50c84507f9e0dc2032163de2bda906ab8a661a53dd4d43bd5dc7906020015b60405180910390a1565b604080518082018252600080516020613ce98339815191528152600080516020613d498339815191526020808301919091528251606081018452828152600091810182905292830181905291610aa1816117c0565b9250505090565b610ab0612d7b565b607c60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b279190613605565b158015610b37575060865460ff16155b610b535760405162461bcd60e51b81526004016108bc90613677565b607c60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca9190613605565b1515600114610c265760405162461bcd60e51b815260206004820152602260248201527f4552524f525f53544154455f41515f53554254524545535f4e4545445f4d4552604482015261474560f01b60648201526084016108bc565b607c546065546040516324a47aeb60e01b81526001600160a01b03909216916324a47aeb91610c5b9160040190815260200190565b6020604051808303816000875af1158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9e919061365e565b60758190556040519081527f58deecc020170648ca539f41d6d967a2d071ce17a8296866ba3b3403977fd8ec90602001610a42565b606f5460ff16610cf55760405162461bcd60e51b81526004016108bc906136ae565b606554610d039060056137d7565b60715410610d635760405162461bcd60e51b815260206004820152602760248201527f4d4143493a206d6178696d756d206e756d626572206f66207369676e757073206044820152661c995858da195960ca1b60648201526084016108bc565b8251600080516020613d29833981519152118015610d925750600080516020613d298339815191528360200151105b610e045760405162461bcd60e51b815260206004820152603f60248201527f4d4143493a205f7075624b65792076616c7565732073686f756c64206265206c60448201527f657373207468616e2074686520736e61726b207363616c6172206669656c640060648201526084016108bc565b60865460ff16610e515760405162461bcd60e51b8152602060048201526018602482015277135050d24e881cda59db9d5c1cc8185c994818db1bdcd95960421b60448201526064016108bc565b607180546001019055607e5460405163125c7dfb60e11b81526001600160a01b03909116906324b8fbf690610e8c90339086906004016137e3565b600060405180830381600087803b158015610ea657600080fd5b505af1158015610eba573d6000803e3d6000fd5b5050607f5460405163b36543a960e01b8152600093506001600160a01b03909116915063b36543a990610ef390339086906004016137e3565b602060405180830381865afa158015610f10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f34919061365e565b905060004290506000610f606040518060600160405280888152602001858152602001848152506117c0565b607c54604051631ffc735d60e01b8152600481018390529192506000916001600160a01b0390911690631ffc735d906024016020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd5919061365e565b90507f99f34e3b6821c0bd1f5732936411fe3fd65fb78cbcd657c61bfb8deb08c0591f8188868660405161100c9493929190613816565b60405180910390a150505050505050565b608454421061106b5760405162461bcd60e51b815260206004820152601a60248201527911549493d497d593d5125391d7d411549253d117d41054d4d15160321b60448201526064016108bc565b6067546110799060056137d7565b60725411156110c75760405162461bcd60e51b815260206004820152601a60248201527911549493d497d3505617d35154d4d051d154d7d4915050d2115160321b60448201526064016108bc565b8051600080516020613d298339815191521180156110f65750600080516020613d298339815191528160200151105b6111395760405162461bcd60e51b81526020600482015260146024820152734552524f525f494e56414c49445f5055424b455960601b60448201526064016108bc565b426084541161117f5760405162461bcd60e51b815260206004820152601260248201527111549493d497d593d5125391d7d15391115160721b60448201526064016108bc565b6072805460019081019091558252600061119983836112e1565b607d54604051631ffc735d60e01b8152600481018390529192506001600160a01b031690631ffc735d906024016020604051808303816000875af11580156111e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611209919061365e565b50600080516020613d69833981519152838360405161122992919061383c565b60405180910390a1505050565b600080606854600561124891906137d7565b905060008160725461125a9190613898565b90506074546000141561128f578061128557818260725461127b91906138ac565b610aa191906138c0565b6072549250505090565b806112af57816074546112a291906138c0565b607254610aa191906138df565b8160016074546112bf91906138df565b6112c991906138c0565b816072546112d791906138df565b610aa191906138df565b60006112eb612e86565b60208481018051518352805182015191830191909152805160409081015190830152805160609081015190830152516080908101519082015261132c612e86565b6020858101805160a0908101518452815160c0015184840152815160e0015160408086019190915282516101000151606086015291516101200151608085015281519081018252875181529051639cfced9760e01b815273__$e63b1c9f9b66f613a0dd27ec595fdb417f$__92639cfced97929190820190849084906113b690899060040161390c565b602060405180830381865af41580156113d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f7919061365e565b815260200173__$e63b1c9f9b66f613a0dd27ec595fdb417f$__639cfced97866040518263ffffffff1660e01b8152600401611433919061390c565b602060405180830381865af4158015611450573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611474919061365e565b81526020018760000151815260200187602001518152506040518263ffffffff1660e01b81526004016114a7919061390c565b602060405180830381865af41580156114c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e8919061365e565b925050505b92915050565b6114fb612d7b565b60865460ff16156115435760405162461bcd60e51b815260206004820152601260248201527114d251d3955414d7d393d517d0d313d4d15160721b60448201526064016108bc565b606a6115506001836138df565b60058110611560576115606138f6565b0154607781905560408051606081018252607554815260208101929092526000828201525163bea140b360e01b815273__$8f0718d15a58b4353249f9bf6422c5f00e$__9163bea140b3916115b8919060040161393d565b602060405180830381865af41580156115d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f9919061365e565b60785550565b611607612d7b565b60865460ff16156116575760405162461bcd60e51b815260206004820152601a60248201527922a92927a92fa9a4a3a72aa829afa0a62922a0a22cafa7a822a760311b60448201526064016108bc565b6086805460ff19166001179055565b61166e612d7b565b6116786000612dda565b565b8260005b818160ff1610156116f5576116e386868360ff168181106116a1576116a16138f6565b905061016002018036038101906116b89190613965565b85858460ff168181106116cd576116cd6138f6565b9050604002018036038101906104039190613982565b806116ed8161399e565b91505061167e565b505050505050565b600080604051806101400160405280600080516020613d09833981519152815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250905060006040518060400160405280600080516020613ce98339815191528152602001600080516020613d49833981519152815250905060006040518060400160405280600181526020018481525090506117b881836112e1565b935050505090565b60006117ca612ea4565b82515181528251602090810151818301528301518160026020020152604083810151606083015251631efdc45960e11b815273__$56e03346d0918fb20a2db08690fd2c2075$__90633dfb88b2906118269084906004016139be565b602060405180830381865af4158015611843573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611867919061365e565b9392505050565b600054610100900460ff161580801561188e5750600054600160ff909116105b806118a85750303b1580156118a8575060005460ff166001145b61190b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108bc565b6000805460ff19166001179055801561192e576000805461ff0019166101001790555b611936612e2c565b600061194061201e565b6001600160a01b031614156119925760405162461bcd60e51b8152602060048201526018602482015277129d589a9d58881bdddb995c881b5d5cdd081899481cd95d60421b60448201526064016108bc565b606f5460ff16156119e15760405162461bcd60e51b8152602060048201526019602482015278135050d24e88185b1c9958591e481a5b9a5d1a585b1a5cd959603a1b60448201526064016108bc565b426083556086805460ff199081166001908117909255606f80549091169091179055607e80546001600160a01b038088166001600160a01b031992831617909255607f8054878416908316179055607c80548684169083168117909155607d80549386169390921692909217905560658b9055606689905560678a9055606888905560408051636ed44d3760e11b815290516000929163dda89a6e9160048281019260209291908290030181865afa158015611aa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac5919061365e565b1415611b5b57607c54604051631ffc735d60e01b81527f0ef71f46e11a513c599eed9dd03576c33439bcfb1cee155316f90541e41649ba60048201526001600160a01b0390911690631ffc735d906024016020604051808303816000875af1158015611b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b59919061365e565b505b607d60009054906101000a90046001600160a01b03166001600160a01b031663dda89a6e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd2919061365e565b15611c1f5760405162461bcd60e51b815260206004820152601d60248201527f4d4143493a206d657373616765206171206973206e6f7420656d70747900000060448201526064016108bc565b607d54604051631ffc735d60e01b81527f1dee9f497aa52e2ad4b049b789afb5056fbee5a0e3f1083a92d93cb3a5a70fb460048201526001600160a01b0390911690631ffc735d906024016020604051808303816000875af1158015611c89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cad919061365e565b5085600081518110611cc157611cc16138f6565b6020026020010151606a600060058110611cdd57611cdd6138f6565b0155855186906001908110611cf457611cf46138f6565b6020026020010151606a600160058110611d1057611d106138f6565b0155855186906002908110611d2757611d276138f6565b6020026020010151606a600260058110611d4357611d436138f6565b0155855186906003908110611d5a57611d5a6138f6565b6020026020010151606a600360058110611d7657611d766138f6565b0155855186906004908110611d8d57611d8d6138f6565b6020026020010151606a600460058110611da957611da96138f6565b0155607c546040805163442c38c760e11b815290516001600160a01b0390921691638858718e916004808201926020929091908290030181865afa158015611df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e19919061365e565b60665414611e395760405162461bcd60e51b81526004016108bc906139e6565b607d60009054906101000a90046001600160a01b03166001600160a01b0316638858718e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb0919061365e565b60685414611ed05760405162461bcd60e51b81526004016108bc906139e6565b607c60009054906101000a90046001600160a01b03166001600160a01b031663a27154ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f47919061365e565b60655410611f895760405162461bcd60e51b815260206004820152600f60248201526e0929c869ea4a48a86a840888aa0a89608b1b60448201526064016108bc565b604080516001600160a01b038088168252861660208201527f45acd56f401dc3db1d520e5e214f090b4ab3e3fbf42fd24596cb511edaad876a910160405180910390a18015612012576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6033546001600160a01b031690565b612035612d7b565b607d60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa158015612088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ac9190613605565b1580156120bc575060865460ff16155b6120d85760405162461bcd60e51b81526004016108bc90613627565b607d60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214f9190613605565b6121b257607d5460405163c15da65b60e01b8152600481018390526001600160a01b039091169063c15da65b90602401600060405180830381600087803b15801561219957600080fd5b505af11580156121ad573d6000803e3d6000fd5b505050505b6040518181527f1245b881cb30fdad22b2f9fde2d5c2a3605bbdf272d5e8a2235d8c9e81aba2ce906020015b60405180910390a150565b60006121f3612ec2565b838152602081018390526040516362a361bb60e01b815273__$c6850fb4e0ee9ead61bcd830cbea02ad6d$__906362a361bb90612234908490600401613a12565b602060405180830381865af4158015612251573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612275919061365e565b949350505050565b606081156114ed5750604051818152602001600582901b808483378101805b825185018035602082018337600080823584305af46122bf573d6000803e3d6000fd5b508083526020830192503d81523d6000602083013e3d01603f016020600160401b03168183106122ee576122f3565b61229c565b60408051919052949350505050565b61230a612d7b565b607c60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa15801561235d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123819190613605565b158015612391575060865460ff16155b6123ad5760405162461bcd60e51b81526004016108bc90613677565b607c60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612400573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124249190613605565b61248757607c5460405163c15da65b60e01b8152600481018390526001600160a01b039091169063c15da65b90602401600060405180830381600087803b15801561246e57600080fd5b505af1158015612482573d6000803e3d6000fd5b505050505b60705460408051918252602082018390527f20c94e460dce562bb3cf493d654a31e5adbf7abcce31a6b8da835c1211ed0dec91016121de565b6124c8612d7b565b607c60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa15801561251b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253f9190613605565b6125875760405162461bcd60e51b815260206004820152601960248201527811549493d497d4d510551157d05457d393d517d3515491d151603a1b60448201526064016108bc565b607d60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fe9190613605565b6126565760405162461bcd60e51b815260206004820152602360248201527f4552524f525f4d4553534147455f41515f4e4f545f414c52454144595f4d455260448201526211d15160ea1b60648201526084016108bc565b6000612660611236565b116126a65760405162461bcd60e51b81526020600482015260166024820152754552524f525f4e4f5f4d4f52455f4d4553534147455360501b60448201526064016108bc565b607d54606754604051631b9b8aa760e01b815260048101919091526000916001600160a01b031690631b9b8aa790602401602060405180830381865afa1580156126f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612718919061365e565b9050806127655760405162461bcd60e51b815260206004820152601b60248201527a11549493d497d35154d4d051d157d05457d393d517d3515491d151602a1b60448201526064016108bc565b6000606854600561277691906137d7565b6080546065546067546069546040516305fdea7f60e11b8152600481019390935260248301919091526044820152606481018390529192506000916001600160a01b0390911690630bfbd4fe90608401600060405180830381865afa1580156127e3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261280b9190810190613b19565b905060016000612819611236565b9050816128745760405162461bcd60e51b815260206004820152602360248201527f4552524f525f494e56414c49445f50524f434553535f4d4553534147455f505260448201526227a7a360e91b60648201526084016108bc565b60788790556074805490600061288983613c31565b91905055505050505050505050565b606f5460ff166128ba5760405162461bcd60e51b81526004016108bc906136ae565b607c60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa15801561290d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129319190613605565b1561294e5760405162461bcd60e51b81526004016108bc90613677565b607c60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c59190613605565b15612a125760405162461bcd60e51b815260206004820152601e60248201527f4552524f525f53544154455f41515f53554254524545535f4d4552474544000060448201526064016108bc565b607d60009054906101000a90046001600160a01b03166001600160a01b031663dda89a6e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a89919061365e565b600114612ad55760405162461bcd60e51b815260206004820152601a6024820152794552524f525f4d4553534147455f41515f4e4f545f454d50545960301b60448201526064016108bc565b6086805460ff19169055612ae8836114f3565b6000604051806101400160405280600080516020613d09833981519152815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250905060006040518060400160405280600080516020613ce98339815191528152602001600080516020613d4983398151915281525090506000604051806040016040528060016002811115612b9e57612b9e613c4c565b815260200184905260708054600190810190915560728054909101905560858690559050612bcc8542613c62565b60845560698690558351608181905560208501516082819055604051635bb9399560e01b815273__$c6850fb4e0ee9ead61bcd830cbea02ad6d$__92635bb9399592612c2392600401918252602082015260400190565b602060405180830381865af4158015612c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c64919061365e565b60735560006074556070546040517f76b880f3c8580b5bb05765c3b2160a2860692566e7f8cce8c58d23e77f3130c291612ca19130908890613c7a565b60405180910390a1600080516020613d698339815191528183604051612cc892919061383c565b60405180910390a1505050505050565b612ce0612d7b565b6001600160a01b038116612d455760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108bc565b612d4e81612dda565b50565b612d59612d7b565b608080546001600160a01b0319166001600160a01b0392909216919091179055565b33612d8461201e565b6001600160a01b0316146116785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108bc565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16612e535760405162461bcd60e51b81526004016108bc90613c9d565b611678600054610100900460ff16612e7d5760405162461bcd60e51b81526004016108bc90613c9d565b61167833612dda565b6040518060a001604052806005906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b600060208284031215612ef257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f3157612f31612ef9565b60405290565b60405160a081016001600160401b0381118282101715612f3157612f31612ef9565b604051601f8201601f191681016001600160401b0381118282101715612f8157612f81612ef9565b604052919050565b600060408284031215612f9b57600080fd5b612fa3612f0f565b9050813581526020820135602082015292915050565b600082601f830112612fca57600080fd5b81356001600160401b03811115612fe357612fe3612ef9565b612ff6601f8201601f1916602001612f59565b81815284602083860101111561300b57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006080848603121561303d57600080fd5b6130478585612f89565b925060408401356001600160401b038082111561306357600080fd5b61306f87838801612fb9565b9350606086013591508082111561308557600080fd5b5061309286828701612fb9565b9150509250925092565b60006101608083850312156130b057600080fd5b6130b8612f0f565b915082358252602084603f8501126130cf57600080fd5b60405161014081016001600160401b03811182821017156130f2576130f2612ef9565b60405291840191808684111561310757600080fd5b8286015b84811015613122578035825290830190830161310b565b5050908301525092915050565b6000806101a0838503121561314357600080fd5b61314d848461309c565b915061315d846101608501612f89565b90509250929050565b6000806000806040858703121561317c57600080fd5b84356001600160401b038082111561319357600080fd5b818701915087601f8301126131a757600080fd5b8135818111156131b657600080fd5b886020610160830285010111156131cc57600080fd5b6020928301965094509086013590808211156131e757600080fd5b818701915087601f8301126131fb57600080fd5b81358181111561320a57600080fd5b8860208260061b850101111561321f57600080fd5b95989497505060200194505050565b60006080828403121561324057600080fd5b604051606081016001600160401b038111828210171561326257613262612ef9565b60405261326f8484612f89565b815260408301356020820152606083013560408201528091505092915050565b60006001600160401b038211156132a8576132a8612ef9565b5060051b60200190565b6001600160a01b0381168114612d4e57600080fd5b80356132d2816132b2565b919050565b60008060008060008060008060006101208a8c0312156132f657600080fd5b893598506020808b0135985060408b0135975060608b0135965060808b01356001600160401b0381111561332957600080fd5b8b01601f81018d1361333a57600080fd5b803561334d6133488261328f565b612f59565b81815260059190911b8201830190838101908f83111561336c57600080fd5b928401925b8284101561338a57833582529284019290840190613371565b809950505050505061339e60a08b016132c7565b93506133ac60c08b016132c7565b92506133ba60e08b016132c7565b91506133c96101008b016132c7565b90509295985092959850929598565b600080604083850312156133eb57600080fd5b50508035926020909101359150565b6000806020838503121561340d57600080fd5b82356001600160401b038082111561342457600080fd5b818501915085601f83011261343857600080fd5b81358181111561344757600080fd5b8660208260051b850101111561345c57600080fd5b60209290920196919550909350505050565b6000815180845260005b8181101561349457602081850181015186830182015201613478565b818111156134a6576000602083870101525b50601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561351057603f198886030184526134fe85835161346e565b945092850192908501906001016134e2565b5092979650505050505050565b600080600061014080858703121561353457600080fd5b84359350602080860135935086605f87011261354f57600080fd5b60405161010081016001600160401b038111828210171561357257613572612ef9565b60405291860191808884111561358757600080fd5b604088015b848110156135a3578035825290830190830161358c565b50508093505050509250925092565b6000806000608084860312156135c757600080fd5b83359250602084013591506135df8560408601612f89565b90509250925092565b6000602082840312156135fa57600080fd5b8135611867816132b2565b60006020828403121561361757600080fd5b8151801515811461186757600080fd5b6020808252601f908201527f4552524f525f4d4553534147455f41515f414c52454144595f4d455247454400604082015260600190565b60006020828403121561367057600080fd5b5051919050565b6020808252601d908201527f4552524f525f53544154455f41515f414c52454144595f4d4552474544000000604082015260600190565b602080825260159082015274135050d24e881b9bdd081a5b9a5d1a585b1a5cd959605a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561372e578160001904821115613714576137146136dd565b8085161561372157918102915b93841c93908002906136f8565b509250929050565b600082613745575060016114ed565b81613752575060006114ed565b816001811461376857600281146137725761378e565b60019150506114ed565b60ff841115613783576137836136dd565b50506001821b6114ed565b5060208310610133831016604e8410600b84101617156137b1575081810a6114ed565b6137bb83836136f3565b80600019048211156137cf576137cf6136dd565b029392505050565b60006118678383613736565b6001600160a01b03831681526040602082018190526000906122759083018461346e565b80518252602090810151910152565b84815260a0810161382a6020830186613807565b60608201939093526080015292915050565b825181526020808401516101a08301919081840160005b600a81101561387057825182529183019190830190600101613853565b50505050611867610160830184613807565b634e487b7160e01b600052601260045260246000fd5b6000826138a7576138a7613882565b500690565b6000826138bb576138bb613882565b500490565b60008160001904831182151516156138da576138da6136dd565b500290565b6000828210156138f1576138f16136dd565b500390565b634e487b7160e01b600052603260045260246000fd5b60a08101818360005b6005811015613934578151835260209283019290910190600101613915565b50505092915050565b60608101818360005b6003811015613934578151835260209283019290910190600101613946565b6000610160828403121561397857600080fd5b611867838361309c565b60006040828403121561399457600080fd5b6118678383612f89565b600060ff821660ff8114156139b5576139b56136dd565b60010192915050565b60808101818360005b60048110156139345781518352602092830192909101906001016139c7565b6020808252601290820152710929c869ea4a48a86a840a6aa84888aa0a8960731b604082015260600190565b60408101818360005b6002811015613934578151835260209283019290910190600101613a1b565b600060408284031215613a4c57600080fd5b613a54612f0f565b9050815181526020820151602082015292915050565b600082601f830112613a7b57600080fd5b604080519081016001600160401b0381118282101715613a9d57613a9d612ef9565b8060405250806040840185811115613ab457600080fd5b845b81811015613ace578051835260209283019201613ab6565b509195945050505050565b600060808284031215613aeb57600080fd5b613af3612f0f565b9050613aff8383613a6a565b8152613b0e8360408401613a6a565b602082015292915050565b60006020808385031215613b2c57600080fd5b82516001600160401b0380821115613b4357600080fd5b908401906101e08287031215613b5857600080fd5b613b60612f37565b613b6a8784613a3a565b81526040613b7a88828601613ad9565b85830152613b8b8860c08601613ad9565b81830152613b9d886101408601613ad9565b60608301526101c084015183811115613bb557600080fd5b80850194505087601f850112613bca57600080fd5b83519250613bda6133488461328f565b83815260069390931b84018501928581019089851115613bf957600080fd5b948601945b84861015613c1f57613c108a87613a3a565b82529482019490860190613bfe565b60808401525090979650505050505050565b6000600019821415613c4557613c456136dd565b5060010190565b634e487b7160e01b600052602160045260246000fd5b60008219821115613c7557613c756136dd565b500190565b8381526001600160a01b0383166020820152608081016122756040830184613807565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe171e826ad4a870fd925e0bf0e87884e70e080879c2205ef10114f28a3b6f6dd712817f4161f2f5ded33f26c55735a77e80e4f8975483c8c2704745128417f71130644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000012bd407d897fbbca9f88adfd2d15252e69de8c1564eb4d3d27162e259172f1a1de2067f06dd7b8159b21a5490f8663f6bb031d9b35ed6d298b5489674cb9cda4ba2646970667358221220cc66c04d1d0fef90174f5ddc9fa31265ed24c1ec1a50f469ebafaed591bffb2764736f6c634300080a0033171e826ad4a870fd925e0bf0e87884e70e080879c2205ef10114f28a3b6f6dd72bd407d897fbbca9f88adfd2d15252e69de8c1564eb4d3d27162e259172f1a1d"; + +type JubjubConstructorParams = + | [linkLibraryAddresses: JubjubLibraryAddresses, signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: JubjubConstructorParams +): xs is ConstructorParameters => { + return ( + typeof xs[0] === "string" || + (Array.isArray as (arg: any) => arg is readonly any[])(xs[0]) || + "_isInterface" in xs[0] + ); +}; + +export class Jubjub__factory extends ContractFactory { + constructor(...args: JubjubConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + const [linkLibraryAddresses, signer] = args; + super(_abi, Jubjub__factory.linkBytecode(linkLibraryAddresses), signer); + } + } + + static linkBytecode(linkLibraryAddresses: JubjubLibraryAddresses): string { + let linkedBytecode = _bytecode; + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$56e03346d0918fb20a2db08690fd2c2075\\$__", "g"), + linkLibraryAddresses["contracts/poseidon/PoseidonT5.sol:PoseidonT5"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$e63b1c9f9b66f613a0dd27ec595fdb417f\\$__", "g"), + linkLibraryAddresses["contracts/poseidon/PoseidonT6.sol:PoseidonT6"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$8f0718d15a58b4353249f9bf6422c5f00e\\$__", "g"), + linkLibraryAddresses["contracts/poseidon/PoseidonT4.sol:PoseidonT4"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$c6850fb4e0ee9ead61bcd830cbea02ad6d\\$__", "g"), + linkLibraryAddresses["contracts/poseidon/PoseidonT3.sol:PoseidonT3"] + .replace(/^0x/, "") + .toLowerCase() + ); + + return linkedBytecode; + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): Jubjub { + return super.attach(address) as Jubjub; + } + override connect(signer: Signer): Jubjub__factory { + return super.connect(signer) as Jubjub__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): JubjubInterface { + return new utils.Interface(_abi) as JubjubInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): Jubjub { + return new Contract(address, _abi, signerOrProvider) as Jubjub; + } +} + +export interface JubjubLibraryAddresses { + ["contracts/poseidon/PoseidonT5.sol:PoseidonT5"]: string; + ["contracts/poseidon/PoseidonT6.sol:PoseidonT6"]: string; + ["contracts/poseidon/PoseidonT4.sol:PoseidonT4"]: string; + ["contracts/poseidon/PoseidonT3.sol:PoseidonT3"]: string; +} diff --git a/packages/app/src/typechain/factories/contracts/MessageTree__factory.ts b/packages/app/src/typechain/factories/contracts/MessageTree__factory.ts new file mode 100644 index 00000000..812ef81e --- /dev/null +++ b/packages/app/src/typechain/factories/contracts/MessageTree__factory.ts @@ -0,0 +1,499 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BigNumberish, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../common"; +import type { + MessageTree, + MessageTreeInterface, +} from "../../contracts/MessageTree"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "_subDepth", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [], + name: "MAX_DEPTH", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "calcMinHeight", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "currentSubtreeIndex", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_leaf", + type: "uint256", + }, + ], + name: "enqueue", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "fill", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_depth", + type: "uint256", + }, + ], + name: "getMainRoot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSmallSRTroot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSrIndices", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_index", + type: "uint256", + }, + ], + name: "getSubRoot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_level", + type: "uint256", + }, + { + internalType: "uint256", + name: "_leaf", + type: "uint256", + }, + ], + name: "hashLevelLeaf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_subRoot", + type: "uint256", + }, + ], + name: "insertSubTree", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "mainRoots", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_depth", + type: "uint256", + }, + ], + name: "merge", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_numSrQueueOps", + type: "uint256", + }, + ], + name: "mergeSubRoots", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "numLeaves", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "smallSRTroot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "subDepth", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "subRoots", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "subTreesMerged", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "treeMerged", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x60e06040523480156200001157600080fd5b506040516200258f3803806200258f833981016040819052620000349162000673565b80806005600082116200009e5760405162461bcd60e51b815260206004820152602760248201527f41636351756575653a205f7375624465707468206d757374206265206d6f72656044820152660207468616e20360cc1b60648201526084015b60405180910390fd5b6020821115620001085760405162461bcd60e51b815260206004820152602e60248201527f41636351756575653a206f6e6c7920737570706f72747320757020746f204d4160448201526d585f4445505448206c6576656c7360901b606482015260840162000095565b8060021480620001185750806005145b6200017c5760405162461bcd60e51b815260206004820152602d60248201527f41636351756575653a206f6e6c7920737570706f727473205f686173684c656e60448201526c677468206f662032206f72203560981b606482015260840162000095565b6065805460ff191660028314179055608082905260a0819052620001a18282620007a2565b60c05250507f0ef71f46e11a513c599eed9dd03576c33439bcfb1cee155316f90541e41649ba6101d75550507f0404a2ed0a1df2006441895d9a65ffffdd4968cb5f555fe72a6da7aaec83e1a06101d8557f0b1c3d09dd575749a374a9dc1ee32af8c2312e24ad33a3e40fce8120b0f25fe36101d9557f1f60ed72fc1915366d2e52cfc7ddc0ff854c7aee9abbc07d1ca88ada842354dc6101da557f2ca1efc603fc121baf791319195ee3ab7fa075cee664d008f9ab2870f50283606101db557f2a0381fc4fb108733dfc58c355f2de753bcde61bd988eaa7d33fc967262be5ad6101dc557f12c6c7cce0332367373dafc95d75b98dd58980410434929dff09466a4ba262db6101dd557f2f212d3cc7e7334c4a10ced1be011b9cd70f73cca5522fc4137a51be8a17d18e6101de557f0968ef20d515d8d743b2cf66603f8b86f3fdeee932fdc911774bb8699566e11c6101df557f2e3604981890fb676c3dac1e14c5c201573f99d1b9e67025109baf274b10e9dd6101e0557f147d317fd4b7a1dd6cb961cfba444466b3c431ea638c8df74a89fc591d1a3a516101e1557f10ea2b72952b619afd5b9bc50561df8de0c6e1ba9b5ad66b179c39c420304a756101e2557f1c49f7b357d244d9144676ad23f79465ef5b88ef0f91762a3d35997688af9a5a6101e3557f05ca0cfef8158efc5c4af44122e2765179b5463618d5c5ac6185c192332cade96101e4557f0ae1595634e8a2e23620f33f9b2b5a23387a28f5833814646900110842f3a1096101e5557f08be8c2a6a099d9cdc96f9197af6ad99595d73419eb0694eaea432fa18baa2036101e6557f207f689ce35cf857ee6e68c42d31bb2191d1e84d7a295ccd63995ca7369d20eb6101e7557f2a6f6b7e4a2cd1a6466ed17debb0a27904e99adbd72be85566a87340f41efd056101e8557f0f0725795350566920bbf56d3f22c4d38e832e638c9cb91811f83194e9dd74be6101e9557f02cd50632e5c5b00a9a93f434797725ec0f85f11ba1b6a844f0cd10c70df63926101ea557f08868b85d2fa4c17eec0a7d8bca4671a00474bff80e801981437b77aa11d10b56101eb557f294a84b7b46ea0a781877a2c0efd1ee56758d9ee55722721867efe53f46452866101ec557f02cb8070979a018bb919f0d1a25d5ad3d5a376c4cf66f36d33434d221ca77e886101ed557f05dfce8303f471d776762f2ddd37f05191b8bf5064d8d28e892cd4ec21e7aab46101ee557f28a47617aa1e26bf42fd3b26e88aa717fd759bb92b22faaf5ad82090680b52316101ef557f1de9253f5fa546603817abd83d1a13c8562f2bf6a0069a546fe546ca0c03c1706101f0557f1cb9bd316e341b873dbbef94fd699c6e3a638451de2817db1620235db2b6c39e6101f1557f0654785b2917d7c659a95738add3d8eb51cbbefc0f521c2640bc74b0fec581626101f2557f2eed74eacf5de60a758f815cb5e73015455c38408143fc25810d03e1ec9e35246101f3557f16bea3363deb4753db67be8b19110b169ae39f33113a92773c41a8b025ca5a936101f4557f2b0dd3b7e0a7e234a4a1b48dd0e9083dc8bfc8cd7f72abdb93a1b8e5ef3e22ed6101f5557f0bc1ca795d5a059b1dc0c51f72c46f2288cb139ebf09f38ac3e8bca0485ed4976101f6557f249ca1610a7f80bbf422388c18ef9777fcdab26ee718e2b39e4011973a9023306101f755620007b7565b6000602082840312156200068657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006e4578160001904821115620006c857620006c86200068d565b80851615620006d657918102915b93841c9390800290620006a8565b509250929050565b600082620006fd575060016200079c565b816200070c575060006200079c565b8160018114620007255760028114620007305762000750565b60019150506200079c565b60ff8411156200074457620007446200068d565b50506001821b6200079c565b5060208310610133831016604e8410600b841016171562000775575081810a6200079c565b620007818383620006a3565b80600019048211156200079857620007986200068d565b0290505b92915050565b6000620007b08383620006ec565b9392505050565b60805160a05160c051611d236200086c600039600081816103f901528181610bd501528181610cd701528181610e960152610f960152600081816102fc0152818161062a015281816108b701528181610dca015281816111cb0152818161137001526116b001526000818161022601528181610426015281816104870152818161060001528181610e0401528181610ecc01528181610f16015281816111430152818161122201526115eb0152611d236000f3fe608060405234801561001057600080fd5b50600436106101285760003560e01c80631b9b8aa71461012d5780631ffc735d1461015357806324a47aeb146101665780633bfa6fce146101795780633e1a8cc1146101815780634d60dea0146101895780634ee3ab51146101925780635bf1fa4d1461019c57806360fd4010146101af57806369e7c586146101d0578063715018a6146101f35780638129fc1c146101fd57806381d6a24a146102055780638858718e146102215780638da5cb5b14610248578063a27154ba14610268578063b6a64acd14610270578063c00bdbcc1461027e578063c15da65b14610291578063d9c55ce1146102a4578063dda89a6e146102ac578063e93fb4d4146102b6578063ed3adab3146102c9578063f2fde38b146102dc575b600080fd5b61014061013b3660046119de565b6102ef565b6040519081526020015b60405180910390f35b6101406101613660046119de565b6103a9565b6101406101743660046119de565b6104d6565b6101406108a9565b6101406108f7565b61014060665481565b6101406101d45481565b6101406101aa3660046119f7565b610953565b6101406101bd3660046119de565b6101b16020526000908152604090205481565b6101d3546101e390610100900460ff1681565b604051901515815260200161014a565b6101fb610a6f565b005b6101fb610a83565b6101d5546066546040805192835260208301919091520161014a565b6101407f000000000000000000000000000000000000000000000000000000000000000081565b610250610b94565b6040516001600160a01b03909116815260200161014a565b610140602081565b6101d3546101e39060ff1681565b6101fb61028c3660046119de565b610ba3565b6101fb61029f3660046119de565b610c1f565b6101fb610e8c565b6101406101d65481565b6101406102c43660046119de565b610fd3565b6101406102d73660046119de565b611054565b6101fb6102ea366004611a19565b61106c565b6101d654600090610320837f0000000000000000000000000000000000000000000000000000000000000000611b43565b101561038d5760405162461bcd60e51b815260206004820152603160248201527f41636351756575653a206765744d61696e526f6f743a205f6465707468206d756044820152700e6e840c4ca40d0d2ced040cadcdeeaced607b1b60648201526084015b60405180910390fd5b6101b282602181106103a1576103a1611b4f565b015492915050565b60006103b36110e2565b6101d6546103c2836000611141565b6103cd816001611b65565b6101d6556103de6101b26000611932565b60006101d4556101d3805460ff191690556101d65461041e907f000000000000000000000000000000000000000000000000000000000000000090611b7d565b6104ce5760677f00000000000000000000000000000000000000000000000000000000000000006021811061045557610455611b4f565b60040201546066805460009081526101b1602052604081209290925580549161047d83611b9f565b90915550606790507f0000000000000000000000000000000000000000000000000000000000000000602181106104b6576104b6611b4f565b6004020160008091018190556104ce9060eb90611932565b90505b919050565b60006104e06110e2565b6000821161053c5760405162461bcd60e51b8152602060048201526024808201527f41636351756575653a205f6465707468206d757374206265206d6f72652074686044820152630616e20360e41b6064820152608401610384565b6101d35460ff1661059e5760405162461bcd60e51b81526020600482015260386024820152600080516020611cce83398151915260448201527764206265666f72652063616c6c696e67206d65726765282960401b6064820152608401610384565b60208211156105fe5760405162461bcd60e51b815260206004820152602660248201527f41636351756575653a205f6465707468206d757374206265206c7465204d41586044820152650be888aa0a8960d31b6064820152608401610384565b7f00000000000000000000000000000000000000000000000000000000000000005b6101d65461064e827f0000000000000000000000000000000000000000000000000000000000000000611b43565b106106585761066a565b8061066281611b9f565b915050610620565b808310156106cd5760405162461bcd60e51b815260206004820152602a60248201527f41636351756575653a205f6465707468206d7573742062652067746520746865604482015269040a6a4a840c8cae0e8d60b31b6064820152608401610384565b8083141561070a576101d4546101b284602181106106ed576106ed611b4f565b015550506101d3805461ff0019166101001790556101d454919050565b6101d454815b84811015610878576000610723826112ab565b60655490915060ff16156107c357610739611941565b838152602081018290526040516362a361bb60e01b815273__$c6e409f5c6bff7020676808cc3963e859e$__906362a361bb9061077a908490600401611bba565b602060405180830381865af4158015610797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bb9190611beb565b935050610865565b6107cb61195f565b838152602081018290526040808201839052606082018390526080820183905251639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790610820908490600401611c04565b602060405180830381865af415801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108619190611beb565b9350505b508061087081611b9f565b915050610710565b50806101b2856021811061088e5761088e611b4f565b01556101d3805461ff00191661010017905591506104d19050565b600060015b6066546108db827f0000000000000000000000000000000000000000000000000000000000000000611b43565b106108e557919050565b806108ef81611b9f565b9150506108ae565b6101d35460009060ff1661094b5760405162461bcd60e51b81526020600482015260276024820152600080516020611cce8339815191526044820152661908199a5c9cdd60ca1b6064820152608401610384565b506101d45490565b600061095d61195f565b6067846021811061097057610970611b4f565b600402015481526067846021811061098a5761098a611b4f565b60040201600101548160016020020152606784602181106109ad576109ad611b4f565b60040201600201548160026020020152606784602181106109d0576109d0611b4f565b60040201600301548160036020020152828160046020020152604051639cfced9760e01b815260009073__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790610a23908590600401611c04565b602060405180830381865af4158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a649190611beb565b925050505b92915050565b610a776110e2565b610a8160006112c1565b565b600054610100900460ff1615808015610aa35750600054600160ff909116105b80610abd5750303b158015610abd575060005460ff166001145b610b205760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610384565b6000805460ff191660011790558015610b43576000805461ff0019166101001790555b610b4b611313565b8015610b91576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6033546001600160a01b031690565b610bab6110e2565b6066805460009081526101b16020526040812083905581549190610bce83611b9f565b91905055507f00000000000000000000000000000000000000000000000000000000000000006101d66000828254610c069190611b65565b909155505060006101d455506101d3805460ff19169055565b610c276110e2565b6101d35460ff1615610c855760405162461bcd60e51b815260206004820152602160248201527f41636351756575653a20737562747265657320616c7265616479206d657267656044820152601960fa1b6064820152608401610384565b60006101d65411610cd55760405162461bcd60e51b815260206004820152601a60248201527941636351756575653a206e6f7468696e6720746f206d6572676560301b6044820152606401610384565b7f00000000000000000000000000000000000000000000000000000000000000006101d654610d049190611b7d565b15610d1157610d11610e8c565b60665460011415610d3b57610d266000610fd3565b6101d4556101d3805460ff1916600117905550565b6000610d456108a9565b6101d5549091506000905b606654811015610dc1578315801590610d6857508382145b15610d735750505050565b610d8a610d826101d554610fd3565b600085611342565b6101d58054906000610d9b83611b9f565b91905055508180610dab90611b9f565b9250508080610db990611b9f565b915050610d50565b506000610dee837f0000000000000000000000000000000000000000000000000000000000000000611b43565b90506066546101d5541415610e58576000610e287f00000000000000000000000000000000000000000000000000000000000000006112ab565b6066549091505b82811015610e5557610e4382600087611342565b80610e4d81611b9f565b915050610e2f565b50505b61010c8360218110610e6c57610e6c611b4f565b60040201600001546101d45550506101d3805460ff191660011790555050565b610e946110e2565b7f00000000000000000000000000000000000000000000000000000000000000006101d654610ec39190611b7d565b610f0857610ef07f00000000000000000000000000000000000000000000000000000000000000006112ab565b60665460009081526101b16020526040902055610f79565b610f1260006115e9565b60677f000000000000000000000000000000000000000000000000000000000000000060218110610f4557610f45611b4f565b600402015460665460009081526101b16020526040812091909155610f6c9060679061197d565b610f796101b26000611932565b60006066546001610f8a9190611b65565b60668190559050610fbb7f000000000000000000000000000000000000000000000000000000000000000082611c2c565b6101d6555060006101d4556101d3805460ff19169055565b600081606654116110405760405162461bcd60e51b815260206004820152603160248201527f41636351756575653a205f696e646578206d75737420726566657220746f206160448201527020636f6d706c657465207375627472656560781b6064820152608401610384565b5060009081526101b1602052604090205490565b6101b2816021811061106557600080fd5b0154905081565b6110746110e2565b6001600160a01b0381166110d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610384565b610b91816112c1565b336110eb610b94565b6001600160a01b031614610a815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b7f00000000000000000000000000000000000000000000000000000000000000008111156111ab5760405162461bcd60e51b81526020600482015260176024820152761058d8d45d595d594e881a5b9d985b1a59081b195d995b604a1b6044820152606401610384565b600060eb82602181106111c0576111c0611b4f565b015490506111ef60017f0000000000000000000000000000000000000000000000000000000000000000611c4b565b811461127457826067836021811061120957611209611b4f565b60040201826004811061121e5761121e611b4f565b01557f0000000000000000000000000000000000000000000000000000000000000000821461126f5760eb826021811061125a5761125a611b4f565b01805490600061126983611b9f565b91905055505b505050565b61127e82846117c4565b925060eb826021811061129357611293611b4f565b6000910155816112a281611b9f565b925050506111ab565b60006101d782602181106103a1576103a1611b4f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661133a5760405162461bcd60e51b815260040161038490611c62565b610a81611902565b8082111561134f57505050565b6000610190836021811061136557611365611b4f565b0154905061139460017f0000000000000000000000000000000000000000000000000000000000000000611c4b565b81146113f3578361010c84602181106113af576113af611b4f565b6004020182600481106113c4576113c4611b4f565b015561019083602181106113da576113da611b4f565b0180549060006113e983611b9f565b91905055506115e3565b60655460009060ff16156114ae57611409611941565b61010c856021811061141d5761141d611b4f565b600490810291909101548252602082018790526040516362a361bb60e01b815273__$c6e409f5c6bff7020676808cc3963e859e$__916362a361bb9161146591859101611bba565b602060405180830381865af4158015611482573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a69190611beb565b9150506115b3565b6114b661195f565b60005b838160ff16101561151e5761010c86602181106114d8576114d8611b4f565b600402018160ff16600481106114f0576114f0611b4f565b0154828260ff166005811061150757611507611b4f565b60200201528061151681611cad565b9150506114b9565b508581846005811061153257611532611b4f565b6020020152604051639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced979061156e908490600401611c04565b602060405180830381865af415801561158b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115af9190611beb565b9150505b61019084602181106115c7576115c7611b4f565b60009101556115e1816115db866001611b65565b85611342565b505b50505050565b7f0000000000000000000000000000000000000000000000000000000000000000811015610b9157600060eb826021811061162657611626611b4f565b01549050801561179957600061163a61195f565b6000611645856112ab565b905060005b848160ff1610156116ae576067866021811061166857611668611b4f565b600402018160ff166004811061168057611680611b4f565b0154838260ff166005811061169757611697611b4f565b6020020152806116a681611cad565b91505061164a565b7f00000000000000000000000000000000000000000000000000000000000000008160ff1610156117065781838260ff16600581106116ef576116ef611b4f565b6020020152806116fe81611cad565b9150506116ae565b604051639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced979061173d908690600401611c04565b602060405180830381865af415801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190611beb565b93506117948461178f886001611b65565b611141565b505050505b60eb82602181106117ac576117ac611b4f565b6000910155816117bb81611b9f565b925050506115e9565b60006117ce61195f565b606784602181106117e1576117e1611b4f565b60040201548152606784602181106117fb576117fb611b4f565b600402016001015481600160200201526067846021811061181e5761181e611b4f565b600402016002015481600260200201526067846021811061184157611841611b4f565b60040201600301548160036020020152828160046020020152604051639cfced9760e01b815260009073__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790611894908590600401611c04565b602060405180830381865af41580156118b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d59190611beb565b9050606785602181106118ea576118ea611b4f565b6004020160006118fa919061198c565b949350505050565b600054610100900460ff166119295760405162461bcd60e51b815260040161038490611c62565b610a81336112c1565b50610b919060218101906119a8565b60405180604001604052806002906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b50610b919060848101906119c1565b5060008155600101600081556001016000815560010160009055565b5b808211156119bd57600081556001016119a9565b5090565b808211156119bd5760006119d5828261198c565b506004016119c1565b6000602082840312156119f057600080fd5b5035919050565b60008060408385031215611a0a57600080fd5b50508035926020909101359150565b600060208284031215611a2b57600080fd5b81356001600160a01b0381168114611a4257600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611a9a578160001904821115611a8057611a80611a49565b80851615611a8d57918102915b93841c9390800290611a64565b509250929050565b600082611ab157506001610a69565b81611abe57506000610a69565b8160018114611ad45760028114611ade57611afa565b6001915050610a69565b60ff841115611aef57611aef611a49565b50506001821b610a69565b5060208310610133831016604e8410600b8410161715611b1d575081810a610a69565b611b278383611a5f565b8060001904821115611b3b57611b3b611a49565b029392505050565b6000611a428383611aa2565b634e487b7160e01b600052603260045260246000fd5b60008219821115611b7857611b78611a49565b500190565b600082611b9a57634e487b7160e01b600052601260045260246000fd5b500690565b6000600019821415611bb357611bb3611a49565b5060010190565b60408101818360005b6002811015611be2578151835260209283019290910190600101611bc3565b50505092915050565b600060208284031215611bfd57600080fd5b5051919050565b60a08101818360005b6005811015611be2578151835260209283019290910190600101611c0d565b6000816000190483118215151615611c4657611c46611a49565b500290565b600082821015611c5d57611c5d611a49565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060ff821660ff811415611cc457611cc4611a49565b6001019291505056fe41636351756575653a207375627472656573206d757374206265206d65726765a2646970667358221220f80649095d1eb7e10092d74b15b65a36f51aba410679d6ea18218150930d38ee64736f6c634300080a0033"; + +type MessageTreeConstructorParams = + | [linkLibraryAddresses: MessageTreeLibraryAddresses, signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: MessageTreeConstructorParams +): xs is ConstructorParameters => { + return ( + typeof xs[0] === "string" || + (Array.isArray as (arg: any) => arg is readonly any[])(xs[0]) || + "_isInterface" in xs[0] + ); +}; + +export class MessageTree__factory extends ContractFactory { + constructor(...args: MessageTreeConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + const [linkLibraryAddresses, signer] = args; + super( + _abi, + MessageTree__factory.linkBytecode(linkLibraryAddresses), + signer + ); + } + } + + static linkBytecode( + linkLibraryAddresses: MessageTreeLibraryAddresses + ): string { + let linkedBytecode = _bytecode; + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$c6e409f5c6bff7020676808cc3963e859e\\$__", "g"), + linkLibraryAddresses["contracts/AccQueue.sol:PoseidonT3"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$cedc09603cb2be64c780c22aabaab86809\\$__", "g"), + linkLibraryAddresses["contracts/AccQueue.sol:PoseidonT6"] + .replace(/^0x/, "") + .toLowerCase() + ); + + return linkedBytecode; + } + + override deploy( + _subDepth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(_subDepth, overrides || {}) as Promise; + } + override getDeployTransaction( + _subDepth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(_subDepth, overrides || {}); + } + override attach(address: string): MessageTree { + return super.attach(address) as MessageTree; + } + override connect(signer: Signer): MessageTree__factory { + return super.connect(signer) as MessageTree__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): MessageTreeInterface { + return new utils.Interface(_abi) as MessageTreeInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): MessageTree { + return new Contract(address, _abi, signerOrProvider) as MessageTree; + } +} + +export interface MessageTreeLibraryAddresses { + ["contracts/AccQueue.sol:PoseidonT3"]: string; + ["contracts/AccQueue.sol:PoseidonT6"]: string; +} diff --git a/packages/app/src/typechain/factories/contracts/StateTree__factory.ts b/packages/app/src/typechain/factories/contracts/StateTree__factory.ts new file mode 100644 index 00000000..c6f4cf1d --- /dev/null +++ b/packages/app/src/typechain/factories/contracts/StateTree__factory.ts @@ -0,0 +1,494 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BigNumberish, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../common"; +import type { StateTree, StateTreeInterface } from "../../contracts/StateTree"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "_subDepth", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [], + name: "MAX_DEPTH", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "calcMinHeight", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "currentSubtreeIndex", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_leaf", + type: "uint256", + }, + ], + name: "enqueue", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "fill", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_depth", + type: "uint256", + }, + ], + name: "getMainRoot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSmallSRTroot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSrIndices", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_index", + type: "uint256", + }, + ], + name: "getSubRoot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_level", + type: "uint256", + }, + { + internalType: "uint256", + name: "_leaf", + type: "uint256", + }, + ], + name: "hashLevelLeaf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_subRoot", + type: "uint256", + }, + ], + name: "insertSubTree", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "mainRoots", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_depth", + type: "uint256", + }, + ], + name: "merge", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_numSrQueueOps", + type: "uint256", + }, + ], + name: "mergeSubRoots", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "numLeaves", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "smallSRTroot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "subDepth", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "subRoots", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "subTreesMerged", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "treeMerged", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x60e06040523480156200001157600080fd5b506040516200258f3803806200258f833981016040819052620000349162000673565b80806005600082116200009e5760405162461bcd60e51b815260206004820152602760248201527f41636351756575653a205f7375624465707468206d757374206265206d6f72656044820152660207468616e20360cc1b60648201526084015b60405180910390fd5b6020821115620001085760405162461bcd60e51b815260206004820152602e60248201527f41636351756575653a206f6e6c7920737570706f72747320757020746f204d4160448201526d585f4445505448206c6576656c7360901b606482015260840162000095565b8060021480620001185750806005145b6200017c5760405162461bcd60e51b815260206004820152602d60248201527f41636351756575653a206f6e6c7920737570706f727473205f686173684c656e60448201526c677468206f662032206f72203560981b606482015260840162000095565b6065805460ff191660028314179055608082905260a0819052620001a18282620007a2565b60c05250507f0ef71f46e11a513c599eed9dd03576c33439bcfb1cee155316f90541e41649ba6101d75550507f0404a2ed0a1df2006441895d9a65ffffdd4968cb5f555fe72a6da7aaec83e1a06101d8557f0b1c3d09dd575749a374a9dc1ee32af8c2312e24ad33a3e40fce8120b0f25fe36101d9557f1f60ed72fc1915366d2e52cfc7ddc0ff854c7aee9abbc07d1ca88ada842354dc6101da557f2ca1efc603fc121baf791319195ee3ab7fa075cee664d008f9ab2870f50283606101db557f2a0381fc4fb108733dfc58c355f2de753bcde61bd988eaa7d33fc967262be5ad6101dc557f12c6c7cce0332367373dafc95d75b98dd58980410434929dff09466a4ba262db6101dd557f2f212d3cc7e7334c4a10ced1be011b9cd70f73cca5522fc4137a51be8a17d18e6101de557f0968ef20d515d8d743b2cf66603f8b86f3fdeee932fdc911774bb8699566e11c6101df557f2e3604981890fb676c3dac1e14c5c201573f99d1b9e67025109baf274b10e9dd6101e0557f147d317fd4b7a1dd6cb961cfba444466b3c431ea638c8df74a89fc591d1a3a516101e1557f10ea2b72952b619afd5b9bc50561df8de0c6e1ba9b5ad66b179c39c420304a756101e2557f1c49f7b357d244d9144676ad23f79465ef5b88ef0f91762a3d35997688af9a5a6101e3557f05ca0cfef8158efc5c4af44122e2765179b5463618d5c5ac6185c192332cade96101e4557f0ae1595634e8a2e23620f33f9b2b5a23387a28f5833814646900110842f3a1096101e5557f08be8c2a6a099d9cdc96f9197af6ad99595d73419eb0694eaea432fa18baa2036101e6557f207f689ce35cf857ee6e68c42d31bb2191d1e84d7a295ccd63995ca7369d20eb6101e7557f2a6f6b7e4a2cd1a6466ed17debb0a27904e99adbd72be85566a87340f41efd056101e8557f0f0725795350566920bbf56d3f22c4d38e832e638c9cb91811f83194e9dd74be6101e9557f02cd50632e5c5b00a9a93f434797725ec0f85f11ba1b6a844f0cd10c70df63926101ea557f08868b85d2fa4c17eec0a7d8bca4671a00474bff80e801981437b77aa11d10b56101eb557f294a84b7b46ea0a781877a2c0efd1ee56758d9ee55722721867efe53f46452866101ec557f02cb8070979a018bb919f0d1a25d5ad3d5a376c4cf66f36d33434d221ca77e886101ed557f05dfce8303f471d776762f2ddd37f05191b8bf5064d8d28e892cd4ec21e7aab46101ee557f28a47617aa1e26bf42fd3b26e88aa717fd759bb92b22faaf5ad82090680b52316101ef557f1de9253f5fa546603817abd83d1a13c8562f2bf6a0069a546fe546ca0c03c1706101f0557f1cb9bd316e341b873dbbef94fd699c6e3a638451de2817db1620235db2b6c39e6101f1557f0654785b2917d7c659a95738add3d8eb51cbbefc0f521c2640bc74b0fec581626101f2557f2eed74eacf5de60a758f815cb5e73015455c38408143fc25810d03e1ec9e35246101f3557f16bea3363deb4753db67be8b19110b169ae39f33113a92773c41a8b025ca5a936101f4557f2b0dd3b7e0a7e234a4a1b48dd0e9083dc8bfc8cd7f72abdb93a1b8e5ef3e22ed6101f5557f0bc1ca795d5a059b1dc0c51f72c46f2288cb139ebf09f38ac3e8bca0485ed4976101f6557f249ca1610a7f80bbf422388c18ef9777fcdab26ee718e2b39e4011973a9023306101f755620007b7565b6000602082840312156200068657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006e4578160001904821115620006c857620006c86200068d565b80851615620006d657918102915b93841c9390800290620006a8565b509250929050565b600082620006fd575060016200079c565b816200070c575060006200079c565b8160018114620007255760028114620007305762000750565b60019150506200079c565b60ff8411156200074457620007446200068d565b50506001821b6200079c565b5060208310610133831016604e8410600b841016171562000775575081810a6200079c565b620007818383620006a3565b80600019048211156200079857620007986200068d565b0290505b92915050565b6000620007b08383620006ec565b9392505050565b60805160a05160c051611d236200086c600039600081816103f901528181610bd501528181610cd701528181610e960152610f960152600081816102fc0152818161062a015281816108b701528181610dca015281816111cb0152818161137001526116b001526000818161022601528181610426015281816104870152818161060001528181610e0401528181610ecc01528181610f16015281816111430152818161122201526115eb0152611d236000f3fe608060405234801561001057600080fd5b50600436106101285760003560e01c80631b9b8aa71461012d5780631ffc735d1461015357806324a47aeb146101665780633bfa6fce146101795780633e1a8cc1146101815780634d60dea0146101895780634ee3ab51146101925780635bf1fa4d1461019c57806360fd4010146101af57806369e7c586146101d0578063715018a6146101f35780638129fc1c146101fd57806381d6a24a146102055780638858718e146102215780638da5cb5b14610248578063a27154ba14610268578063b6a64acd14610270578063c00bdbcc1461027e578063c15da65b14610291578063d9c55ce1146102a4578063dda89a6e146102ac578063e93fb4d4146102b6578063ed3adab3146102c9578063f2fde38b146102dc575b600080fd5b61014061013b3660046119de565b6102ef565b6040519081526020015b60405180910390f35b6101406101613660046119de565b6103a9565b6101406101743660046119de565b6104d6565b6101406108a9565b6101406108f7565b61014060665481565b6101406101d45481565b6101406101aa3660046119f7565b610953565b6101406101bd3660046119de565b6101b16020526000908152604090205481565b6101d3546101e390610100900460ff1681565b604051901515815260200161014a565b6101fb610a6f565b005b6101fb610a83565b6101d5546066546040805192835260208301919091520161014a565b6101407f000000000000000000000000000000000000000000000000000000000000000081565b610250610b94565b6040516001600160a01b03909116815260200161014a565b610140602081565b6101d3546101e39060ff1681565b6101fb61028c3660046119de565b610ba3565b6101fb61029f3660046119de565b610c1f565b6101fb610e8c565b6101406101d65481565b6101406102c43660046119de565b610fd3565b6101406102d73660046119de565b611054565b6101fb6102ea366004611a19565b61106c565b6101d654600090610320837f0000000000000000000000000000000000000000000000000000000000000000611b43565b101561038d5760405162461bcd60e51b815260206004820152603160248201527f41636351756575653a206765744d61696e526f6f743a205f6465707468206d756044820152700e6e840c4ca40d0d2ced040cadcdeeaced607b1b60648201526084015b60405180910390fd5b6101b282602181106103a1576103a1611b4f565b015492915050565b60006103b36110e2565b6101d6546103c2836000611141565b6103cd816001611b65565b6101d6556103de6101b26000611932565b60006101d4556101d3805460ff191690556101d65461041e907f000000000000000000000000000000000000000000000000000000000000000090611b7d565b6104ce5760677f00000000000000000000000000000000000000000000000000000000000000006021811061045557610455611b4f565b60040201546066805460009081526101b1602052604081209290925580549161047d83611b9f565b90915550606790507f0000000000000000000000000000000000000000000000000000000000000000602181106104b6576104b6611b4f565b6004020160008091018190556104ce9060eb90611932565b90505b919050565b60006104e06110e2565b6000821161053c5760405162461bcd60e51b8152602060048201526024808201527f41636351756575653a205f6465707468206d757374206265206d6f72652074686044820152630616e20360e41b6064820152608401610384565b6101d35460ff1661059e5760405162461bcd60e51b81526020600482015260386024820152600080516020611cce83398151915260448201527764206265666f72652063616c6c696e67206d65726765282960401b6064820152608401610384565b60208211156105fe5760405162461bcd60e51b815260206004820152602660248201527f41636351756575653a205f6465707468206d757374206265206c7465204d41586044820152650be888aa0a8960d31b6064820152608401610384565b7f00000000000000000000000000000000000000000000000000000000000000005b6101d65461064e827f0000000000000000000000000000000000000000000000000000000000000000611b43565b106106585761066a565b8061066281611b9f565b915050610620565b808310156106cd5760405162461bcd60e51b815260206004820152602a60248201527f41636351756575653a205f6465707468206d7573742062652067746520746865604482015269040a6a4a840c8cae0e8d60b31b6064820152608401610384565b8083141561070a576101d4546101b284602181106106ed576106ed611b4f565b015550506101d3805461ff0019166101001790556101d454919050565b6101d454815b84811015610878576000610723826112ab565b60655490915060ff16156107c357610739611941565b838152602081018290526040516362a361bb60e01b815273__$c6e409f5c6bff7020676808cc3963e859e$__906362a361bb9061077a908490600401611bba565b602060405180830381865af4158015610797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bb9190611beb565b935050610865565b6107cb61195f565b838152602081018290526040808201839052606082018390526080820183905251639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790610820908490600401611c04565b602060405180830381865af415801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108619190611beb565b9350505b508061087081611b9f565b915050610710565b50806101b2856021811061088e5761088e611b4f565b01556101d3805461ff00191661010017905591506104d19050565b600060015b6066546108db827f0000000000000000000000000000000000000000000000000000000000000000611b43565b106108e557919050565b806108ef81611b9f565b9150506108ae565b6101d35460009060ff1661094b5760405162461bcd60e51b81526020600482015260276024820152600080516020611cce8339815191526044820152661908199a5c9cdd60ca1b6064820152608401610384565b506101d45490565b600061095d61195f565b6067846021811061097057610970611b4f565b600402015481526067846021811061098a5761098a611b4f565b60040201600101548160016020020152606784602181106109ad576109ad611b4f565b60040201600201548160026020020152606784602181106109d0576109d0611b4f565b60040201600301548160036020020152828160046020020152604051639cfced9760e01b815260009073__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790610a23908590600401611c04565b602060405180830381865af4158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a649190611beb565b925050505b92915050565b610a776110e2565b610a8160006112c1565b565b600054610100900460ff1615808015610aa35750600054600160ff909116105b80610abd5750303b158015610abd575060005460ff166001145b610b205760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610384565b6000805460ff191660011790558015610b43576000805461ff0019166101001790555b610b4b611313565b8015610b91576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6033546001600160a01b031690565b610bab6110e2565b6066805460009081526101b16020526040812083905581549190610bce83611b9f565b91905055507f00000000000000000000000000000000000000000000000000000000000000006101d66000828254610c069190611b65565b909155505060006101d455506101d3805460ff19169055565b610c276110e2565b6101d35460ff1615610c855760405162461bcd60e51b815260206004820152602160248201527f41636351756575653a20737562747265657320616c7265616479206d657267656044820152601960fa1b6064820152608401610384565b60006101d65411610cd55760405162461bcd60e51b815260206004820152601a60248201527941636351756575653a206e6f7468696e6720746f206d6572676560301b6044820152606401610384565b7f00000000000000000000000000000000000000000000000000000000000000006101d654610d049190611b7d565b15610d1157610d11610e8c565b60665460011415610d3b57610d266000610fd3565b6101d4556101d3805460ff1916600117905550565b6000610d456108a9565b6101d5549091506000905b606654811015610dc1578315801590610d6857508382145b15610d735750505050565b610d8a610d826101d554610fd3565b600085611342565b6101d58054906000610d9b83611b9f565b91905055508180610dab90611b9f565b9250508080610db990611b9f565b915050610d50565b506000610dee837f0000000000000000000000000000000000000000000000000000000000000000611b43565b90506066546101d5541415610e58576000610e287f00000000000000000000000000000000000000000000000000000000000000006112ab565b6066549091505b82811015610e5557610e4382600087611342565b80610e4d81611b9f565b915050610e2f565b50505b61010c8360218110610e6c57610e6c611b4f565b60040201600001546101d45550506101d3805460ff191660011790555050565b610e946110e2565b7f00000000000000000000000000000000000000000000000000000000000000006101d654610ec39190611b7d565b610f0857610ef07f00000000000000000000000000000000000000000000000000000000000000006112ab565b60665460009081526101b16020526040902055610f79565b610f1260006115e9565b60677f000000000000000000000000000000000000000000000000000000000000000060218110610f4557610f45611b4f565b600402015460665460009081526101b16020526040812091909155610f6c9060679061197d565b610f796101b26000611932565b60006066546001610f8a9190611b65565b60668190559050610fbb7f000000000000000000000000000000000000000000000000000000000000000082611c2c565b6101d6555060006101d4556101d3805460ff19169055565b600081606654116110405760405162461bcd60e51b815260206004820152603160248201527f41636351756575653a205f696e646578206d75737420726566657220746f206160448201527020636f6d706c657465207375627472656560781b6064820152608401610384565b5060009081526101b1602052604090205490565b6101b2816021811061106557600080fd5b0154905081565b6110746110e2565b6001600160a01b0381166110d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610384565b610b91816112c1565b336110eb610b94565b6001600160a01b031614610a815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b7f00000000000000000000000000000000000000000000000000000000000000008111156111ab5760405162461bcd60e51b81526020600482015260176024820152761058d8d45d595d594e881a5b9d985b1a59081b195d995b604a1b6044820152606401610384565b600060eb82602181106111c0576111c0611b4f565b015490506111ef60017f0000000000000000000000000000000000000000000000000000000000000000611c4b565b811461127457826067836021811061120957611209611b4f565b60040201826004811061121e5761121e611b4f565b01557f0000000000000000000000000000000000000000000000000000000000000000821461126f5760eb826021811061125a5761125a611b4f565b01805490600061126983611b9f565b91905055505b505050565b61127e82846117c4565b925060eb826021811061129357611293611b4f565b6000910155816112a281611b9f565b925050506111ab565b60006101d782602181106103a1576103a1611b4f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661133a5760405162461bcd60e51b815260040161038490611c62565b610a81611902565b8082111561134f57505050565b6000610190836021811061136557611365611b4f565b0154905061139460017f0000000000000000000000000000000000000000000000000000000000000000611c4b565b81146113f3578361010c84602181106113af576113af611b4f565b6004020182600481106113c4576113c4611b4f565b015561019083602181106113da576113da611b4f565b0180549060006113e983611b9f565b91905055506115e3565b60655460009060ff16156114ae57611409611941565b61010c856021811061141d5761141d611b4f565b600490810291909101548252602082018790526040516362a361bb60e01b815273__$c6e409f5c6bff7020676808cc3963e859e$__916362a361bb9161146591859101611bba565b602060405180830381865af4158015611482573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a69190611beb565b9150506115b3565b6114b661195f565b60005b838160ff16101561151e5761010c86602181106114d8576114d8611b4f565b600402018160ff16600481106114f0576114f0611b4f565b0154828260ff166005811061150757611507611b4f565b60200201528061151681611cad565b9150506114b9565b508581846005811061153257611532611b4f565b6020020152604051639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced979061156e908490600401611c04565b602060405180830381865af415801561158b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115af9190611beb565b9150505b61019084602181106115c7576115c7611b4f565b60009101556115e1816115db866001611b65565b85611342565b505b50505050565b7f0000000000000000000000000000000000000000000000000000000000000000811015610b9157600060eb826021811061162657611626611b4f565b01549050801561179957600061163a61195f565b6000611645856112ab565b905060005b848160ff1610156116ae576067866021811061166857611668611b4f565b600402018160ff166004811061168057611680611b4f565b0154838260ff166005811061169757611697611b4f565b6020020152806116a681611cad565b91505061164a565b7f00000000000000000000000000000000000000000000000000000000000000008160ff1610156117065781838260ff16600581106116ef576116ef611b4f565b6020020152806116fe81611cad565b9150506116ae565b604051639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced979061173d908690600401611c04565b602060405180830381865af415801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190611beb565b93506117948461178f886001611b65565b611141565b505050505b60eb82602181106117ac576117ac611b4f565b6000910155816117bb81611b9f565b925050506115e9565b60006117ce61195f565b606784602181106117e1576117e1611b4f565b60040201548152606784602181106117fb576117fb611b4f565b600402016001015481600160200201526067846021811061181e5761181e611b4f565b600402016002015481600260200201526067846021811061184157611841611b4f565b60040201600301548160036020020152828160046020020152604051639cfced9760e01b815260009073__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790611894908590600401611c04565b602060405180830381865af41580156118b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d59190611beb565b9050606785602181106118ea576118ea611b4f565b6004020160006118fa919061198c565b949350505050565b600054610100900460ff166119295760405162461bcd60e51b815260040161038490611c62565b610a81336112c1565b50610b919060218101906119a8565b60405180604001604052806002906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b50610b919060848101906119c1565b5060008155600101600081556001016000815560010160009055565b5b808211156119bd57600081556001016119a9565b5090565b808211156119bd5760006119d5828261198c565b506004016119c1565b6000602082840312156119f057600080fd5b5035919050565b60008060408385031215611a0a57600080fd5b50508035926020909101359150565b600060208284031215611a2b57600080fd5b81356001600160a01b0381168114611a4257600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611a9a578160001904821115611a8057611a80611a49565b80851615611a8d57918102915b93841c9390800290611a64565b509250929050565b600082611ab157506001610a69565b81611abe57506000610a69565b8160018114611ad45760028114611ade57611afa565b6001915050610a69565b60ff841115611aef57611aef611a49565b50506001821b610a69565b5060208310610133831016604e8410600b8410161715611b1d575081810a610a69565b611b278383611a5f565b8060001904821115611b3b57611b3b611a49565b029392505050565b6000611a428383611aa2565b634e487b7160e01b600052603260045260246000fd5b60008219821115611b7857611b78611a49565b500190565b600082611b9a57634e487b7160e01b600052601260045260246000fd5b500690565b6000600019821415611bb357611bb3611a49565b5060010190565b60408101818360005b6002811015611be2578151835260209283019290910190600101611bc3565b50505092915050565b600060208284031215611bfd57600080fd5b5051919050565b60a08101818360005b6005811015611be2578151835260209283019290910190600101611c0d565b6000816000190483118215151615611c4657611c46611a49565b500290565b600082821015611c5d57611c5d611a49565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060ff821660ff811415611cc457611cc4611a49565b6001019291505056fe41636351756575653a207375627472656573206d757374206265206d65726765a264697066735822122035d3c327cb697e983233470463d98dc00de7c855eb5feb0e729abb045039bd0564736f6c634300080a0033"; + +type StateTreeConstructorParams = + | [linkLibraryAddresses: StateTreeLibraryAddresses, signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: StateTreeConstructorParams +): xs is ConstructorParameters => { + return ( + typeof xs[0] === "string" || + (Array.isArray as (arg: any) => arg is readonly any[])(xs[0]) || + "_isInterface" in xs[0] + ); +}; + +export class StateTree__factory extends ContractFactory { + constructor(...args: StateTreeConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + const [linkLibraryAddresses, signer] = args; + super( + _abi, + StateTree__factory.linkBytecode(linkLibraryAddresses), + signer + ); + } + } + + static linkBytecode(linkLibraryAddresses: StateTreeLibraryAddresses): string { + let linkedBytecode = _bytecode; + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$c6e409f5c6bff7020676808cc3963e859e\\$__", "g"), + linkLibraryAddresses["contracts/AccQueue.sol:PoseidonT3"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$cedc09603cb2be64c780c22aabaab86809\\$__", "g"), + linkLibraryAddresses["contracts/AccQueue.sol:PoseidonT6"] + .replace(/^0x/, "") + .toLowerCase() + ); + + return linkedBytecode; + } + + override deploy( + _subDepth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(_subDepth, overrides || {}) as Promise; + } + override getDeployTransaction( + _subDepth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(_subDepth, overrides || {}); + } + override attach(address: string): StateTree { + return super.attach(address) as StateTree; + } + override connect(signer: Signer): StateTree__factory { + return super.connect(signer) as StateTree__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): StateTreeInterface { + return new utils.Interface(_abi) as StateTreeInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): StateTree { + return new Contract(address, _abi, signerOrProvider) as StateTree; + } +} + +export interface StateTreeLibraryAddresses { + ["contracts/AccQueue.sol:PoseidonT3"]: string; + ["contracts/AccQueue.sol:PoseidonT6"]: string; +} diff --git a/packages/app/src/typechain/factories/contracts/flavors/SimpleHackathon__factory.ts b/packages/app/src/typechain/factories/contracts/flavors/SimpleHackathon__factory.ts new file mode 100644 index 00000000..e94accdd --- /dev/null +++ b/packages/app/src/typechain/factories/contracts/flavors/SimpleHackathon__factory.ts @@ -0,0 +1,362 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BigNumberish, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + SimpleHackathon, + SimpleHackathonInterface, +} from "../../../contracts/flavors/SimpleHackathon"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "_balance", + type: "uint256", + }, + { + internalType: "address", + name: "_operator", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "_recipientId", + type: "bytes32", + }, + { + indexed: false, + internalType: "address", + name: "_recipient", + type: "address", + }, + { + indexed: false, + internalType: "string", + name: "_metadata", + type: "string", + }, + { + indexed: false, + internalType: "uint256", + name: "_index", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "_timestamp", + type: "uint256", + }, + ], + name: "RecipientAdded", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "_recipientId", + type: "bytes32", + }, + { + indexed: false, + internalType: "uint256", + name: "_timestamp", + type: "uint256", + }, + ], + name: "RecipientRemoved", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "_recipient", + type: "address", + }, + { + internalType: "string", + name: "_metadata", + type: "string", + }, + ], + name: "addRecipient", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "controller", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_index", + type: "uint256", + }, + { + internalType: "uint256", + name: "_startTime", + type: "uint256", + }, + { + internalType: "uint256", + name: "_endTime", + type: "uint256", + }, + ], + name: "getRecipientAddress", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getRecipientCount", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + name: "getVoiceCredits", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "maxRecipients", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "bytes", + name: "_data", + type: "bytes", + }, + ], + name: "register", + outputs: [], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_recipientId", + type: "bytes32", + }, + ], + name: "removeRecipient", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_maxRecipients", + type: "uint256", + }, + ], + name: "setMaxRecipients", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b506040516110ae3803806110ae83398101604081905261002f916100c0565b8061003933610070565b600180546001600160a01b039283166001600160a01b031991821617909155600780549390921692169190911790556006556100fd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100d357600080fd5b825160208401519092506001600160a01b03811681146100f257600080fd5b809150509250929050565b610fa28061010c6000396000f3fe608060405234801561001057600080fd5b50600436106100a45760003560e01c8063148ec9ab146100a957806324b8fbf6146100d157806362564ed4146100e6578063715018a614610111578063739b53841461011957806388a130721461012c5780638da5cb5b14610143578063af99b63f1461014b578063b36543a914610153578063d7c9ebdd14610169578063f2fde38b1461017c578063f77c47911461018f575b600080fd5b6100bc6100b7366004610c56565b6101a2565b60405190151581526020015b60405180910390f35b6100e46100df366004610ca1565b610246565b005b6100f96100f4366004610d62565b61036a565b6040516001600160a01b0390911681526020016100c8565b6100e46104eb565b6100e4610127366004610d8e565b6104ff565b61013560025481565b6040519081526020016100c8565b6100f961065c565b61013561066b565b610135610161366004610ca1565b505060065490565b6100e4610177366004610c56565b610682565b6100e461018a366004610e10565b6106d0565b6001546100f9906001600160a01b031681565b6000600254821015610223576040805162461bcd60e51b81526020600482015260248101919091527f526563697069656e7452656769737472793a204d6178206e756d626572206f6660448201527f20726563697069656e74732063616e206e6f742062652064656372656173656460648201526084015b60405180910390fd5b6001546001600160a01b0316331461023d57506000919050565b50600255600190565b6007546001600160a01b031633146102dd5760405162461bcd60e51b815260206004820152604e60248201527f5369676e5570546f6b656e476174656b65657065723a206f6e6c79207370656360448201527f6966696564206f70657261746f7220696e7374616e63652063616e2063616c6c60648201526d103a3434b990333ab731ba34b7b760911b608482015260a40161021a565b6102e561065c565b6001600160a01b0316826001600160a01b0316146103665760405162461bcd60e51b815260206004820152603860248201527f5369676e5570546f6b656e476174656b65657065723a206f6e6c79206f776e65604482015277391031b0b71031b0b636103a3434b990333ab731ba34b7b760411b606482015260840161021a565b5050565b600083158061037a575060055484115b15610387575060006104e4565b60006005610396600187610e41565b815481106103a6576103a6610e58565b906000526020600020018054806020026020016040519081016040528092919081815260200182805480156103fa57602002820191906000526020600020905b8154815260200190600101908083116103e6575b505050505090508051600014156104155760009150506104e4565b80516000905b80156104df5760008361042f600184610e41565b8151811061043f5761043f610e58565b60209081029190910181015160008181526003808452604091829020825160808101845281546001600160a01b0316815260018201549581019590955260028101549285018390520154606084015290925087101561049f5750506104cd565b6060810151158015906104b6575087816060015111155b156104c85783955050505050506104e4565b519250505b806104d781610e6e565b91505061041b565b509150505b9392505050565b6104f3610749565b6104fd60006107a8565b565b610507610749565b6001600160a01b0383166105725760405162461bcd60e51b815260206004820152602c60248201527f526563697069656e7452656769737472793a20526563697069656e742061646460448201526b72657373206973207a65726f60a01b606482015260840161021a565b806105d85760405162461bcd60e51b815260206004820152603060248201527f526563697069656e7452656769737472793a204d6574616461746120696e666f60448201526f20697320656d70747920737472696e6760801b606482015260840161021a565b60008383836040516020016105ef93929190610e85565b604051602081830303815290604052805190602001209050600061061382866107f8565b9050817fddc3968b1ce25baf13504e6d2de09bbf72f4b32b9d80e2f4914842f0f9217b0d868686854260405161064d959493929190610ead565b60405180910390a25050505050565b6000546001600160a01b031690565b60045460055460009161067d91610e41565b905090565b61068a610749565b61069381610ad4565b807fc678e7ee92280740c8b3be4826e92b29fb5477e2ddc3eb2e9ca45f74daa4972e426040516106c591815260200190565b60405180910390a250565b6106d8610749565b6001600160a01b03811661073d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161021a565b610746816107a8565b50565b3361075261065c565b6001600160a01b0316146104fd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161021a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806002541161084f5760405162461bcd60e51b815260206004820152602d6024820152600080516020610f2d83398151915260448201526c1a5d081a5cc81b9bdd081cd95d609a1b606482015260840161021a565b600083815260036020526040902060010154156108b45760405162461bcd60e51b815260206004820152602f6024820152600080516020610f4d83398151915260448201526e1958591e481c9959da5cdd195c9959608a1b606482015260840161021a565b60055460009081906108c7906001610efe565b9050600254811161096657604080516001808252818301909252919250829160009160208083019080368337019050509050858160008151811061090d5761090d610e58565b60209081029190910181019190915260058054600181018255600091909152825161095f927f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090920191840190610bf6565b5050610a66565b6004546109b65760405162461bcd60e51b815260206004820152602a6024820152600080516020610f2d8339815191526044820152691a5d081c995858da195960b21b606482015260840161021a565b60048054600091906109ca90600190610e41565b815481106109da576109da610e58565b9060005260206000200154905060048054806109f8576109f8610f16565b60019003818190600052602060002001600090559055600360008281526020019081526020016000206001015492506005600184610a369190610e41565b81548110610a4657610a46610e58565b600091825260208083209091018054600181018255908352912001869055505b50604080516080810182526001600160a01b0380861682526020808301858152428486019081526000606086018181528b82526003948590529690209451855494166001600160a01b0319909416939093178455516001840155905160028301559151910155905092915050565b600081815260036020526040902060010154610b4e5760405162461bcd60e51b815260206004820152603360248201527f526563697069656e7452656769737472793a20526563697069656e74206973206044820152726e6f7420696e2074686520726567697374727960681b606482015260840161021a565b6000818152600360208190526040909120015415610bb15760405162461bcd60e51b815260206004820152602c6024820152600080516020610f4d83398151915260448201526b1958591e481c995b5bdd995960a21b606482015260840161021a565b60008181526003602081905260408220429101556004805460018101825591527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0155565b828054828255906000526020600020908101928215610c31579160200282015b82811115610c31578251825591602001919060010190610c16565b50610c3d929150610c41565b5090565b5b80821115610c3d5760008155600101610c42565b600060208284031215610c6857600080fd5b5035919050565b80356001600160a01b0381168114610c8657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610cb457600080fd5b610cbd83610c6f565b915060208301356001600160401b0380821115610cd957600080fd5b818501915085601f830112610ced57600080fd5b813581811115610cff57610cff610c8b565b604051601f8201601f19908116603f01168101908382118183101715610d2757610d27610c8b565b81604052828152886020848701011115610d4057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600060608486031215610d7757600080fd5b505081359360208301359350604090920135919050565b600080600060408486031215610da357600080fd5b610dac84610c6f565b925060208401356001600160401b0380821115610dc857600080fd5b818601915086601f830112610ddc57600080fd5b813581811115610deb57600080fd5b876020828501011115610dfd57600080fd5b6020830194508093505050509250925092565b600060208284031215610e2257600080fd5b6104e482610c6f565b634e487b7160e01b600052601160045260246000fd5b600082821015610e5357610e53610e2b565b500390565b634e487b7160e01b600052603260045260246000fd5b600081610e7d57610e7d610e2b565b506000190190565b606084901b6001600160601b0319168152818360148301376000910160140190815292915050565b6001600160a01b03861681526080602082018190528101849052838560a0830137600060a08583010152600060a0601f19601f87011683010190508360408301528260608301529695505050505050565b60008219821115610f1157610f11610e2b565b500190565b634e487b7160e01b600052603160045260246000fdfe526563697069656e7452656769737472793a20526563697069656e74206c696d526563697069656e7452656769737472793a20526563697069656e7420616c72a26469706673582212201b191efbaf49f81b8f4d789493cd321e0c0cdcaa44d4240d3c2f5a4e4b0127cb64736f6c634300080a0033"; + +type SimpleHackathonConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: SimpleHackathonConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class SimpleHackathon__factory extends ContractFactory { + constructor(...args: SimpleHackathonConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + _balance: PromiseOrValue, + _operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _balance, + _operator, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _balance: PromiseOrValue, + _operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(_balance, _operator, overrides || {}); + } + override attach(address: string): SimpleHackathon { + return super.attach(address) as SimpleHackathon; + } + override connect(signer: Signer): SimpleHackathon__factory { + return super.connect(signer) as SimpleHackathon__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): SimpleHackathonInterface { + return new utils.Interface(_abi) as SimpleHackathonInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): SimpleHackathon { + return new Contract(address, _abi, signerOrProvider) as SimpleHackathon; + } +} diff --git a/packages/app/src/typechain/factories/contracts/flavors/index.ts b/packages/app/src/typechain/factories/contracts/flavors/index.ts new file mode 100644 index 00000000..e3745e77 --- /dev/null +++ b/packages/app/src/typechain/factories/contracts/flavors/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { SimpleHackathon__factory } from "./SimpleHackathon__factory"; diff --git a/packages/app/src/typechain/factories/contracts/index.ts b/packages/app/src/typechain/factories/contracts/index.ts new file mode 100644 index 00000000..81e8b2d6 --- /dev/null +++ b/packages/app/src/typechain/factories/contracts/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { Jubjub__factory } from "./Jubjub__factory"; +export { JubjubFactory__factory } from "./JubjubFactory__factory"; +export { MessageTree__factory } from "./MessageTree__factory"; +export { StateTree__factory } from "./StateTree__factory"; diff --git a/packages/app/src/typechain/factories/contracts/poseidon/PoseidonT3__factory.ts b/packages/app/src/typechain/factories/contracts/poseidon/PoseidonT3__factory.ts new file mode 100644 index 00000000..ea92b871 --- /dev/null +++ b/packages/app/src/typechain/factories/contracts/poseidon/PoseidonT3__factory.ts @@ -0,0 +1,106 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + PoseidonT3, + PoseidonT3Interface, +} from "../../../contracts/poseidon/PoseidonT3"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256[2]", + name: "", + type: "uint256[2]", + }, + ], + name: "hash2", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_left", + type: "uint256", + }, + { + internalType: "uint256", + name: "_right", + type: "uint256", + }, + ], + name: "hashLeftRight", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, +] as const; + +const _bytecode = + "0x61250e61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80635bb939951461004557806362a361bb1461006a575b600080fd5b6100586100533660046122c9565b61007d565b60405190815260200160405180910390f35b6100586100783660046122eb565b6100a2565b60006100876122ab565b8381526020810183905261009a816100a2565b949350505050565b600061047d565b6000805160206124198339815191528160005108600080516020612419833981519152836020510860008051602061241983398151915285608051086000805160206124198339815191528384096000805160206124198339815191528460008051602061241983398151915283840909935050600080516020612419833981519152806000805160206124398339815191528309600080516020612419833981519152806000805160206123b9833981519152860960008051602061241983398151915260008051602061245983398151915288090808600052600080516020612419833981519152806000805160206123f98339815191528309600080516020612419833981519152806000805160206124b98339815191528609600080516020612419833981519152600080516020612379833981519152880908086020526000805160206124198339815191528060008051602061247983398151915283096000805160206124198339815191528060008051602061239983398151915286096000805160206124198339815191526000805160206123d983398151915288090808608052505050505050565b6000805160206124198339815191528160005108600080516020612419833981519152836020510860008051602061241983398151915285608051086000805160206124198339815191528384096000805160206124198339815191528460008051602061241983398151915283840909935060008051602061241983398151915283840990506000805160206124198339815191528360008051602061241983398151915283840909925060008051602061241983398151915282830990506000805160206124198339815191528260008051602061241983398151915283840909915050600080516020612419833981519152806000805160206124398339815191528309600080516020612419833981519152806000805160206123b9833981519152860960008051602061241983398151915260008051602061245983398151915288090808600052600080516020612419833981519152806000805160206123f98339815191528309600080516020612419833981519152806000805160206124b98339815191528609600080516020612419833981519152600080516020612379833981519152880908086020526000805160206124198339815191528060008051602061247983398151915283096000805160206124198339815191528060008051602061239983398151915286096000805160206124198339815191526000805160206123d983398151915288090808608052505050505050565b60006000805160206124198339815191527ef1445235f2148c5986587169fc1bcd887b08d4d00868df5696fff40956e864608051086000805160206124198339815191527f08dff3487e8ac99e1f29a058d0fa80b930c728730b7ab36ce879f3890ecf73f560a0510860008051602061241983398151915260008051602061249983398151915260c05108606052600080516020612419833981519152828309925060008051602061241983398151915282600080516020612419833981519152858609099150600080516020612419833981519152818209925060008051602061241983398151915281600080516020612419833981519152858609099050600080516020612419833981519152806000805160206124398339815191528309600080516020612419833981519152806000805160206123b983398151915286097f2229fe5e63f56eef4bfba02c26292de10ac2b2b045e6184acff16e4660c05f6b0808600052600080516020612419833981519152806000805160206123f98339815191528309600080516020612419833981519152806000805160206124b983398151915286097f2949435275a29cdbffe3e4101a45669873f9408a5d11e21b4ec6edf8501eee4d08086020526000805160206124198339815191528060008051602061247983398151915283096000805160206124198339815191528060008051602061239983398151915286097f20c290a7269657965092ef5700a447f5bc2c41dfca932f527cb2600ac9bcfefb080860805250506107107f0319d062072bef7ecca5eac06f97d4d55952c175ab6b03eae64b44c7dbf11cfa7f2b2ae1acf68b7b8d2416bebf3d4f6234b763fe04b8043ee48b8327bebca16cf260008051602061249983398151915261025a565b61077b7f234ec45ca27727c2e74abd2b2a1494cd6efbd43e340587d6b8fb9e31e65cc6327f2727673b2ccbc903f181bf38e1c1d40d2033865200c352bc150928adddf9cb787f28813dcaebaeaa828a376df87af4a63bc8b7bf27ad49c6298ef7b387bf28526d61025a565b6107e67f1bcd95ffc211fbca600f705fad3fb567ea4eb378f62e1fec97805518a47e4d9c7f0dc8fad6d9e4b35f5ed9a3d186b79ce38e0e8a8d1b58b132d701d4eecf68d1f67f15b52534031ae18f7f862cb2cf7cf760ab10a8150a337b1ccd99ff6e8797d42861025a565b6108517f1d9655f652309014d29e00ef35a2089bfff8dc1c816f0dc9ca34bdb5460c87057f1f6d48149b8e7f7d9b257d8ed5fbbaf42932498075fed0ace88a9eb81f5627f67f10520b0ab721cadfe9eff81b016fc34dc76da36c2578937817cb978d069de5596100a9565b6108bc7f099952b414884454b21200d7ffafdd5f0c9a9dcc06f2708e9fc1d8209b5c75b97f0672d995f8fff640151b3d290cedaf148690a10a8c8424a7f6ec282b6e4be8287f04df5a56ff95bcafb051f7b1cd43a99ba731ff67e47032058fe3d4185697cc7d6100a9565b6109277f119b1590f13307af5a1ee651020c07c749c15d60683a8050b963d0a8e4b2bdd17f0b8badee690adb8eb0bd74712b7999af82de55707251ad7716077cb93c464ddc7f052cba2255dfd00c7c483143ba8d469448e43586a9b4cd9183fd0e843a6b9fa66100a9565b6109917e5032551e6378c450cfe129a404b3764218cadedac14e2b92d2cd73111bf0f97f2cc6182c5e14546e3cf1951f173912355374efb83d80898abe69cb317c9ea5657f03150b7cd6d5d17b2529d36be0f67b832c4acfc884ef4ee5ce15be0bfb4a8d096100a9565b6109fc7f0a7b1db13042d396ba05d818a319f25252bcf35ef3aeed91ee1f09b2590fc65b7f05c8f4f4ebd4a6e3c980d31674bfbe6323037f21b34ae5a4e80c2d4c24d602807f233237e3289baa34bb147e972ebcb9516469c399fcc069fb88f9da2cc28276b56100a9565b610a677f12c0339ae08374823fabb076707ef479269f3e4d6cb104349015ee046dc93fc07f1ac9b0417abcc9a1935107e9ffc91dc3ec18f2c4dbe7f22976a760bb5c50c4607f2a73b71f9b210cf5b14296572c9d32dbf156e2b086ff47dc5df542365a404ec06100a9565b610ad27f05a6811f8556f014e92674661e217e9bd5206c5c93a07dc145fdb176a716346f7f037c2849e191ca3edb1c5e49f6e8b8917c843e379366f2ea32ab3aa88d7f84487f0b7475b102a165ad7f5b18db4e1e704f52900aa3253baac68246682e56e9a28e6100a9565b610b3d7f2e0ba8d94d9ecf4a94ec2050c7371ff1bb50f27799a84b6d4a2a6f2a0982c8877f20439a0c84b322eb45a3857afc18f5826e8c7382c8a1585c507be199981fd22f7f29a795e7d98028946e947b75d54e9f044076e87a7b2883b47b675ef5f38bd66e6100a9565b610ba87f028a305847c683f646fca925c163ff5ae74f348d62c2b670f1426cef9403da537f0c64cbecb1c734b857968dbbdcf813cdf8611659323dbcbfc84323623be9caf17f143fd115ce08fb27ca38eb7cce822b4517822cd2109048d2e6d0ddcca17d71c86100a9565b610c127f2ed5f0c91cbd9749187e2fade687e05ee2491b349c039a0bba8a9f4023a0bb387e81c95bc43384e663d79270c956ce3b8925b4f6d033b078b96384f50579400e7f2e4ef510ff0b6fda5fa940ab4c4380f26a6bcb64d89427b824d6755b5db9e30c6100a9565b610c7d7f10b4e7f3ab5df003049514459b6e18eec46bb2213e8e131e170887b47ddcb96c7f1c3f20fd55409a53221b7c4d49a356b9f0a1119fb2067b41a7529094424ec6ad7f30509991f88da3504bbf374ed5aae2f03448a22c76234c8c990f01f33a7352066100a9565b610ce87f07533ec850ba7f98eab9303cace01b4b9e4f2e8b82708cfa9c2fe45a0ae146a07f1c74ee64f15e1db6feddbead56d6d55dba431ebc396c9af95cad0f1315bd5c917f2a1982979c3ff7f43ddd543d891c2abddd80f804c077d775039aa3502e43adef6100a9565b610d537f2d477e3862d07708a79e8aae946170bc9775a4201318474ae665b0b1b7e2730e7f2f17c0559b8fe79608ad5ca193d62f10bce8384c815f0906743d6930836d4a9e7f21576b438e500449a151e4eeaf17b154285c68f42d42c1808a11abf3764c07506100a9565b610dbe7f2c8fbcb2dd8573dc1dbaf8f4622854776db2eece6d85c4cf4254e7c35e03b07a7f2b4cb233ede9ba48264ecd2c8ae50d1ad7a8596a87f29f8a7777a700923933117f162f5243967064c390e095577984f291afba2266c38f5abcd89be0f5b2747eab6100a9565b610e297f0c4cb9dc3c4fd8174f1149b3c63c3c2f9ecb827cd7dc25534ff8fb75bc79c5027f204b0c397f4ebe71ebc2d8b3df5b913df9e6ac02b68d31324cd49af5c45655297f1d6f347725e4816af2ff453f0cd56b199e1b61e9f601e9ade5e88db870949da96100a9565b610e947f066d04b24331d71cd0ef8054bc60c4ff05202c126a233c1a8242ace360b8a30a7f1a96177bcf4d8d89f759df4ec2f3cde2eaaa28c177cc0fa13a9816d49a38d2ef7f174ad61a1448c899a25416474f4930301e5c49475279e0639a616ddc45bc7b546100a9565b610eff7f1121552fca26061619d24d843dc82769c1b04fcec26f55194c2e3e869acc6a9a7f13ab2d136ccf37d447e9f2e14a7cedc95e727f8446f6d9d7e55afc01219fd6497f2a4c4fc6ec0b0cf52195782871c6dd3b381cc65f72e02ad527037a62aa1bd8046100a9565b610f697f29f536dcb9dd7682245264659e15d88e395ac3d4dde92d8c46448db979eeba897f0e25483e45a665208b261d8ba74051e6400c776d652595d9845aca35d8a397d37eef653322b13d6c889bc81715c37d77a6cd267d595c4a8909a5546c7c97cff16100a9565b610fd47f151aff5f38b20a0fc0473089aaf0206b83e8e68a764507bfd3d0ab4be74319c57f1c8361c78eb5cf5decfb7a2d17b5c409f2ae2999a46762e8ee416240a8cb9af17f2a56ef9f2c53febadfda33575dbdbd885a124e2780bbea170e456baace0fa5be6100a9565b61103f7f01a5c536273c2d9df578bfbd32c17b7a2ce3664c2a52032c9321ceb1c4e8a8e47f13b37bd80f4d27fb10d84331f6fb6d534b81c61ed15776449e801b7ddc9c29677f04c6187e41ed881dc1b239c88f7f9d43a9f52fc8c8b6cdd1e76e47615b51f1006100a9565b6110aa7f041294d2cc484d228f5784fe7919fd2bb925351240a04b711514c9c80b65af1d7f1d4d8ec291e720db200fe6d686c0d613acaf6af4e95d3bf69f7ed516a597b6467f2ab3561834ca73835ad05f5d7acb950b4a9a2c666b9726da832239065b7c3b026100a9565b6111157f0955e49e6610c94254a4f84cfbab344598f0e71eaff4a7dd81ed95b50839c82e7f0b339d8acca7d4f83eedd84093aef51050b3684c88f8b0b04524563bc6ea4da47f154ac98e01708c611c4fa715991f004898f57939d126e392042971dd90e81fc66100a9565b6111807f04f6eeca1751f7308ac59eff5beb261e4bb563583ede7bc92a738223d6f76e137f0f18f5a0ecd1423c496f3820c549c27838e5790e2bd0a196ac917c7ff32077fb7f06746a6156eba54426b9e22206f15abca9a6f41e6f535c6f3525401ea06546266100a9565b6111eb7f2147b424fc48c80a88ee52b91169aacea989f6446471150994257b2fb01c63e97f123769dd49d5b054dcd76b89804b1bcb8e1392b385716a5d83feb65d437f29ef7f2b56973364c4c4f5c1a3ec4da3cdce038811eb116fb3e45bc1768d26fc0b37586100a9565b6112567f21e4f4ea5f35f85bad7ea52ff742c9e8a642756b6af44203dd8a1f35c1a900357f12373a8251fea004df68abcf0f7786d4bceff28c5dbbe0c3944f685cc0a0b1f27f0fdc1f58548b85701a6c5505ea332a29647e6f34ad4243c2ea54ad897cebe54d6100a9565b6112c17f07ea5e8537cf5dd08886020e23a7f387d468d5525be66f853b672cc96a88969a7f1efbe46dd7a578b4f66f9adbc88b4378abc21566e1a0453ca13a4159cac04ac27f16243916d69d2ca3dfb4722224d4c462b57366492f45e90d8a81934f1bc3b1476100a9565b61132c7f04a12ededa9dfd689672f8c67fee31636dcd8e88d01d49019bd90b33eb33db697f20f057712cc21654fbfe59bd345e8dac3f7818c701b9c7882d9d57b72a32e83f7f05a8c4f9968b8aa3b7b478a30f9a5b63650f19a75e7ce11ca9fe16c0b76c00bc6100a9565b6113977f1ed7cc76edf45c7c404241420f729cf394e5942911312a0d6972b8bd53aff2b87f2feed17b84285ed9b8a5c8c5e95a41f66e096619a7703223176c41ee433de4d17f27e88d8c15f37dcee44f1e5425a51decbd136ce5091a6767e49ec9544ccd101a6100a9565b6114027f25851c3c845d4790f9ddadbdb6057357832e2e7a49775f71ec75a96554d67c777f1aac285387f65e82c895fc6887ddf40577107454c6ec0317284f033f27d0c7857f15742e99b9bfa323157ff8c586f5660eac6783476144cdcadf2874be45466b1a6100a9565b61146c7e2e6f8d6520cd4713e335b8c0b6d2e647e9a98e12f4cd2558828b5ef6cb4c9b7f2411d57a4813b9980efa7e31a1db5966dcf64f36044277502f15485f28c717277f15a5821565cc2ec2ce78457db197edf353b7ebba2c5523370ddccc3d9f146a676100a9565b6114d67f0a2f53768b8ebf6a86913b0e57c04e011ca408648a4743a87d77adbf0c9c35127eb9831b948525595ee02724471bcd182e9521f6b7bb68f1e93be4febb0d3cbe7f2ff7bc8f4380cde997da00b616b0fcd1af8f0e91e2fe1ed7398834609e0315d26100a9565b6115407f170a4f55536f7dc970087c7c10d6fad760c952172dd54dd99d1045e4ec34a8087f171d5620b87bfb1328cf8c02ab3f0c9a397196aa6a542c2350eb512a2b2bcda97e248156142fd0373a479f91ff239e960f599ff7e94be69b7f2a290305e1198d6100a9565b6115ab7f1dd269799b660fad58f7f4892dfb0b5afeaad869a9c4b44f9c9e1c43bdaf8f097f1e9bc179a4fdd758fdd1bb1945088d47e70d114a03f6a0e8b5ba650369e649737f29aba33f799fe66c2ef3134aea04336ecc37e38c1cd211ba482eca17e2dbfae16100a9565b6116167f11609e06ad6c8fe2f287f3036037e8851318e8b08a0359a03b304ffca62e82847f0ef042e454771c533a9f57a55c503fcefd3150f52ed94a7cd5ba93b9c7dacefd7f22cdbc8b70117ad1401181d02e15459e7ccd426fe869c7c95d1dd2cb0f24af386100a9565b6116817f3006eb4ffc7a85819a6da492f3a8ac1df51aee5b17b8e89d74bf01cf5f71e9ad7f2de52989431a859593413026354413db177fbf4cd2ac0b56f855a888357ee4667f1166d9e554616dba9e753eea427c17b7fecd58c076dfe42708b08f5b783aa9af6100a9565b6116ec7f1835b786e2e8925e188bea59ae363537b51248c23828f047cff784b97b3fd8007f119e684de476155fe5a6b41a8ebc85db8718ab27889e85e781b214bace4827c37f2af41fbb61ba8a80fdcf6fff9e3f6f422993fe8f0a4639f962344c82251450866100a9565b6117577f0b6f88a3577199526158e61ceea27be811c16df7774dd8519e079564f61fd13b7f083efd7a27d1751094e80fefaf78b000864c82eb571187724a761f88c22cc4e77f28201a34c594dfa34d794996c6433a20d152bac2a7905c926c40e285ab32eeb66100a9565b6117c27f0b520211f904b5e7d09b5d961c6ace7734568c547dd6858b364ce5e47951f1787f2af33e3f866771271ac0c9b3ed2e1142ecd3e74b939cd40d00d937ab84c985917f0ec868e6d15e51d9644f66e1d6471a94589511ca00d29e1014390e6ee4254f5b6100a9565b61182d7f0171eb95dfbf7d1eaea97cd385f780150885c16235a2a6a8da92ceb01e5042337f1f790d4d7f8cf094d980ceb37c2453e957b54a9991ca38bbe0061d1ed6e562d47f0b2d722d0919a1aad8db58f10062a92ea0c56ac4270e822cca228620188a1d406100a9565b6118987f2f1459b65dee441b64ad386a91e8310f282c5a92a89e19921623ef8249711bc07f1162fb28689c27154e5a8228b4e72b377cbcafa589e283c35d3803054407a18d7f0c2d0e3b5fd57549329bf6885da66b9b790b40defd2c8650762305381b1688736100a9565b6119037f1f7735706ffe9fc586f976d5bdf223dc680286080b10cea00b9b5de315f9650e7f01ca8be73832b8d0681487d27d157802d741a6f36cdc2a0576881f93264788757f1e6ff3216b688c3d996d74367d5cd4c1bc489d46754eb712c243f70d1b53cfbb6100a9565b61196e7f2bc1ae8b8ddbb81fcaac2d44555ed5685d142633e9df905f66d9401093082d597f23f0bee001b1029d5255075ddc957f833418cad4f52b6c3f8ce16c235572575b7f2522b60f4ea3307640a0c2dce041fba921ac10a3d5f096ef4745ca838285f0196100a9565b6119d97f15871a5cddead976804c803cbaef255eb4815a5e96df8b006dcbbc2767f889487f2360a8eb0cc7defa67b72998de90714e17e75b174a52ee4acb126c8cd995f0a87f0f9406b8296564a37304507b8dba3ed162371273a07b1fc98011fcd6ad72205f6100a9565b611a447f1859954cfeb8695f3e8b635dcb345192892cd11223443ba7b4166e8876c0d1427f2a394a43934f86982f9be56ff4fab1703b2e63c8ad334834e4309805e777ae0f7f193a56766998ee9e0a8652dd2f3b1da0362f4f54f72379544f957ccdeefb420f6100a9565b611aaf7f058cbe8a9a5027bdaa4efb623adead6275f08686f1c08984a9d7c5bae9b4f1c07f0fdb253dee83869d40c335ea64de8c5bb10eb82db08b5e8b1f5e5552bfd05f237f04e1181763050e58013444dbcb99f1902b11bc25d90bbdca408d3819f4fed32b6100a9565b611b1a7f23f7bfc8720dc296fff33b41f98ff83c6fcab4605db2eb5aaa5bc137aeb70a587f03464990f045c6ee0819ca51fd11b0be7f61b8eb99f14b77e1e6634601d9e8b57f1382edce9971e186497eadb1aeb1f52b23b4b83bef023ab0d15228b4cceca59a6100a9565b611b857f118872dc832e0eb5476b56648e867ec8b09340f7a7bcb1b4962f0ff9ed1f9d017f06ec54c80381c052b58bf23b312ffd3ce2c4eba065420af8f4c23ed0075fd07b7f0a59a158e3eec2117e6e94e7f0e9decf18c3ffd5e1531a9219636158bbaf62f26100a9565b611bf07f04ef51591c6ead97ef42f287adce40d93abeb032b922f66ffb7e9a5a7450544d7f169a177f63ea681270b1c6877a73d21bde143942fb71dc55fd8a49f19f10c77b7f13d69fa127d834165ad5c7cba7ad59ed52e0b0f0e42d7fea95e1906b520921b16100a9565b611c5b7f10998e42dfcd3bbf1c0714bc73eb1bf40443a3fa99bef4a31fd31be182fcc7927f30102d28636abd5fe5f2af412ff6004f75cc360d3205dd2da002813d3e2ceeb27f256e175a1dc079390ecd7ca703fb2e3b19ec61805d4f03ced5f45ee6dd0f69ec6100a9565b611cc67f29383c01ebd3b6ab0c017656ebe658b6a328ec77bc33626e29e2e95b33ea61117f18168afd34f2d915d0368ce80b7b3347d1c7a561ce611425f2664d7aa51f0b5d7f193edd8e9fcf3d7625fa7d24b598a1d89f3362eaf4d582efecad76f879e368606100a9565b611d317f16d685252078c133dc0d3ecad62b5c8830f95bb2e54b59abdffbf018d96fa3367f0beb5e07d1b27145f575f1395a55bf132f90c25b40da7b3864d0242dcb1117fb7f10646d2f2603de39a1f4ae5e7771a64a702db6e86fb76ab600bf573f9010c7116100a9565b611d9c7f0980fb233bd456c23974d50e0ebfde4726a423eada4e8f6ffbc7592e3f1b93d67f1a679f5d36eb7b5c8ea12a4c2dedc8feb12dffeec450317270a6f19b34cf18607f0a6abd1d833938f33c74154e0404b4b40a555bbbec21ddfafd672dd62047f01a6100a9565b611e077f1a730d372310ba82320345a29ac4238ed3f07a8a2b4e121bb50ddb9af407f4517f0ada10a90c7f0520950f7d47a60d5e6a493f09787f1564e5d09203db47de1a0b7f161b42232e61b84cbf1810af93a38fc0cece3d5628c9282003ebacb5c312c72b6100a9565b611e727f2cd9ed31f5f8691c8e39e4077a74faa0f400ad8b491eb3f7b47b27fa3fd1cf777f1c7c8824f758753fa57c00789c684217b930e95313bcb73e6e7b8649a4968f707f2c8120f268ef054f817064c369dda7ea908377feaba5c4dffbda10ef58e8c5566100a9565b611edd7f188d9c528025d4c2b67660c6b771b90f7c7da6eaa29d3f268a6dd223ec6fc6307f09945a5d147a4f66ceece6405dddd9d0af5a2c5103529407dff1ea58f180426d7f23ff4f9d46813457cf60d92f57618399a5e022ac321ca550854ae23918a22eea6100a9565b611f487f1da6d09885432ea9a06d9f37f873d985dae933e351466b2904284da3320d8acc7f15af1169396830a91600ca8102c35c426ceae5461e3f95d89d829518d30afd787f3050e37996596b7f81f68311431d8734dba7d926d3633595e0c0d8ddf4f0f47f6100a9565b611fb37f096d6790d05bb759156a952ba263d672a2d7f9c788f4c831a29dace4c0f8be5f7f202d7dd1da0f6b4b0325c8b3307742f01e15612ec8e9304a7cb0319e01d32d607f2796ea90d269af29f5f8acf33921124e4e4fad3dbe658945e546ee411ddaa9cb6100a9565b61201e7f21e5241e12564dd6fd9f1cdd2a0de39eedfefc1466cc568ec5ceb745a0506edc7f1b162f83d917e93edb3308c29802deb9d8aa690113b2e14864ccf6e18e4165f17f054efa1f65b0fce283808965275d877b438da23ce5b13e1963798cb1447d25a461025a565b6120897f1671522374606992affb0dd7f71b12bec4236aede6290546bcef7e1f515c23207f0f21177e302a771bbae6d8d1ecb373b62c99af346220ac0129c53f666eb241007f1cfb5662e8cf5ac9226a80ee17b36abecb73ab5f87e161927b4349e10e4bdf0861025a565b6120f47f102adf8ef74735a27e9128306dcbc3c99f6f7291cd406578ce14ea2adaba68f87f193c0e04e0bd298357cb266c1506080ed36edce85c648cc085e8c57b1ab54bba7f0fa3ec5b9488259c2eb4cf24501bfad9be2ec9e42c5cc8ccd419d2a692cad87061025a565b6000805160206124198339815191527f0fe0af7858e49859e2a54d6f1ad945b1316aa24bfbdd23ae40a6d0cb70c3eab1600051086000805160206124198339815191527f216f6717bbc7dedb08536a2220843f4e2da5f1daa9ebdefde8a5ea7344798d22602051086000805160206124198339815191527f1da55cc900f0d21f4a3e694391918a1b3c23b2ac773c6b3ef88e2e422832516160805108600080516020612419833981519152838409935060008051602061241983398151915283600080516020612419833981519152868709099250600080516020612419833981519152828309935060008051602061241983398151915282600080516020612419833981519152868709099150600080516020612419833981519152818209935060008051602061241983398151915281600080516020612419833981519152868709099050600080516020612419833981519152806000805160206124398339815191528309600080516020612419833981519152806000805160206123b983398151915286096000805160206124198339815191526000805160206124598339815191528809080860005250505060206000f35b60405180604001604052806002906020820280368337509192915050565b600080604083850312156122dc57600080fd5b50508035926020909101359150565b6000604082840312156122fd57600080fd5b82601f83011261230c57600080fd5b604080519081016001600160401b038111828210171561233c57634e487b7160e01b600052604160045260246000fd5b806040525080604084018581111561235357600080fd5b845b8181101561236d578035835260209283019201612355565b50919594505050505056fe2969f27eed31a480b9c36c764379dbca2cc8fdd1415c3dded62940bcde0bd771176cc029695ad02582a70eff08a6fd99d057e12e58e7d7b6b16cdfabc8ee291116ed41e13bb9c0c66ae119424fddbcbc9314dc9fdbdeea55d6c64543dc4903e0143021ec686a3f330d5f9e654638065ce6cd79e28c5b3753326244ee65a1b1a7101071f0032379b697315876690f053d148d4e109f5fb065c8aacc55a0f89bfa30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000012b90bba00fca0589f617e7dcbfe82e0df706ab640ceb247b791a93b74e36736d109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b19a3fc0a56702bf417ba7fee3802593fa644470307043f7773279cd71d25d5e02f27be690fdaee46c3ce28f7532b13c856c35342c84bda6e20966310fadc01d02e2419f9ec02ec394c9871c832963dc1b89d743c8c7b964029b2311687b1fe23a2646970667358221220ece2f0bcb04f57d4e3e8f6ad742c3ca20406ffff526c867d627f32e70ac3285064736f6c634300080a0033"; + +type PoseidonT3ConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: PoseidonT3ConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class PoseidonT3__factory extends ContractFactory { + constructor(...args: PoseidonT3ConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): PoseidonT3 { + return super.attach(address) as PoseidonT3; + } + override connect(signer: Signer): PoseidonT3__factory { + return super.connect(signer) as PoseidonT3__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): PoseidonT3Interface { + return new utils.Interface(_abi) as PoseidonT3Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): PoseidonT3 { + return new Contract(address, _abi, signerOrProvider) as PoseidonT3; + } +} diff --git a/packages/app/src/typechain/factories/contracts/poseidon/PoseidonT4__factory.ts b/packages/app/src/typechain/factories/contracts/poseidon/PoseidonT4__factory.ts new file mode 100644 index 00000000..fe372378 --- /dev/null +++ b/packages/app/src/typechain/factories/contracts/poseidon/PoseidonT4__factory.ts @@ -0,0 +1,82 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + PoseidonT4, + PoseidonT4Interface, +} from "../../../contracts/poseidon/PoseidonT4"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256[3]", + name: "", + type: "uint256[3]", + }, + ], + name: "hash3", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, +] as const; + +const _bytecode = + "0x61312d61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063bea140b31461003a575b600080fd5b61004d610048366004612e2c565b61005f565b60405190815260200160405180910390f35b600061067d565b6000805160206130188339815191528160005108600080516020613018833981519152836020510860008051602061301883398151915285608051086000805160206130188339815191528760a05108600080516020613018833981519152848509600080516020613018833981519152856000805160206130188339815191528384090994505060008051602061301883398151915280600080516020612f188339815191528309600080516020613018833981519152806000805160206130d88339815191528609600080516020613018833981519152806000805160206130b88339815191528909600080516020613018833981519152600080516020612ef88339815191528b0908080860005260008051602061301883398151915280600080516020612ed8833981519152830960008051602061301883398151915280600080516020612ff8833981519152860960008051602061301883398151915280600080516020612fb883398151915289096000805160206130188339815191526000805160206130388339815191528b0908080860205260008051602061301883398151915280600080516020612f38833981519152830960008051602061301883398151915280600080516020613078833981519152860960008051602061301883398151915280600080516020612eb88339815191528909600080516020613018833981519152600080516020612f788339815191528b0908080860805260008051602061301883398151915280600080516020612fd8833981519152830960008051602061301883398151915280600080516020613098833981519152860960008051602061301883398151915280600080516020612f5883398151915289096000805160206130188339815191526000805160206130588339815191528b0908080860a0525050505050505050565b6000805160206130188339815191528160005108600080516020613018833981519152836020510860008051602061301883398151915285608051086000805160206130188339815191528760a05108600080516020613018833981519152848509600080516020613018833981519152856000805160206130188339815191528384090994506000805160206130188339815191528485099050600080516020613018833981519152846000805160206130188339815191528384090993506000805160206130188339815191528384099050600080516020613018833981519152836000805160206130188339815191528384090992506000805160206130188339815191528283099050600080516020613018833981519152826000805160206130188339815191528384090991505060008051602061301883398151915280600080516020612f188339815191528309600080516020613018833981519152806000805160206130d88339815191528609600080516020613018833981519152806000805160206130b88339815191528909600080516020613018833981519152600080516020612ef88339815191528b0908080860005260008051602061301883398151915280600080516020612ed8833981519152830960008051602061301883398151915280600080516020612ff8833981519152860960008051602061301883398151915280600080516020612fb883398151915289096000805160206130188339815191526000805160206130388339815191528b0908080860205260008051602061301883398151915280600080516020612f38833981519152830960008051602061301883398151915280600080516020613078833981519152860960008051602061301883398151915280600080516020612eb88339815191528909600080516020613018833981519152600080516020612f788339815191528b0908080860805260008051602061301883398151915280600080516020612fd8833981519152830960008051602061301883398151915280600080516020613098833981519152860960008051602061301883398151915280600080516020612f5883398151915289096000805160206130188339815191526000805160206130588339815191528b0908080860a0525050505050505050565b60006000805160206130188339815191527f265ddfe127dd51bd7239347b758f0a1320eb2cc7450acc1dad47f80c8dcf34d6608051086000805160206130188339815191527f199750ec472f1809e0f66a545e1e51624108ac845015c2aa3dfc36bab497d8aa60a051086000805160206130188339815191527f157ff3fe65ac7208110f06a5f74302b14d743ea25067f0ffd032f787c7f1cdf860c05108600080516020613018833981519152600080516020612f9883398151915260e0510860a05260008051602061301883398151915283840993506000805160206130188339815191528360008051602061301883398151915286870909925060008051602061301883398151915282830993506000805160206130188339815191528260008051602061301883398151915286870909915060008051602061301883398151915281820993506000805160206130188339815191528160008051602061301883398151915286870909905060008051602061301883398151915280600080516020612f188339815191528309600080516020613018833981519152806000805160206130d88339815191528609600080516020613018833981519152806000805160206130b883398151915289097f211184aac7468125da9b5527788aed6331caa8335774fe66f16acc6c66c456d708080860005260008051602061301883398151915280600080516020612ed8833981519152830960008051602061301883398151915280600080516020612ff8833981519152860960008051602061301883398151915280600080516020612fb883398151915289097f19764435729b98150ca53b559b7b1bdd91692d645e831f4a30d30d510792687a08080860205260008051602061301883398151915280600080516020612f38833981519152830960008051602061301883398151915280600080516020613078833981519152860960008051602061301883398151915280600080516020612eb883398151915289097f21f642c132b82c867835f1753eecedd4679085e8c78f6a0ae4a8cd81e9834bdf08080860805260008051602061301883398151915280600080516020612fd8833981519152830960008051602061301883398151915280600080516020613098833981519152860960008051602061301883398151915280600080516020612f5883398151915289097f26bc2b5c607af61196105d955bd3d9b2cf795edcf9e39d1e508c542ca85d6be308080860a052505050610a907f13da07dc64d428369873e97160234641f8beb56fdd05e5f3563fa39d9c22df4e7f251ad47cb15c4f1105f109ae5e944f1ba9d9e7806d667ffec6fe723002e0b9967f0e35fb89981890520d4aef2b6d6506c3cb2f0b6973c24fa82731345ffa2d1f1e600080516020612f9883398151915261031c565b610b1c7f04dba94a7b0ce9e221acad41472b6bbe3aec507f5eb3d33f463672264c9f789b7f0ed69e5e383a688f209d9a561daa79612f3f78d0467ad45485df07093f3675497f011f16b1c63a854f01992e3956f42d8b04eb650c6d535eb0203dec74befdca067f0c009b84e650e6d23dc00c7dccef7483a553939689d350cd46e7b89055fd473861031c565b610ba87f0a1ca941f057037526ea200f489be8d4c37c85bbcce6a2aeec91bd69414324477f28bf7459c9b2f4c6d8e7d06a4ee3a47f7745d4271038e5157a32fdf7ede0d6a17f259a666f129eea198f8a1c502fdb38fa39b1f075569564b6e54a485d1182323f7f0a3f2637d840f3a16eb094271c9d237b6036757d4bb50bf7ce732ff1d4fa28e861031c565b610c347f1cb55cad7bd133de18a64c5c47b9c97cbe4d8b7bf9e095864471537e6a4ae2c57f26e1ba52ad9285d97dd3ab52f8e840085e8fa83ff1e8f1877b074867cd2dee757f123106a93cd17578d426e8128ac9d90aa9e8a00708e296e084dd57e69caaf8117f0c6f8f958be0e93053d7fd4fc54512855535ed1539f051dcb43a26fd926361cf610066565b610cc07f2539de1785b735999fb4dac35ee17ed0ef995d05ab2fc5faeaa69ae87bcec0a57f2b1e809ac1d10ab29ad5f20d03a57dfebadfe5903f58bafed7c508dd2287ae8c7f011003e32f6d9c66f5852f05474a4def0cda294a0eb4e9b9b12b9bb4512e55747f1dcd73e46acd8f8e0e2c7ce04bde7f6d2a53043d5060a41c7143f08e6e9055d0610066565b610d4c7f179190e5d0e22179e46f8282872abc88db6e2fdc0dee99e69768bd98c5d06bfb7f1eae0ad8ab68b2f06a0ee36eeb0d0c058529097d91096b756d8fdc2fb5a60d857f192089c4974f68e95408148f7c0632edbb09e6a6ad1a1c2f3f0305f5d03b527b7f0c246c5a2ef8ee0126497f222b3e0a0ef4e1c3d41c86d46e43982cb11d77951d610066565b610dd87f10ba3a0e01df92e87f301c4b716d8a394d67f4bf42a75c10922910a78f6b5b877f064760623c25c8cf753d238055b444532be13557451c087de09efd454b23fd597f225d394e42207599403efd0c2464a90d52652645882aac35b10e590e6e691e087f29bb9e2c9076732576e9a81c7ac4b83214528f7db00f31bf6cafe794a9b3cd1c610066565b610e647f2ec93189bd1ab4f69117d0fe980c80ff8785c2961829f701bb74ac1f303b17db7f1d7cb39bafb8c744e148787a2e70230f9d4e917d5713bb050487b5aa7d74070b7f1b94cd61b051b04dd39755ff93821a73ccd6cb11d2491d8aa7f921014de252fb7f0e070bf53f8451b24f9c6e96b0c2a801cb511bc0c242eb9d361b77693f21471c610066565b610ef07f20fc411a114d13992c2705aa034e3f315d78608a0f7de4ccf7a72e494855ad0d7f0761d33c66614aaa570e7f1e8244ca1120243f92fa59e4f900c567bf41f5a59b7f062100eb485db06269655cf186a68532985275428450359adc99cec6960711b87f2db366bfdd36d277a692bb825b86275beac404a19ae07a9082ea46bd83517926610066565b610f7c7f26c0c8fe09eb30b7e27a74dc33492347e5bdff409aa3610254413d3fad795ce57f22734b4c5c3f9493606c4ba9012499bf0f14d13bfcfcccaa16102a29cc2f69e07f23b1822d278ed632a494e58f6df6f5ed038b186d8474155ad87e7dff62b37f4b7f25b5c004a4bdfcb5add9ec4e9ab219ba102c67e8b3effb5fc3a30f317250bc5a610066565b6110087f1a306d439d463b0816fc6fd64cc939318b45eb759ddde4aa106d15d9bd9baaaa7f248d97d7f76283d63bec30e7a5876c11c06fca9b275c671c5e33d95bb7e8d7297f12b6595bdb329b6fb043ba78bb28c3bec2c0a6de46d8c5ad6067c4ebfd4250da7f070dd0ccb6bd7bbae88eac03fa1fbb26196be3083a809829bbd626df348ccad9610066565b6110937f2a6cf5e9aa03d4336349ad6fb8ed2269c7bef54b8822cc76d08495c12efde1877f04d5ee4c3aa78f7d80fde60d716480d3593f74d4f653ae83f4103246db2e8d657e94975717f9a8a8bb35152f24d43294071ce320c829f388bc852183e1e2ce7e7f28a8f8372e3c38daced7c00421cb4621f4f1b54ddc27821b0d62d3d6ec7c56cf610066565b61111e7f159f81ada0771799ec38fca2d4bf65ebb13d3a74f3298db36272c5ca65e92d9a7eb7258ded52bbda2248404d55ee5044798afc3a209193073f7954d4d63b0b647f03fd9ac865a4b2a6d5e7009785817249bff08a7e0726fcb4e1c11d39d199f0b07f2304d31eaab960ba9274da43e19ddeb7f792180808fd6e43baae48d7efcba3f3610066565b6111aa7f0832e5753ceb0ff6402543b1109229c165dc2d73bef715e3f1c6e07c168bb1737f2b1b045def3a166cec6ce768d079ba74b18c844e570e1f826575c1068c94c33f7f1e65f838515e5ff0196b49aa41a2d2568df739bc176b08ec95a79ed82932e30d7f1ef90e67437fbc8550237a75bc28e3bb9000130ea25f0c5471e144cf4264431f610066565b6112367f22ead100e8e482674decdab17066c5a26bb1515355d5461a3dc06cc85327cea97f0493630b7c670b6deb7c84d414e7ce79049f0ec098c3c7c50768bbe29214a53a7f0e2427d38bd46a60dd640b8e362cad967370ebb777bedff40f6a0be27e7ed7057f02f614e9cedfb3dc6b762ae0a37d41bab1b841c2e8b6451bc5a8e3c390b6ad16610066565b6112c27f2f569b8a9a4424c9278e1db7311e889f54ccbf10661bab7fcd18e7c7a7d835057f2fa2a871c15a387cc50f68f6f3c3455b23c00995f05078f672a9864074d412e57f1e32752ada8836ef5837a6cde8ff13dbb599c336349e4c584b4fdc0a0cf6f9d07f25b3e56e655b42cdaae2626ed2554d48583f1ae35626d04de5084e0b6d2a6f16610066565b61134e7f0ef915f0ac120b876abccceb344a1d36bad3f3c5ab91a8ddcbec2e060d8befac7f02fcca2934e046bc623adead873579865d03781ae090ad4a8579d2e7a68003557f227808de93906d5d420246157f2e42b191fe8c90adfe118178ddc723a53190257f044cb455110a8fdd531ade530234c518a7df93f7332ffd2144165374b246b43d610066565b6113da7f25721c4fc15a3f2853b57c338fa538d85f8fbba6c6b9c6090611889b797b9c5f7f1fffb9ec1992d66ba1e77a7b93209af6f8fa76d48acb664796174b5326a31a5c7f0a76225dc04170ae3306c85abab59e608c7f497c20156d4d36c668555decc6e57f1797130f4b7a3e1777eb757bc6f287f6ab0fb85f6be63b09f3b16ef2b1405d38610066565b6114667f21ca859468a746b6aaa79474a37dab49f1ca5a28c748bc7157e1b3345bb0f9597f2106feea546224ea12ef7f39987a46c85c1bc3dc29bdbd7a92cd60acb4d391ce7f13abe3f5239915d39f7e13c2c24970b6df8cf86ce00a22002bc15866e52b5a967f0c817fd42d5f7a41215e3d07ba197216adb4c3790705da95eb63b982bfcaf75a610066565b6114f27f09d3dca9173ed2faceea125157683d18924cadad3f655a60b72f5864961f14557f0558531a4e25470c6157794ca36d0e9647dbfcfe350d64838f5b1a8a2de0d4bf7f0f0e34a64b70a626e464d846674c4c8816c4fb267fe44fe6ea28678cb09490a47f05ccd6255c1e6f0c5cf1f0df934194c62911d14d0321662a8f1a48999e34185b610066565b61157e7f176563472456aaa746b694c60e1823611ef39039b2edc7ff391e6f2293d2c4047f1daf345a58006b736499c583cb76c316d6f78ed6a6dffc82111e11a63fe412df7f2bf07216e2aff0a223a487b1a7094e07e79e7bcc9798c648ee3347dd5329d34b7f0328cbd54e8c0913493f866ed03d218bf23f92d68aaec48617d4c722e5bd4335610066565b61160a7f2debff156e276bb5742c3373f2635b48b8e923d301f372f8e550cfd4034212c77f14bce3549cc3db7428126b4c3a15ae0ff8148c89f13fb35d35734eb5d4ad0def7f226c9b1af95babcf17b2b1f57c7310179c1803dec5ae8f0a1779ed36c817ae2a7f2ef1e0fad9f08e87a3bb5e47d7e33538ca964d2b7d1083d4fb0225035bd3f8db610066565b6116967f0b61811a9210be78b05974587486d58bddc8f51bfdfebbb87afe8b7aa7d3199c7f03152169d4f3d06ec33a79bfac91a02c99aa0200db66d5aa7b835265f9c9c8f37f0c225b7bcd04bf9c34b911262fdc9c1b91bf79a10c0184d89c317c53d7161c297f2d4083cf5a87f5b6fc2395b22e356b6441afe1b6b29c47add7d0432d1d4760c7610066565b6117217e780af2ca1cad6465a2171250fdfc32d6fc241d3214177f3d553ef3631821857f0376b4fae08cb03d3500afec1a1f56acb8e0fde75a2106d7002f59c5611d4daa7f1a44bf0937c722d1376672b69f6c9655ba7ee386fda1112c0757143d1bfa91467f203e000cad298daaf7eba6a5c5921878b8ae48acf7048f16046d637a533b6f78610066565b6117ac7f222c01175718386f2e2e82eb122789e352e105a3b8fa852613bc534433ee428c7e544b8338791518b2c7645a50392798b21f75bb60e3596170067d00141cac167f10dc6e9c006ea38b04b1e03b4bd9490c0d03f98929ca1d7fb56821fd19d3b6e87f10774d9ab80c25bdeb808bedfd72a8d9b75dbe18d5221c87e9d857079bdc31d5610066565b6118387f04a533f236c422d1ff900a368949b0022c7a2ae092f308d82b1dcbbf51f5000d7f06041bdac48205ac87adb87c20a478a71c9950c12a80bc0a55a8e83eaaf047467f062752f86eebe11a009c937e468c335b04554574c2990196508e01fa5860186b7f2840d045e9bc22b259cfb8811b1e0f45b77f7bdb7f7e2b46151a1430f608e3c5610066565b6118c47f14abdec8db9c6dc970291ee638690209b65080781ef9fd13d84c7a726b5f13647f0b0d219346b8574525b1a270e0b4cba5d56c928e3e2c2bd0a1ecaed015aaf6ae7f011c2683ae91eb4dfbc13d6357e8599a9279d1648ff2c95d2f79905bb13920f17f13e31d7a67232fd811d6a955b3d4f25dfe066d1e7dc33df04bde50a2b2d05b2a610066565b6119507f2567a658a81ffb444f240088fa5524c69a9e53eeab6b7f8c41c3479dcf8c644a7f16eb59494a9776cf57866214dbd1473f3f0738a325638d8ba36535e011d582597f278543721f96d1307b6943f9804e7fe56401deb2ef99c4d12704882e7278b6077f1a0b70b4b26fdc28fcd32aa3d266478801eb12202ef47ced988d0376610be106610066565b6119dc7f02db50480a07be0eb2c2e13ed6ef4074c0182d9b668b8e08ffe67692500420257f16bd7d22ff858e5e0882c2c999558d77e7673ad5f1915f9feb679a8115f014cf7f15c091233e60efe0d4bbfce2b36415006a4f017f9a85388ce206b91f99f2c9847f29aa1d7c151e9ad0a7ab39f1abd9cf77ab78e0215a5715a6b882ade840bb13d8610066565b611a687f1498a307e68900065f5e8276f62aef1c37414b84494e1577ad1a6d64341b78ec7f0184bef721888187f645b6fee3667f3c91da214414d89ba5cd301f22b0de89907f1dda05ebc30170bc98cbf2a5ee3b50e8b5f70bc424d39fa4104d37f1cbcf7a427f05e4a220e6a3bc9f7b6806ec9d6cdba186330ef2bf7adb4c13ba866343b73119610066565b611af47f0f53dafd535a9f4473dc266b6fccc6841bbd336963f254c152f89e785f729bbf7f2f77d77786d979b23ba4ce4a4c1b3bd0a41132cd467a86ab29b913b6cf3149d07f09d317cc670251943f6f5862a30d2ea9e83056ce4907bfbbcb1ff31ce5bb96507f25f40f82b31dacc4f4939800b9d2c3eacef737b8fab1f864fe33548ad46bd49d610066565b611b807f24a6073f91addc33a49a1fa306df008801c5ec569609034d2fc50f7f0f4d00567f1ce1580a3452ecf302878c8976b82be96676dd114d1dc8d25527405762f835297f2a902c8980c17faae368d385d52d16be41af95c84eaea3cf893e65d6ce4a8f627f25c1fd72e223045265c3a099e17526fa0e6976e1c00baf16de96de85deef2fa2610066565b611c0c7f2754114281286546b75f09f115fc751b4778303d0405c1b4cc7df0d8e9f639257f06342da370cc0d8c49b77594f6b027c480615d50be36243a99591bc9924ed6f57f23dffae3c423fa7a93468dbccfb029855974be4d0a7b29946796e5b6cd70f15d7f25e52dbd6124530d9fc27fe306d71d4583e07ca554b5d1577f256c68b0be2b74610066565b611c987f17662f7456789739f81cd3974827a887d92a5e05bdf3fe6b9fbccca4524aaebd7f13ccf689d67a3ec9f22cb7cd0ac3a327d377ac5cd0146f048debfd098d3ec7be7f265fe062766d08fab4c78d0d9ef3cabe366f3be0a821061679b4b3d2d77d5f3e7f15c19e8534c5c1a8862c2bc1d119eddeabf214153833d7bdb59ee197f8187cf5610066565b611d247f2ddb2e376f54d64a563840480df993feb4173203c2bd94ad0e602077aef9a03e7f2bc07ea2bfad68e8dc724f5fef2b37c2d34f761935ffd3b739ceec4668f37e887f18137478382aadba441eb97fe27901989c06738165215319939eb17b01fa975c7f21b29c76329b31c8ef18631e515f7f2f82ca6a5cca70cee4e809fd624be7ad5d610066565b611db07f11fe5b18fbbea1a86e06930cb89f7d4a26e186a65945e96574247fddb720f8f57f0b8442bfe9e4a1b4428673b6bd3eea6f9f445697058f134aae908d0279a29f0c7f0d4de47e1aba34269d0c620904f01a56b33fc4b450c0db50bb7f87734c9a1fe57f277eb50f2baa706106b41cb24c602609e8a20f8d72f613708adb25373596c3f7610066565b611e3c7f30185c48b7b2f1d53d4120801b047d087493bce64d4d24aedce2f4836bb84ad47f221b63d66f0b45f9d40c54053a28a06b1d0a4ce41d364797a1a7e0c96529f4217f0b2ca6a999fe6887e0704dad58d03465a96bc9e37d1091f61bc9f9c62bbeb8247f224026f6dfaf71e24d25d8f6d9f90021df5b774dcad4d883170e4ad89c33a0d6610066565b611ec87f1444e8f592bdbfd8025d91ab4982dd425f51682d31472b05e81c43c0f9434b317f0977545836866fa204ca1d853ec0909e3d140770c80ac67dc930c69748d5d4bc7f2716683b32c755fd1bf8235ea162b1f388e1e0090d06162e8e6dfbe4328f3e3b7f23f5d372a3f0e3cba989e223056227d3533356f0faa48f27f8267318632a61f0610066565b611f547f1db1db8aa45283f31168fa66694cf2808d2189b87c8c8143d56c871907b39b877f174b54d9907d8f5c6afd672a738f42737ec338f3a0964c629f7474dd44c5c8d77f22a5c2fa860d11fe34ee47a5cd9f869800f48f4febe29ad6df69816fb1a914d27f26e04b65e9ca8270beb74a1c5cb8fee8be3ffbfe583f7012a00f874e7718fbe3610066565b611fe07f2b30d53ed1759bfb8503da66c92cf4077abe82795dc272b377df57d77c8755267f29c25a22fe2164604552aaea377f448d587ab977fc8227787bd2dc0f36bcf41e7f0b73f613993229f59f01c1cec8760e9936ead9edc8f2814889330a2f2bade4577f1530bf0f46527e889030b8c7b7dfde126f65faf8cce0ab66387341d813d1bfd1610066565b61206c7f0a99b3e178db2e2e432f5cd5bef8fe4483bf5cbf70ed407c08aae24b830ad7257f1ec9daea860971ecdda8ed4f346fa967ac9bc59278277393c68f09fa03b8b95f7f2520e18300afda3f61a40a0b8837293a55ad01071028d4841ffa9ac7063641137f12f6d703b5702aab7b7b7e69359d53a2756c08c85ede7227cf5f0a2916787cd2610066565b6120f87f1049a6c65ff019f0d28770072798e8b7909432bd0c129813a9f179ba627f7d6a7f2737f8ce1d5a67b349590ddbfbd709ed9af54a2a3f2719d33801c9c17bdd9c9e7f08c9c65a4f955e8952d571b191bb0adb49bd8290963203b35d48aab38f8fc3a37f07cda9e63db6e39f086b89b601c2bbe407ee0abac3c817a1317abad7c5778492610066565b6121847f265a5eccd8b92975e33ad9f75bf3426d424a4c6a7794ee3f08c1d100378e545e7f2ec5f2f1928fe932e56c789b8f6bbcb3e8be4057cbd8dbd18a1b352f5cef42ff7f2ff2b6fd22df49d2440b2eaeeefa8c02a6f478cfcf11f1b2a4f7473483885d197f18b4fe968732c462c0ea5a9beb27cecbde8868944fdf64ee60a5122361daeddb610066565b6122107f01a75666f6241f6825d01cc6dcb1622d4886ea583e87299e6aa2fc716fdb6cf57f2c30d5f33bb32c5c22b9979a605bf64d508b705221e6a686330c9625c2afe0b87f094c97d8c194c42e88018004cbbf2bc5fdb51955d8b2d66b76dd98a2dbf604177f2405eaa4c0bde1129d6242bb5ada0e68778e656cfcb366bf20517da1dfd4279c610066565b61229c7f2cf4051e6cab48301a8b2e3bca6099d756bbdf485afa1f549d395bbcbd8064617f27aa8d3e25380c0b1b172d79c6f22eee99231ef5dc69d8dc13a4b5095d0287727f154ade9ca36e268dfeb38461425bb0d8c31219d8fa0dfc75ecd21bf69aa0cc747f0a3290e8398113ea4d12ac091e87be7c6d359ab9a66979fcf47bf2e87d382fcb610066565b6123287f0dc8a2146110c0b375432902999223d5aa1ef6e78e1e5ebcbc1d9ba41dc1c7377f1b362e72a5f847f84d03fd291c3c471ed1c14a15b221680acf11a3f02e46aa957f298beb64f812d25d8b4d9620347ab02332dc4cef113ae60d17a8d7a4c91f83bc7f301e70f729f3c94b1d3f517ddff9f2015131feab8afa5eebb0843d7f84b23e71610066565b6123b47f01001cf512ac241d47ebe2239219bc6a173a8bbcb8a5b987b4eac1f533315b6b7f1b5b2946f7c28975f0512ff8e6ca362f8826edd7ea9c29f382ba8a2a0892fd5d7f0a87391fb1cd8cdf6096b64a82f9e95f0fe46f143b702d74545bb314881098ee7f0a48663b34ce5e1c05dc93092cb69778cb21729a72ddc03a08afa1eb922ff279610066565b6124407f2d9b10c2f2e7ac1afddccffd94a563028bf29b646d020830919f9d5ca1cefe597f19d43ee0c6081c052c9c0df6161eaac1aec356cf435888e79f27f22ff03fa25d7f23c0039a3fab4ad3c2d7cc688164f39e761d5355c05444d99be763a97793a9c47f2fd977c70f645db4f704fa7d7693da727ac093d3fb5f5febc72beb17d8358a32610066565b6124cc7f0f97ae3033ffa01608aafb26ae13cd393ee0e4ec041ba644a3d3ab546e98c9c87f19d2cc5ca549d1d40cebcd37f3ea54f31161ac3993acf3101d2c2bc30eac1eb07f0abc392fe85eda855820592445094022811ee8676ed6f0c3044dfb54a7c10b357f2457ca6c2f2aa30ec47e4aff5a66f5ce2799283e166fc81cdae2f2b9f83e4267610066565b6125587f2e47e15ea4a47ff1a6a853aaf3a644ca38d5b085ac1042fdc4a705a7ce089f4d7f0a1bb075aa37ff0cfe6c8531e55e1770eaba808c8fdb6dbf46f8cab58d9ef1af7f240faf28f11499b916f085f73bc4f22eef8344e576f8ad3d1827820366d5e07b7f16dbc78fd28b7fb8260e404cf1d427a7fa15537ea4e168e88a166496e88cfeca610066565b6125e47f242acd3eb3a2f72baf7c7076dd165adf89f9339c7b971921d9e70863451dd8d17f089cb1b032238f5e4914788e3e3c7ead4fc368020b3ed38221deab1051c377027f18b42d7ffdd2ea4faf235902f057a2740cacccd027233001ed10f96538f0916f7f166e5bf073378348860ca4a9c09d39e1673ab059935f4df35fb14528375772b6610066565b6126707f0529898dc0649907e1d4d5e284b8d1075198c55cad66e8a9bf40f92938e2e9617f1e8e40ac853b7d42f00f2e383982d024f098b9f8fd455953a2fd380c4df7f6b27f17340e71d96f466d61f3058ce092c67d2891fb2bb318613f780c275fe1116c6b7f174fbb104a4ee302bf47f2bd82fce896eac9a068283f326474af860457245c3b610066565b6126fb7eccf13e0cb6f9d81d52951bea990bd5b6c07c5d98e66ff71db6e74d5b87d1587f292643e3ba2026affcb8c5279313bd51a733c93353e9d9c79cb723136526508e7f12c7553698c4bf6f3ceb250ae00c58c2a9f9291efbde4c8421bef44741752ec67f2162754db0baa030bf7de5bb797364dce8c77aa017ee1d7bf65f21c4d4e5df8f610066565b6127877f1b8fd9ff39714e075df124f887bf40b383143374fd2080ba0c0a6b6e8fa5b3e87f0f356841b3f556fce5dbe4680457691c2919e2af53008184d03ee1195d72449e7f14c61c836d55d3df742bdf11c60efa186778e3de0f024c0f13fe53f8d8764e1f7f185d1e20e23b0917dd654128cf2f3aaab6723873cb30fc22b0f86c15ab645b4b610066565b6128137f29a3110463a5aae76c3d152875981d0c1daf2dcd65519ef5ca8929851da8c0087f05d797f1ab3647237c14f9d1df032bc9ff9fe1a0ecd377972ce5fd5a0c0146047f2e6c5e898f5547770e5462ad932fcdd2373fc43820ca2b16b0861421e79155c87f0e86a8c2009c140ca3f873924e2aaa14fc3c8ae04e9df0b3e9103418796f6024610066565b61289f7f1e6aac1c6d3dd3157956257d3d234ef18c91e82589a78169fbb4a8770977dc2f7f1c793ef0dcc51123654ff26d8d863feeae29e8c572eca912d80c8ae36e40fe9b7f1ed0fb06699ba249b2a30621c05eb12ca29cb91aa082c8bfcce9c522889b47dc7f2974da7bc074322273c3a4b91c05354cdc71640a8bbd1f864b732f8163883314610066565b61292a7f0b0d7e69c651910bbef3e68d417e9fa0fbd57f596c8f29831eff8c0174cdb06d7e6e5979da7e7ef53a825aa6fddc3abfc76f200b3740b8b232ef481f5d06297b7f191033d6d85ceaa6fc7a9a23a6fd9996642d772045ece51335d49306728af96c7f1a20ada7576234eee6273dd6fa98b25ed037748080a47d948fcda33256fb6bf5610066565b6129b67f0136df457c80588dd687fb2f3be18691705b87ec5a4cfdc168d31084256b67dc7f16af29695157aba9b8bbe3afeb245feee5a929d9f928b9b81de6dadc78c32aae7f12c1ea892cc31e0d9af8b796d9645872f7f77442d62fd4c8085b2f150f72472a7f25caf5b0c1b93bc516435ec084e2ecd44ac46dbbb033c5112c4b20a25c9cdf9d610066565b612a427f13f9b9a41274129479c5e6138c6c8ee36a670e6bc68c7a49642b645807bfc8247f11aeeb527dc8ce44b4d14aaddca3cfe2f77a1e40fc6da97c249830de1edfde547f03d62fbf82fd1d4313f8e650f587ec06816c28b700bdc50f7e232bd9b5ca9b767f1639a28c5b4c81166aea984fba6e71479e07b1efbc74434db95a285060e7b089610066565b612ace7f2cf0a09a55ca93af8abd068f06a7287fb08b193b608582a27379ce35da915dec7f2bedb66e1ad5a1d571e16e2953f48731f66463c2eb54a245444d1c0a3a25707e7f1b39a00cbc81e427de4bdec58febe8d8b5971752067a612b39fc46a68c5d4db47f0e4772fa3d75179dc8484cd26c7c1f635ddeeed7a939440c506cae8b7ebcd15b61031c565b612b5a7f1aa9d3fe4c644910f76b92b3e13b30d500dae5354e79508c3c49c8aa99e0258b7f2d933ff19217a5545013b12873452bebcc5f9969033f15ec642fb464bd6073687f065610c6f4f92491f423d3071eb83539f7c0d49c1387062e630d7fd283dc33947f2d1bd78fa90e77aa88830cabfef2f8d27d1a512050ba7db0753c8fb863efb38761031c565b612be57eb4567186bc3f7c62a7b56acf4f76207a1f43c2d30d0fe4a627dcdd9bd790787f0c7c382443c6aa787c8718d86747c7f74693ae25b1e55df13f7c3c1dd735db0f7f2b7d524c5172cbbb15db4e00668a8c449f67a2605d9ec03802e3fa136ad0b8fb7f027ef04869e482b1c748638c59111c6b27095fa773e1aca078cea1f1c8450bdd61031c565b6000805160206130188339815191527f1e41fc29b825454fe6d61737fe08b47fb07fe739e4c1e61d0337490883db4fd5600051086000805160206130188339815191527f12507cd556b7bbcc72ee6dafc616584421e1af872d8c0e89002ae8d3ba0653b6602051086000805160206130188339815191527f13d437083553006bcef312e5e6f52a5d97eb36617ef36fe4d77d3e97f71cb5db608051086000805160206130188339815191527f163ec73251f85443687222487dda9a65467d90b22f0b38664686077c6a4486d560a0510860008051602061301883398151915284850994506000805160206130188339815191528460008051602061301883398151915287880909935060008051602061301883398151915283840994506000805160206130188339815191528360008051602061301883398151915287880909925060008051602061301883398151915282830994506000805160206130188339815191528260008051602061301883398151915287880909915060008051602061301883398151915281820994506000805160206130188339815191528160008051602061301883398151915287880909905060008051602061301883398151915280600080516020612f188339815191528309600080516020613018833981519152806000805160206130d88339815191528609600080516020613018833981519152806000805160206130b88339815191528909600080516020613018833981519152600080516020612ef88339815191528b090808086000525050505060206000f35b600060608284031215612e3e57600080fd5b82601f830112612e4d57600080fd5b604051606081016001600160401b0381118282101715612e7d57634e487b7160e01b600052604160045260246000fd5b604052806060840185811115612e9257600080fd5b845b81811015612eac578035835260209283019201612e94565b50919594505050505056fe2e18c8570d20bf5df800739a53da75d906ece318cd224ab6b3a2be979e2d7eab0d745fd00dd167fb86772133640f02ce945004a7bc2c59e8790f725c5d84f0af236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad1d359d245f286c12d50d663bae733f978af08cdbd63017c57b3a75646ff382c103f3e6fab791f16628168e4b14dbaeb657035ee3da6b2ca83f0c2491e0b403eb23810bf82877fc19bff7eefeae3faf4bb8104c32ba4cd701596a15623d01476e2070679e798782ef592a52ca9cef820d497ad2eecbaa7e42f366b3e521c4ed422e49c43c4569dd9c5fd35ac45fca33f10b15c590692f8beefe18f4896ac94902083abff5e10051f078e2827d092e1ae808b4dd3e15ccc3706f38ce4157b6770e00c15fc3a1d5733dd835eae0823e377f8ba4a8b627627cc2bb661c25d20fb52a1a5ad71bbbecd8a97dc49cfdbae303ad24d5c4741eab8b7568a9ff8253a1eb6f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000012a75a171563b807db525be259699ab28fe9bc7fb1f70943ff049bc970e841a0c2f545e578202c9732488540e41f783b68ff0613fd79375f8ba8b3d30958e76770fa86f0f27e4d3dd7f3367ce86f684f1f2e4386d3e5b9f38fa283c6aa723b608014fcd5eb0be6d5beeafc4944034cf321c068ef930f10be2207ed58d2a34cdd6277686494f7644bbc4a9b194e10724eb967f1dc58718e59e3cedc821b2a7ae19023db68784e3f0cc0b85618826a9b3505129c16479973b0a84a4529e66b09c62a26469706673582212200dc6476f1cc5e37aa8028ba3f8492e68dc17e1cef432b6b868c0bda947f6f5d864736f6c634300080a0033"; + +type PoseidonT4ConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: PoseidonT4ConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class PoseidonT4__factory extends ContractFactory { + constructor(...args: PoseidonT4ConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): PoseidonT4 { + return super.attach(address) as PoseidonT4; + } + override connect(signer: Signer): PoseidonT4__factory { + return super.connect(signer) as PoseidonT4__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): PoseidonT4Interface { + return new utils.Interface(_abi) as PoseidonT4Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): PoseidonT4 { + return new Contract(address, _abi, signerOrProvider) as PoseidonT4; + } +} diff --git a/packages/app/src/typechain/factories/contracts/poseidon/PoseidonT5__factory.ts b/packages/app/src/typechain/factories/contracts/poseidon/PoseidonT5__factory.ts new file mode 100644 index 00000000..53dcd93c --- /dev/null +++ b/packages/app/src/typechain/factories/contracts/poseidon/PoseidonT5__factory.ts @@ -0,0 +1,82 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + PoseidonT5, + PoseidonT5Interface, +} from "../../../contracts/poseidon/PoseidonT5"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256[4]", + name: "", + type: "uint256[4]", + }, + ], + name: "hash4", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, +] as const; + +const _bytecode = + "0x6141fc61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c80633dfb88b21461003a575b600080fd5b61004d610048366004613ddb565b61005f565b60405190815260200160405180910390f35b6000610948565b600080516020613fe78339815191528160005108600080516020613fe78339815191528360205108600080516020613fe78339815191528560805108600080516020613fe78339815191528760a05108600080516020613fe78339815191528960c05108600080516020613fe7833981519152858609600080516020613fe783398151915286600080516020613fe783398151915283840909955050600080516020613fe7833981519152806000805160206140878339815191528309600080516020613fe783398151915280600080516020613f478339815191528609600080516020613fe7833981519152806000805160206141078339815191528909600080516020613fe7833981519152806000805160206140278339815191528c09600080516020613fe78339815191526000805160206141478339815191528e0908080808600052600080516020613fe7833981519152806000805160206141a78339815191528309600080516020613fe783398151915280600080516020613f878339815191528609600080516020613fe7833981519152806000805160206140c78339815191528909600080516020613fe7833981519152806000805160206141678339815191528c09600080516020613fe7833981519152600080516020613ee78339815191528e0908080808602052600080516020613fe783398151915280600080516020613ec78339815191528309600080516020613fe7833981519152806000805160206140678339815191528609600080516020613fe7833981519152806000805160206140078339815191528909600080516020613fe783398151915280600080516020613fc78339815191528c09600080516020613fe7833981519152600080516020613e678339815191528e0908080808608052600080516020613fe783398151915280600080516020613e878339815191528309600080516020613fe783398151915280600080516020613fa78339815191528609600080516020613fe783398151915280600080516020613f278339815191528909600080516020613fe7833981519152806000805160206141278339815191528c09600080516020613fe78339815191526000805160206141878339815191528e090808080860a052600080516020613fe783398151915280600080516020613f078339815191528309600080516020613fe783398151915280600080516020613ea78339815191528609600080516020613fe7833981519152806000805160206140478339815191528909600080516020613fe7833981519152806000805160206140e78339815191528c09600080516020613fe78339815191526000805160206140a78339815191528e090808080860c05250505050505050505050565b600080516020613fe78339815191528160005108600080516020613fe78339815191528360205108600080516020613fe78339815191528560805108600080516020613fe78339815191528760a05108600080516020613fe78339815191528960c05108600080516020613fe7833981519152858609600080516020613fe783398151915286600080516020613fe7833981519152838409099550600080516020613fe78339815191528586099050600080516020613fe783398151915285600080516020613fe7833981519152838409099450600080516020613fe78339815191528485099050600080516020613fe783398151915284600080516020613fe7833981519152838409099350600080516020613fe78339815191528384099050600080516020613fe783398151915283600080516020613fe7833981519152838409099250600080516020613fe78339815191528283099050600080516020613fe783398151915282600080516020613fe783398151915283840909915050600080516020613fe7833981519152806000805160206140878339815191528309600080516020613fe783398151915280600080516020613f478339815191528609600080516020613fe7833981519152806000805160206141078339815191528909600080516020613fe7833981519152806000805160206140278339815191528c09600080516020613fe78339815191526000805160206141478339815191528e0908080808600052600080516020613fe7833981519152806000805160206141a78339815191528309600080516020613fe783398151915280600080516020613f878339815191528609600080516020613fe7833981519152806000805160206140c78339815191528909600080516020613fe7833981519152806000805160206141678339815191528c09600080516020613fe7833981519152600080516020613ee78339815191528e0908080808602052600080516020613fe783398151915280600080516020613ec78339815191528309600080516020613fe7833981519152806000805160206140678339815191528609600080516020613fe7833981519152806000805160206140078339815191528909600080516020613fe783398151915280600080516020613fc78339815191528c09600080516020613fe7833981519152600080516020613e678339815191528e0908080808608052600080516020613fe783398151915280600080516020613e878339815191528309600080516020613fe783398151915280600080516020613fa78339815191528609600080516020613fe783398151915280600080516020613f278339815191528909600080516020613fe7833981519152806000805160206141278339815191528c09600080516020613fe78339815191526000805160206141878339815191528e090808080860a052600080516020613fe783398151915280600080516020613f078339815191528309600080516020613fe783398151915280600080516020613ea78339815191528609600080516020613fe7833981519152806000805160206140478339815191528909600080516020613fe7833981519152806000805160206140e78339815191528c09600080516020613fe78339815191526000805160206140a78339815191528e090808080860c05250505050505050505050565b6000600080516020613fe78339815191527f0554d736315b8662f02fdba7dd737fbca197aeb12ea64713ba733f28475128cb60805108600080516020613fe78339815191527f2f83b9df259b2b68bcd748056307c37754907df0c0fb0035f5087c58d5e8c2d460a05108600080516020613fe78339815191527f2ca70e2e8d7f39a12447ac83052451b461f15f8b41a75ef31915208f5aba968360c05108600080516020613fe78339815191527f1cb5f9319be6a45e91b04d7222271c94994196f12ed22c5d4ec719cb83ecfea960e05108600080516020613fe7833981519152600080516020613f67833981519152610100510860e052600080516020613fe78339815191528485099450600080516020613fe783398151915284600080516020613fe7833981519152878809099350600080516020613fe78339815191528384099450600080516020613fe783398151915283600080516020613fe7833981519152878809099250600080516020613fe78339815191528283099450600080516020613fe783398151915282600080516020613fe7833981519152878809099150600080516020613fe78339815191528182099450600080516020613fe783398151915281600080516020613fe7833981519152878809099050600080516020613fe7833981519152806000805160206140878339815191528309600080516020613fe783398151915280600080516020613f478339815191528609600080516020613fe7833981519152806000805160206141078339815191528909600080516020613fe7833981519152806000805160206140278339815191528c097f1282bc78005ba97a80ccae28ce172790ca301e19e52354333993891b9fd27bd408080808600052600080516020613fe7833981519152806000805160206141a78339815191528309600080516020613fe783398151915280600080516020613f878339815191528609600080516020613fe7833981519152806000805160206140c78339815191528909600080516020613fe7833981519152806000805160206141678339815191528c097f25ce673773c90bcab91ecf14a691cbc59aeff5abfff4cfc7c6a85d51a79468fa08080808602052600080516020613fe783398151915280600080516020613ec78339815191528309600080516020613fe7833981519152806000805160206140678339815191528609600080516020613fe7833981519152806000805160206140078339815191528909600080516020613fe783398151915280600080516020613fc78339815191528c097f2933f130a05a81186977481f40b428b2fa98c4a8f2561aad43098fb380f746b708080808608052600080516020613fe783398151915280600080516020613e878339815191528309600080516020613fe783398151915280600080516020613fa78339815191528609600080516020613fe783398151915280600080516020613f278339815191528909600080516020613fe7833981519152806000805160206141278339815191528c097f178f5c848248d8ae30d9d4e6c27ec06995bba97b9d0ab13bb7b63e121958133e0808080860a052600080516020613fe783398151915280600080516020613f078339815191528309600080516020613fe783398151915280600080516020613ea78339815191528609600080516020613fe7833981519152806000805160206140478339815191528909600080516020613fe7833981519152806000805160206140e78339815191528c097f1f52dac6047456323348e214a18a3aad024561b12c7ca045cd2484b9d4ffe3c00808080860c05250505050610f1f7f1e9a96dc8292bb596f52a59538d329229732b25259cf744b6a12d30702d6fba07f0f9d0d5aad2c9555a2be7150392d8d9819b208ae3370f99a0626f9ff5d90e4e37f0f7411b465e600eed8afdd6afca49c3036f33ecbd9a0f97823796b993bbd82f77f224a28e5a35385a7c5198169e405d9ea0fc7da8b93ee13b6d5f7d099e299520e600080516020613f67833981519152610465565b610fcc7f0ac1e91c57d9da919fd6f59d2a40ff8ea3e41e24e247a387adf2584295d61c667f045b9f59b6595e614dc08f222b469b138e886e64bf3c40aa97ea0ae754934d307f01ef8f9dd7c93aac4b7cb80930bd06eb45bd350aff585f10e3d0ef8a782ef7df7f272498fced686c7ac8149fa3f73ef8c2ced64717e3556d5a59f119d629ccb5fc7f08780514ccd90380887d578c45555e593cfe52eab4b945c6c2cd4d528fb3fe3c610465565b6110797f1b041ad5b2f0684258e4dfaeea09be56a3276fdb19f44c015cd0c7eed465e2e37f2212d3a0f5fccaf244ff3547fd823249ad8ab8ba2a18d383dd05c56ee894d8507f2fb5dda8072bb72cbaac2f63e468215e05c9de06758db6a94af34384aedb462b7f26b41802c071ea4c9632647ed059236e50c19c3fb3c96d09d02aae2a0dcd9dbc7f028a1621a94054b0c7f9a421353cd89d0fd67061aee99979d12e68f04e62d134610465565b6111267f06d7626c953ccb72f37141dc34d578e036296c0657674f80739ae1d883e912697f1c46831d9a74529357641c219d721a74a427110032b5e1dd19dde30424be401e7f29d299b80cd4489e4cf75779ed54b48c60b042257b78fc004c1b803381a3bdfd7f2b7b5674aaecc3cbf34d3f275066d549a4f33ae8c15cf827f7936440810ace437f0a01776bb22f4b6b8eccff33e76fded3144fb7e3ac14e846a91e64afb1500eff610066565b6111d37f2aa74f7597f0c9f45f91d7961c3a54fb8890d276612e1246384b1470da24d8cc7f2e6e07c3c95bf7c34dd7a01d00a7ffec42cb3d16a1f72721afacb4c4cfd35db17f26ce38fa636c90630e97f25114a79a2dca56859ef759e53ce7abf22c24e80f277f2e67f7ee5e4aa295f85deed09e400b17be67f1b7ed2ab6adb8ec0619f6fbc5e97f28ffddc86f18c136c54002748e0c410edc5c440a3022cd960f108c71cda2930c610066565b6112807f0e444582d22b4e76c081d34c44c18e424011a34d5476252863ea3c606b551e5c7f1dff6385cb31f1c24637810a4bd1b16fbf5152905be36583da747e79661fc2077f1154f7cf519186bf1aafb14b350eb860f97fd9740926dab93809c284047135047f212bd19df812eaaef4a40600528f3d7da5d3106ff565aa3b11e29f3305e73c047f287d681a46a2faae2c7c090f668ab45b8a71313c1509183e2ec0ca639b7f73fe610066565b61132c7e874c1344a4ad51ff8dcb7cbd2d9743cb72743f0394efe7f4a58ebeb956baa17f13d51c1090a1ad4876d1e555d7fed13da8e5713b25026ebe5fdb4808703243da7f1173b7d112c2a798fd9b9d3751842c75d466c837cf50d73efd049eb4438a22407f12746bbd71791059193bba79cdec448f25b8cf002740112db70f2c6876a9c29d7f0323c9e433ba66c4abab6638328f02f1815773e9c2846323ff72d3aab7e4eff8610066565b6113d97f2999bab1a5f25210519fa6622af53a15a3e240c0da5701cb784fddc0dc23f01f7f094f5534444fae36a4bfc1d5bf3dc05bfbbbc70a6365366dd6745a5067289e437f09b18d9b917a55bca302be1f7f181e0e640b9d73a9ab298c69b435b5fc502f327f0bf964d2dbd25b908708b437a445fc3e984524a59101e6c18bf5eb05a919f1557f22df22131aaab85865ce236b07f244fa0eea48d3546e97d6a32a562074fef08f610066565b6114867f0a21fa1988cf38d877cc1e2ed24c808c725e2d4bcb2d3a007b5987b87085671d7f18a3f736509197d6e4915bdd04d3e5ddb67e2cc5de9a22750768e5524737172c7f186279b003454db01339ff77113bc9eb62603e078e1c6689a6c9582c41a0529f7f07268eaaba08bc19ec16d7e1318a4740565deb1e8e5742f862174b1a6866fccb7f2f6898c07581f6371ca94db73710e88084301bce8a93d13669575a11b03a3d23610066565b6115337f0492bf383c36fa55540303a3b536f85e7b70a58e854ab9b9103d7f5f379abaaa7f2fbea4d65d7ed425a42712e5a721e4eaa627ac5cb0eb878ccc2ee0aed543e9227f0890ba0819ac0a6f86d9865fe7e50ef361c61d3d43b6e65d7a24f651249baa707f164b7062c4671cf08c08b8c3f9806d560b7775b7c902f5788cd28de3e779f1617f15b285cbe26c467f1faf5ef6a64625228328c184a2c43bc00b36a135e785fba2610066565b6115e07f0c8b482dba0ad51be9f255de0c3dbddddf84a630af68d50bbb06983e3d5d58a57f18824a09e6afaf4a36ed2462a86bd0bad798815644f2bbde8813c13457a455507f024154adf0255d47958f7723921474131f2629fadc89496906cd01dc6fa0784e7f12fe5c2029e4b33893d463cb041acad0995b9621e6e49c3b7e380a76e36e6c1c7f05e91fe944e944104e20251c565142d61d6185a9ce85675f6a969d56292dc24e610066565b61168d7f2bd0f940ad936b796d2bc2e048bc979e49be23a4b13598f9fe536a16dc1d81e67f1c0f8697795689cdf70fd2f2c0f93d1a79b39ebc7a1b1c549dbbca7b8e747cd67f0f0d139a0e81e943038cb288d62636764bbb6295f07569885771ec84edc50c407f050ae95f6d2f1519122f5af67b690f31e550773fa8d18bf71cc6d0e911fa402e7f17325fd0ab635871363e0a1667d3b67c5a4fa67fcd6aaf86441392878fdb05e6610066565b61173a7f12f16e2de6d4ad46a98cdb697c6cad5dd5e7e413f741ccf29ff2ea486e59bb287f2bf3086e96c36c7bce415907ad0c40ed6e9661c009679e4e37cb13027c83e5257f193fe3db0ab47d3c5d2ec5e9c5bd9983c9891f2cadc165db6064bbe6fcc1e3057f2e4889d830a67e5a8f96bdd3155a7ca3284fbd307d1f71b0f151be62548e2aea7f27eb1be27c9c4e934778c09a0053337fa06ebb275e096d167ce54d1e96ee62cb610066565b6117e77f2ccc6f431fb7400730a783b66064697a1550c12b08dfeb72830e107da78e34057f2667f7fb5a4fa1246170a745d8a4188cc31adb0eae3325dc9f3f07d4b92b3e2e7f0e2d7e1dc946d70b2749a3b54367b25a71b84fb911aa57ae137fd4b6c21b444a7f21be0e2c4bfd64e56dc47f957806dc5f0a2d9bcc26412e2977df79acc10ba9747f2a72147d230119f3a0262e3653ddd19f33f3d5d6ec6c4bf0ad919b0343b92d2f610066565b6118947f026091fd3d4c44d50a4b310e4ac6f0fa0debdb70775eeb8af630cffb60092d6f7f09fad2269c4a8e93c81e1b9770ea098c92787a4575b2bd73a0bf2af32f86ff3c7f120ccce13d28b75cfd6fb6c9ea13a648bfcfe0d7e6ff8e9610b5e9f971e16b9a7f02977b34eeaa3cb6ad40dd42c9b6fdd7a0d2fbe753af88b36acfcd3ccbc53f2a7f08888a94fc5a2ca34f0201462420001fae6dbee9e8ca0c242ec50621e38e6e5d610066565b6119417f13177839c68a5080d4e746745e43711d3cbc0ca4a108f98d63b2aa681698de607f18cef581222b647e31238e57fead7d5c758ace14c93c4da40191d0c053b519367f098c842322479f7239912b50424685cba2ebe2dc2e4da70ac7557dab65ffa2227f2749475c399aaf39d4e87c2548695b4ef1ffd86590e0827de7201351b7c883f97f29404aa2ba565b77bb7fba9dfb6fc3212543cc56afad6afcb904fd2bca893994610066565b6119ee7f0fc082dfe70728e8450bd2074c3e22e1b022c124d3bffe8b5af88ae6db5085c87f2c323fe16481bf496e439c88341ce25f198971e14487056cfdca4a451a5d86437f01645911c1198b01d64fde34a342a1786497c05969a015439057d2fe75bb281c7f27230eede9cccfc9fa805a30fc548db693d13708c646841d16e028387c7ac0227f020ca696f531e43ec088f56f4b74325626cc4df712c0e5f0a907d88e5f0deffd610066565b611a9b7f21c91a39e145c3bc34d9b694b843f3bf8b7cebf59ddbb0a064642b069997f3d47f160a9981a5c89a57cf8ffbfa57d51049a297b61074422ac134d9b857d6984d357f25698ca5e24a1b799f783c4462a24db655d6ae1bdacd1cb549d6e0bc3ae5069a7f28e420e10df2fbb5af96d621d55423190be351ce8129065a8dd9fd05b3ece9c07f2052c174800db209d8cdca568dcc25b3be9642116ac4c77efe8a488b423521ee610066565b611b487f23b584a56e2117b0774bf67cc0dee33324337350309dff833e491a133bb63b2e7f2cdbc998dfd7affd3d948d0c85bad2e2e37a4a3e07a7d75d0c8a9092ac2bed457f1c675182512620ae27e3b0b917b3a21ca52ef3ef5909b4e1c5b2237cbdab33777f0ab3e6ad0ecf8b8e7c1662a4174c52225d822895e2755544b8dbcea5657ce02c7f1ac8d80dcd5ee876d2b09345ef112345d6eaa029d93f03b6d10975461e41734c610066565b611bf57f1647c72aec6c4388d04f52fc23cd9c08c1dfcf65ce61e165fc28d1f832bd3b2c7f190b1ee1205eb9500c74a3998f2bea36353f1724d6067ed0a0a17de311ef96687f040884cdcfc64bfc7b7127340498d5c443382011b61c9a4b1387d85bc1264e687f0e01e365ba5b3031abc3e720140ae746c9ab5dab987520c460bcd4f1fa5b22db7f1e9e2b310f60ba9f8cb73030a3c9d2a10d133bc6ba4ec1152f3d20de1465e9a5610066565b611ca27f04476d91b7eff2fd85905cbf58651edc320cb15610eaed452c4d4ffa0c740a277f25d0e0f739fb39fc105a88fab0afd810de2461858e956ccccdfabeddb6a25c8f7f04a420e642b11ae94e58862a68f5e32609cd53d0ae29423439b11d04666df4f87f177b9a08343917e1365107a3da3ae7f69d853902bb16bacb3221850252b757af7f2430006346a0145f799880cc4c8736269f5494d89fb48b02842e595b71e4541d610066565b611d4f7f26a363483348b58954ea748a7129a7b0a3dc9068c3cca7b5b3f0ce03b87248847f2396cb501700bbe6c82aad51b0fb79cf8a4d353185d5808203f73f22afbf62f67f25931c0c7371f4f1fc862f306e6e5830ed824388d6b9342697d144f0fab466307f25393ce3b9256d50448a725c5c7cd5ad376f2d435855c10ebf2899cb5c6617be7f1090c0b68b3d7d7b8bc9ca2419eb8dea1c28f6d5e1250cb5e9780fd9ca286fae610066565b611dfc7f304754bb8c57d60732f492c2605184fdc33e46a532bdec80ea7bc5519ede7cef7f2638b57f23b754aec76d109a2f481aa3c22547a11ffc50152d729af632376a907f056ab351691d8bb3703e3055070ac9cc655774c1bb35d57572971ba56ee0cb897f26da28fc097ed77ce4662bde326b2cceac15f7301178581d8d2d02b3b2d910567f27ca107ca204f2a18d6f1535b92c5478c99b893334215f6ba7a0e5b45fcd6897610066565b611ea77f206b0ce2f1b2c5b7c9f37b0045227095f6c6f071ec3bdda76a7ddf4823dd5dd67f0b2449f39746085e86ce45e8eed108ee65a234835a0a6a5ea8996d124dd04d0a7f0afafadcf5b4dd4a4a76b5a1d82415fd10a19fbcfc59078c61f9297eb675d9727eee1f3c66fbc05c43ba295a303c72fab5bca86805ec9419c588e50947761fa37ed1727f8457ee03514f155b5806cbf748ec6857fc554010752ac93a9b7619ac610066565b611f547f090995b79acec240413b8d4c658787e5a4657b9ab00bdb5b1960b1059e113ba37f26b25b7e257f3e97c799024fb019f65c6ca4d8d81b1ae16221a589d68831d7597f0addb1372cee4e164655168c367559e19606c5bd17910aeb37719edfa0ca87627f254dbfac74c49b0b8926752e084e02513b06f1315e6d70e18173e972336e55d37f0feba4fb87834c7cb696e67433628cd6caffc3a4ef20fea852c7e1029459409c610066565b6120017f21d773660adafb8a879986f9aab4890566353a3777d8a3f1eb93abe10bbf1f647f19a70ec6bdfc9098a926efbcc04aa9ee248997e8b2c24af335fd6523e52508797f1deb05180e833e45659052a7ebaf816c7efd12a7f9eec94b7bc7c683f1363d5c7f09e8aba671481197679faf752a0f78e342fe9c491596ab6758f170939785179f7f08dbdc2e21ef11f2c57299687843cea3eb0d8e40e99131f42974178d44f73b7b610066565b6120ae7f14f773e9834c6bdeb8f90e78bf4c24b7203411460112491036621895204d0f127f02e47a35bcc0c3a0bda0b1c0307ad543f4280fcf87f636f853655cf97a628bb07f0fa1a1d6829f0345664a66dc75a657335f336f15f340756cfa12fc850cc8b5137f05af459361eb454d2a300c61e446998d48fa1f897bf219d608c2145c33b111c37f09f1890f72e9dc713e20ba637b89d5d397a6b01fcd667347f6f46617841c3901610066565b61215b7f0d3e2477a7b10beb44709c7746d6824edf625dd60504d5dc93ce662f15c238d67f0f281925cf5ee649b474a6819d116ca3eb4eca246c311ecadc53262a3cff2b537f21833819c3337194a6c0d29a48d4f2676f0e7c79743a306f4cfdb2b26bd11efa7f043dd5f4aa5a76dd4c47f6c65da7ca2320d4c73ad3294738cba686a7e91373c27f102d98cf502ed843255cf19d29bc7d8e642abe7cfd639992ffb091962fc8f7cc610066565b6122077e50e842a1299909123c46eff185c23ad312d03fef1adfecc7e07ecb298fd67f7f0fe6d30de7a82d163023491794f4aca3220db79e8129df3643072d841925554a7f22da66bc62e8f011266efca86a6c810f9ae4c51af6ffeb57f8b3c50df83cc13e7f29e95b492bf2f95f4d09380f98b74e389149d24045811d7a86dd861310463cf87f2cd7f641bedbf66956ff8a01be9cde35d80f80ab51e73b49acbfc3eff5aefc44610066565b6122b47f2e50e2c5b36aa20532407d86b8d22d7d5154080a24972faeb63faf0121ed7f217f0c602fa155be958761eaf739617ab136cf7b807728bf7fe35d4778d311780e547f1bf7d6e489ad8c0cf26eb68cc21ff54158132396dc250aeba4b6fc5fc33727627f2df9ee294edf99e3d8d5883fe0566c24aa66731f34a93280e1d328e67b33c9fa7f2130a3a7b3221222be34cc53a42d7733666f9ddf714ed7c5885cbbdb63108c21610066565b6123617f1aff13c81bda47e80b02962173bba343e18f94bee27c8a57661b1103a720ffe27f0ebf7ad29ca13804e1422e939681155124780ff43e76e929035498130a7f15727f0f5633df1972b9455953d88a63f80647a9ac77c6c0f85d4561972dd8fab8bd147f0b0d52f03c8af7276803ecf2465b885b21337b538eabd2f6b2ab255f376b42a87f17c2510982a7b5825710d6290ec4f782f674995ee8409b42b459123b180332e1610066565b61240e7f02d04e9c21df1dbd88524bdb203691b4cee5530559d6cf0fa05adf61e12fdcbf7f074517e081eb4c1f22d1771200fb07658f7c77654d58440490dd6f557e9e39037f1c408c256490b0a1da08dc464138dfc78cce9a9e16c7705617a4d6dbb20e7e3a7f088230c2794e50c57d75cd6d3c7b9dbe19d1e2f1d3001044b93ad1c3ee6298177f210449dbf5cf3061da2465be85505862d3f31de1a3b58ff35713be57efac6c07610066565b6124bb7f2303a652c949071826b0e9a36c80578697b44e912cce6687012854eda11a18dc7f268c5cfc446d399c4dd319db666a75b5cb655d8c1797e9fa76181cb4216e15627f09199dcafd50ce642eddbeda65206d4f61a73d10852b8114c51b2440192ae0647f2efda77ed35f4af0299f75d6e8a849b54d2ac6bf95368304e6030c18f0cf17b57f2eb7a011b8bce91082e13ebd75de3b58eb9b4650dae9f11aa81db32cf1b67b13610066565b6125687f03545706706eab36afb93b128febd16fb0425e158314197b77795ad3a798d1837f0683597315359040ea03c45d6984c6894f46cbb36d702e3c4fb9847e6304d9447f2c43169439fcd69ead8214997bb069becafcb1ba2c51e5706cb4b43dab2a443d7f1201a87eaf4ae618f02bd82d0a5109049969b5248cfe90f42c278f22615d2b0e7f27c53563b12a6ee2c3f041f31dc45922bc5353eb110868d237073f4efb35fbdf610066565b6126157f16a425e47d1110625054d5a165de413e3bd87d5aa3958fdd6eb7e03e39ba40467f263ab69f13b966f8197394552906b17e6c8617a7bdd5d74a7be3396b7fe013ab7f0fd66e03ba8808ffecb059c899fd80f4140ddd5d2a5c4483107f4e02e355b3937f1ffe6968a4470cd567b0c002281caf996e88f71e759b87e6f338e517f1690c787f1a33c254ec117619d35f1fc051b31728740bed23a6a37870edb393b71a0c0e6b610066565b6126c27f09b5f209a451ac431c051fb12d9a5e4fe40ee1601120947da990fb8e12cb46e17f076c1e88dc540c8d8de54e343df7c429d3295f52c38cffe6b48be86852da97df7f2bcc94ff4fc3c76f3cd5c68915a042e87628249a01b09561bdf24a6cdce5620f7f24df8e8d856c5b5e1bd1cad23d07dda3423c5179329b7a82cb4aa709a94576e57f2dc510a4719ec10cad752f03c673f0e253cc31d13e39e909fcc5f73af9138d9a610066565b61276f7f17022672a016a957bb87e2cfadc8b75fb28905bdb62c82c80b1cb31b411e49c87f100dc7d426debe3007fb7ceac84e4f5468efcb897e7bbee981742839d59e064c7f1a053e6878e900f45f4d67448c471cf3009a44e7a02ea50e4afa44f2592621f57f281c5c688836f6cf912638c38be046cd091681f0a41761720cdd1edf9f2370297f205f17b0d8729e2eaa88d6a44135a6ab64e9424f55b0f1ea0683af75eb677c07610066565b61281c7f2465053ae50b6885801f3f82e302cafbbb4a7581bb4fba60b637febe659e50577f1b4b5e87cfb9262cfec3c0f0542e4c5a4cf278292b4ce3eed996fac6f4d372887f2ebb599fe9136d424bf4abc5342c6c7447b1a853205fcfb5519e5513577090087f15384fe39d73b63302460ae4c2942fac2b41fb65a185536fb85dd24fd75840647f1086db7e2760fc8b71053a87ebe151239fb8b547182b170de0c27203f954f4d2610066565b6128c97f267c76ec81934cc81a132a8b058910a12092520b12a201af03e3202d7b6c1b7e7f0514b0fe5909ea887bedb0295fbbcec355cfb575ff6a97cd9f4ad00ccb57ee9b7f01c9bf7a203ce22b775e3a61ad7e77b6a78348b9f6ec68a412e49bfe32c054157f2bc70dfeb2baab2f6b387cd77be779ac2e5e5519f3d18123ee28d8c2543c71487f114f32edcdea09cd095c5bb5d38f1b97da9f05e18b3708bf6e0ab9d3d54859ef610066565b6129767f1ac668f612b8243c193b33720b8aa54040c476031197131ebdcac9b18bc48f757f26f17873949bc679f7f043956694e422b3cee1de9dd6f6473b932a476455ff1a7f1904aa4d6908544a8b348e9db1981c27009ed8ea171518ae5405d036242b60e97f019f6a8124b19e33af33e5d3873f9c335c6f09a45486cab536dd596ca41d95197f29170e3322b3d8d5c78c84babbb470adf1622493ce83e95cfb151cf757bde5d6610066565b612a237f28e4dcba4b96f12a59b041535e730ac8c35189dc0b85ac033dd38c08bae531f27f1d6b3755331cd0216b6880e42f9880f565cb94b0e0455153a329890588cc916e7f06e3ad6a46900e2d3953370255b68f89b3e523f1fe502642ee226f2d8bd0848f7f030c97e1b8cad1d4fd50d1b4383fbe6674d171f99c63febb5425b395c24fc8197f0996d961a75c0d07196dae45bf624766ccfbf8555be9796da52f81568ef0663d610066565b612ad07f2375839502e09890cb2914e829627e0e0fc98870b2324a8b50329ebdd24749cb7f1bdb062778d7c15da395af2734c25faa0127d2aab4aa71366031a0bb6791ce107f28f1e03baaea9bbc05af5b11937e4f5cb5c9a9c1192063d1998c01c64d483a767f162cd2ca7fe3b5f1444bcec97812019bb6fd85fba6a0536a89643e15b9bb3b527f08b6086046a835508ccf484f2974b6a6b0712a476260376c7a3b3e4bc4a47a14610066565b612b7d7f0ce19f54cdc39f7f3bf35192ac6808211aecea08dfe14cab758d25891fb00bb97f2e49084b336eceaa4f8e2a2e6af08318f42060e574dda341f4a1079b12bcc5a57f211256d16c7269fd6df6f5fcdd1fa788ba3bd050059f53d261b0f5f13731ffe77f1e4fad2dd6b0a6f1f8707f721716c8a446e2fb2c47a5138f3f7f9736079d76947f1fa8662fbcb61fb3ad7c55668dc9423a332dc87cfb2df456e92d33611ed7bb50610066565b612c297f16bcb447ce2d50f3ae25ad080695382e935d2d00184c4acc9370be8aab64139c7f030c00a0933dcdba2a808b2e1b9282f331f04596d8928da7aa6c3c97237037a67f19a7d3a446cb5393dc74560093592b06b1a8b35cd6416a2ecab00173639015fa7f17d79ff06b63ac2a8a9e05ee6af3dbb7ca60e17bfa39b47514a8cd8051579b4c7e11c5d56c390e893cc394221261d8748dc60451e4ae4e1c84a8468bab2c14cb610066565b612cd67f2dca72b2ebcab8c23446e00330b163104195789025413abf664db0f9c84dfa6f7f2ea123856245f6c84738d15dd1481a0c0415ccb351a1e0cee10c48ce97ca7b187f08e6eb4089d37d66d357e00b53d7f30d1052a181f8f2eb14d059025b110c72627f0e86d13917f44050b72a97b2bf610c84002fc28e296d1044dc89212db6a49ff47f12341b46b0150aa25ea4ec8715312997e62124f37cab7b6d39255b7cd66feb1d610066565b612d837f10ffb7aad1f51c7d13b17f4d876d9a1e38f0ba8a4a23d4b50cda32cad851567e7f2f4c50477f7fd9c671799ac5d2e224cdb9164f58351d8aa140ec07e514fae9377f22a63501c5f04b9018719ed99d700ee52f846a715ae67ad75c96b39d688b66917f246a10b7e3e0089947f7c9bda3d54df8e2a60e0cca84ea2ac630a4535afbf7307f06ff9ed50d327e8463329f585ec924b3f2f6b4235f036fa4c64a26cbd42b6a6b610066565b612e2f7e58fa3c8454d63354b2024c3b4a577a180ed99f8f3155cd7e4d617d47d07ffd7f27f19a6532e66b5333db1afd592f66f1d36034b314dad8447656747be27e64c77f2d9e31a10aebc761f8de00d14b1e566d1a39323d6e89b638e940f3ec8a22c3c57f07af84a4d3141e7ac23352e6dc6ea4afa1656f96a33c8978a3e83bdd4ba62b417f0e9cefddc3c2d3bea4d39722532d5420784027352187e7af1a056935c35803ae610066565b612edb7f03f2a6be51ec677f946551b3860ea479fee048ae2078aeb7d1f7958d2c2645f67f1c4a6f52c9fccf7a4138e413ef62a28377977ad7e25e49a3cf030e1cd8f9f5b67f0131adffd8bd7254b1d8c3616bbe3386ec0c9c0d6d25a9a4ec46a6bf183013987e6ac49dd9253edc7f632e57b958ccecd98201471cf1f66589888f12b727c52d7f041627b6715b780967957c080699343eb0414a205d3a175d708964956816a5d5610066565b612f887f0812e7b4d847bc8517d19319772f3c9855e044fd60dbac9a0adc4959b691dfe47f149b9c802182558a4c45d119d3f4cc7fd8587604ca4f0d6e21b06ff30b6a23b67f12fe278aa36544eac9731027090518d434e38ea966a08a6f8d580638ac54c7737f15278463665f74cddc1802febfab02cec9d45fe866c359c738062afb75d64a037f2da770aad2c2eb09391a0cb78ef3a9648a1372d8543119564d7376396b8ddc62610066565b6130357f25479fbfb3a68f982388f2621001101608bdc29f6ff037696d9161f5cd9a4fef7f169515c89ac5479db0ed8fa6fa311b391cc1235270f4cbc5c29e7cbc30e8732a7f15c754d5b14b2c4205c6ba8d2ccd028255b3e792c6afa08b44ee75b62eff9f597f0ebd073ba0537b514deb6029f921029e55e5e4d9a03d6b6ba1304038662d4db87f02ed8d8ddeafe3d9d8df7f28a0bfaa7f555813c7e7503aea2a66973703a0c61b610066565b6130e27f2c714e96e1913b351d969320cc69d5ec13e06a6275e58688af8ee00c4240ee287f163facb34ff572fbf7c946969c1c260873ce12a6a94a3e45b8101d5b948d16417f26029c0c267c799fb833ac8a11e3a3f0147a8ca037221b90013b8bcb37eba6837f045a691066cc66bec9baf2798833a1dfd3a847502aec8d5f5c4e73363d0977997f14475c4bd520451f3c852cb0311a578ca7f8e6e972182196ce09486e94be6071610066565b61318f7f03c11ca79e41fdfe962730c45e699546349031893da2b4fd39804fd6a15ad1b37f2ab89102e2b8d5e638ff97d761da6042e534f1ff47f7917a2ca1a74063b461017f113d58535d892115c5d28b4c19a3609374dbdbadf54195c731416c85d731d46a7f06a69ae795ee9bfe5e5af3e6619a47d26635b34c2a0889fea8c3c068b7dc2c717f1c1661e2a7ce74b75aba84665ecd2bf9ddd6268f06debfe2d52b804eff1d5fa6610066565b61323c7f022ed3a2d9ff31cbf82559fe6a911843b616945e16a568d48c6d33767129682d7f1869f3b763fe8164c96858a1bb9efad5bcdc3eebc409be7c7d34ca50365d832f7f0dc108f2b0a280d2fd5d341310722a2d28c738dddaec9f3d255754448eefd0017f2de32ad15497aef4d504d4deeb53b13c66db790ce486130caa9dc2b57ef5be0d7f27096c672621403888014ddbbbfc9da1f7f67b4d4cfe846c6adf040faaf2669c610066565b6132e97f01cdf8b452d97c2b9be5046e7397e76ff0b6802fa941c7879212e22172c27b2e7f05d4149baac413bed4d8dc8ad778d32c00e789e3fcd72dccc97e5427a368fd5e7f05dbb4406024beabcfce5bf46ec7da38126f740bce8d637b6351dfa7da9025637f0de1ba7a562a8f7acae93263f5f1b4bbec0c0556c91af3db3ea5928c8caeae857f2155d6005210169e3944ed1365bd0e7292fca1f27c19c26610c6aec077d026bc610066565b6133967f0212ac2ab7a6eaaec254955030a970f8062dd4171a726a8bdfb7fd8512ae060d7f20dff1bc30f6db6b434b3a1387e3c8c6a34070e52b601fc13cbe1cdcd59f474e7f16b79c3a6bf316e0ff2c91b289334a4d2b21e95676431918a8081475ab8fad0d7f1040bef4c642d0345d4d59a5a7a3a42ba9e185b75306d9c3568e0fda96aaafc27f1fc6a71867027f56af8085ff81adce33c4d7c5015eced8c71b0a22279d46c07c610066565b6134437f2e208875bc7ac1224808f72c716cd05ee30e3d20380ff6a655975da12736920b7f0e65cd99e84b052f6789530638cb0ad821acc85b6400264dce929ed7c85a45447f0d080a6b6b3b60700d299bd6fa81220de491361c8a6bd19ceb0ee9294b24f0287f0984ca6a5f9185d525ec93c33fea603273be9f3866aa284c5837d9f32d814bfa7f2f29377491474442869a109c9215637cb02dc03134f0044213c8119f6996ae09610066565b6134f07f01c36daaf9f01f1bafee8bd0c779ac3e5da5df7ad45499d0991bd695310eddd97f173f65adec8deee27ba812ad29558e23a0c2324167ef6c91212ee2c28ee987337f1e8d014b86cb5a7da539e10c173f6a75d122a822b8fb366c34c8bd05a20614387f11361ce544e941379222d101e6fac0ce918106a463290a3e3a74c3cea71894597f2989f3ae477c2fd376a0b0ff3d7dfac1ae2e3b894afd29f64a60d1aa8592bad5610066565b61359d7f04218fde366829ed90f79ad5e67997973445cb4cd6bc6f951bad085286cac9717f11d7f8d1f269264282a263fea6d7599d82a04c74c127de9dee7939dd2dcd089e7f191d5c5edaef42d3d02eedbb7ab8562513deb4eb34913a13421726ba8f69455c7f2e5abd2537207cad1860e71ea1188ee4009d33deb4f93aeb20f1c87a3b064d347f1353acb08c05adb4aa9ab1c485bb85fff277d1a3f2fc89944a6f5741f381e562610066565b6136497f0b846e4a390e560f6e1af6dfc3341419545e5abfa323d817fed91e30d42954a67f01b588848b8b47c8b969c145109b4b583d9ec99edfacb7489d16212c7584cd8c7f09a5eefab8b36a80cda446b2b4b59ccd0f39d00966a50beaf19860789015a6e57f038a389baef5d9a7c865b065687a1d9b67681a98cd051634c1dc04dbe3d2b8617e70772f7cf52453048397ca5f47a202027b73b489301c3227b71c730d76d6dd610066565b6136f67f2ba70a102355d549677574167434b3f986872d04a295b5b8b374330f2da202b57f068f8813127299dac349a2b6d57397a50275142b664b802c99e2873dd7ae55a77f0752cd899e52dc4d7f7a08af4cde3ff64b8cc0b1176bb9ec37d41913a7a27b487f2e0374a699197e343e5caa35f1351e9f4c3402fb7c85ecccf72f31d6fe0892547f23a6679c7d9adb660d43a02ddb900040eb1513bc394fc4f985cabfe85ce72fe3610066565b6137a37f29a01efb2f6aa894fd7e6d98c96a0fa0f36f86a7a99aa35c00fa18c1b2df67bf7f142d3983f3dc7f7e19d49911b8670fa70378d5b84150d25ed255baa8114b369c7f0dc6385fdc567be5842a381f6006e2c60cd083a2c649d9f23ac8c9fe61b738717f05c5f20bef1bd82701009a2b448ae881e3a52c2d1a31957296d29e5763e8f4977f2c467af88748abf6a334d1df03b5521309f9099b825dd289b8609e70a0b50828610066565b6138507f1341999a1ed86919f12a6c5260829eee5fd56cf031da8050b7e4c0de896074b47f037640dc1afc0143e1a6298e53cae59fcfabd7016fd6ef1af558f337bab0ea017f0385fb3f89c74dc993510816472474d34c0223e0f733a52fdba56082dbd8757c7f1e807dca81d79581f076677ca0e822767e164f614910264ef177cf4238301dc87f0525ffee737d605138c4a5066644ec630ab9e8afc64555b7d2a1af04eb613a76610066565b6138fd7f085d6a1070f3513d8436bccdabb78750d8e15ea5947f2cdaa7669cf3fae7728b7f29d843c0415d35d9e3b33fadcf274b2ab04b39032adca92ce39b8a86a7c3a6047f2c81814c9453f51cb6eb55c311753e84cbbdcb39bfe696f95575107502acced87f171c0b81e62136e395b38e8e08b3e646d2726101d3afaa02ea1909a6190336967f069eb075866b0af356906d4bafb10ad773afd642efdcc5657b244f65bed8ece7610066565b6139aa7f095c716266f1de59044f97114a4158a3f85ca8a937cfbec63e9b321a812dd36b7f180638ff301a64ca04abd6d0bd7500b6650b65ff33e6be1fd50dbc163a2818777f0a8c2820c56971aae27a952abd33a03d46794eedd686cd8ecfed610e87c02e9a7f201935a58f5c57fc02b60d61a83785bddfd3150e05f1df5d105840b751a163177f11820363ed541daa10a44ba665bf302cdbf1dd4e6706b02c9e2a5cda412fc394610465565b613a577f14814a1e0f492a4ea0d86e527a96482178d624b98da96ee5e583b9324d974efe7f24752b47bc6c6bc8d9bbe48f5fef2f6908701739c5f5b4b3d6c886d4715c79297f265bc95df4a4c4876ff70d7ea2fde2c7ab15f4a6ae0d237cd6ce74ba986c7a7b7f05b86c4bb8ef318b6a7227e4192d149d3c17a9764ccd660de4d50a77f192a91b7f17c31ea02fbc378320d86ffed6c7ca1583b618c5c1a687818d4087a497d73490610465565b613b047f26863e9dd24255d1573bd083959b856c0493fbefe83c819837a151d3bf452cb87f041935607172f68eba65ca60068dfe3b086c2a2d57d09602951214b57e73cf5a7f1aef50a0cee751b59f926af40e8035d19decc9d428ebe4e775c5cc9dce1ce5897f14f7ae770bf7e95f7f706c0d8ab4ed03fa0b880d28c69d031b4592c98610175f7f10def931073b6479bd60577378f29381997c8e041d3cfb3dc7523bca906f00bd610465565b600080516020613fe78339815191527f2036efb6f9830965eb3d7a068bd087c9f5adf251ba62052c652738e63ff8b3af60005108600080516020613fe78339815191527f0c712a975b74dc9d766b639a029969ca30be4f75a753f854b00fa4f1b4f4ee9b60205108600080516020613fe78339815191527f08014dab3cd1667e27afc99bfac1e6807afdff6456492ca3375731d38753969960805108600080516020613fe78339815191527f198d07192db4fac2a82a4a79839d6a2b97c4dd4d37b4e8f3b53009f79b34e6a460a05108600080516020613fe78339815191527f29eb1de42a3ad381b23b4131426897a32709b29d53bb946dfd15784d1f63e57260c05108600080516020613fe78339815191528586099550600080516020613fe783398151915285600080516020613fe7833981519152888909099450600080516020613fe78339815191528485099550600080516020613fe783398151915284600080516020613fe7833981519152888909099350600080516020613fe78339815191528384099550600080516020613fe783398151915283600080516020613fe7833981519152888909099250600080516020613fe78339815191528283099550600080516020613fe783398151915282600080516020613fe7833981519152888909099150600080516020613fe78339815191528182099550600080516020613fe783398151915281600080516020613fe7833981519152888909099050600080516020613fe7833981519152806000805160206140878339815191528309600080516020613fe783398151915280600080516020613f478339815191528609600080516020613fe7833981519152806000805160206141078339815191528909600080516020613fe7833981519152806000805160206140278339815191528c09600080516020613fe78339815191526000805160206141478339815191528e0908080808600052505050505060206000f35b600060808284031215613ded57600080fd5b82601f830112613dfc57600080fd5b604051608081016001600160401b0381118282101715613e2c57634e487b7160e01b600052604160045260246000fd5b604052806080840185811115613e4157600080fd5b845b81811015613e5b578035835260209283019201613e43565b50919594505050505056fe2f69a7198e1fbcc7dea43265306a37ed55b91bff652ad69aa4fa8478970d401d07f017a7ebd56dd086f7cd4fd710c509ed7ef8e300b9a8bb9fb9f28af710251f2d3a1aea2e6d44466808f88c9ba903d3bdcb6b58ba40441ed4ebcf11bbe1e37b2efc2b90d688134849018222e7b8922eaf67ce79816ef468531ec2de53bbd1672a70b9f1d4bbccdbc03e17c1d1dcdb02052903dc6609ea6969f661b2eb74c83914074bb14c982c81c9ad171e4f35fe49b39c4a7a72dbb6d9c98d803bfed65e641c482a25a729f5df20225815034b196098364a11f4d988fb7cc75cf32d8136fa104d0295ab00c85e960111ac25da474366599e575a9b7edf6145f14ba6d3c1c42eb4f99c69f966ebf8a42192de7ff61621c7bb47b93750c2b9ea08d18446c12221888041e6febd546d427c890b1883bb9b626d8cb4dc18dcc4ec8fa75e530a132625ce48a7b39a4252732624e4ab94360812ac2fc9a14a5fb8b607ae9fd8514a001c1edd62645b73ad931ab80e37bbb267ba312b34140e716d6a3747594d305230644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000115b98ce93e47bc64ce2f2c96c69663c439c40c603049466fa7f9a4b228bfc32b25fb50b65acf4fb047cbd3b1c17d97c7fe26ea9ca238d6e348550486e91c776502ecac687ef5b4b568002bd9d1b96b4bef357a69e3e86b5561b9299b82d69c8e12c7e2adfa524e5958f65be2fbac809fcba8458b28e44d9265051de33163cf9c0aaa35e2c84baf117dea3e336cd96a39792b3813954fe9bf3ed5b90f2f69c9772a20e3a4a0e57d92f97c9d6186c6c3ea7c5e55c20146259be2f78c2ccc2e359528c2be2f8264f95f0b53c732134efa338ccd8fdb9ee2b45fb86a894f7db36c371049f8210566b51faafb1e9a5d63c0ee701673aed820d9c4403b01feb727a549293d617d7da72102355f39ebf62f91b06deb5325f367a4556ea1e31ed57678330dec54e6dbf75205fa75ba7992bd34f08b2efe2ecd424a73eda7784320a1a36e251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1281154651c921e746315a9934f1b8a1bba9f92ad8ef4b979115b8e2e991ccd7a0c3f050a6bf5af151981e55e3e1a29a13c3ffa4550bd2514f1afd6c5f721f83014ddb5fada0171db80195b9592d8cf2be810930e3ea4574a350d65e2cbff4941a2646970667358221220ab792df2959dc89eedc83a13edaaaac9ec23e84716e8582d4ac35e6633f152c464736f6c634300080a0033"; + +type PoseidonT5ConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: PoseidonT5ConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class PoseidonT5__factory extends ContractFactory { + constructor(...args: PoseidonT5ConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): PoseidonT5 { + return super.attach(address) as PoseidonT5; + } + override connect(signer: Signer): PoseidonT5__factory { + return super.connect(signer) as PoseidonT5__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): PoseidonT5Interface { + return new utils.Interface(_abi) as PoseidonT5Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): PoseidonT5 { + return new Contract(address, _abi, signerOrProvider) as PoseidonT5; + } +} diff --git a/packages/app/src/typechain/factories/contracts/poseidon/PoseidonT6__factory.ts b/packages/app/src/typechain/factories/contracts/poseidon/PoseidonT6__factory.ts new file mode 100644 index 00000000..ed68e077 --- /dev/null +++ b/packages/app/src/typechain/factories/contracts/poseidon/PoseidonT6__factory.ts @@ -0,0 +1,82 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + PoseidonT6, + PoseidonT6Interface, +} from "../../../contracts/poseidon/PoseidonT6"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256[5]", + name: "", + type: "uint256[5]", + }, + ], + name: "hash5", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, +] as const; + +const _bytecode = + "0x614e2d61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c80639cfced971461003a575b600080fd5b61004d61004836600461496c565b61005f565b60405190815260200160405180910390f35b6000610809565b600080516020614bd88339815191528160005108600080516020614bd88339815191528360205108600080516020614bd88339815191528560805108600080516020614bd88339815191528760a05108600080516020614bd88339815191528960c05108600080516020614bd88339815191526101005160e0510861010052600080516020614bd8833981519152858609600080516020614bd883398151915286600080516020614bd8833981519152838409099550610120511561024b57600080516020614bd88339815191528586099050600080516020614bd883398151915285600080516020614bd8833981519152838409099450600080516020614bd88339815191528485099050600080516020614bd883398151915284600080516020614bd8833981519152838409099350600080516020614bd88339815191528384099050600080516020614bd883398151915283600080516020614bd8833981519152838409099250600080516020614bd88339815191528283099050600080516020614bd883398151915282600080516020614bd8833981519152838409099150610100519650600080516020614bd88339815191528788099050600080516020614bd883398151915287600080516020614bd883398151915283840909610100525b600080516020614bd883398151915280600080516020614d188339815191528509600080516020614bd883398151915280600080516020614c388339815191528809600080516020614bd883398151915280600080516020614b188339815191528b09600080516020614bd8833981519152600080516020614c188339815191528d090808089050600080516020614bd883398151915281600080516020614bd883398151915280600080516020614d988339815191526101005109600080516020614bd8833981519152600080516020614dd883398151915287090808600052600080516020614bd883398151915280600080516020614c988339815191528509600080516020614bd883398151915280600080516020614a788339815191528809600080516020614bd883398151915280600080516020614af88339815191528b09600080516020614bd88339815191527f0a514a5c227f4cec95dfa029e8dd124c34895aa46bb27c0911f3780d5015540a8d090808089050600080516020614bd883398151915281600080516020614bd883398151915280600080516020614ab88339815191526101005109600080516020614bd88339815191526000805160206149f883398151915287090808602052600080516020614bd883398151915280600080516020614b788339815191528509600080516020614bd883398151915280600080516020614a188339815191528809600080516020614bd883398151915280600080516020614bb88339815191528b09600080516020614bd88339815191527f278bb49a7b4e44aea46eb0f882cb692801a6e60fdd5b5c23c63cd65ccce4fe0a8d090808089050600080516020614bd883398151915281600080516020614bd883398151915280600080516020614a588339815191526101005109600080516020614bd88339815191527e5761b8c6aecb1a8ca4ea4dfc2c8376064a4a8004ceeda210a55240562ddc1387090808608052600080516020614bd883398151915280600080516020614bf88339815191528509600080516020614bd883398151915280600080516020614db88339815191528809600080516020614bd883398151915280600080516020614b588339815191528b09600080516020614bd88339815191527f0c399e9f67aa40707a203feefb0b958bbdadcec5ca34901d253d026a2419f6a28d090808089050600080516020614bd883398151915281600080516020614bd883398151915280600080516020614b988339815191526101005109600080516020614bd8833981519152600080516020614b388339815191528709080860a052600080516020614bd883398151915280600080516020614c788339815191528509600080516020614bd883398151915280600080516020614cd88339815191528809600080516020614bd883398151915280600080516020614c588339815191528b09600080516020614bd88339815191527f1d6b3d5f6ea369c26f825d2362933eaa31ea35ec0a77c1fbd9e01ca1523e44328d090808089050600080516020614bd883398151915281600080516020614bd883398151915280600080516020614d788339815191526101005109600080516020614bd8833981519152600080516020614cb88339815191528709080860c052600080516020614bd883398151915280600080516020614cf88339815191528509600080516020614bd883398151915280600080516020614a388339815191528809600080516020614bd883398151915280600080516020614d588339815191528b09600080516020614bd88339815191527f24be510095436206dd0abd0b0cbb95c883ab304aa52598b1a69306ec981a688d8d090808089050600080516020614bd883398151915281600080516020614bd883398151915280600080516020614ad88339815191526101005109600080516020614bd8833981519152600080516020614d388339815191528709080860e0525050505050505050505050565b6000600080516020614bd88339815191527f0ab7b291388e5c9e43c0dc1f591fb83ecdb65022e1b70af43b8a7b40c1dff7c360805108600080516020614bd88339815191527f2b7cbb217896f52c9a8c088e654af21e84cde754a3cef5b15c4d5466612d6adf60a05108600080516020614bd88339815191527f2bc6b0ddbe1d701b6570428bdc1ca1bf0da59ff3bbbb95fc2bc71c0c6e67a65c60c05108600080516020614bd88339815191527f123a55a31980384f3d20b2cecbc44ed60c38c11f7d20e9271efab9a905eefd3c60e05108600080516020614bd8833981519152600080516020614a98833981519152610120510861012052600080516020614bd88339815191527f037501cc8c9dc819309a769f4df098e588b01858bc8eb7e279e2883be9fb8c53610100510861010052600080516020614bd88339815191528485099450600080516020614bd883398151915284600080516020614bd8833981519152878809099350600080516020614bd88339815191528384099450600080516020614bd883398151915283600080516020614bd8833981519152878809099250600080516020614bd88339815191528283099450600080516020614bd883398151915282600080516020614bd8833981519152878809099150600080516020614bd88339815191528182099450600080516020614bd883398151915281600080516020614bd8833981519152878809099050610100519450600080516020614bd88339815191528586099450600080516020614bd883398151915261010051600080516020614bd88339815191528788090961010052600080516020614bd883398151915280600080516020614d188339815191528409600080516020614bd883398151915280600080516020614c388339815191528709600080516020614bd883398151915280600080516020614b188339815191528a097f1c75a58d854d4821d299acc8b5bf528d82545baa1fccd11b4af481536dd42d760808089450600080516020614bd883398151915285600080516020614bd883398151915280600080516020614d988339815191526101005109600080516020614bd8833981519152600080516020614dd883398151915286090808600052600080516020614bd883398151915280600080516020614c988339815191528409600080516020614bd883398151915280600080516020614a788339815191528709600080516020614bd883398151915280600080516020614af88339815191528a097f2c64e4fd7d22b7941e97b236fac1a6979275c4dbb22f9707238fb478316e73d90808089450600080516020614bd883398151915285600080516020614bd883398151915280600080516020614ab88339815191526101005109600080516020614bd88339815191526000805160206149f883398151915286090808602052600080516020614bd883398151915280600080516020614b788339815191528409600080516020614bd883398151915280600080516020614a188339815191528709600080516020614bd883398151915280600080516020614bb88339815191528a097f213c4e421d44e697cd674a6d377a752d9bc2ebf497165ce792643bf39fc034f70808089450600080516020614bd883398151915285600080516020614bd883398151915280600080516020614a588339815191526101005109600080516020614bd88339815191527e5761b8c6aecb1a8ca4ea4dfc2c8376064a4a8004ceeda210a55240562ddc1386090808608052600080516020614bd883398151915280600080516020614bf88339815191528409600080516020614bd883398151915280600080516020614db88339815191528709600080516020614bd883398151915280600080516020614b588339815191528a097f02435ad434d1117db1f271503cd65ce1c5c2ac1900e1cd74ae1c6e490593a9340808089450600080516020614bd883398151915285600080516020614bd883398151915280600080516020614b988339815191526101005109600080516020614bd8833981519152600080516020614b388339815191528609080860a052600080516020614bd883398151915280600080516020614c788339815191528409600080516020614bd883398151915280600080516020614cd88339815191528709600080516020614bd883398151915280600080516020614c588339815191528a097f036a710abf9f57bb09aa288687ad8dcbcb9dc74c200d89d83d8e3c41f28e6b2e0808089450600080516020614bd883398151915285600080516020614bd883398151915280600080516020614d788339815191526101005109600080516020614bd8833981519152600080516020614cb88339815191528609080860c052600080516020614bd883398151915280600080516020614cf88339815191528409600080516020614bd883398151915280600080516020614a388339815191528709600080516020614bd883398151915280600080516020614d588339815191528a097f201541d8be11e6a050f6aea51e645577db6ab8ed6d672de377d108c0fc4dad040808089450600080516020614bd883398151915285600080516020614bd883398151915280600080516020614ad88339815191526101005109600080516020614bd8833981519152600080516020614d388339815191528609080860e052505050506001610120527f1c21d92bef197e73b234e4777b60db14e642a56cee71515d54e1ac71cde72bd36101005261108a7f18a01d9ffb747ae0de3e83c707f8b24f682c84f15abf571b34254a03478665e07f28c64d8f5ed7aac004c92029d9e9bf91ba9436d1cce94b9316d111c70a0c17147f2ee8fed3d4d2c71a0429eafd8e5db1718f29e2227985fdf2ad8703c835b9e0317f2c18213489032e85a9c8cb8e9a65839bfaed13e57bc0fae49dbdaebf54f56f93600080516020614a98833981519152610066565b7f06bbcb8e8e180201293e712f4950f1b0bbee808c9d64263c84d9d8ae155cb8926101005261115c7f0532f7ec36e30041b0486986875c913a49bddf2f5af5febe8c31f2f4094ffea57f0d7a614c8991508ab1ce4895813bb1c82f18bf7bfc9e280ccca18079839387f17f13129e3f930aed6d47690331ff09dc5160efa58ddce2c3e6180d45bec3aa3a6f7f0a9b6de833064f93b6adb99af6c005945cb654cb7bd14c8b97af8b60cc1fb3877f0ad404ccbcb1e195897cb60c80981ebb9d66a6677dbbedad8b6455fe62d807b1610066565b7f2f1bdc5254f9220c1a731fc5276964dab26b385fa40b6b04bed9960e2543ba086101005261122e7f19c27d0e52f65ca34f4e31a068e49331c6bfc39d9241f9d4c302041615cf27f17f170c1a732721b12cde7f33e476a39a1aa77a81c06e2eac503847b00d597652db7f1c49c4b9a9f09f7b9ad5f74ebacc710512b8e867bace27cb0dea06e89b96f6317f2be140a60b5b5f2f8edd78a818a969b20c643e419bcf0b577c24a0d0e7acfe987f0f558a4db1a3ac07f61e2e6bee947f73586bf40f211ceb4f687ca5678a9dcb33610066565b6000610120527f17f02dab745fbe3c081321fe5cef845e7b8d070b2514d29b2a7b7d89cc0815da610100526113067f2a5d4764021ca71d78a9674cb6708f1588d2ceaf3578c4111cf8b359eef089cf7f017bfe4284299ae7740b6d0e204951e314a8a5d0452419147978a95b347424447f25f9526526155b83946609f7bb9507dd4925ef871dee916d9144ebb4ece1343c7f1220040715a41ad59f4f410e0c05a42c5fd32ac52fe9d06f88188d71f61e09357f05b42d2fbccbf4d39d2be9339cabe9d0dc6d921e855cd91154b639d28d4a1cf0610066565b7f129fe7fc3efac6a8ab23dba6d886f394da11f5953cf98e28269a0dba2a745dd3610100526113d87f1f2618c2ebe9574508b9c52f0000e33ebfddad1a03fdd6bca6ef7f0093127bef7f10fdc1613bdbf67f38bdde561b2f91e4cc48b59f98d643638fdc0afadbfe126e7f1fe31c5548546c7948fe4ee1bd7412e3280eff7d20cb09aa85f49f27661480177f0f88e295fa2ed81b426c91fa69366a73edf75f39bf18634cd266ec4038829e057f19da62626db7199b65f4adcf57fa4a3dbaa1764a7bd155708ee6f378c89ef013610066565b7e91f96400e4297ea85bb186c17b304e82638e57fd631ff6315976e1a5dd8b86610100526114a97f14da40d0af427a65f1841b5adc96538653368f7254cb5667ddadbbad7a574cd47f13523d173f7e6badb73b63fc1c9bbdbee242c61bc68656493327533a5c1b1dca7f1130e1872d76f2f9369cf59b95edf9ce19f01fa89c9c36b26e09def6786dad3c7f1f2c74ba5c367e370d728e71e15b268851a7bb8b45528cb734956079ac99b0127f15afd4cdf1e4f820c1631d4ab85ca4ba3bafcfee72beade9fae60523102448e3610066565b7f1f8bd2ab8aa840664c4eee198c4684dc4b05772bb2a0869da6722b15f447a1336101005261157b7f1a6c61d795dbaf62f99250b37ec5df88645a1c153791db6312b932dc250e4f627f17a8a50ae72ce707f22bc070eb992851ca914eb94cc68eafbb8a96a714eb82217f1161f10b357775d810ad53bcc4a20d5add2b03251c747deb04ee94c565e58d6b7f14ed47e55c1da1c2f05d3c1a1b2e6c18509fc8336ecfe9db737916e283fa821b7f303329bf9031c5515b9a34d49a64bb6a0267bc7b54a0deca5c450277a002cdcb610066565b7f14bf7889457b20b7a1367b34a3a538217d693b52426aff40a4bb72893b1784ca6101005261164d7f1db4a4d0f238a570b1061c6eec81c02f31ffdd4a7c19e763174f238d048974217f2821378477a02e995005a5635088540945bd333f2d1455f038a219b8c4796b3a7f1dfaaee41bdf94d783aa29fc62b7ec7b55673aa818d305fd42d175a05f2e3d867f035e742ec52f19b36d489c720f467ffad77cd53bc2db5dddb246b23021f79f187f1ffcb852a4f0027a9799f131cd74b98ccfb8cbc06349d8fefcc62f10c8fb3e2f610066565b7f250932e7b0adcf2c84ed4bfb60a36b6b82e55aa94751157b1d45794b081c8aad6101005261171f7f137e2e3e89e71d461f4c9bc3e8f12183262a4d1db55c589b2caeaac01238f58c7f0c6840d1cb0666dc59e89b1865275d8a164b447c5ed64347caee63502c238d5e7f2e36b4e5e9c97b462304e8e2b5f9dc88e1c9f2161ba040673f911123f042ae707f1ddeac5805a7f4ada4d0441ed108e3149d4ce6584f49ae5bdfd46d6766eea3347f2ced52c2bf296f87e57410c3ec9a9483a796d164f6049127109ff0d3a9c08465610066565b7f1632308688c25e790f57d68a5350241242a56305347de4a5009ce46b8cdcb91f610100526117f17f0623f3226b5470b2789b8a53040e44443385e96b9cfa0be4d35015158a4684657f20a7d1c0a27fcce78ffe372f4c58306b166f9456ed46cdeb255e395b7d30d42a7f0caf74563b90525f645a6d2036ecd1306fa1dc680b49d9ce4ed24c97499731787f0d68cbbe77289e78d5cbf51d70f1b75ba215df4e7bd0149d10b2c50f2a4f3b817f170a7292f5634c06dd3bf09ab5c9c4ecd4b00d5ce2f35f972b4555391f16b42d610066565b7f2cf4890650d27240e195f60a4f698eda249b8dd614b23376b50178d2df6d2b8f610100526118c37f0b57b37320127d4c50f269124b0dbdcb2b1f1352241a5d12103283e089c0c7427f30430b03368ebcaa91246960490bcf917d78681463e2e7d744bfb44335dac24d7f0480e7479a66a7cd9ea61c8b28974389908350abc4aafc18cd75e33dd130c1447f1d4d06d19ea1b09cad79086d51bde11725a554fa99559ca2f09f3bb73d728c667f2de4793a6f99cd14e3f6642211f4d0b7bcfa361597c544ffcb5a567e9076f47f610066565b7f25e8da9ae0e42e840e04b230370e782bdb67534844325ba36fc7e5e160c66a74610100526119957f2f58c45e5d659a67d781367241f6c35d8cb46361d97b28947d29421c270594a97f050a76bc32ebd1dfe2be330f304edc7ace7167ab7ba1516f4021c62cf0d4fac27f2f44d64f84de16dc67bd5ead51efb1dc8381c84520c12854dd5ef3a079acd4e07f28e07485ad7d992ed1a58f329ca12adce4ec693ebddbb2952e54d339f2eebda57f1e221c5526898bfd12de86851a0d9703751a2f239008ab5f9b7d3b6911c64184610066565b7f0b1d7cecf3a79b2ad3fa298f6cea7ae95d80c0299ecc918e9f8c9c3d38d59d4061010052611a677f028eeb85d115a904020e0c6148eec6603e9cedabc664abee764aafd455986ba57f17f42ba10942df25cb8a541782a18b6fd31cf965d11178c7b04ac45b4dea5dd37f20dcc6c75fd89259be7f406750b3db679a25a8cd2715d245b9175390ac922c847f288a6778f3a83988a8ed1727f15e93b4cb14f4e3a3bbb91dd6d1facafffd5eef7f2fec734da20fe32003ea04f127f844724f38a368ba10c29544252be796040f7f610066565b7f0df7ca7278a13650b919d85497b2ebb0f71035a7c20430d4131d903ab7f5752161010052611b397f0e30da6490625d33e79cd50176f568f9a2c28c2f449a2bd51a25d15686803a937f2bb737546c4aee7c0cc2ba87c1157e2a77c479ebfb5dc76adbb39cf8697633fd7f2ea120a864f5c4093dd1a962e8f013c7b8ef778b04d2ba5bfc3cab28619ba9e37f06ca647c29727c1962a002177da2d504f4b07a5f7eb57c79b88e6b7abbbdad5c7f0440339c9764cec79c16efdb834a26261db8e3f12ce1cf722d23c0e11ff4cf07610066565b7f2e52328483cb5b7ff2eb4e45b12e51b26232c9bc17b7292954c0a9f6bfa51bb961010052611c0b7f0f20f0e55d93689fe09ec312f6af47627482e4bde0a1602a8e2c8d6e84e8a6ae7f0e1548e942ae9d3e26860699b93727c817a9948616c93ef4accd981b1dc3d78a7f133d9602bd3378d69f681c27b05bdffc98b7d86cca63d73a60caed485784d0877f2255c36a38c8735de45cedf452afa842332d33042f78e60c43c7455421b325bf7f27cc589f5bf585794abace589fb8a74a2f784c0990b80fcaa6944097f870e2d5610066565b7f23dac8ea54082fc131e173ae55e4630cd4ca7c871b2a0a479c1e74e7f191e62c61010052611cdd7f0766bfeeede2ccf3708e1b4ff30714c22c1d434cdbe8f55514babc2dd5d97bef7f2c974d1952557a1aac5f7bae4996616da619b73f441c4e504dc8fe9cfb559e327f0d3a800457d77785636303b8b94f17dcffcb46048872ac9f74ef7f27ee5737057f19e0927715d1cc6d389429947fb3737dad733974c6b2e13e5b3d432519516c747f02b2162d533e059a6eda2abb74712edb3a7860beea95dd8a4abfc957660804f4610066565b7f1f1b2078b60b0fce07824e2a2bc8cae8ee673514b0070a8b45710cc78cbb994261010052611daf7f0e88349998dfe703f1b184524f9c394d6004ccacf9cb952896e8cfdb0b078b687f277934b909e72d3a3475bb1ec766ab7a38ad59b128303fc5002f02a65bdfe7297f0c4fd08fede5d221adb7abf549898c91e5be7e85bf1fd2a611bf182cc2e716557f175dcac76d8a8126139b583ae38853290246e43e783fa6903ec8007f178c00237f17d5fb6c2cb37010e3e358ab2d575376870ed33186b8eae49ad3b47e340a8d7f610066565b7f0815fb8591fe01038cd3a3b38b236f9efca77c618d3bfc6c2a7fa89296c7e64f61010052611e817f217d66db6c7fb3effa508800587d2eb3c6d03d8385132f2fcce7f35f2705cccf7f19dd342533ccc603a99738e3fb5a569b94ef71b3e49f90fb874f6161733072f47f2374a6b2da6f8cab8e5cfe8d805dd3a2dfca1e8b7eba5dc8574021fd1241e3b47f1c4dbdc335cf6764355208b4c9d243d34541d623c669dec2c3ba066bbeaf67737f2eb1559566c536ddbc316f6482d51fa340557657700f5b8a846e812a0ed334d1610066565b7f05b58a3dce57b281a271d69895052d887458a715783e8317e024a61a35ec10bc61010052611f537f09c138c6e0a616a49ff90d43a6b043f3b745b78865856dc4c1a45e2fd84cb3f47f14902c0700eec897ae178ba8caf850d793f1d87512bea0ecea39cf6b1fee233d7f1b72bfd07635d8501b2eff8785a2495bae74c7653cf90e6d5c9f144426836df47f11a5153fce659513ee7cb9974ae6cba581e3b4cd14570c5709fec3d8d3fc82e97f2bb943b40c2bd456a6c17853b1ca88eb0ff36f5974b2ff9a5f5093e9bf63a16f610066565b7e4d303b2dea627b2731be83f93ac34e7d14d178a13800558ca7396395eb118f610100526120247f0f8440ef667c9ae81337ba5d8c927a5347de7296860b211cad1ecbfb5d3598ef7f2e73dd105fa8b2ec931d8cdf29ec679e3a9801a93071a7d5ea30659255f03bc67f0bf18aefcacffabdf4112eddadca6145738b4803b36145bb9516db501a0692e97f061d72f78f1ba9dc6b4d7f7784225d6a81bdfc1b5ad6c24369f9c0560523d9ad7f2be8d29525c0cfdd5e6b3125e3bde3bf558e55fbe867f024457a96765474d037610066565b7f2862b41374f89b695274b33b773f2554916e2bff9ff672545fc2f49563f62767610100526120f67f260af0e0fffcc9772c1631b179344566b47aaada3681eb9034c6f75c3705c1c77f03685c079434e167276c57d3cc79703b7dfdc41c156ea1e8b7f99b6956a553267f2fb360776f0de79d7098ee7aa4123c05ee6b05a8be460a774f3a048e138545bb7f0d123f1e72d26b92bdd8fd73d14286c312ad4c23acb46b2e08c157104409e1747f234541ad72040a70da2996a35269230c94699eef313a4d480508008cbc3d37c1610066565b7f1a84d56a67bfdd3d965abdcd329aa78d4fe93434496f2d103861fd19d66d7260610100526121c87f01832e284a7f4c81614882b6939fc0f185573bd2023e3e505765470bb812b3497f296af4d019cb5df7d959b29d549c3f071202b4eba8b53dc5ee979ed1433779277f140a4a431e2ee79400ed7465978d84773213c628264ff80f21ac7a6b673d09ab7f08e513ade694a0d8ac1f3ebf1a96440d32c713d5058e1224e070348c281f4a6f7f02a9912fe170310227189ea1e691d0362f18b38b400b0eff192ca59513eba8d5610066565b7f23a27809583bd1ea51f436de5443e108f69d44cdf51dc1f03e21948b4980b8766101005261229a7f1e40c0e8257fe4a61005cdcfad148cf7f47d1b5cfddfaa082738695518245f197f2eea4ab08aec775f2148479ea36fbb96936da58ba48bd1d2d3acd48173aaabe77f07edc22a0911ea214425ef542b776db23b0fe5817810d40c72ca98aabd9afa837f010dcf084cc29cb7caecf26aa633bce4ed2b019f2887cee7b1a78f89d3fabe2f7f040cb82847773927d2aefdc07489037a9d1f7631eca75c9fb0dda0cb9dbde143610066565b7f2dcb5cf8896de39f228e157c0c5593f4626fb9bc225206383db20360abf0c9256101005261236c7f1c4b6f9a2ae2b418e6265acba9c96b06184d07028e5fb784f3475ae7772ff0577f0f575d6ee67cbecd98345624e032a37c859a7cbef30b3fddc949cd09784841017f199d52350cc30e8c73821f802096f0e547a13551b27bf6b899396f63ac5cf8e77f11e7abdb6ecbafc2e7d8cdefe9c7b9c50475eb475db3c2caf7f7d67f485775f27f2e4652b044dbfe40e63b6b232fcd5f3f39abfbd2051ee68adc754080d49250a9610066565b7f0be843ae5f9b07e52572178af7dae8ed05d36b12c0607862929355ea74023d9e6101005261243e7f15d63e86beacd93c6083688e5d9c8f3c6947929f9f1f99ab578a4c3a922eff037f0c7f7b82300d3c6ce3f8957ba1e4add54c4c015e20d9765d220571c16ab8680f7f1fab9add9baa4a4f56f23165775c6f2d922a7632a94f96374b7dc852756f54b67f2368e692b72787cb8870ea888e714e006f59d2b4460cfb74c48a8cc73b1d1a5b7f1340abb9f4e113186bdc26cbdf4bcca50b531a107f863ca544575e3cf870f8e1610066565b7f253420007083f1aa863ad4760905c1039ed4111c9f053f27710452f83ce36a90610100526125107f1a4ed24e6e03aebcd6bdb100533dc966597afe15c851b4b863f6e889084c64797f1e014e37e9b117cf3b4870d999f2b55d3534d0a6be98e9e357fa43f01e70a29d7f057e8d19dd999a918da29b0940b383ba9fd15db0b0f64996dff67feb55f9a7427f25439408810e074c0bdd4598b9815fee892bb95ca51029ecf009bffa5b9b96827f1332749c523694cb6935e0963a07e81b05967ce1d950c0b731058ec92a7a0c9a610066565b7f060283d2fe7f23dff513d9110b3dc62448bc48f531ce0c1eab5920bf23290a40610100526125e27f0373cbbc306e1bab9e7077368715e6230b4b2e2e4a1db9c674b8c359a41e91087f1cf8a5c9c76a84b147c8238d9253cd55b47c0c43d82966c4636a28674705fd9a7f2fd925726ab794c88bd75796aa3e7f1e6692f2914cf802267ddf01e37902a0087f28957dd1218ea799fd3411eb19325853adf7ae8ae1281f753302fe7d31dfa7b07f2276a1441971709affe6d2a99320001ec45ec72155c575ddeecac0e32759ab06610066565b7f01b098c91e7b0cbb5c34588077c0ddf95300ddf614935630c0ce3a2627245308610100526126b47f0ad3c1870c6d6ef40eebad52123cd1a2913d9d62e80bfbacae812e082021f9ca7f1bb2dba2199a9ab3bc86ef5f9de7f6c5ca13d60eab42ced68de98fc643800a8d7f1e4365db0790c9c4f445b0653c466ff21db96c38b4076ba8bd68bcb4dea6911d7f0cba7bcbc8224b2a8e4aba17977230a686cd6421dc0ca5346f3446b62439c4c37f0dab465d6d910740f33ef6cc0eadc71bf8119bdfd5a3527dc8bbfadfaa40263c610066565b7f2e3497e4d35fda596c06afa63bc3a0f2e55d4eeba4aceb60e65081ad63aa8b8a610100526127867f2165e1c8027305b1ae0e323571635e5d540d13d710c3f9a390b6913f14d035e37f2704e5b6133d9764d6d3f17d49d833223e3937f80eb9faeabbfba9baf4b4c1b87f1ebbfe8114a41bb809e0b33399241232eb940ad8728c8a516d40ada440dbfdcf7f0d4749d79cc163f17110a404a46fe427c6434f3fe67b7e7b4ccfa6ab95bd7e187f19fd5c0eac14fae7598bd4ceea3b1e2998b0c168493b6d72ae41b576e55b9c3f610066565b7f0e970c19d19748d8c465104d8f02200363f9a41786f02f1827742b20dc0d1727610100526128587f17aea4da4c7bcf0d7588b014eb8b40979dd2725eda4e6ace331982467c7ff2bf7f142aa34f4b2e8ad0df7a21b3e39c00c8b0aa2857094801eaafd72befed077f937f2f53c15e2aded33c47f55a070483e6cc7f3821fbf8aa40677d0552ed9d10d8477f089ece54e47aa5c908e43e5f08737c1436967089006acab1c9cd19eac4a208767f031da4345eecd6db6c0f7b07c7815d7add1fe0546d738f4d79ab5c57aa841edf610066565b7f0816be42745b7dbb4ceffe5b8e24ea60fd8b719deba50037ac7b75948745c6bc6101005261292a7f125bb03af3e2cf18bbe6f5b590eb3bf8d0d1ba63be696483e98f283bc7cd07a37f2ffe4d9c420a59e9cdc7c31ab2bf35187ca147cb898a3942deb3677786036a807f25db1343c24104071023fb6ed34d9909078311e1efe85af0a11b19114fa9e7907f242c0bfbcdaa76f715dbd4ba825c71fcfed671c1b1901fa484c87f810315d0ce7f04bcad9e553795642f59baf714a6bdb432fc45a0a0b77f1aba3a9823476df9b9610066565b7f1cdf8710995f5e03412b4a7f699532f9fd01f0ea167a8dfc1ddf37e2805addef610100526129fc7f1a2a957ec0a723da61c2134bab0bf17beb00e6dcd84690c230dcb9e58da948277f2f8fa5c78c706e3a5d4a03f2a7a3953046d7e94cb88a7ef350e67b5ba0f0debf7f0defc1d8882166ef3ccde53a4f236fba83d384621937cee57e421a513d0d33977f1377978e1b1f6a8925fa8e7b7941bdf8fb59ab9542342419283d8203435c93917f111160f9acf6ec360d1b6a712313a0dbcbe23e64420055471d2ee4c5dedb35d4610066565b7f0271a863a280a32641ffa33510b2edd278c98630359532f3e506b275fd5d20ce61010052612ace7f187a2a3bf79a69fa3e5089ef9f1fd56fdb47c55eece77aa228aa3de1b486bcb17f2c392fbe7d3fde42fca4f9478bb439331258255356f184af6f76f119054117d77f016fb9337708ca638cdfda91bd0daea6b97224ef7b2062672addd1bd18bb89007f0775d996cc2c4456f303a2c1f9007647e11a921d9fea3f7b926143b99d2fa0be7f26fd31471828c36ae36c27b748054b0c0c4fe5239b301699e3765eebecc18946610066565b7f2636e0973c865c1bd974dd78daaa8d0a84cdaf6be1ad47ecf2a0d18f117318f261010052612ba07f0240176ee0e7982eebe92a68d3e3a38c26821acc0f5d058cf8c137bca2d26f1b7f2c26daf996be247acd6dd4acad60d38b5a471e6322188d02c137e7cb484377ec7f21cb752194cf43f3b51942eb0040eba9de2bcfb1c2a3fae97924b710f26832cd7f2a8e26ca8d647d9a6388516ea9dcff89083d539e58168c2a50c6dae30f109f217f1557459c9c74c94aa00e5af69a1e3112fb69537ce897ec0c718958d96516f2ab610066565b7f24d40f462114fe9ee02aafcf74b4fca24e1ae365dc75c3b52bb13cbbb2f21edd61010052612c727f138db8887830565f2693d0e0f02e4e79e144967f0ba53b03519aba764b5c994a7f0444c99e592353e5aecaa302add901c14d8c55270a160afed4429ef5598ad74f7f25c7e97b475be00e8b559a38c452364f4c9c531fecb8ac698f7fd73ce22e71ec7f0ebf89064a3af247ca1f36f6f3570188e271e0b326c4fb26664e89e1454ca1107f19e84f4f25a799496041661dc5d975b681f6e06744cee89b7be5d9fde1744ac0610066565b7f0e1eca5df88ee5f60cfa7e1fe5befbb719fad8211fa9b2d02fcc233190c17f1261010052612d447f200958235281a61ba2c4be0aa3282a18c74b6d262f5de7c2e33d2bb3e893dfec7f2439fd239257f38181c7be3cf513f1bf7235eba94f6b8942a94cbddecf6f62f77f2b8238c1548f9cbe29fd35cf91e7b48f0ebda7e639edf69fe8d5aba7924d53627f248dd79669ec09dbf0350a15d6c75c6a9bdaacefca14d51300978f13d1ab6d1c7f21e65d6d8ee43760bca40e730b5df4c4cf3a8a732db148f4b2951b4c61d68e8c610066565b7f03a35aa3123911cdb4535baed3359f5f6a5205b9c93ef31d35323a47807b8bc961010052612e167f23cb2661b488ee71e4c753ff23ae4bd25d8a44094f66b6532977e22140eba5cb7f0bb743ee34802129c556731aed9d302dcd085313ce572f6242d13832e536b4b47f211e5d2b39d62520a7a627ece8cacbac9f97506def4ec286928ba6c27d463b177f20f3b3f4acafe9f8af3e06661b3a8f778fa2812522b9d70a67402cff8db2b1b47f26b53427f9b3ea2c769d9c660fc60881a169c12732d001b7158ee4b1b842ca24610066565b7f180b11b720622a156849dc6f7f6e7f571659be69682230c5ed9ac339700a7cde61010052612ee87f0cfd7f4215e434c8da17ec3258b0bc605ad1ab2e90aa494351e4ee40bbc491fa7f02a7d7bb970b8a6ed2ee66fabbba956b6da3b100f5b5fb928eef42f9708273c97f1f0026d0bf1f8e1dd5423cc2fec1fb5cdaa1ecdc4c3cb218dbceef77c00d2f937f0cb37839c2c9a7ff79884cbec75f41e9be5e47c76d61538231bd8162996d6f677f27803848a0aed96a93fa943b6635e450217e137f4ade74a62d7917322714b697610066565b7f2350bf35477656899151ad7dde96ea7857e15501447008dab6b3d27c8ffa274f61010052612fba7f2194eb89847d6b0f1897f675f19c0c56b61b13248eff3ca36e34fb9d1c79ee437f26157bceb78e846bbb262f9a1e06d4271bde5a5bce8f0419952f97ffd13eaca87f2e296e57c97a5309acd26febf55ac963a5444c1c5f703ad88a0d7b97b9dd38b17f15931f782b45f7fb656f2cdbd1f7705c353a23fe1d30a5a46a1522ed160df3ad7f04e96a965bce3d3a0a24a4a457c951582c871349ce7eee1aabfe578a94c65011610066565b7f0473ddbd52e737e527364e8eb63207975c38d5fd6cc32b272102b082cd1518fb6101005261308c7f21c47b275d82dde6460d5e769a99421144b1c5a9da59294ade9cbb317103f2497f18ae590073f969696af762ffa4e8f0ebbf97f8cc787e37cddd1f321be3beadbb7f1a749d7964af0b7202913ef204c653f2b4bfb65ceab7b685233ab59ce3bb69257f1b56dcf76fb23cc4a834d455a4065e133571402b7df309d59bc3105d42a8c3017f1a486f0ae591cacdaf09c58a49c4d1795405435340819e003f0469d110b7752b610066565b7f241dcc51ac37808a415dd1e3c281f05aff11789dc0cafdd77a35484e0993f9a46101005261315e7f1e8fd3634c3ff764184d03435f98584b11b5b15aeb9c75262da3f1ea2c2a9e7a7f25e7b1d7470a3c75f13f0b56546c8e09f2d8efeff06ef766f9c783ca869d130d7f039daf6876280b80e873bf2a32fd2834a83c69757badd58a888ef819e926ce287f08ae7616a260cf6657f8f73ac284588d2c5f07ff425d837aa7cdcef63e3e21037f0b12fac95b6d3a881d892657c8424e645ac4e6b00515f902d594574302b26e02610066565b7f1fa195f834a69e62372f60eb497da167646eae14153d803b39dc5d11f5d7800b610100526132307f1aa7e8f4189ca9dff3db2ab7648be0a2392995ce46041e04680dca8ad7232df07f3034fb24366123ec6dcafcad35726dbfb16194c036dcd648fa69439bfcd00cd47f2980400edd1d74e3d69db5458d2ccd5fabdb236ec16a82a4301a0ab59ea4a6e97f17630d62d9a3e510c88a4d43c360f92bc0fa00b66031adec29bd9543fd3a17ee7f1ffc3153c56ef9755932cea2be0573749bdafe1c4fa0781a4b8b4078ce9d7547610066565b7f1e4a8aace15abc1d5b76a9e848431d2c06a78f72b6bebb1293e6c58e5185696d610100526133027f12418bbfd77b63ad5e16864ad9c32ffbfc5a3dd9b78ec2b79329fe5e0a8d29537f2e4c10ec5e65e2f239bbc43c13031df2686ab40fd79a304b05d611b823f23b737f23d92b793648110fc5aeef0633f0c77cacb0dbbca1879b8a6f6e5df445e5f70b7f016556fac9348a735ab50aa089c97151b3caaf0a20a34fb9d9370505a15157297f0f23f1c74d5fbf6195ad5a6aee5e56993c5477e8453f5b93a0d7bafd333036d3610066565b7f188c926255f5b7af3da96355729c2a8670ab4c2c70400481b2ac903740e0c5ab610100526133d47f2c6b1e2cfea78e2c36785e76a8cfb1b057e9471f24f5b391175c3decb01e000f7f20dc664abb20b7456c06629ce37a1ecb1a27a4e8b24e31b48b9c4635aa30323e7f13eab1b4e672ba1b1c1bb901769301f1e5659d03ea10c61de2477ff0ac2214217f012c3780207f395cc21deb0abd951681eea32498ddba6ce897a8f9f0c23570677f0f3e96107decdbd6872c20ea09acf92cdf17a3ee1d1331488092d96176deb755610066565b7f233031847b476bead0118d3db338e89133ec420d673e504ad647259df655571e610100526134a67f11d0bb461bd8af2844f49f0f840c94ef9518b2511344742d1f5438fe3d415ae47f1b16ae0d7c54408cb75fd931f246751f2b0c3dc20d79e82a2531b76c22b4d5df7f26ccabc10eb04327cb5cc3dde2abb36f097086c97e738c133c9f57077e748b097f2b33803d90889706e714f720b5628d26fb60b545a1f3e9ce49a6ae912b0240867f2f9913208e09e3d6e9e6fba6384fd076ab89f2662976e3e30e0870bb30eb54f2610066565b7f217bef2f4f12c6dcc91c2058a23391cb77de53ca6e44dcdc6ea3d36fea326ea6610100526135787f0e0e7d7c5501999b7d16173b59b7cae1f203bef21aebf00251881439ccf930137f0d6ec477761e2efbac4f14b3bf3d5257a99e64c3f25fe104faf988b20fe5ff447f1efc9c9069e5068baac13d2e6645641b7d27e80fc23077161535c44682ee57a97f277f7f9b542f0c2bb5f45bed054f09624536010c3cf9452d2273193327f801d67f1f84e97895bee438eb3c92dc9b1846c9ad29c164387b06aeb6ed1841ed8c4dca610066565b7f226bac7050166e5f6db78cd0b12d36f305b6e8c9a055114ad7709e6f57245b6b6101005261364a7f304262a9eff4040acf43e322d6f52676ae2f853ec2e7a80db00c488cf917c74e7f166ea595375a6786ac527ee9eced73ed6bf550876abcaf3ac92b42c808b00d8f7f20bace63acfcae0b1c9f2bee24b8e9da85ba597d37b0905720c4f15db231b07a7f18733887a6b2b3b4c90d8e4990196e23445e47d7ea5939ebfb89a3ee3d67b4bd7f05780c88adf01531b50f817e3fe44447d29b35aa8a389c71e8cf1226acef68ba610066565b7f1980077457995712c44da7e17713258e3f8eb354bfd80ed9eaf3ecbaf69601056101005261371c7f1544649a2bd73e3ba72f396df91dd65401dd8faf51de325fbaedb9d536ad94fc7f20e88a4d607526dd07fe08a3552a44669129eb87fcc0b13aac8fe8afd93015217f2cb9c24112d35341aceac88360fb528924e58b6ecac321b9fb29e6aa3368ff237f06a0fbf4cd52e93ba5e4c6c4af65db02ee96297f8ad200f2f1cff252e769b5517f26b2f539c573829f6aca91baa954505bc5c3eb4e1df1d638582717fbdf2388cc610066565b7f1f93a532917394c7e22fd17abeea6389c66fd7ae2dd9f02f860f6d96947f0edd610100526137ed7f23670dbaef966881f07f919a2d883128c7b23cf767a477b2b2e0762bc0dbc18b7eaffcd17ba6003c56dfa85571fc29737b225a80d480e7dd7edec01f14f230107f1bd9563506d9544ef3e4830e13545012c579379c2dcc1330416c4ae49bc4ec617f2fec990ef556efe1035a464ff5581e74067445cd54abcaf6b8c0399fe0d24cfc7f25d1d22ff13e7705d3c085f97fc4e4f6914b82ffaa5d2091ec64dac423765ef7610066565b7f08a2c18ba41381348c1acfbf9617716806b462a1691bc2e343b79b8085e376b0610100526138bf7f13d36ad0a4ebeb81969778649659c65cb7d0c41cc519871fdb71a9ea6a0caa567f2738355956298138949e442171d6a4e4b74ef2065740db7cfc3a0b60fd573acb7f2074c8b709705c9888538a7f8a3c4aff647731bd16f8e254fa74ea9f2be7662c7f25c557f45b99781cd37d3bb22931662a67f78b37782c885b456bb96d55e884047f2de42e9f537b7d61b0213771c0e74f555512be07b6a50934734e2c5beb40be37610066565b7f277c4de2363d8b5b456cfc5a7ff8e46ff2ec8daa59855f5ad64bc0521f3ac567610100526139917f0ecbff4846962a975d347ea9a8fc465fb46861557622f2c2564a7e639833c1697f27f5d03bca1c8207f7239a4b2cf73ae559a15aa37e7bdddf3aab05eec5ce55927f1c68ca8f7aa17659075405ef6341b8e69a298b9a4d72f3bb854b309e4ba87a1b7f161924151b5a5ad2d8cac119522a991a906f15e8531dc70567f6b28371cc24e37f059092fc395aed285807bbf557ad9a1041f59c079822b1088457882fee7b612c610066565b7f2667349978401362f6b17939eeb0e64ff55607ebdb35c7071db46bb3e7ba477861010052613a637f0e21117970dcfbd4b1526b253636f377538d3b4faaeb5a8b24bf6200d14cc5917f10b109b864809c4767a133cce6cbad6c88628173b8ea51e8cca85830ca7de5227f230e4adeecb799877f7ce9a58c836b99d533584a195c1d77a313abe1c7d126bd7f06a719c584c74ffbdd7218eb565cb4c8bd86c92e3dfb3c73e1527201aa51234e7f1b11862c52acd351b7a464793f4fbb57fec99f832b63226f95d175c8d2fc08b2610066565b7f2bcb0b0db8b9e3e02b7e9c1c9460fdd9c6cd98562332e648d8a3e0ab9459752061010052613b357f08ff1116b7a227bfdfd4465a67890882b615c8c4c17f28d8d24958edf602ddcb7f132370abddbb0b1dd57f2a520c25336bd7cede94b95bbf5c2151d6d88e641b647f08076f9c4743de6130ff622cf401edd2c92f24bfe114f3c5e724891746315c477f264d9e094aed5f41a60242220a34a284089087b2436a9bfce8174cc9be8c2e207f05000fa5fda505e029a13bfe304c267b0d86c72c039babf6d3ff02ee246be02e610066565b7f2683b425e85a508f96852f14b4220fcfe9f7ad8b17bfefc0e348c47ca78bb57f61010052613c077f1be686d53e2a8ad57a828b0651425cfc6978c7027edbf247f6b6723c21df86e77f2fbf04284327ee4f680f06bd390e309d0d13acc74b9c5b14b63059b8cc7abff57f02f40d0ad05f5652e31ef9440ad71ebc8419e393493937f05f00499d02a99e367f27439c98a76688067a097b19b6fdd7d78d5f88e274e0d8fea5ea6b7406fdda7f7f12ea68ce6881becad7f8a6b117b03ab976f7abd597f903b0bf230d20d21a943a610066565b7f0e2155a545fe5f3cbb6397606589eac19cd92639339c6b017298a4ad3408b4b961010052613cd97f220a02881e4d47ac94d950cdf8386274d1782e27cbd0d845978deec91298f1657f0a41dd42221653752bef350f6d74a917b6cbb1fd76a3a12166f4d0be978e40267f06ccd7210dee1d6b0e22b79e12d19082d8078b788d71007b95e7a774ed86a6517f27a321f8c7d3c9022e962f7fef2e3c848b4539dbb75aa139f30430fe545bcedb7f16dace9b2e8012e31db1c7ebe672d86bbe61a1aa3e1693e0eddfc0de0a9dd951610066565b7f2901d946addc94b040fd58004d9a5f8cd1926540c7a8612cec1c58cb60c2b3a561010052613dab7f0263d8470ab4b1c61d74d8e896242f4f261dcb167a3a06923893d7cb2c93d6a17f0a65aa232d32ed6e8de63d1cdffebc2f3fa616465c27aaf97e8cd3dcff6486527f2ad000b1748abb812cd6e5411286b9ff3ef0a5bd3d259a36e45ef05b9eb5beeb7f0e925bcd1c6ddb4a3a1c67ec8deefbd40c53c0d33e7aeef1b46795aed5943c9d7f0f0f19c6291e51546a267c60cc774e5fb9d088bac530782d891ec1af4b847073610066565b7f08e2b8273bfa30c1ac850306d91e468a9e8d05092aee4cbc80c687248463ba3061010052613e7d7f03eed3892b6f0e6c5da1059c5f3793985835aa283500a8129904a94c87f161bf7f19e724a1d742cab103455f0040edf745a2696a71084c93e322715450dd4d6f5b7f2ff7a174ffcec29862e04f5dbdc73ebf3661570033576290c0c1f6cd8ced27ae7f236064d71cb6c64c84747ac25fcf8d881502e5f03bff87561b85a116b1f39aca7f1889cfa8209f4952df9022db9dc583b5717a0696da41cee64937d0cd6321e693610066565b7f29c61184ed9d460f337558a1af639aa7e3c0975e4014ed8ebcad4a25d51eabf361010052613f4f7f1c3f5d86e5921fde9890189f1d8c618754288600e6928bc182ac4d5e4c9f0ccb7f08ecd7a6f1735eed86baa094e608f488f38dbb398fcfed4b994383a0ca8e46477f20ffdfcb86f4d005064edbc296918c332d32fbeff1729de5056a26abbc3a35fa7f171ef37896bae2b1020a0a5839bd51784ce11bb4237d548c171169d32fa19b407f07adcca76d8337728839a1b6ac3b3ed42afb87d72af98f52f416f2ec58b28cec610066565b7f261db25e7cff5a9fb72f276b1f9260b667300fb7d361b50fd5c0e8b6995b05f9610100526140217f018165842f406375f2346686915afb14bf1fe0564c8858ee3bde0aba3de5f68f7f11fe1790d5abbf5935ff22318e4f7ffe69966ada2f9136b54f830eacb0a653687f03a37bf12daf1400d297ac4ac13ba24c17dc262db16c8523deee4e0ccde9a6807f0a74ea22d8a09336060610179ac1d82fffa9492df76deed4ea60e0133b0811a87f0defd45b28958728228adbb2dbdaef6a5e9b1a64902a734f402b8cefb8ab3b56610066565b7f1ea210f2001a334d3e801f4e53270d42da7aaf317a553b4282aa78eaa2282e6d610100526140f37f2c3a29e13a84d26a0911c9289daf1aa4cf5840aada0701d57e23dfc796da6da17f274f6c5fd34a784d6b915ef05d424ee6c0babbf369e79ab138b8167b5618ec7f7f27db260085e224898df145f23f635f2066d8e4e124e581e8c6261929b1dfe1077f23caa4b80ecfa99e9d3fea2bbc1dbbf369d1bfc8937d03d074061c30fd8cd76b7f2a3ac3314b2b66e796fbe36df778c5e46972320cc43ec807048826b6704ba7c4610066565b7f285745a90a7fe3d09af5a808704bc69c6f1701e573912df5cc1e265d596c4141610100526141c57f29b736b911d71a79cf63d8a6f786f11bd5abee24161dc567a7c851eae1e43b517f2a7c015e9c3b2c57ca8b7d26d39a1bcc85d6ffacb7d9fbd66d2a8f1d64ed0c927f0b5b1cec63d42d5e615dc269b885a24cef303ec78c972dd17cdbb3e915cc4ffb7f059e781d65896ebe0e4ba26dc2f29907f47bcdeda4a2ca2c713d8505ea31fd5d7f254dbeb52884b699c1ba7fa0d6e80d610903b18a3e509c36351ccc3b024946e3610066565b7f2cd055ebb7ee4686365dea450f046ff62405fae1b1afc9fb01707cf81da0e3b9610100526142977f11c4ae607bae492413bf62cdaa2c2868ed1fec6dc0631b067ca60fab125b9e2a7f23c0a19a252c87e6b1c1c21b1a79800200c3fbff3e3300e7e5568071de9efb817f23e813026fc0b80064d19b5c5428942fdf7efea80bfa8ec4095272bfdb7b4c9f7f1905d3518355eaba7859b591ed7b8c9c253980f0450dbdf54d7a7782ba0583927f2d901b8195c3c96c8c36eb99fec0134ec2b8304ae810bd30da554e3080826715610066565b7f282b37020c0890d751c3fd76950d8068668e1dfeae621dd552d2de887da2ea75610100526143697f0e2abd315b47c0dc93849c0cdf267e811cbdbdb200a6e7c2b67edf7cb01742147f242954047e5772fd3bded590ec8beb4c542f2e264c8c3e284cdc473505c51a907f1c115056539ce20cd5a04d1a5c43e2b00fbe83b25901be36f5ddc4666fc383fe7f0a35bd74e87cbabaabe89ad1319d2c9e863b4c631c21938c9a5395bf97872a9f7f053c9fef2e021fa9a20fada22fdea1505b58a3159bbb47337dbf791b215b1452610066565b6001610120527f225be36ed0ee85e1f845ada84e5748a56699152113ff61b5056b6d8bde60c19d610100526144417f26793e2abc8d3c30c60626fbaa158f263587d6bd15833d448b116264b930256a7f0cd070f234014a2809ab90c71c1da61e98a96322fedd99b6aaae1ca104f3facf7f2af211d8e0ac2d8fda7f849b8f229a225c6186b55762c7a7b2ae2d1dd85c57cb7f099ab6765505ba1198ef140e77b7954d4fbe79a056ce72bace39c048c00da3cf7f28933852266b52d9ea6b5bb923d9d94f2e5a5be5c778e75e07942c234b643bd9610066565b7f0ab4773f150c3f8ad3bc9538f43cec395a7e3731ae973fefeb623a09217e64c7610100526145137f1ee27ad6b9b5a867733afc61a2b3e76a52ba3e4bd5e657ade91fc038819dba5b7f29dfcd7b63f05abf2753a8c341d6b7a60c6243b04c9a1b8b3320bba04a4d47877f192a84ca2f99d36991e2d2b1deff3989d1c156c239e10e9f56140e18545760677f0f64891c2c8b020e46c3594cb758f0bddcdbd09bd0308816fb41734a869872c37f02174f49edb02d5154d2beca2dc92b9cc595383da1fde8f09e4b5ee3ea5a065e610066565b7f2d9e32a7c90556fe108d255ac01e75df338fcd63b2bf84c19280d427298863fc610100526145e37f2b205a8b6d4b7063d931f3bb5d3464053843fe7fbe4b83c17883f86527882a187e8e44da21d738691b881757ef37ed29c5bd9f7a4450fcf53290a92cc2ca21767ebecbb47042bd7f8c9f6bb422162d1aed089a28482f7fd16ab06a13285fe7027f2a97cf2c10c4bfbfd299f67c52a169f92c05b7dac56a41c4dd4fe87c8246ce147f13c352a02f595186202cb0b99fa58c5542ab67f9b6d3a0afd103deeff6d80f41610066565b600080516020614bd88339815191527f29a322a84c25bd2ddf6e2e4200228d95abd6349a02266ac1dbba520738ceca9760005108600080516020614bd88339815191527f0678c9bfc6f2df012f4fe55e33bb68ac14ced1df0d02152792089d046d828c4360205108600080516020614bd88339815191527f0faff3a5e7425794fe20a7e0eb615b8b1760394b7f2304286a3ae4009124db2360805108600080516020614bd88339815191527f1f8f5b611af9feb9cea86c084058120553e404103aee213f5a41d1d02541c0d360a05108600080516020614bd88339815191527f160875d8479602f96f40acc2d042ee52c1588b6a29de4284965a6dc6c930ea0760c05108600080516020614bd88339815191527f16d87a5183a316a1d70afc951efe2cd667c77328fcfda458cbf5fe3045f46d9e60e0510861010052600080516020614bd88339815191528586099550600080516020614bd883398151915285600080516020614bd8833981519152888909099450600080516020614bd88339815191528485099550600080516020614bd883398151915284600080516020614bd8833981519152888909099350600080516020614bd88339815191528384099550600080516020614bd883398151915283600080516020614bd8833981519152888909099250600080516020614bd88339815191528283099550600080516020614bd883398151915282600080516020614bd8833981519152888909099150600080516020614bd88339815191528182099550600080516020614bd883398151915281600080516020614bd8833981519152888909099050610100519550600080516020614bd88339815191528687099550600080516020614bd883398151915261010051600080516020614bd88339815191528889090961010052600080516020614bd883398151915280600080516020614d188339815191528409600080516020614bd883398151915280600080516020614c388339815191528709600080516020614bd883398151915280600080516020614b188339815191528a09600080516020614bd8833981519152600080516020614c188339815191528c090808089550600080516020614bd883398151915286600080516020614bd883398151915280600080516020614d988339815191526101005109600080516020614bd8833981519152600080516020614dd883398151915286090808600052505050505060206000f35b600060a0828403121561497e57600080fd5b82601f83011261498d57600080fd5b60405160a081016001600160401b03811182821017156149bd57634e487b7160e01b600052604160045260246000fd5b6040528060a08401858111156149d257600080fd5b845b818110156149ec5780358352602092830192016149d4565b50919594505050505056fe03d880395be93c27d649af5fd142e76b33918cb8841d5a28173bd5cf7d3287911baef1cb5509b526a42061fb53657f99b3232500e855192cbe8c940e068c475f15a67d981041b1f6f09f3f9ebefd864e779d3af08157786ac077505e50ec79fc10c9e283159d58cb4cb2e35fde83a3ba1fdc28002ed9963d2a99f186178a148d298ce0c1e3113bb935c7058e7772b533b1aa9db0c0926bdc8917e5605ca3ac101c2116e47e03a86bb11695b0a5f6dab6b9a460b1eb951ab01c259eca3fd47d5128eeae6b5866ad68e443bbaf91680db7d7e2b3037e38fef61b42cbccffceca811b121c049cd1159e289007e0c9da9995cc4bab4c26fb888ec3972a8a2e656964192e16d17d956b257b85a652eefdf2ee09589eac5be80915775723d2cb1da06d11924f02fd19b09255aaa1cf46ea0518e3d7bfeef47421609491011db0bd0b0208ca7b64657c3548f32bef5b63ad24288a41c0b251099ad27f9434307e3e64d4083f0df3f1a0351d0330ec3ff602ca8cc353b7f6e762c7107184cd7b423449f61324564ac7bdf9e22164e9858d7fa8e368b165eaea3daf4eb67ee59c0df2e5d401998270471e9361955446b0cdb8bea915ec0675f1cd648ddcb04303507a4489063edec1bed831f506af8db648d6fdea145345887e8bdcff109035a1d9b674d730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001011a63a26feabf87fa66bde66cc25a922c96382d76c6a7ff48f1537beaed683a124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18247fa7f022304a1994ff505456c2201ef9b717369498d3ffce446601ed9df845119ef188bb3dd0d32306976c19941e8664be687e7a69692da27da215a6f06d4025f16631bf77060f7ea34087c025bf135784319ef08cda2e31419ee0a529e658094cb4e83621afd271e41bc71727f0158ebd612239ac9d698b17fe4be05b7fc8144c7a11da5a7c5dabae3f33fbd03cad86d18bc594c79a497ecb9894edb554f12d9e0ab5c06893dfdfd03481381ba86b6e6292df5609d71f2c64b2d9a79f809e049327fa79d28c12a2c82406947f77f06775b0287468b3136877701dbe7c959803fd7b19ef2c861f22f77ff810f54e277bc94eb76c02d79d986be3dcdf051c3f230940dcc5232658ff9c29697a3fd416d170e8c998f1aa85dea0c42d79f951aa211610e2ad4a377426fadf7068b0c1a6c299a164c1c1a603eaed944870d0b9b90f971162627723f3feadacb28b0c104cb8f74de508752fa8d7c0db2af13de8ee2d78c3a5d28de9ff35bf0a257635196e5730ca7f40493277078cd75da8b4ebdc1a6764d5943fc4a720b4c0a19fdb8c711984307287a58b9b5f9f5d58212cb26318bd41239c3e71579a677443ecffbd555a81eeeea69352a68b67c8563c0c2a06a2646970667358221220256594e4d2a6e424291f8d62753747bc3bffe43303c707c46acc588cf82bf44e64736f6c634300080a0033"; + +type PoseidonT6ConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: PoseidonT6ConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class PoseidonT6__factory extends ContractFactory { + constructor(...args: PoseidonT6ConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): PoseidonT6 { + return super.attach(address) as PoseidonT6; + } + override connect(signer: Signer): PoseidonT6__factory { + return super.connect(signer) as PoseidonT6__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): PoseidonT6Interface { + return new utils.Interface(_abi) as PoseidonT6Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): PoseidonT6 { + return new Contract(address, _abi, signerOrProvider) as PoseidonT6; + } +} diff --git a/packages/app/src/typechain/factories/contracts/poseidon/index.ts b/packages/app/src/typechain/factories/contracts/poseidon/index.ts new file mode 100644 index 00000000..5b7af6be --- /dev/null +++ b/packages/app/src/typechain/factories/contracts/poseidon/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { PoseidonT3__factory } from "./PoseidonT3__factory"; +export { PoseidonT4__factory } from "./PoseidonT4__factory"; +export { PoseidonT5__factory } from "./PoseidonT5__factory"; +export { PoseidonT6__factory } from "./PoseidonT6__factory"; diff --git a/packages/app/src/typechain/factories/index.ts b/packages/app/src/typechain/factories/index.ts new file mode 100644 index 00000000..6397da09 --- /dev/null +++ b/packages/app/src/typechain/factories/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as contracts from "./contracts"; diff --git a/packages/app/src/typechain/hardhat.d.ts b/packages/app/src/typechain/hardhat.d.ts new file mode 100644 index 00000000..f50ad3a7 --- /dev/null +++ b/packages/app/src/typechain/hardhat.d.ts @@ -0,0 +1,384 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { ethers } from "ethers"; +import { + FactoryOptions, + HardhatEthersHelpers as HardhatEthersHelpersBase, +} from "@nomiclabs/hardhat-ethers/types"; + +import * as Contracts from "."; + +declare module "hardhat/types/runtime" { + interface HardhatEthersHelpers extends HardhatEthersHelpersBase { + getContractFactory( + name: "OwnableUpgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Initializable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ContextUpgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Ownable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ERC721", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC721Metadata", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC721", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC721Receiver", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ERC165", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC165", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "AccQueue", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "AccQueueBinary", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "AccQueueQuinary", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "PoseidonT3", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "PoseidonT6", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ConstantInitialVoiceCreditProxy", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "InitialVoiceCreditProxy", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "FreeForAllGatekeeper", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IInitialVoiceCreditProxy", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ISignUpGatekeeper", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "InitialVoiceCreditProxy", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "NFTSignup", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "SignUpNFT", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "SimpleHackathon", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Jubjub", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "JubjubFactory", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "MessageTree", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "PoseidonT3", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "PoseidonT4", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "PoseidonT5", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "PoseidonT6", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "BaseRecipientRegistry", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IRecipientRegistry", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "OptimisticRecipientRegistry", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "SimpleRecipientRegistry", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "StateTree", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "LibClone", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Multicallable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "VkRegistry", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + + getContractAt( + name: "OwnableUpgradeable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Initializable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ContextUpgradeable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Ownable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ERC721", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC721Metadata", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC721", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC721Receiver", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ERC165", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC165", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "AccQueue", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "AccQueueBinary", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "AccQueueQuinary", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "PoseidonT3", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "PoseidonT6", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ConstantInitialVoiceCreditProxy", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "InitialVoiceCreditProxy", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "FreeForAllGatekeeper", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IInitialVoiceCreditProxy", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ISignUpGatekeeper", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "InitialVoiceCreditProxy", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "NFTSignup", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "SignUpNFT", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "SimpleHackathon", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Jubjub", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "JubjubFactory", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "MessageTree", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "PoseidonT3", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "PoseidonT4", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "PoseidonT5", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "PoseidonT6", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "BaseRecipientRegistry", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IRecipientRegistry", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "OptimisticRecipientRegistry", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "SimpleRecipientRegistry", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "StateTree", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "LibClone", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Multicallable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "VkRegistry", + address: string, + signer?: ethers.Signer + ): Promise; + + // default types + getContractFactory( + name: string, + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + abi: any[], + bytecode: ethers.utils.BytesLike, + signer?: ethers.Signer + ): Promise; + getContractAt( + nameOrAbi: string | any[], + address: string, + signer?: ethers.Signer + ): Promise; + } +} diff --git a/packages/app/src/typechain/index.ts b/packages/app/src/typechain/index.ts new file mode 100644 index 00000000..40f4d5e3 --- /dev/null +++ b/packages/app/src/typechain/index.ts @@ -0,0 +1,23 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { SimpleHackathon } from "./contracts/flavors/SimpleHackathon"; +export { SimpleHackathon__factory } from "./factories/contracts/flavors/SimpleHackathon__factory"; +export type { Jubjub } from "./contracts/Jubjub"; +export { Jubjub__factory } from "./factories/contracts/Jubjub__factory"; +export type { JubjubFactory } from "./contracts/JubjubFactory"; +export { JubjubFactory__factory } from "./factories/contracts/JubjubFactory__factory"; +export type { MessageTree } from "./contracts/MessageTree"; +export { MessageTree__factory } from "./factories/contracts/MessageTree__factory"; +export type { PoseidonT3 } from "./contracts/poseidon/PoseidonT3"; +export type { PoseidonT4 } from "./contracts/poseidon/PoseidonT4"; +export type { PoseidonT5 } from "./contracts/poseidon/PoseidonT5"; +export type { PoseidonT6 } from "./contracts/poseidon/PoseidonT6"; + +export { PoseidonT3__factory } from "./factories/contracts/poseidon/PoseidonT3__factory"; +export { PoseidonT4__factory } from "./factories/contracts/poseidon/PoseidonT4__factory"; +export { PoseidonT5__factory } from "./factories/contracts/poseidon/PoseidonT5__factory"; +export { PoseidonT6__factory } from "./factories/contracts/poseidon/PoseidonT6__factory"; + +export type { StateTree } from "./contracts/StateTree"; +export { StateTree__factory } from "./factories/contracts/StateTree__factory"; diff --git a/packages/app/thisone b/packages/app/thisone new file mode 100644 index 00000000..e69de29b diff --git a/packages/app/tsconfig.json b/packages/app/tsconfig.json index a273b0cf..aa3bd7a0 100644 --- a/packages/app/tsconfig.json +++ b/packages/app/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es5", + "target": "ES2020", "lib": [ "dom", "dom.iterable", @@ -10,7 +10,6 @@ "skipLibCheck": true, "esModuleInterop": true, "allowSyntheticDefaultImports": true, - "strict": true, "forceConsistentCasingInFileNames": true, "noFallthroughCasesInSwitch": true, "module": "esnext", @@ -18,7 +17,10 @@ "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "downlevelIteration": true, + "alwaysStrict": false, + "strict": false, }, "include": [ "src" diff --git a/packages/subgraph/.editorconfig b/packages/cli/.editorconfig similarity index 92% rename from packages/subgraph/.editorconfig rename to packages/cli/.editorconfig index c94bae0f..a8c26d5c 100644 --- a/packages/subgraph/.editorconfig +++ b/packages/cli/.editorconfig @@ -7,7 +7,7 @@ charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true max_line_length = 120 -indent_size = 4 +indent_size = 2 [*.md] trim_trailing_whitespace = false diff --git a/packages/cli/.env.default b/packages/cli/.env.default new file mode 100644 index 00000000..6d12aabf --- /dev/null +++ b/packages/cli/.env.default @@ -0,0 +1 @@ +WALLET_MNEMONIC="YOUR-WALLET-MNEMONIC-HERE" \ No newline at end of file diff --git a/packages/cli/.eslintignore b/packages/cli/.eslintignore new file mode 100644 index 00000000..1e4a5b9a --- /dev/null +++ b/packages/cli/.eslintignore @@ -0,0 +1,19 @@ +# dependencies +node_modules +package-lock.json +yarn.lock + +# docs +docs + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# build +dist/ \ No newline at end of file diff --git a/packages/cli/.eslintrc.json b/packages/cli/.eslintrc.json new file mode 100644 index 00000000..db4415a6 --- /dev/null +++ b/packages/cli/.eslintrc.json @@ -0,0 +1,45 @@ +{ + "root": true, + "env": { + "es6": true + }, + "extends": ["airbnb", "airbnb/hooks", "airbnb-typescript", "prettier"], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 6, + "project": ["./tsconfig.json"] + }, + "plugins": ["@typescript-eslint"], + "rules": { + "no-console": [ + "warn", + { + "allow": ["info", "warn", "error"] + } + ], + "no-restricted-syntax": "off", + "no-underscore-dangle": "off", + "no-param-reassign": "off", + "no-await-in-loop": "off", + "import/no-cycle": "off", + "import/extensions": "off", + "no-bitwise": "off", + "class-methods-use-this": "warn", + "no-useless-escape": "warn", + "prefer-regex-literals": "warn", + "import/no-extraneous-dependencies": "off", + "import/no-relative-packages": "off", + "@typescript-eslint/no-loop-func": "off", + "@typescript-eslint/no-shadow": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/lines-between-class-members": "off", + "@typescript-eslint/naming-convention": [ + "error", + { + "selector": "variable", + "format": ["camelCase", "PascalCase", "UPPER_CASE", "snake_case"], + "leadingUnderscore": "allow" + } + ] + } +} diff --git a/packages/cli/.gitignore b/packages/cli/.gitignore new file mode 100644 index 00000000..f8b3264c --- /dev/null +++ b/packages/cli/.gitignore @@ -0,0 +1,12 @@ +# dependencies +node_modules/ +yarn-error.log + +# environment +.env + +# build +dist/ + +# output +output/**/* \ No newline at end of file diff --git a/packages/cli/.prettierignore b/packages/cli/.prettierignore new file mode 100644 index 00000000..a7b19411 --- /dev/null +++ b/packages/cli/.prettierignore @@ -0,0 +1,17 @@ +# dependencies +node_modules +package-lock.json +yarn.lock + +# testing +/coverage +coverage.json + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* \ No newline at end of file diff --git a/packages/cli/.prettierrc.json b/packages/cli/.prettierrc.json new file mode 100644 index 00000000..a6d13f8d --- /dev/null +++ b/packages/cli/.prettierrc.json @@ -0,0 +1,5 @@ +{ + "semi": false, + "arrowParens": "always", + "trailingComma": "none" +} diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md new file mode 100644 index 00000000..171cd31c --- /dev/null +++ b/packages/cli/CHANGELOG.md @@ -0,0 +1,257 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [3.7.2](https://github.com/quadratic-funding/qfi/compare/v3.7.0...v3.7.2) (2022-11-07) + +**Note:** Version bump only for package @qfi/ethPortocli + + + + + +# [3.7.0](https://github.com/quadratic-funding/qfi/compare/v3.5.5...v3.7.0) (2022-11-07) + + +### Features + +* delete the keys of stateIndexByPubKey and userSignUps which are over 258 ([809a565](https://github.com/quadratic-funding/qfi/commit/809a5651764e322318922596f8102ec7353680f2)) +* modify the projects data and the provider network setting ([e5dc704](https://github.com/quadratic-funding/qfi/commit/e5dc704ce3c4d2eb7b1d661935f5729c6a3b3988)) + + + + + +## [3.5.5](https://github.com/quadratic-funding/qfi/compare/v3.5.4...v3.5.5) (2022-10-26) + +**Note:** Version bump only for package @qfi/ethtaiwancli + + + + + +## [3.5.4](https://github.com/quadratic-funding/qfi/compare/v3.5.3...v3.5.4) (2022-10-19) + +**Note:** Version bump only for package @qfi/ethtaiwancli + + + + + +## [3.5.3](https://github.com/quadratic-funding/qfi/compare/v3.5.1...v3.5.3) (2022-09-27) + +**Note:** Version bump only for package @qfi/ethtaiwancli + + + + + +## [3.5.1](https://github.com/quadratic-funding/qfi/compare/v3.4.5...v3.5.1) (2022-09-27) + +**Note:** Version bump only for package @qfi/ethtaiwancli + + + + + +## [3.4.5](https://github.com/quadratic-funding/qfi/compare/v3.4.2...v3.4.5) (2022-09-27) + +**Note:** Version bump only for package @qfi/ethtaiwancli + + + + + +## [3.4.2](https://github.com/quadratic-funding/qfi/compare/v3.1.0...v3.4.2) (2022-09-27) + +**Note:** Version bump only for package @qfi/ethtaiwancli + + + + + +# [2.1.0](https://github.com/quadratic-funding/qfi/compare/v2.0.1...v2.1.0) (2022-07-08) + + +### Features + +* **ethPorto: cli easy setup:** change max projects ([9a88f84](https://github.com/quadratic-funding/qfi/commit/9a88f843f621ac6e83ded42dc64a7059b51ecc7b)) + + + + + +## [2.0.1](https://github.com/quadratic-funding/qfi/compare/v2.0.0...v2.0.1) (2022-06-29) + +**Note:** Version bump only for package @qfi/ethPortocli + + + + + +# [2.0.0](https://github.com/quadratic-funding/qfi/compare/v1.5.0...v2.0.0) (2022-06-29) + + +### Features + +* **ethPorto cli:** configure cli for eth barcelona: polygon support ([5c87081](https://github.com/quadratic-funding/qfi/commit/5c8708192f0ab5615d8a2c909917e4a9a73d4df9)) +* **polygon support:** gas price tweaks, eject csv of public keys on key gen ([0ff3ab0](https://github.com/quadratic-funding/qfi/commit/0ff3ab0526069b21e808d73239c0d1c19d706826)) + + + + + +# [1.6.0](https://github.com/quadratic-funding/qfi/compare/v1.5.0...v1.6.0) (2022-06-29) + + +### Features + +* **ethPorto cli:** configure cli for eth barcelona: polygon support ([5c87081](https://github.com/quadratic-funding/qfi/commit/5c8708192f0ab5615d8a2c909917e4a9a73d4df9)) +* **polygon support:** gas price tweaks, eject csv of public keys on key gen ([0ff3ab0](https://github.com/quadratic-funding/qfi/commit/0ff3ab0526069b21e808d73239c0d1c19d706826)) + + + + + +# [1.5.0](https://github.com/quadratic-funding/qfi/compare/v1.4.1...v1.5.0) (2022-06-11) + +**Note:** Version bump only for package @qfi/ethPortocli + + + + + +## [1.4.1](https://github.com/quadratic-funding/qfi/compare/v1.4.0...v1.4.1) (2022-06-11) + +**Note:** Version bump only for package @qfi/ethPortocli + + + + + +# [1.4.0](https://github.com/quadratic-funding/qfi/compare/v1.3.0...v1.4.0) (2022-06-11) + + +### Features + +* **cli:** command to fund user wallets for ethPrague ([aec08b6](https://github.com/quadratic-funding/qfi/commit/aec08b6c608fb535c3e21832a58edcc9253a8b38)) + + + + + +# [1.3.0](https://github.com/quadratic-funding/qfi/compare/v1.2.0...v1.3.0) (2022-06-10) + + +### Bug Fixes + +* **cli:** patch prague deploy ([c4eb8dd](https://github.com/quadratic-funding/qfi/commit/c4eb8ddab9594772e5e72f5a5640b3a24f960320)) + + + + + +# [1.2.0](https://github.com/quadratic-funding/qfi/compare/v1.1.0...v1.2.0) (2022-06-10) + +**Note:** Version bump only for package @qfi/ethPortocli + + + + + +# [1.1.0](https://github.com/quadratic-funding/qfi/compare/v1.0.1...v1.1.0) (2022-06-10) + + +### Features + +* **cli:** dothething command to batch all the other commands ([0254747](https://github.com/quadratic-funding/qfi/commit/0254747fdc6da224300986d476a855ab289f65b1)) + + + +# [0.4.0](https://github.com/quadratic-funding/qfi/compare/v0.3.3...v0.4.0) (2022-06-09) + + +### Features + +* add basic signup command; minors and code lint ([1a3bab8](https://github.com/quadratic-funding/qfi/commit/1a3bab8b065ae64b5c3c47590e633745e77abce4)) + + + + + +## [1.0.1](https://github.com/quadratic-funding/qfi/compare/v1.0.0...v1.0.1) (2022-06-09) + + +### Reverts + +* npm revert to 0.3.3 ([68e6766](https://github.com/quadratic-funding/qfi/commit/68e676698356c95e7e456622138407993150e943)) + + + +### Features + +* add basic signup command; minors and code lint ([1a3bab8](https://github.com/quadratic-funding/qfi/commit/1a3bab8b065ae64b5c3c47590e633745e77abce4)) + + + + + +## [0.3.3](https://github.com/quadratic-funding/qfi/compare/v0.3.2...v0.3.3) (2022-06-09) + +### Bug Fixes + +- numeric overflow when passing initial supply of ERC20 token to contract ([375b63c](https://github.com/quadratic-funding/qfi/commit/375b63cfe144d36c0ccd97f34f34f8b2e0d020ec)) + +## [0.3.1](https://github.com/quadratic-funding/qfi/compare/v0.2.2...v0.3.1) (2022-06-09) + +### Bug Fixes + +- wrong deploy script name in package.json; code lint and fix ([2d241b2](https://github.com/quadratic-funding/qfi/commit/2d241b2a8c3b1ea8b420ba937702153d2ba1ef8f)) + +### Features + +- add MACI/QFI smart contracts initialization command ([24491cf](https://github.com/quadratic-funding/qfi/commit/24491cf61615f74674c1c0161bc2d366792adbea)) +- **cli:** crate prague erc20, mint with 18 decimals ([dc40032](https://github.com/quadratic-funding/qfi/commit/dc40032fba08832b35bb5ce4862bd77952908e00)) + +# [0.3.0](https://github.com/quadratic-funding/qfi/compare/v0.2.2...v0.3.0) (2022-06-08) + +**Note:** Version bump only for package @qfi/ethPortocli + +## [0.2.1](https://github.com/quadratic-funding/qfi/compare/v0.2.0...v0.2.1) (2022-06-08) + +**Note:** Version bump only for package @qfi/ethPortocli + +# [0.2.0](https://github.com/quadratic-funding/qfi/compare/v0.1.0...v0.2.0) (2022-06-03) + +**Note:** Version bump only for package @qfi/ethPortocli + +# [0.1.0](https://github.com/quadratic-funding/qfi/compare/v0.0.4...v0.1.0) (2022-06-02) + +### Features + +- add command to authenticate via a wallet mnemonic phrase ([d15f1d2](https://github.com/quadratic-funding/qfi/commit/d15f1d2212845372e3c520bf539c5c7f3d0125c7)) + +## [0.0.4](https://github.com/quadratic-funding/qfi/compare/v0.0.3...v0.0.4) (2022-06-01) + +**Note:** Version bump only for package @qfi/ethPortocli + +## [0.0.3](https://github.com/quadratic-funding/qfi/compare/v0.0.2...v0.0.3) (2022-06-01) + +### Bug Fixes + +- **all:** fix circular dependencies, changes to hoisting in monorepo, fix failing build ([1421c97](https://github.com/quadratic-funding/qfi/commit/1421c971a8dd5a85d96fbf67baf5a0dac6a7b062)) +- **ci:** build failing ([e85b744](https://github.com/quadratic-funding/qfi/commit/e85b74426f45a3b75148e82cfaf85cee62da0701)) + +## 0.0.2 (2022-06-01) + +### Bug Fixes + +- match eslint version of subgraph and cli packages to app to avoid build errors ([bbe6141](https://github.com/quadratic-funding/qfi/commit/bbe61411060b8143809f8e6a66e94aee0ad8f3fc)) + +### Features + +- add cli boilerplate ([55299af](https://github.com/quadratic-funding/qfi/commit/55299af20bf7c2bd12be7a55f31c520271be2ecd)) +- add deploy MACI/QFI smart contracts command ([4af03d8](https://github.com/quadratic-funding/qfi/commit/4af03d8f8f69d3041ddc7ca6451955d42c38a560)) +- add genkeys command ([d900757](https://github.com/quadratic-funding/qfi/commit/d9007573a51577df551240bdaf259f589b07a3e1)) +- add register recipients command ([3feff1d](https://github.com/quadratic-funding/qfi/commit/3feff1d82f11e7b63f51cba131743228d3aeb7f5)) diff --git a/packages/cli/README.md b/packages/cli/README.md new file mode 100644 index 00000000..fa72cb15 --- /dev/null +++ b/packages/cli/README.md @@ -0,0 +1,82 @@ +

+

+ QFI x ethporto CLI +

+

All-in-one command-line for running QFI Round x ethporto as administrator/operator

+

+ +

+ + + + + Linter eslint + + + Code style prettier + + Repository top language +

+ + + +--- + +## Commands + +- `ethportocli`: CLI entry point. +- `ethportocli auth \"\"`: Allow to interact with the blockchain-related commands (e.g., deploy) with a wallet by passing in wallet's mnemonic. + - ``: the secret mnemonic phrase (e.g., 12 words) separated by spaces (e.g., "test test test test test test test test test test test junk"). _nb. the double quotes are mandatory!_ +- `ethportocli genkeys `: Generate a new specified amount of MACI and ETH keypairs (QR Codes inclueded). + - ``: amount of MACI and ETH keypairs to be generated (e.g., 3000) +- `ethportocli contracts:deploy `: Deploy the smart contracts infrastructure necessary for running a new QFI/MACI instance for a specified network. + - ``: the network where the contracts will be deployed (e.g., MATIC) +- `ethportocli contracts:add-recipients `: Add recipients on RecipientRegistry Smart Contract deployed on the network by taking data from CSV input file specified in the path. + - ``: the network where the contracts has been deployed (e.g., MATIC) + - ``: the path of the CSV input file where the recipients data is stored (e.g., ~/Desktop/my*recipients_data.csv`). + \_nb. The CSV file must contain rows organized as follows:* \* _name_ \* _tagline_ \* _description_ \* _problemSpace_ \* _ethereumAddress_ \* _contactEmail_ \* _teamName (optional)_ \* _teamDescription (optional)_ \* _githubUrl (optional)_ \* _radicleUrl (optional)_ \* _websiteUrl (optional)_ \* _twitterUr (optional)_ \* _discordUrl (optional)_ \* _bannerImageHash_ \* _thumbnailImageHash_ + +## Examples + +- `ethportocli auth "test test test test test test test test test test test junk"` +- `ethportocli genkeys 3000` +- `ethportocli contracts:deploy MATIC` +- `ethportocli contracts:add-recipients MATIC ~/Desktop/my_recipients_data.csv` + +## Getting Started + +### Prerequisities + +You need to have the following installed: + +git >= 2.25.1 +node >= 16.14.0 +npm >= 8.9.0 +yarn >= 1.22.18 + +### Local Development + +```bash +https://github.com/quadratic-funding/qfi.git +cd qfi +git checkout cohort/ethporto +yarn +yarn build +cd packages/cli +npm i -g +# You are ready to run the commands as above :) +``` diff --git a/packages/cli/package.json b/packages/cli/package.json new file mode 100644 index 00000000..8627d5f8 --- /dev/null +++ b/packages/cli/package.json @@ -0,0 +1,82 @@ +{ + "name": "@qfi/ethportocli", + "version": "3.1.0", + "description": "An easy-to-use CLI for supporting admin/operator activities for QFI", + "main": "dist/cli/src/index.js", + "repository": "https://github.com/quadratic-funding/qfi", + "homepage": "https://github.com/quadratic-funding/qfi", + "bugs": "https://github.com/quadratic-funding/qfi/issues", + "author": "0xjei", + "license": "MIT", + "private": false, + "type": "module", + "types": "dist/types/index.d.ts", + "files": [ + "dist/", + "src/", + "README.md" + ], + "bin": { + "ethportocli": "dist/cli/src/index.js" + }, + "scripts": { + "build": "tsc", + "start": "node dist/cli/src/index.js", + "auth": "yarn start auth", + "genkeys": "yarn start genkeys", + "tally": "yarn start tally", + "dothething": "yarn start dothething", + "recover": "yarn start recover", + "lint": "eslint . --ext .js,.jsx,.ts,.tsx", + "lint:fix": "eslint . --ext .js,.jsx,.ts,.tsx --fix", + "prettier": "prettier -c .", + "prettier:fix": "prettier -w ." + }, + "devDependencies": { + "@types/chalk": "^2.2.0", + "@types/clear": "^0.1.2", + "@types/figlet": "^1.5.4", + "@types/inquirer": "^8.2.1", + "@types/json2csv": "^5.0.3", + "@types/node": "^17.0.36", + "@types/ora": "^3.2.0", + "@types/prompts": "^2.0.14", + "@types/qrcode": "^1.4.2", + "@typescript-eslint/eslint-plugin": "^5.26.0", + "@typescript-eslint/parser": "^5.26.0", + "eslint": "^7.11.0", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-airbnb-typescript": "^17.0.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jest": "^26.3.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.30.0", + "eslint-plugin-react-hooks": "^4.5.0", + "prettier": "^2.6.2", + "ts-node": "^10.8.0", + "typescript": "4.9.5" + }, + "dependencies": { + "@qfi/macisdk": "*", + "chalk": "^5.0.1", + "clear": "^0.1.0", + "commander": "^9.3.0", + "csvtojson": "^2.0.10", + "dotenv": "^16.0.1", + "ethers": "5.5.1", + "figlet": "^1.5.2", + "json2csv": "^5.0.7", + "log-symbols": "^5.1.0", + "ora": "^6.1.0", + "prompts": "^2.4.2", + "qrcode": "^1.5.0" + }, + "nohoist": [ + "**/ethers" + ], + "publishConfig": { + "access": "public" + }, + "gitHead": "9c2b76e2fb41dbc7fb208e5b9bb2cf523a2304eb" +} diff --git a/packages/cli/src/commands/auth.ts b/packages/cli/src/commands/auth.ts new file mode 100644 index 00000000..68946068 --- /dev/null +++ b/packages/cli/src/commands/auth.ts @@ -0,0 +1,53 @@ +#!/usr/bin/env node +import clear from "clear" +import logSymbols from "log-symbols" +import chalk from "chalk" +import { getWalletFromMnemonic } from "../lib/blockchain.js" +import { directoryExists, makeDir, writeFileSync } from "../lib/files.js" +import { outputDirPath, mnemonicFilePath, mnemonicBaseDirPath, header } from "../lib/constants.js" +import { askForConfirmation } from "../lib/prompts.js" + +/** + * Auth command. + * @param mnemonic - the secret mnemonic phrase (e.g., 12 words) separated by spaces. + */ +async function auth(mnemonic: string) { + clear() + + console.log(header) + + try { + // Check for output directory. + if (!directoryExists(outputDirPath)) makeDir(outputDirPath) + + // Check if mnemonic already present. + if (!directoryExists(mnemonicBaseDirPath)) makeDir(mnemonicBaseDirPath) + else { + // Prompt for user. + console.log(`\n${logSymbols.info} Seems that you have already provided a mnemonic for the authentication!\n`) + + const { confirmation } = await askForConfirmation( + "Are you sure you want to continue? (nb. confirmation will overwrite your mnemonic)", + "yes", + "no" + ) + + if (!confirmation) { + console.log(`\nFarewell 👋`) + process.exit(0) + } + } + + // Get wallet from mnemonic. + const wallet = getWalletFromMnemonic(mnemonic) + + // Store mnemonic locally. + writeFileSync(mnemonicFilePath, mnemonic) + + console.log(`\n${logSymbols.success} You are now authenticated as ${chalk.bold(wallet.address)} successfully 🎊`) + } catch (err: any) { + console.log(`\n${logSymbols.error} Something went wrong: ${err.message ?? err}`) + } +} + +export default auth diff --git a/packages/cli/src/commands/coordinatorTallyOffChain.ts b/packages/cli/src/commands/coordinatorTallyOffChain.ts new file mode 100644 index 00000000..92bc8fcd --- /dev/null +++ b/packages/cli/src/commands/coordinatorTallyOffChain.ts @@ -0,0 +1,556 @@ +#!/usr/bin/env node +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable radix */ +/* eslint-disable no-console */ + +import logSymbols from "log-symbols" +import { clear } from "console" +import chalk from "chalk" +import { ethers } from "ethers" +import { Message, PubKey, PrivKey, Keypair } from "@qfi/macisdk" +import { MaciState } from "@qfi/macisdk" + +import { connectToBlockchain, getNetworkExplorerUrl } from "../lib/blockchain.js" + +import { directoryExists, makeDir, readJSONFile, writeLocalJsonFile } from "../lib/files.js" +import { + deployedContractsBaseDirPath, + deployedContractsFilePath, + header, + jsonRecipientsRecords, + mnemonicBaseDirPath, + mnemonicFilePath, + outputDirPath +} from "../lib/constants.js" +import { askForConfirmation, customSpinner } from "../lib/prompts.js" + +interface SignUpAction { + type: string + blockNumber: number + transactionIndex: number + stateIndex: number + pubKey: string + voiceCreditBalance: number + timestamp: number +} + +interface VoteAction { + type: string + blockNumber: number + transactionIndex: number + logIndex: number + message: any + encPubKey: string +} + +interface GrantRoundAction { + type: string + blockNumber: number + transactionIndex: number + voiceCreditFactor: number + coordinatorPubKey: string +} + +/** + * Initialize command. + * @param network - the network where the contracts are going to be deployed. + */ +async function tally( + network: string, + coordinatorPrivKey: string, + matchingPoolAmount: string, + qfiContractAddress: string, + startBlock: string, + grantRoundStartBlock: string, + firstVoteBlock: string, + lastBlock: string +) { + clear() + + console.log(header) + const maciBasePath = `${outputDirPath}/maci` + const signUpsFilePath = `${outputDirPath}/maci/Signups.json` + const grantRoundsFilePath = `${outputDirPath}/maci/GrantRounds.json` + const votesFilePath = `${outputDirPath}/maci/Votes.json` + const signUpFileExists = await directoryExists(signUpsFilePath) + const grantRoundFileExists = await directoryExists(grantRoundsFilePath) + const voteFileExists = await directoryExists(votesFilePath) + try { + // // Check for output directory. + // if (!directoryExists(outputDirPath)) makeDir(outputDirPath) + // if (!directoryExists(maciBasePath)) makeDir(maciBasePath) + // // Check if mnemonic already present. + // if (!directoryExists(mnemonicBaseDirPath) && !directoryExists(mnemonicFilePath)) + // throw new Error(`You must first authenticate by running \`auth \\"\\"\` command!`) + // process.stdout.write(`\n`) + + // // Check for output directory. + // if (!directoryExists(outputDirPath)) makeDir(outputDirPath) + + // // Check if mnemonic already present. + // if (!directoryExists(mnemonicBaseDirPath) && !directoryExists(mnemonicFilePath)) + // throw new Error(`You must first authenticate by running \`auth \"\"\` command!`) + + // // Check if contracts has been already deployed. + // if (!directoryExists(deployedContractsBaseDirPath) && !directoryExists(deployedContractsFilePath)) + // throw new Error(`You must first deploy QFI/MACI smart contracts by running \`deploy \"\"\` command!`) + + // process.stdout.write(`\n`) + + // // Retrieve deployed smart contracts addresses. + // const deployedContracts = readJSONFile(deployedContractsFilePath) + + // /** NOTE: Set up Web3 Provider */ + // const { provider, wallet } = await connectToBlockchain(network) + + // const deployer = wallet + // const { confirmation: preFlightCheck } = await askForConfirmation( + // "Ready to Start the Tally Process? This will conduct operations offchain" + // ) + + // if (!preFlightCheck) { + // console.log(`\nFarewell👋`) + // process.exit(0) + // } + + // // Get deployed contracts instances. + // const qfi = new ethers.Contract(qfiContractAddress, QFI__factory.abi, deployer) + // const currentGrantRound = await qfi.currentGrantRound() + // const grantRound = new ethers.Contract(currentGrantRound, GrantRound__factory.abi, deployer) + + // const currentBlock = await provider.getBlockNumber() + // const numBlocksPerRequest = 100 + // /// ////////////////////////////////////////////////////////////////////////// + // const spinner = customSpinner(`Read Smart Contracts`, "point") + // spinner.start() + + // const qfiface = qfi.interface + // const grantRoundIface = grantRound.interface + + // const coordinatorPubKeyOnChain = await grantRound.coordinatorPubKey() + // const coordinatorKeyPair: Keypair = new Keypair(PrivKey.unserialize(coordinatorPrivKey)) + // const dd = await grantRound.getDeployTimeAndDuration() + // const deployTime = Number(dd[0]) + // const duration = Number(dd[1]) + // const BLOCKSPERDAY = 43200 + + // const firstBlock = parseInt(startBlock) + // const firstGrantRoundBlock = parseInt(grantRoundStartBlock) + // const firstVote = parseInt(firstVoteBlock) + // const lastBlockSignups = (4 / 24) * BLOCKSPERDAY + firstBlock + // const lastBlockVotes = lastBlock == "latest" ? currentBlock : parseInt(lastBlock) + // // (2 / (60 * 60 * 24) + 1) * 43200 + startBlock + // const onChainMaxValues = await grantRound.maxValues() + // const onChainTreeDepths = await grantRound.treeDepths() + // const onChainBatchSizes = await grantRound.batchSizes() + // const stateTreeDepth = await qfi.stateTreeDepth() + + // const maxValues = { + // maxMessages: Number(onChainMaxValues.maxMessages.toNumber()), + // maxVoteOptions: Number(onChainMaxValues.maxVoteOptions.toNumber()) + // } + // const treeDepths = { + // intStateTreeDepth: Number(onChainTreeDepths.intStateTreeDepth), + // messageTreeDepth: Number(onChainTreeDepths.messageTreeDepth), + // messageTreeSubDepth: Number(onChainTreeDepths.messageTreeSubDepth), + // voteOptionTreeDepth: Number(onChainTreeDepths.voteOptionTreeDepth) + // } + // const batchSizes = { + // tallyBatchSize: Number(onChainBatchSizes.tallyBatchSize), + // messageBatchSize: Number(onChainBatchSizes.messageBatchSize) + // } + // console.log(`\n`) + // console.log("Coordinator PubKey:", coordinatorPubKeyOnChain) + // console.log("Deploy Time:", deployTime) + // console.log("Duration:", duration) + // console.log("Max Values:", maxValues) + // console.log("Tree Depths:", treeDepths) + // console.log("Batch Sizes:", batchSizes) + // spinner.stop() + // let logsTotal = 0 + + // /// /////////////////////////////////////////////////////////////////////////// + // console.log(`${logSymbols.success}Fetch Sign up logs`) + // let signUps: SignUpAction[] = [] + // logsTotal = 0 + // try { + // // NOTE: Get SignUp Actions from QFI Smart Contract + // let signUpLogs = [] as any[] + + // for (let i = firstBlock; i < lastBlockSignups; i += numBlocksPerRequest + 1) { + // const fromBlock = i >= currentBlock ? currentBlock : i + // const toBlock = i + numBlocksPerRequest >= currentBlock ? currentBlock : i + numBlocksPerRequest + // const logs = await provider.getLogs({ + // ...qfi.filters.SignUp(), + // fromBlock: fromBlock, + // toBlock + // }) + + // logsTotal += logs.length + // console.log(`${logsTotal} signups found so far, scanned up to block number: ${i} / ${lastBlockSignups}`) + + // signUpLogs = signUpLogs.concat(logs) + // } + // console.log("Fetched", signUpLogs.length, "signups\n") + + // // NOTE: Decode into actions, sort and save to local file (if not already present). + // signUps = signUpLogs + // .map((log) => { + // const event = qfiface.parseLog(log) + + // return { + // type: "SignUp", + // blockNumber: log.blockNumber, + // transactionIndex: log.transactionIndex, + // stateIndex: Number(event.args._stateIndex), + // pubKey: new PubKey(event.args._userPubKey.map((x) => BigInt(x))).serialize(), + // voiceCreditBalance: Number(event.args._voiceCreditBalance), + // timestamp: Number(event.args._timestamp) + // } + // }) + // .sort((a, b) => { + // const checkBlock = a.blockNumber - b.blockNumber + // const checkTxIndex = a.transactionIndex - b.transactionIndex + // return checkBlock === 0 ? checkTxIndex : checkBlock + // }) + // } catch (err) { + // throw Error(`Failed to get MACI State from Smart Contracts: ${err.message}`) + // } + // // /// /////////////////////////////////////////////////////////////////////////// + // console.log(`${logSymbols.success}Fetch GrantRound logs`) + // logsTotal = 0 + // let grantRounds: GrantRoundAction[] = [] + // try { + // // NOTE: Get GrantRound Actions from GrantRound Smart Contracts + // let grantRoundLogs = [] as any[] + // for (let i = firstGrantRoundBlock; i < lastBlockSignups; i += numBlocksPerRequest + 1) { + // const fromBlock = i >= currentBlock ? currentBlock : i + // const toBlock = i + numBlocksPerRequest >= currentBlock ? currentBlock : i + numBlocksPerRequest + // const logs = await provider.getLogs({ + // ...qfi.filters.GrantRoundDeployed(), + // fromBlock, + // toBlock + // }) + + // logsTotal += logs.length + // console.log(`${logsTotal} grantRounds found so far, scanned up to block number: ${i} / ${lastBlockSignups}`) + + // grantRoundLogs = grantRoundLogs.concat(logs) + // } + // // NOTE: Decode into actions, sort and save to local file (if not already present). + // grantRounds = grantRoundLogs + // .map((log) => { + // const event = qfiface.parseLog(log) + // return { + // type: "GrantRoundDeployed", + // blockNumber: log.blockNumber, + // transactionIndex: log.transactionIndex, + // voiceCreditFactor: Number(event.args._voiceCreditFactor), + // coordinatorPubKey: new PubKey(event.args._coordinatorPubKey.map((x) => BigInt(x))).serialize() + // } + // }) + // .sort((a, b) => { + // const checkBlock = a.blockNumber - b.blockNumber + // const checkTxIndex = a.transactionIndex - b.transactionIndex + // return checkBlock === 0 ? checkTxIndex : checkBlock + // }) + // } catch (err) { + // throw Error(`Failed to get MACI State from Smart Contracts: ${err.message}`) + // } + + // /// /////////////////////////////////////////////////////////////////////////// + // console.log(`${logSymbols.success}Fetch Vote logs`) + // logsTotal = 0 + // let votes: VoteAction[] = [] + // try { + // // NOTE: Get Vote Actions from GrantRound Smart Contracts + // let voteLogs = [] as any[] + + // for (let i = firstVote; i < lastBlockVotes; i += numBlocksPerRequest + 1) { + // const fromBlock = i >= currentBlock ? currentBlock : i + // const toBlock = i + numBlocksPerRequest >= currentBlock ? currentBlock : i + numBlocksPerRequest + // const logs = await provider.getLogs({ + // ...grantRound.filters.PublishMessage(), + // fromBlock: fromBlock, + // toBlock + // }) + + // logsTotal += logs.length + // console.log(`${logsTotal} votes found so far, scanned up to block number: ${i} / ${lastBlockVotes}`) + + // voteLogs = voteLogs.concat(logs) + // } + + // // NOTE: Decode into actions, sort and save to local file (if not already present). + // votes = voteLogs + // .map((log) => { + // const event = grantRoundIface.parseLog(log) + // const message = event.args._message[0].map((x) => x.toString()) + // const encPubKey = new PubKey(event.args._encPubKey.map((x) => BigInt(x.toString()))).serialize() + // return { + // type: "PublishMessage", + // blockNumber: log.blockNumber, + // transactionIndex: log.transactionIndex, + // logIndex: log.logIndex, + // message, + // encPubKey + // } + // }) + // .sort((a, b) => { + // const checkBlock = a.blockNumber - b.blockNumber + // const checkTxIndex = a.transactionIndex - b.transactionIndex + // return checkBlock === 0 ? checkTxIndex : checkBlock + // }) + // } catch (err) { + // throw Error(`Failed to get MACI State from Smart Contracts: ${err.message}`) + // } + // // /////////////////////////////////////////////////////////////////////////// + + // // NOTe: Build Maci State locally from SignUp and GrantRound actions + // const maciState: MaciState = new MaciState() + + // console.log(`\n`) + // console.log("Votes:", votes.length) + // console.log("SignUps:", signUps.length) + // console.log("GrantRounds:", grantRounds.length) + // /// /////////////////////////////////////////////////////////////////////////// + + // console.log(`${logSymbols.success}Fetched MACI State from Contract`) + // console.log(`${logSymbols.success}Building MACI State locally: process signups`) + // for (const { pubKey, voiceCreditBalance, timestamp } of signUps) { + // maciState.signUp(PubKey.unserialize(pubKey), voiceCreditBalance, timestamp) + // } + // console.log(`${logSymbols.success}Building MACI State locally: process grant rounds`) + + // for (const grantRound of grantRounds) { + // console.log(`\n ${grantRound.coordinatorPubKey}`) + // maciState.deployPoll( + // duration, + // BigInt(deployTime + duration), + // maxValues, + // treeDepths, + // batchSizes.messageBatchSize, + // coordinatorKeyPair + // ) + + // console.log(grantRound) + // } + // console.log(`${logSymbols.success}Building MACI State locally: process votes`) + + // for (const { message, encPubKey } of votes) { + // const _message = new Message(message.map((x) => BigInt(x))) + + // const _encPubKey = PubKey.unserialize(encPubKey) + + // console.log(`\n Processing message with DH key:`) + // console.log(`${encPubKey}`) + // maciState.polls[0].publishMessage(_message, _encPubKey) + // } + // console.log(`\n${logSymbols.info} Succcess: Built MACI State, gen SNARK Circtuit inputs \n`) + + // console.log("Circuit input in Batches + Proof Generation") + // // NOTE: Merge state tree offchain + // const maciStateAq = maciState.stateAq + // maciStateAq.mergeSubRoots(0) // 0 as input attempts to merge all subroots + // maciStateAq.merge(stateTreeDepth) + + // // NOTE: Merge message tree offchain + // const maciPoll = maciState.polls[0] + // maciPoll.messageAq.mergeSubRoots(0) // NOTE: 0 as input attempts to merge all subroots + // maciPoll.messageAq.merge(treeDepths.messageTreeDepth) + + // // NOTE: Circuit input generation offchain + // const processMessagesCircuitInputsByBatch = [] + // while (maciPoll.hasUnprocessedMessages()) { + // const circuitInputs = maciPoll.processMessages(0) // Process _batchSize messages starting from the saved index. + + // // NOTE: new state root and ballot root commitment calculated off chain + // const { newSbCommitment } = circuitInputs + // console.log(`Batch - ${maciPoll.currentMessageBatchIndex} left`) + // processMessagesCircuitInputsByBatch.push(circuitInputs) + // } + + // // NOTE: Proof Generation offchain + // const processMessagesVerifierInputsByBatch = processMessagesCircuitInputsByBatch.map( + // (circuitInputs, batchNumber) => { + // // NOTE: these are required for the Verifier Contract onchain + // const maciNewSbCommitment = circuitInputs.newSbCommitment + // const pollAddress = currentGrantRound + // return { + // pollAddress, + // maciNewSbCommitment + // } + // } + // ) + + // const tallyVotesCircuitInputsByBatch = [] + // while (maciPoll.hasUntalliedBallots()) { + // const circuitInputs = maciPoll.tallyVotes() // Process _batchSize ballots starting from the saved index. + + // // NOTE: new stally commitment calculated off chain + // const { newTallyCommitment } = circuitInputs + + // console.log(`Batch${maciPoll.numBatchesTallied}`) + + // tallyVotesCircuitInputsByBatch.push(circuitInputs) + // console.log("/=========TALLY SO FAR==========/") + // console.log(maciPoll.results.map((x: any) => x.toString())) + // } + + // // NOTE: Proof Generation offchain + // const tallyVotesVerifierInputsByBatch = tallyVotesCircuitInputsByBatch.map((circuitInputs, batchNumber) => { + // // NOTE: these are required for the Verifier Contract onchain + + // const { newTallyCommitment } = circuitInputs + // const { newResultsRootSalt } = circuitInputs + // const { newSpentVoiceCreditSubtotalSalt } = circuitInputs + // const { newPerVOSpentVoiceCreditsRootSalt } = circuitInputs + // const pollAddress = currentGrantRound + + // return { + // pollAddress, + // newTallyCommitment, + // newResultsRootSalt, + // newSpentVoiceCreditSubtotalSalt, + // newPerVOSpentVoiceCreditsRootSalt + // } + // }) + + // const unencryptedCommands = maciPoll.commands + // .map((command) => { + // console.log( + // `ID: ${command.voteOptionIndex}: ${command.newVoteWeight} by voter:${command.stateIndex} with nonce:${command.nonce}` + // ) + // return { + // voteOption: command.voteOptionIndex, + // nonce: Number(command.nonce), + // newVoteWeight: Number(command.newVoteWeight), + // voterID: command.stateIndex + // } + // }) + // .reverse() + + // const memo = {} + // const easyTally = [ + // 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + // ] + // const easyVOTally = [ + // 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + // ] + // for (const { voteOption, nonce, newVoteWeight, voterID } of unencryptedCommands) { + // //check if voter in memo + // if (memo[voterID]) { + // // check if nonce is used + // if (memo[voterID]?.includes(nonce)) { + // //if nonce exists do nothing + // } else { + // //if nonce doesnt exist update tally + // easyTally[voteOption] += newVoteWeight + // easyVOTally[voteOption] += newVoteWeight * newVoteWeight + // //and add to memo + // memo[voterID].push(nonce) + // } + // // if the voter not in memo and add to memo as you go + // } else { + // // add the voter to memo + // memo[voterID] = [] + // // update tally + // easyTally[voteOption] += newVoteWeight + // easyVOTally[voteOption] += newVoteWeight * newVoteWeight + // //and add nonce to memo + // memo[voterID].push(nonce) + // } + // } + + // console.log(easyTally) + // console.log(easyVOTally) + + // const finalProcessMessagesCircuitInputs = + // processMessagesCircuitInputsByBatch[processMessagesCircuitInputsByBatch.length - 1] + // const finalTallyCircuitInputs = tallyVotesVerifierInputsByBatch[tallyVotesVerifierInputsByBatch.length - 1] + + // const maciNewSbCommitment = finalProcessMessagesCircuitInputs.newSbCommitment + + // const { newTallyCommitment } = finalTallyCircuitInputs + // const tallyResults: string[] = easyTally.map((x: any) => x.toString()) + // const tallySalt = finalTallyCircuitInputs.newResultsRootSalt + // const voiceCreditsSpent = easyVOTally.reduce((previousValue, currentValue) => previousValue + currentValue, 0) + // const voiceCreditsSalt = finalTallyCircuitInputs.newSpentVoiceCreditSubtotalSalt + // const perVOSpentTally = easyVOTally.map((x: any) => x.toString()) + // const perVOSpentSalt = finalTallyCircuitInputs.newPerVOSpentVoiceCreditsRootSalt + // const tallyFileData = { + // maci: qfi.address, + // pollId: 0, + // newTallyCommitment, + // results: { + // tally: tallyResults, + // salt: tallySalt + // }, + // totalSpentVoiceCredits: { + // spent: voiceCreditsSpent, + // salt: voiceCreditsSalt + // }, + // perVOSpentVoiceCredits: { + // tally: perVOSpentTally, + // salt: perVOSpentSalt + // } + // } + // console.log("/=========FINAL TALLY RESULTS==========/") + // console.log(tallyFileData) + + // // TODO: calculate subsidy + // const squareOfTally: number[] = tallyResults.map((voteTotal) => parseInt(voteTotal) ** 2) + // console.log(squareOfTally) + // const sumOfSquareOfTally = squareOfTally.reduce((previousValue, currentValue) => previousValue + currentValue, 0) + // console.log(sumOfSquareOfTally) + // const { confirmation: preFlightCheck2 } = await askForConfirmation( + // `Expected Matching pool is ${matchingPoolAmount} USDC, Are you ready to continue?` + // ) + + // // TODO: replace with subgraph + // const projectNameByStateId = (index) => jsonRecipientsRecords[index].projectName + // const projectAddressByStateId = (index) => jsonRecipientsRecords[index].ethereumAddress + + // console.log(`\n Calculating QF subsidy results`) + // let subsidyTotal = 0 + // squareOfTally.map((squareOfTally, index) => { + // if (squareOfTally > 0) { + // const subsidyPercent = squareOfTally / sumOfSquareOfTally + // console.log( + // `\n${projectNameByStateId(index - 1)}@${projectAddressByStateId(index - 1)}: ${ + // subsidyPercent * parseInt(matchingPoolAmount) + // } USDC` + // ) + // subsidyTotal += subsidyPercent * parseInt(matchingPoolAmount) + // return { address: projectAddressByStateId(index - 1), amount: subsidyPercent * parseInt(matchingPoolAmount) } + // } + // return { address: "0x0000000000000000000000000000000000", amount: 0 } + // }) + + // console.log(chalk.bold(`\n Subsidy results calculated`)) + // console.log(`Total: ${subsidyTotal}`) + + // console.log("Tally Complete: Saving Result Logs") + // await writeLocalJsonFile(signUpsFilePath, JSON.parse(JSON.stringify(signUps, null, 2))) + // await writeLocalJsonFile(grantRoundsFilePath, JSON.parse(JSON.stringify(grantRounds, null, 2))) + // await writeLocalJsonFile(votesFilePath, JSON.parse(JSON.stringify(votes, null, 2))) + } catch (err: any) { + console.log(err) + if (!err.transactionHash) console.log(`\n${logSymbols.error} Something went wrong: ${err}`) + else + console.log( + `\n${logSymbols.error} Something went wrong with the transaction! More info here: ${chalk.bold( + `${getNetworkExplorerUrl(network)}tx/${err.transactionHash}` + )}` + ) + process.exit(0) + } +} + +export default tally diff --git a/packages/cli/src/commands/doTheThing.ts b/packages/cli/src/commands/doTheThing.ts new file mode 100644 index 00000000..efadbf82 --- /dev/null +++ b/packages/cli/src/commands/doTheThing.ts @@ -0,0 +1,415 @@ +#!/usr/bin/env node +import logSymbols from "log-symbols" +import { clear } from "console" +import chalk from "chalk" +import { BigNumber, ethers } from "ethers" +import { connectToBlockchain, getNetworkExplorerUrl } from "../lib/blockchain.js" +import { SimpleHackathon__factory } from "../../../contracts/typechain-types/factories/contracts/flavors/SimpleHackathon__factory.js" + +import { directoryExists, jsonToCsv, makeDir, readJSONFile, writeLocalJsonFile } from "../lib/files.js" +import { + coordinatorPubkey, + hacksFilePath, + header, + jsonRecipientsRecords, + messageBatchSize, + mnemonicBaseDirPath, + mnemonicFilePath, + numberOfMaxRecipients, + outputDirPath, + ProcessVk, + TallyVk, + treeDepths, + usersStateIndexesFilePath, + userSignUps, + maxValues, + usersStateIndexesBaseDirPath, + deployedContractsBaseDirPath, + deployedContractsFilePath +} from "../lib/constants.js" +import { askForConfirmation, customSpinner } from "../lib/prompts.js" +import { VkRegistry } from "../../../contracts/typechain-types/contracts/VkRegistry.js" +import { VkRegistry__factory } from "../../../contracts/typechain-types/factories/contracts/VkRegistry__factory.js" +import { PubKey } from "@qfi/macisdk" +import { Recipient } from "types/index.js" + +/** + * Throw an error if at least one recipient field value is not provided or malformed. + * @param recipientRecord + * @param index + */ +const checkForMissingRecipientProperties = (recipientRecord: Recipient, index: number) => { + const { + projectName, + tagline, + description, + ethereumAddress, + website, + bannerImageLink, + thumbnailImageLink, + logoCdnUrl + } = recipientRecord + + if (!projectName) throw new Error(`Missing \`projectName\` property for the recipient (Row #${index})`) + + if (!tagline) throw new Error(`Missing \`tagline\` property for the recipient (Row #${index})`) + + if (!description) throw new Error(`Missing \`description\` property for the recipient (Row #${index})`) + + if (!website) throw new Error(`Missing \`website\` property for the recipient (Row #${index})`) + + if (!ethereumAddress) throw new Error(`Missing \`ethereumAddress\` property for the recipient (Row #${index})`) + + if (ethereumAddress.length !== 42 || !ethereumAddress.startsWith("0x")) + throw new Error(`Malformed \`ethereumAddress\` property for the recipient (Row #${index})`) + + if (!bannerImageLink) throw new Error(`Missing \`bannerImageLink\` property for the recipient (Row #${index})`) + + if (!thumbnailImageLink) throw new Error(`Missing \`thumbnailImageLink\` property for the recipient (Row #${index})`) + + if (!logoCdnUrl) throw new Error(`Missing \`logoCdnUrl\` property for the recipient (Row #${index})`) +} + +/** + * Initialize command. + * @param network - the network where the contracts are going to be deployed. + */ +async function doTheThing(network: string) { + clear() + + console.log(header) + + try { + // Check for output directory. + if (!directoryExists(outputDirPath)) makeDir(outputDirPath) + + // Check if mnemonic already present. + if (!directoryExists(mnemonicBaseDirPath) && !directoryExists(mnemonicFilePath)) + throw new Error(`You must first authenticate by running \`auth \"\"\` command!`) + // Check if users has been already signed up. + if (!directoryExists(usersStateIndexesBaseDirPath)) makeDir(usersStateIndexesBaseDirPath) + // Check if contracts allready deployed. + + // Check for output directory. + if (!directoryExists(outputDirPath)) makeDir(outputDirPath) + + // Check if mnemonic already present. + if (!directoryExists(mnemonicBaseDirPath) && !directoryExists(mnemonicFilePath)) + throw new Error(`You must first authenticate by running \`auth \"\"\` command!`) + + // Check if contracts has been already deployed. + if (!directoryExists(deployedContractsBaseDirPath) && !directoryExists(deployedContractsFilePath)) + throw new Error(`You must first deploy QFI/MACI smart contracts by running \`deploy \"\"\` command!`) + + process.stdout.write(`\n`) + + // Retrieve deployed smart contracts addresses. + const deployedContracts = readJSONFile(deployedContractsFilePath) + process.stdout.write(`\n`) + + const { provider, wallet } = await connectToBlockchain(network) + const gasPrice = await provider.getGasPrice() + const double = BigNumber.from("2") + const doubleGasPrice = gasPrice.mul(double) + const gasLimit = ethers.utils.hexlify(10000000) + + /** INIT MACI/QFI SMART CONTRACTS */ + const deployer = wallet + + console.log(chalk.bold(`\n For all the marbles this will take approximately [43] minutes`)) + console.log(`\n${logSymbols.info} MAKE SURE YOU HAVE A STABLE WIFI CONNECTION AND YOUR LAPTOP IS CHARGED!\n`) + const { confirmation: preFlightCheck1 } = await askForConfirmation("Ready?") + + if (!preFlightCheck1) { + console.log(`\nFarewell 1👋`) + process.exit(0) + } + + const { confirmation: preFlightCheck2 } = await askForConfirmation("Are you ABOLUTELY SURE?", "yes", "no") + + if (!preFlightCheck2) { + console.log(`\nFarewell 2👋`) + process.exit(0) + } + + const { confirmation: preFlightCheck3 } = await askForConfirmation("Do you have enough gas ?", "yes", "no") + + if (!preFlightCheck3) { + console.log(`\nFarewell3 👋`) + process.exit(0) + } + + const { confirmation: preFlightCheck4 } = await askForConfirmation("LETS DO THE THING?", "I HAVE NO DOUBTS", "no") + + if (!preFlightCheck4) { + console.log(`\nFarewell4 👋`) + process.exit(0) + } + // Get deployed contracts instances. + + const simpleHackathon = new ethers.Contract( + deployedContracts.SimpleHackathon, + SimpleHackathon__factory.abi, + deployer + ) + + // const pollFactory = new ethers.Contract(deployedContracts.PollFactory, PollFactory__factory.abi, deployer) + + // const grantRoundFactory = new ethers.Contract( + // deployedContracts.GrantRoundFactory, + // GrantRoundFactory__factory.abi, + // deployer + // ) + + // const messageAqFactory = new ethers.Contract( + // deployedContracts.MessageAqFactory, + // MessageAqFactory__factory.abi, + // deployer + // ) + + // const messageAqFactoryGrants = new ethers.Contract( + // deployedContracts.MessageAqFactoryGrants, + // MessageAqFactory__factory.abi, + // deployer + // ) + + const vkRegistry = new ethers.Contract(deployedContracts.VKRegistry, VkRegistry__factory.abi, deployer) + + // const qfi = new ethers.Contract(deployedContracts.QFI, QFI__factory.abi, deployer) + + // Send txs. + let spinner = customSpinner(`Set MACI instance for SimpleHackathon contract`, "point") + spinner.start() + + // let tx = await simpleHackathon + // .connect(deployer) + // .setMaciInstance(qfi.address, { gasPrice: doubleGasPrice, gasLimit }) + // await tx.wait() + // spinner.stop() + // console.log(`${logSymbols.success} Set MACI instance for SimpleHackathon contract`) + + spinner = customSpinner(`Max number of recipients for the SimpleHackathon base registry`, "point") + spinner.start() + + // let tx = await simpleHackathon + // .connect(deployer) + // .setMaxRecipients(numberOfMaxRecipients, { gasPrice: doubleGasPrice, gasLimit }) + // await tx.wait() + // spinner.stop() + // console.log(`${logSymbols.success} Max number of recipients for the SimpleHackathon base registry`) + + // spinner = customSpinner(`Transfer PollFactory ownership to QFI contract`, "point") + // spinner.start() + + // tx = await pollFactory.connect(deployer).transferOwnership(qfi.address, { gasPrice: doubleGasPrice, gasLimit }) + // await tx.wait() + // spinner.stop() + // console.log(`${logSymbols.success} Transfer PollFactory ownership to QFI contract`) + + // spinner = customSpinner(`Transfer GrantRoundFactory ownership to QFI contract`, "point") + // spinner.start() + + // tx = await grantRoundFactory + // .connect(deployer) + // .transferOwnership(qfi.address, { gasPrice: doubleGasPrice, gasLimit }) + // await tx.wait() + // spinner.stop() + // console.log(`${logSymbols.success} Transfer GrantRoundFactory ownership to QFI contract`) + + // spinner = customSpinner(`Transfer MessageAq ownership to PollFactory contract`, "point") + // spinner.start() + + // tx = await messageAqFactory + // .connect(deployer) + // .transferOwnership(pollFactory.address, { gasPrice: doubleGasPrice, gasLimit }) + // await tx.wait() + // spinner.stop() + // console.log(`${logSymbols.success} Transfer MessageAq ownership to PollFactory contract`) + + // spinner = customSpinner(`Transfer MessageAqFactoryGrants ownership to GrantRoundFactory contract`, "point") + // spinner.start() + + // tx = await messageAqFactoryGrants + // .connect(deployer) + // .transferOwnership(grantRoundFactory.address, { gasPrice: doubleGasPrice, gasLimit }) + // await tx.wait() + // spinner.stop() + // console.log(`${logSymbols.success} Transfer MessageAqFactoryGrants ownership to GrantRoundFactory contract`) + + // spinner = customSpinner(`Initialize QFI contract`, "point") + // spinner.start() + + // tx = await qfi + // .connect(deployer) + // .initialize(deployedContracts.VKRegistry, messageAqFactory.address, messageAqFactoryGrants.address, { + // gasPrice: doubleGasPrice, + // gasLimit + // }) + // await tx.wait() + // spinner.stop() + // console.log(`${logSymbols.success} Initialize QFI contract`) + + // // NOTE: Set up vk registry + // const stateTreeDepth = await qfi.stateTreeDepth() + // const _stateTreeDepth = stateTreeDepth.toString() + // const _intStateTreeDepth = treeDepths.intStateTreeDepth + // const _messageTreeDepth = treeDepths.messageTreeDepth + // const _voteOptionTreeDepth = treeDepths.voteOptionTreeDepth + // const _messageBatchSize = messageBatchSize.toString() + // const _processVk = ProcessVk.asContractParam() + // const _tallyVk = TallyVk.asContractParam() + + // spinner = customSpinner(`Set VKs`, "point") + // spinner.start() + + // const vkTx = await vkRegistry + // .connect(deployer) + // .setVerifyingKeys( + // stateTreeDepth, + // _intStateTreeDepth, + // _messageTreeDepth, + // _voteOptionTreeDepth, + // _messageBatchSize, + // _processVk, + // _tallyVk, + // { gasPrice: doubleGasPrice, gasLimit } + // ) + // await vkTx.wait() + + // await vkRegistry + // .connect(deployer) + // .genProcessVkSig(_stateTreeDepth, _messageTreeDepth, _voteOptionTreeDepth, _messageBatchSize) + + // await vkRegistry.connect(deployer).genTallyVkSig(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth) + + // spinner.stop() + // console.log(`${logSymbols.success} Set Vks`) + // console.log(`\n${logSymbols.info} contracts connected, continuing to project sign up step!\n`) + + // console.log(`\n${logSymbols.info} You are about to register ${jsonRecipientsRecords.length} projects\n`) + + // Get CSV records. + let i = 0 + for await (const recipientRecord of jsonRecipientsRecords) { + const spinner = customSpinner(`Adding recipient in position ${chalk.bold(i)}`, "point") + spinner.start() + + // Check input data. + checkForMissingRecipientProperties(recipientRecord, i) + + // Get deployed simpleHackathon instance. + const simpleHackathon = new ethers.Contract( + deployedContracts.SimpleHackathon, + SimpleHackathon__factory.abi, + deployer + ) + + // Create metadata. + const { ethereumAddress, ...metadataJSON } = recipientRecord + const metadata = JSON.stringify(metadataJSON) + + // Create tx. + const tx = await simpleHackathon.connect(deployer).addRecipient(recipientRecord.ethereumAddress, metadata, { + gasPrice: doubleGasPrice, + gasLimit: ethers.utils.hexlify(10000000) + }) + await tx.wait() + + spinner.stop() + console.log( + `${logSymbols.success} Recipient #${chalk.bold(i)} (${chalk.bold( + recipientRecord.projectName + )}) has been successfully registered on-chain` + ) + + i += 1 + } + + console.log(`\n${logSymbols.success} You have successfully registered the recipients on-chain 🎊\n`) + + console.log( + `\n${logSymbols.success} You are about to register ballots, DO NOT EXIT RECOVERY FROM HERE IS HARD 🎊\n` + ) + + const stateIndexes = [] + + const hacks: { [k: string]: string } = {} + let j = 1 + // for await (const maciPK of userSignUps) { + // const spinner = customSpinner(`Sign up for user in position ${chalk.bold(j)}`, "point") + // spinner.start() + + // // Prepare data for tx. + // const _maciPK = PubKey.unserialize(maciPK).asContractParam() + // const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]) + // const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]) + + // const tx = await qfi.connect(deployer).signUp(_maciPK, _signUpGatekeeperData, _initialVoiceCreditProxyData, { + // gasPrice: doubleGasPrice, + // gasLimit: ethers.utils.hexlify(10000000) + // }) + // await tx.wait() + + // // Read the event from logs. + // // const iface = qfi.interface + // // const signUpEvent = iface.parseLog(logs[logs.length - 1]) + // const stateIndex: string = j.toString() + + // stateIndexes.push(stateIndex) + + // spinner.stop() + // console.log( + // `${logSymbols.success} User #${chalk.bold(j)} (${chalk.bold( + // maciPK + // )}) has been successfully registered on-chain with a state index of ${stateIndex}` + // ) + + // // Store rows for CSV files. + // stateIndexes.push({ + // maciPK, + // stateIndex + // }) + // hacks[maciPK] = stateIndex + // // eslint-disable-next-line no-plusplus + // j++ + // } + + // Create CSV file. + jsonToCsv(usersStateIndexesFilePath, [`maciPK`, `stateIndex`], stateIndexes) + + writeLocalJsonFile(hacksFilePath, JSON.parse(JSON.stringify(hacks))) + + console.log(`\n${logSymbols.success} You have successfully registered users on-chain 🎊\n`) + + console.log(`\n${logSymbols.success} We will now start the grant round. It will be active for [7] days. 🎊\n`) + + const FOURTEENDAYS = 60 * 60 * 24 * 14 + + // const _coordinatorPubkey = PubKey.unserialize(coordinatorPubkey).asContractParam() + // const grantRoundTx = await qfi + // .connect(deployer) + // .deployGrantRound(FOURTEENDAYS, maxValues, treeDepths, _coordinatorPubkey, deployer.address, { + // gasPrice: doubleGasPrice, + // gasLimit: ethers.utils.hexlify(8000000) + // }) + + // await grantRoundTx.wait() + + console.log(`\n${logSymbols.success} You have successfully initialized the deployed MACI/QFI smart contracts 🎊\n`) + // console.log( + // `\n${logSymbols.success} you grant round will be active once this transaction is confirmed ${grantRoundTx} n` + // ) + } catch (err: any) { + console.log(err) + if (!err.transactionHash) console.log(`\n${logSymbols.error} Something went wrong: ${err}`) + else + console.log( + `\n${logSymbols.error} Something went wrong with the transaction! More info here: ${chalk.bold( + `${getNetworkExplorerUrl(network)}tx/${err.transactionHash}` + )}` + ) + process.exit(0) + } +} + +export default doTheThing diff --git a/packages/cli/src/commands/genkeys.ts b/packages/cli/src/commands/genkeys.ts new file mode 100644 index 00000000..eb9ef397 --- /dev/null +++ b/packages/cli/src/commands/genkeys.ts @@ -0,0 +1,213 @@ +#!/usr/bin/env node +import logSymbols from "log-symbols" +import clear from "clear" +import chalk from "chalk" +import { cleanDir, directoryExists, jsonToCsv, writeFileSync } from "../lib/files.js" +import { EthKeyPair, KeyPair, QRCodeFileType } from "../../types/index.js" +import { generateEthereumKeyPair, generateMaciKeyPair } from "../lib/keypair.js" +import toQRCodeFile from "../lib/qrcode.js" +import { + baseAddressFileName, + baseMnemonicFileName, + basePkFileName, + baseSkFileName, + ethBaseAddressDirPath, + ethBaseAddressQrPngDirPath, + ethBaseAddressQrSvgDirPath, + ethBaseAddressTxtDirPath, + ethBaseCsvFilePath, + ethBaseDirPath, + ethBaseMnemonicDirPath, + ethBaseMnemonicQrPngDirPath, + ethBaseMnemonicQrSvgDirPath, + ethBaseMnemonicTxtDirPath, + ethBasePkDirPath, + ethBasePkQrPngDirPath, + ethBasePkQrSvgDirPath, + ethBasePkTxtDirPath, + ethBaseSkDirPath, + ethBaseSkQrPngDirPath, + ethBaseSkQrSvgDirPath, + ethBaseSkTxtDirPath, + generatedKeysGlobalDirPath, + header, + maciBaseCsvFilePath, + maciPkBaseCsvFilePath, + maciBaseDirPath, + maciBasePkDirPath, + maciBasePkQrPngDirPath, + maciBasePkQrSvgDirPath, + maciBasePkTxtDirPath, + maciBaseSkDirPath, + maciBaseSkQrPngDirPath, + maciBaseSkQrSvgDirPath, + maciBaseSkTxtDirPath, + outputDirPath +} from "../lib/constants.js" +import { askForConfirmation } from "../lib/prompts.js" +const prepareDirectories = () => { + // Globals. + cleanDir(generatedKeysGlobalDirPath) + cleanDir(ethBaseDirPath) + cleanDir(maciBaseDirPath) + + /** ETH */ + + // Root. + cleanDir(ethBasePkDirPath) + cleanDir(ethBaseSkDirPath) + cleanDir(ethBaseAddressDirPath) + cleanDir(ethBaseMnemonicDirPath) + + // Txt. + cleanDir(ethBasePkTxtDirPath) + cleanDir(ethBaseSkTxtDirPath) + cleanDir(ethBaseAddressQrPngDirPath) + cleanDir(ethBaseMnemonicTxtDirPath) + + // QR Png. + cleanDir(ethBasePkQrPngDirPath) + cleanDir(ethBaseSkQrPngDirPath) + cleanDir(ethBaseAddressTxtDirPath) + cleanDir(ethBaseMnemonicQrPngDirPath) + + // QR Svg. + cleanDir(ethBasePkQrSvgDirPath) + cleanDir(ethBaseSkQrSvgDirPath) + cleanDir(ethBaseAddressQrSvgDirPath) + cleanDir(ethBaseMnemonicQrSvgDirPath) + + /** MACI */ + + // Root. + cleanDir(maciBasePkDirPath) + cleanDir(maciBaseSkDirPath) + + // Txt. + cleanDir(maciBasePkTxtDirPath) + cleanDir(maciBaseSkTxtDirPath) + + // QR Png. + cleanDir(maciBasePkQrPngDirPath) + cleanDir(maciBaseSkQrPngDirPath) + + // QR Svg. + cleanDir(maciBasePkQrSvgDirPath) + cleanDir(maciBaseSkQrSvgDirPath) +} + +/** + * Genkeys command. + * @param amount - amount of MACI and ETH keypairs to be generated. + */ +async function genkeys(amount: number) { + clear() + + console.log(header) + + try { + if (amount === 0) throw new Error(`Sorry, but you cannot generate zero key pairs for MACI/QFI`) + + // Check for output directory. + if (!directoryExists(outputDirPath)) cleanDir(outputDirPath) + else if (directoryExists(ethBaseDirPath) && directoryExists(maciBaseDirPath)) { + // Prompt for user. + console.log(`\n${logSymbols.info} Seems that you have already generated the keys!\n`) + + const { confirmation } = await askForConfirmation( + "Are you sure you want to continue? (nb. confirmation will override your generated keys)", + "yes", + "no" + ) + + if (!confirmation) { + console.log(`\nFarewell 👋`) + process.exit(0) + } + } + + // Cleaning directories. + prepareDirectories() + + console.log(chalk.bold(`\nEthereum and MACI Key generation is running`)) + + const mnemonics = [] + const maciSks = [] + const maciPks = [] + + for (let i = 0; i < amount; i += 1) { + // Generate an Ethereum keypair. + const ethKeyPair: EthKeyPair = generateEthereumKeyPair() + + // Generate a MACI keypair. + let maciKeyPair: KeyPair = generateMaciKeyPair() + let validKey = maciKeyPair.privateKey.length === 71 + while (!validKey) { + maciKeyPair = generateMaciKeyPair() + const ok = maciKeyPair.privateKey.length === 71 + validKey = ok + } + + /* Files */ + const ethMnemonicFile = `${baseMnemonicFileName}_${i}` + const ethAddressFile = `${baseAddressFileName}_${i}` + const skFile = `${baseSkFileName}_${i}` + const pkFile = `${basePkFileName}_${i}` + + /* Store as plaintext */ + + // ETH. + writeFileSync(`${ethBaseMnemonicTxtDirPath}/${ethMnemonicFile}.txt`, ethKeyPair.mnemonic) + writeFileSync(`${ethBaseAddressTxtDirPath}/${ethAddressFile}.txt`, ethKeyPair.address) + writeFileSync(`${ethBaseSkTxtDirPath}/${skFile}.txt`, ethKeyPair.privateKey) + writeFileSync(`${ethBasePkTxtDirPath}/${pkFile}.txt`, ethKeyPair.publicKey) + + // MACI. + writeFileSync(`${maciBaseSkTxtDirPath}/${skFile}.txt`, maciKeyPair.privateKey) + writeFileSync(`${maciBasePkTxtDirPath}/${pkFile}.txt`, maciKeyPair.publicKey) + + /* Store as QR Code */ + + // ETH. + await toQRCodeFile(`${ethBaseMnemonicQrPngDirPath}/${ethMnemonicFile}`, ethKeyPair.mnemonic, QRCodeFileType.PNG) + await toQRCodeFile(`${ethBaseMnemonicQrSvgDirPath}/${ethMnemonicFile}`, ethKeyPair.mnemonic, QRCodeFileType.SVG) + + await toQRCodeFile(`${ethBaseAddressQrPngDirPath}/${ethAddressFile}`, ethKeyPair.address, QRCodeFileType.PNG) + await toQRCodeFile(`${ethBaseAddressQrSvgDirPath}/${ethAddressFile}`, ethKeyPair.address, QRCodeFileType.SVG) + + await toQRCodeFile(`${ethBaseSkQrPngDirPath}/${skFile}`, ethKeyPair.privateKey, QRCodeFileType.PNG) + await toQRCodeFile(`${ethBaseSkQrSvgDirPath}/${skFile}`, ethKeyPair.privateKey, QRCodeFileType.SVG) + + await toQRCodeFile(`${ethBasePkQrPngDirPath}/${pkFile}`, ethKeyPair.publicKey, QRCodeFileType.PNG) + await toQRCodeFile(`${ethBasePkQrSvgDirPath}/${pkFile}`, ethKeyPair.publicKey, QRCodeFileType.SVG) + + // MACI. + await toQRCodeFile(`${maciBaseSkQrPngDirPath}/${skFile}`, maciKeyPair.privateKey, QRCodeFileType.PNG) + await toQRCodeFile(`${maciBaseSkQrSvgDirPath}/${skFile}`, maciKeyPair.privateKey, QRCodeFileType.SVG) + + await toQRCodeFile(`${maciBasePkQrPngDirPath}/${pkFile}`, maciKeyPair.publicKey, QRCodeFileType.PNG) + await toQRCodeFile(`${maciBasePkQrSvgDirPath}/${pkFile}`, maciKeyPair.publicKey, QRCodeFileType.SVG) + + // Store rows for CSV files. + mnemonics.push({ mnemonic: ethKeyPair.mnemonic }) + maciSks.push({ maci_sk: maciKeyPair.privateKey }) + maciPks.push({ maci_pk: maciKeyPair.publicKey }) + + console.log(`Keypair #${i} - ${logSymbols.success} Ethereum / ${logSymbols.success} MACI`) + } + + // Create CSV files. + jsonToCsv(ethBaseCsvFilePath, [`mnemonic`], mnemonics) + jsonToCsv(maciBaseCsvFilePath, [`maci_sk`], maciSks) + jsonToCsv(maciPkBaseCsvFilePath, [`maci_pk`], maciPks) + + console.log( + `\n${logSymbols.info} Generated keypairs for Ethereum in the ${ethBaseDirPath} folder\n${logSymbols.info} Generated keypairs for MACI in the ${maciBaseDirPath} folder + \n${logSymbols.success} You have successfully generated the keypairs for Ethereum and MACI 🎊` + ) + } catch (err: any) { + console.log(`\n${logSymbols.error} Something went wrong: ${err.message ?? err}`) + } +} + +export default genkeys diff --git a/packages/cli/src/commands/index.ts b/packages/cli/src/commands/index.ts new file mode 100644 index 00000000..05dbab74 --- /dev/null +++ b/packages/cli/src/commands/index.ts @@ -0,0 +1,7 @@ +import auth from "./auth.js" +import genkeys from "./genkeys.js" +import doTheThing from "./doTheThing.js" +import recover from "./recover.js" +import tally from "./coordinatorTallyOffChain.js" + +export { auth, genkeys, doTheThing, recover, tally } diff --git a/packages/cli/src/commands/recover.ts b/packages/cli/src/commands/recover.ts new file mode 100644 index 00000000..b05ec551 --- /dev/null +++ b/packages/cli/src/commands/recover.ts @@ -0,0 +1,262 @@ +#!/usr/bin/env node + +import logSymbols from "log-symbols" +import { clear } from "console" +import chalk from "chalk" +import { BigNumber, ethers } from "ethers" +import { PubKey } from "@qfi/macisdk" + +import { connectToBlockchain, getNetworkExplorerUrl } from "../lib/blockchain.js" +import { SimpleHackathon__factory } from "../../../contracts/typechain-types/factories/contracts/flavors/SimpleHackathon__factory.js" + +import { directoryExists, jsonToCsv, makeDir, readJSONFile, writeLocalJsonFile } from "../lib/files.js" +import { + coordinatorPubkey, + hacksFilePath, + header, + mnemonicBaseDirPath, + mnemonicFilePath, + outputDirPath, + treeDepths, + usersStateIndexesFilePath, + userSignUps, + maxValues, + usersStateIndexesBaseDirPath, + jsonRecipientsRecords, + deployedContractsBaseDirPath, + deployedContractsFilePath +} from "../lib/constants.js" +import { askForConfirmation, customSpinner } from "../lib/prompts.js" + +function delay(n: number) { + return new Promise((resolve) => { + setTimeout(resolve, n * 1000) + }) +} + +/** + * Initialize command. + * @param network - the network where the contracts are going to be deployed. + */ +async function recover(network: string) { + clear() + + console.log(header) + + try { + // Check for output directory. + if (!directoryExists(outputDirPath)) makeDir(outputDirPath) + + // Check if mnemonic already present. + if (!directoryExists(mnemonicBaseDirPath) && !directoryExists(mnemonicFilePath)) + throw new Error(`You must first authenticate by running \`auth \"\"\` command!`) + // Check if users has been already signed up. + if (!directoryExists(usersStateIndexesBaseDirPath)) makeDir(usersStateIndexesBaseDirPath) + if (!directoryExists(usersStateIndexesBaseDirPath)) makeDir(usersStateIndexesBaseDirPath) + + // Check if contracts allready deployed. + + // Check for output directory. + if (!directoryExists(outputDirPath)) makeDir(outputDirPath) + + // Check if mnemonic already present. + if (!directoryExists(mnemonicBaseDirPath) && !directoryExists(mnemonicFilePath)) + throw new Error(`You must first authenticate by running \`auth \"\"\` command!`) + + // Check if contracts has been already deployed. + if (!directoryExists(deployedContractsBaseDirPath) && !directoryExists(deployedContractsFilePath)) + throw new Error(`You must first deploy QFI/MACI smart contracts by running \`deploy \"\"\` command!`) + + process.stdout.write(`\n`) + + // Retrieve deployed smart contracts addresses. + const deployedContracts = readJSONFile(deployedContractsFilePath) + process.stdout.write(`\n`) + + const { provider, wallet } = await connectToBlockchain(network) + const gasPrice = await provider.getGasPrice() + const double = BigNumber.from("2") + const doubleGasPrice = gasPrice.mul(double) + + /** INIT MACI/QFI SMART CONTRACTS */ + const deployer = wallet + + console.log(chalk.bold(`\n For all the marbles this will take approximately [43] minutes`)) + console.log(`\n${logSymbols.info} MAKE SURE YOU HAVE A STABLE WIFI CONNECTION AND YOUR LAPTOP IS CHARGED!\n`) + const { confirmation: preFlightCheck1 } = await askForConfirmation("Ready?") + + if (!preFlightCheck1) { + console.log(`\nFarewell 1👋`) + process.exit(0) + } + + const { confirmation: preFlightCheck2 } = await askForConfirmation("Are you ABOLUTELY SURE?", "yes", "no") + + if (!preFlightCheck2) { + console.log(`\nFarewell 2👋`) + process.exit(0) + } + + const { confirmation: preFlightCheck3 } = await askForConfirmation("Do you have enough gas ?", "yes", "no") + + if (!preFlightCheck3) { + console.log(`\nFarewell3 👋`) + process.exit(0) + } + + const { confirmation: preFlightCheck4 } = await askForConfirmation("LETS DO THE THING?", "I HAVE NO DOUBTS", "no") + + if (!preFlightCheck4) { + console.log(`\nFarewell4 👋`) + process.exit(0) + } + // Get deployed contracts instances. + + // const qfi = new ethers.Contract(deployedContracts.QFI, QFI__factory.abi, deployer) + + // Send txs. + let spinner = customSpinner(`SKIP: Set MACI instance for SimpleHackathon contract`, "point") + spinner.start() + await delay(3) + + spinner.stop() + + // NOTE: Set up vk registry + + spinner = customSpinner(`Recovery Mode Detected: calculating state diff`, "point") + spinner.start() + await delay(3) + + spinner.stop() + + // Get deployed simpleHackathon instance. + const simpleHackathon = new ethers.Contract( + deployedContracts.SimpleHackathon, + SimpleHackathon__factory.abi, + deployer + ) + + console.log(`\n${logSymbols.info} RECOVER: register projects\n`) + + const recipientStateIndex = Number(await simpleHackathon.getRecipientCount()) + + // Get CSV records. + + // eslint-disable-next-line no-plusplus + for (let i = recipientStateIndex; i < jsonRecipientsRecords.length; i++) { + const recipientRecord = jsonRecipientsRecords[i] + const spinner = customSpinner(`Adding recipient in position ${chalk.bold(i)}`, "point") + spinner.start() + + // Check input data. + + // Create metadata. + const { ethereumAddress, ...metadataJSON } = recipientRecord + const metadata = JSON.stringify(metadataJSON) + + // Create tx. + const tx = await simpleHackathon.connect(deployer).addRecipient(recipientRecord.ethereumAddress, metadata, { + gasPrice: doubleGasPrice, + gasLimit: ethers.utils.hexlify(10000000) + }) + await tx.wait() + + spinner.stop() + console.log( + `${logSymbols.success} Recipient #${chalk.bold(i)} (${chalk.bold( + recipientRecord.projectName + )}) has been successfully registered on-chain` + ) + } + + console.log(`\n${logSymbols.success} You have successfully registered the recipients on-chain 🎊\n`) + + console.log( + `\n${logSymbols.success} You are about to register ballots, DO NOT EXIT RECOVERY FROM HERE IS HARD 🎊\n` + ) + + spinner = customSpinner(`Waiting for next block to fetch user state index`, "point") + spinner.start() + await delay(30) + + spinner.stop() + + const stateIndexes = [] + const _maciPK = PubKey.unserialize("maciPK").asContractParam() + + const hacks: { [k: string]: string } = {} + // const maciStateIndex = Number(await qfi.numSignUps()) + + // eslint-disable-next-line no-plusplus + // for (let i = maciStateIndex; i < userSignUps.length; i++) { + // const maciPK = userSignUps[i] + // const spinner = customSpinner(`Sign up for user in position ${chalk.bold(i)}`, "point") + // spinner.start() + + // // Prepare data for tx. + // const _maciPK = PubKey.unserialize(maciPK).asContractParam() + // const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]) + // const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]) + + // const tx = await qfi.connect(deployer).signUp(_maciPK, _signUpGatekeeperData, _initialVoiceCreditProxyData, { + // gasPrice: doubleGasPrice, + // gasLimit: ethers.utils.hexlify(10000000) + // }) + // await tx.wait() + + // const stateIndex: string = i.toString() + + // spinner.stop() + // console.log( + // `${logSymbols.success} User #${chalk.bold(i)} (${chalk.bold( + // maciPK + // )}) has been successfully registered on-chain with a state index of ${stateIndex}` + // ) + + // // Store rows for CSV files. + // stateIndexes.push({ + // maciPK, + // stateIndex + // }) + // hacks[maciPK] = stateIndex + // } + + // // Create CSV file. + // jsonToCsv(usersStateIndexesFilePath, [`maciPK`, `stateIndex`], stateIndexes) + + // writeLocalJsonFile(hacksFilePath, JSON.parse(JSON.stringify(hacks))) + + // console.log(`\n${logSymbols.success} You have successfully registered users on-chain 🎊\n`) + + // console.log(`\n${logSymbols.success} We will now start the grant round. It will be active for [7] days. 🎊\n`) + + // const SEVENDAYS = 60 * 60 * 24 * 7 + + // const _coordinatorPubkey = PubKey.unserialize(coordinatorPubkey).asContractParam() + // const grantRoundTx = await qfi + // .connect(deployer) + // .deployGrantRound(SEVENDAYS, maxValues, treeDepths, _coordinatorPubkey, deployer.address, { + // gasPrice: doubleGasPrice, + // gasLimit: ethers.utils.hexlify(8000000) + // }) + + // await grantRoundTx.wait() + + // console.log(`\n${logSymbols.success} You have successfully initialized the deployed MACI/QFI smart contracts 🎊\n`) + // console.log( + // `\n${logSymbols.success} you grant round will be active once this transaction is confirmed ${grantRoundTx} n` + // ) + } catch (err: any) { + console.log(err) + if (!err.transactionHash) console.log(`\n${logSymbols.error} Something went wrong: ${err}`) + else + console.log( + `\n${logSymbols.error} Something went wrong with the transaction! More info here: ${chalk.bold( + `${getNetworkExplorerUrl(network)}tx/${err.transactionHash}` + )}` + ) + process.exit(0) + } +} + +export default recover diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts new file mode 100644 index 00000000..ee47e29f --- /dev/null +++ b/packages/cli/src/index.ts @@ -0,0 +1,92 @@ +#!/usr/bin/env node +import dotenv from "dotenv" +import { createCommand } from "commander" +import { readLocalJsonFile } from "./lib/files.js" +import { + auth, + genkeys, + doTheThing, + recover, + tally +} from "./commands/index.js" + +dotenv.config() + +const pkg = readLocalJsonFile("../../package.json") + +const program = createCommand() + +// Entry point. +program.name(pkg.name).description(pkg.description).version(pkg.version) + +program + .command("auth") + .description( + "Allow to interact with the blockchain-related commands (e.g., deploy) with a wallet by passing in wallet's mnemonic." + ) + .argument("", "the secret mnemonic phrase (e.g., 12 words) separated by spaces") + .action((mnemonic: string) => { + auth(mnemonic) + }) + +program + .command("genkeys") + .description("Generate a new specified amount of MACI and ETH keypairs (QR Codes and csvs included)") + .argument("", "amount of MACI and ETH keypairs to be generated") + .action((amount: number) => { + genkeys(amount) + }) + .addHelpCommand(`ethPortoCli genkeys 3000`) + +program + .command("dothething") + .description("Does all the things without user input") + .argument("", "the network where the contracts has been deployed") + .action((network: string) => { + doTheThing(network) + }) + +program + .command("recover") + .description("continues signups at specified stateindex") + .argument("", "the network where the contracts has been deployed") + .action((network: string) => { + recover(network) + }) +program + .command("tally") + .description("calculates the tally of the current vote offchain") + .argument("", "the network where the contracts has been deployed") + .argument("", "MACI privatekey used by coodinator in Diffie Hellman Secret") + .argument("", "Amount of xDAI to use for matching pool (dollar amount)") + .argument("", "Block QFI contracts were deployed on") + .argument("", "Block QFI contracts were deployed on") + .argument("", "Block Grant Round Started on") + .argument("", "First block a vote was cast") + .argument("", "Last block to check for vote messages on, 'latest' for current block number") + .action( + ( + network: string, + coordinatorPrivkey: string, + matchingPoolAmount: string, + qfiContractAddress: string, + startBlock: string, + grantRoundStartBlock: string, + firstVoteBlock: string, + lastBlock: string + ) => { + const optionalLastBlock = lastBlock === "latest" ? "latest" : lastBlock + tally( + network, + coordinatorPrivkey, + matchingPoolAmount, + qfiContractAddress, + startBlock, + grantRoundStartBlock, + firstVoteBlock, + optionalLastBlock + ) + } + ) + +program.parseAsync() diff --git a/packages/cli/src/lib/blockchain.ts b/packages/cli/src/lib/blockchain.ts new file mode 100644 index 00000000..290208cc --- /dev/null +++ b/packages/cli/src/lib/blockchain.ts @@ -0,0 +1,91 @@ +import { Network, UserConnectedToNetwork } from "types" +import { JsonRpcProvider } from "@ethersproject/providers" +import { ethers, Wallet } from "ethers" +import chalk from "chalk" +import logSymbols from "log-symbols" +import { readFileSync } from "./files.js" +import { mnemonicFilePath, networks } from "./constants.js" + +/** + * Return the explorer associated to the given network. + * @param networkName + * @returns + */ +export const getNetworkExplorerUrl = (networkName: string): string => { + if (networkName === networks.xdai.name) return networks.xdai.explorer + if (networkName === networks.arbitrumRinkeby.name) return networks.arbitrumRinkeby.explorer + if (networkName === networks.kovan.name) return networks.kovan.explorer + if (networkName === networks.matic.name) return networks.matic.explorer + if (networkName === networks.goerli.name) return networks.goerli.explorer + return networks.localhost.explorer +} + +/** + * Return a new JSON RPC provider object linked to the provided network. + * @param network - the provided network. + * @return + */ +export const getProvider = (network: string): JsonRpcProvider => { + let selectedNetwork: Network + + // Connect to selected network. + if (network === networks.xdai.name) selectedNetwork = networks.xdai + else if (network === networks.arbitrumRinkeby.name) selectedNetwork = networks.arbitrumRinkeby + else if (network === networks.kovan.name) selectedNetwork = networks.kovan + else if (network === networks.matic.name) selectedNetwork = networks.matic + else if (network === networks.goerli.name) selectedNetwork = networks.goerli + else selectedNetwork = networks.localhost + const provider = new JsonRpcProvider(selectedNetwork.rpcUrl, selectedNetwork.name) + + return provider +} + +/** + * Return the related wallet associated to the given mnemonic. + * @param mnemonic - the secret mnemonic phrase (e.g., 12 words) separated by spaces. + * @returns + */ +export const getWalletFromMnemonic = (mnemonic: string): Wallet => Wallet.fromMnemonic(mnemonic) + +/** + * Return a new Wallet instance obtained from mnemonic connected to the given provider. + * @param provider - the provider connected to the selected network + * @returns + */ +export const connectWalletToProviderFromMnemonic = (provider: JsonRpcProvider): Wallet => { + // Get wallet from stored mnemonic. + const mnemonic = readFileSync(mnemonicFilePath) + + let wallet = Wallet.fromMnemonic(mnemonic) + + // Connect to the provider. + wallet = wallet.connect(provider) + + return wallet +} + +/** + * Connect a user to the given blockchain network and return the provider and connected wallet. + * @param network - the blockchain network where the user wants to connect. + * @returns > + */ +export const connectToBlockchain = async (network: string): Promise => { + // Get the provider. + const provider = getProvider(network) + console.log(`${logSymbols.success} Connected to ${chalk.bold(provider.network.name)} network`) + + // Connect wallet to provider from mnemonic. + const wallet = connectWalletToProviderFromMnemonic(provider) + const balanceInEthers = ethers.utils.formatEther((await wallet.getBalance()).toString()) + + console.log( + `${logSymbols.info} Ethereum address: ${chalk.bold(wallet.address)} - Balance: ${chalk.bold( + ethers.constants.EtherSymbol + )}${chalk.bold(balanceInEthers)}` + ) + + return { + provider, + wallet + } +} diff --git a/packages/cli/src/lib/constants.ts b/packages/cli/src/lib/constants.ts new file mode 100644 index 00000000..578ad20b --- /dev/null +++ b/packages/cli/src/lib/constants.ts @@ -0,0 +1,866 @@ +import figlet from "figlet" +import { G1Point, G2Point } from "@qfi/macisdk" +import { VerifyingKey } from "@qfi/macisdk" +import { Recipient } from "types" + +/** dir/file names */ +export const outputDirName = `output` +export const mnemonicDirName = `mnemonic` +export const generatedKeysGlobalDirName = `keys` +export const ethBaseDirName = `eth` +export const maciBaseDirName = `maci` +export const baseSkFileName = `sk` +export const basePkFileName = `pk` +export const baseAddressFileName = `address` +export const baseMnemonicFileName = `mnemonic` +export const baseTxtDirName = `txt` +export const baseQrPngDirName = `qr_png` +export const baseQrSvgDirName = `qr_svg` +export const basePkDirName = `public_keys` +export const baseSkDirName = `secret_keys` +export const baseAddressDirName = `addresses` +export const baseMnemonicDirName = `mnemonics` +export const ethMnemonicsCsvFileName = `mnemonics` +export const maciPrivateKeysCsvFileName = `secretKeys` +export const maciPublicKeysCsvFileName = `publicKeys` +export const deployedContractsFileName = `deployedContracts` +export const csvUserSignupFileName = `userSignup` +export const deployedContractsFileExt = `.json` +export const csvUserSignupFileExt = `.csv` +export const usersStateIndexesFileName = `signedUsersStateIndexes` +export const hacksFileName = `hacks` +export const mnemonicFileName = `mnemonic` +export const mnemonicFileExt = `.txt` + +/** dir/file paths */ +export const outputDirPath = `./${outputDirName}` +export const generatedKeysGlobalDirPath = `${outputDirPath}/${generatedKeysGlobalDirName}` +export const ethBaseDirPath = `${outputDirPath}/${generatedKeysGlobalDirName}/${ethBaseDirName}` +export const maciBaseDirPath = `${outputDirPath}/${generatedKeysGlobalDirName}/${maciBaseDirName}` + +export const ethBasePkDirPath = `${ethBaseDirPath}/${basePkDirName}` +export const ethBaseSkDirPath = `${ethBaseDirPath}/${baseSkDirName}` +export const ethBaseAddressDirPath = `${ethBaseDirPath}/${baseAddressDirName}` +export const ethBaseMnemonicDirPath = `${ethBaseDirPath}/${baseMnemonicDirName}` +export const maciBasePkDirPath = `${maciBaseDirPath}/${basePkDirName}` +export const maciBaseSkDirPath = `${maciBaseDirPath}/${baseSkDirName}` + +export const ethBasePkTxtDirPath = `${ethBasePkDirPath}/${baseTxtDirName}` +export const ethBaseSkTxtDirPath = `${ethBaseSkDirPath}/${baseTxtDirName}` +export const ethBaseAddressTxtDirPath = `${ethBaseAddressDirPath}/${baseTxtDirName}` +export const ethBaseMnemonicTxtDirPath = `${ethBaseMnemonicDirPath}/${baseTxtDirName}` +export const ethBasePkQrPngDirPath = `${ethBasePkDirPath}/${baseQrPngDirName}` +export const ethBaseSkQrPngDirPath = `${ethBaseSkDirPath}/${baseQrPngDirName}` +export const ethBaseAddressQrPngDirPath = `${ethBaseAddressDirPath}/${baseQrPngDirName}` +export const ethBaseMnemonicQrPngDirPath = `${ethBaseMnemonicDirPath}/${baseQrPngDirName}` +export const ethBasePkQrSvgDirPath = `${ethBasePkDirPath}/${baseQrSvgDirName}` +export const ethBaseSkQrSvgDirPath = `${ethBaseSkDirPath}/${baseQrSvgDirName}` +export const ethBaseAddressQrSvgDirPath = `${ethBaseAddressDirPath}/${baseQrSvgDirName}` +export const ethBaseMnemonicQrSvgDirPath = `${ethBaseMnemonicDirPath}/${baseQrSvgDirName}` + +export const maciBasePkTxtDirPath = `${maciBasePkDirPath}/${baseTxtDirName}` +export const maciBaseSkTxtDirPath = `${maciBaseSkDirPath}/${baseTxtDirName}` +export const maciBasePkQrPngDirPath = `${maciBasePkDirPath}/${baseQrPngDirName}` +export const maciBaseSkQrPngDirPath = `${maciBaseSkDirPath}/${baseQrPngDirName}` +export const maciBasePkQrSvgDirPath = `${maciBasePkDirPath}/${baseQrSvgDirName}` +export const maciBaseSkQrSvgDirPath = `${maciBaseSkDirPath}/${baseQrSvgDirName}` + +export const ethBasePkFilePath = `${ethBasePkDirPath}/${basePkFileName}` +export const ethBaseSkFilePath = `${ethBaseSkDirPath}/${baseSkFileName}` +export const ethBaseAddressFilePath = `${ethBaseAddressDirPath}/${baseAddressFileName}` +export const ethBaseMnemonicFilePath = `${ethBaseMnemonicDirPath}/${baseMnemonicFileName}` +export const maciBasePkFilePath = `${maciBasePkDirPath}/${basePkFileName}` +export const maciBaseSkFilePath = `${maciBaseSkDirPath}/${baseSkFileName}` + +export const ethBaseCsvFilePath = `${ethBaseMnemonicDirPath}/${ethMnemonicsCsvFileName}` +export const maciBaseCsvFilePath = `${maciBaseSkDirPath}/${maciPrivateKeysCsvFileName}` + +export const maciPkBaseCsvFilePath = `${maciBasePkDirPath}/${maciPublicKeysCsvFileName}` +export const csvUserSignupBaseDirPath = `${outputDirPath}/${csvUserSignupFileName}` +export const deployedContractsBaseDirPath = `${outputDirPath}/${deployedContractsFileName}` +export const usersStateIndexesBaseDirPath = `${outputDirPath}/${usersStateIndexesFileName}` +export const mnemonicBaseDirPath = `${outputDirPath}/${mnemonicFileName}` +export const deployedContractsFilePath = `${deployedContractsBaseDirPath}/${deployedContractsFileName}${deployedContractsFileExt}` + +export const csvUserSignupFilePath = `${csvUserSignupBaseDirPath}/${csvUserSignupFileName}${csvUserSignupFileExt}` +export const usersStateIndexesFilePath = `${usersStateIndexesBaseDirPath}/${usersStateIndexesFileName}` +export const hacksFilePath = `${usersStateIndexesBaseDirPath}/${hacksFileName}` +export const mnemonicFilePath = `${mnemonicBaseDirPath}/${mnemonicFileName}${mnemonicFileExt}` + +/** Header */ +export const header = figlet.textSync("ETH Taiwan CLI", { + font: "ANSI Regular", + horizontalLayout: "full", + verticalLayout: "default", + whitespaceBreak: false +}) + +/** Networks */ +export const networks = { + localhost: { + name: "localhost", + rpcUrl: "http://localhost:8545", // Hardhat + chainId: 1337, + explorer: "http://localhost:8545/" + }, + arbitrumRinkeby: { + name: "arbitrum-rinkeby", + rpcUrl: "https://rinkeby.arbitrum.io/rpc", + chainId: 421611, + explorer: "https://testnet.arbiscan.io/" + }, + xdai: { + name: "xdai", + rpcUrl: "https://rpc.gnosischain.com/", + chainId: 100, + explorer: "https://blockscout.com/xdai/mainnet/" + }, + kovan: { + name: "kovan", + rpcUrl: "https://kovan.poa.network", + chainId: 42, + explorer: "https://kovan.etherscan.io/" + }, + matic: { + name: "matic", + rpcUrl: "https://polygon-mainnet.g.alchemy.com/v2/7afvptVsZxjFBz8Mcdm4dpu84IekOGds", + chainId: 137, + explorer: "https://polygonscan.com/" + }, + goerli: { + name: "goerli", + rpcUrl: "https://eth-goerli.g.alchemy.com/v2/Yj6TVGlMl_otB1yDvpMTsb8vLFm1oGqg", + chainId: 5, + explorer: "https://goerli.etherscan.io/" + } +} + +/** Parameters */ +export const initialVoiceCreditBalance = 99 +export const baseERC20TokenInitialSupply = "100000000000000000000000" +export const numberOfMaxRecipients = 125 + +export const jsonRecipientsRecords: Recipient[] = [ + { + projectName: "Zero-knowledge order book system (ZK-OBS)", + tagline: + "使用零知識證明技術解決以太坊上擴容問題,建立 zk 鏈下訂單簿交易系統,讓使用者能夠在 DeFi 中享受無 gas fee 且最高效率的交易", + description: + "目前在以太坊上主流的金融系統都是以流動池形式為主,像是 Uniswap, Aave, Curve 等等。但不可否認的是訂單簿系統才是更為有效率的,像是中心化交易所 Binance, FTX, Coinbase 等等交易量都是 DEX 的 10-100 倍,原因在於訂單簿系統對用戶而言有著更好的體驗(無滑點、深度夠等等),相較之下在原生以太坊上高昂的 gas fee 很難使用訂單簿及造市功能達到此優點。上述主流的 DeFi 幾乎都發跡於 2017-2018 年,但隨著時間及技術的進步,透過 ZK 的擴容特性可以將訂單簿系統移至鏈下進行,讓使用者不必每次下單、改單都支付 gas fee,大幅提升了交易的效率,最後再使用 roll-up 一次更新大量數據回到鏈上,完美解決了以上問題,同時又能保障去中心化的特性。高效率的 zk 鏈下訂單簿系統將會是 DeFi 前進的一大步,解決了目前大多數項目都無法克服的問題,使 DeFi 更加蓬勃發展!", + ethereumAddress: "0x4B933cD816C86783B116D070818C6FCDf5bfF17a", + website: "https://www.youtube.com/watch?v=lftWYbVEbq8&list=PLf_RyQYF8N3w2XWq5rroPcF8b1yVQd212&index=11", + thumbnailImageLink: + "https://dl.airtable.com/.attachments/cab26f2c556011ad7f7f49f5ae12acdf/569235a0/zk-manic-icon.png", + logoCdnUrl: "https://dl.airtable.com/.attachments/cab26f2c556011ad7f7f49f5ae12acdf/569235a0/zk-manic-icon.png", + bannerImageLink: + "https://dl.airtable.com/.attachments/10b82eec776c863b53b961de06af10d8/537f0325/zk-manic-banner.png" + }, + { + projectName: "Property Proof ", + tagline: "如何在不洩漏錢包更多資訊(包含錢包地址,所持有的所有NFT,以及該系列NFT持有的細節),去證明你擁有該NFT", + description: + "現今 NFT 的應用廣泛,不論是身分證明或是資產證明都是其中一環,在許多應用的場合下,或許不需要透露太多資訊,而只是需要證明你持有該NFT。例如 在Gamefi的NFT販售場景下, 賣方不想透露過多的資訊給買方,例如持有該系列NFT的數量等等,又或者在身份認證類的 NFT 項目,持有者並不想透露身份資訊,但又必須證明是屬於此身份證明的其中一員。", + ethereumAddress: "0xDa8100177A09FC3CE3655B98bc1434a046AD5B0C", + website: "https://www.youtube.com/watch?v=yX9eMvWf7Mc&list=PLf_RyQYF8N3w2XWq5rroPcF8b1yVQd212&index=9", + thumbnailImageLink: + "https://dl.airtable.com/.attachments/4ad8dfdd5f53812f7faa53d3d8660235/de04430f/NewProject1.jpg", + logoCdnUrl: "https://dl.airtable.com/.attachments/4ad8dfdd5f53812f7faa53d3d8660235/de04430f/NewProject1.jpg", + bannerImageLink: "https://dl.airtable.com/.attachments/d84e7334dfa004df2b82c3c67514f251/04495e75/NewProject.jpg" + }, + { + projectName: "Private Ownership of SBT", + tagline: "具 “持有隱私性” 的SBT方案", + description: + "Soul Bounded Token (SBT) 是 Vitalik 在 Decentralized Society: Finding Web3's Soul 中提到的一個概念,簡言之就是類似一個 ERC721 代幣,但它無法交易(交易後會被燒毀),可以應用在教育、金融、驗證系統中。以教育為例,未來修課後可用 SBT 作為證明,在未來可以利用這個 SBT 來向其他機構驗證。但是 SBT 的其中一個問題是隱私性太低,很容易就洩漏 SBT 與 Address 間的關係,所以我們想利用 ZKP 解決此問題。", + ethereumAddress: "0x5C61CB743bfDcA46E829e3e6f1D3B56Efbb56E20", + website: "https://www.youtube.com/watch?v=CZMWb-3WlTA&list=PLf_RyQYF8N3w2XWq5rroPcF8b1yVQd212&index=4", + thumbnailImageLink: + "https://dl.airtable.com/.attachments/2791b408027438f501c83ef9fdda50c7/7b39e579/925A6BAD-F630-4056-B96A-AB8548FFD9F1.png", + logoCdnUrl: + "https://dl.airtable.com/.attachments/2791b408027438f501c83ef9fdda50c7/7b39e579/925A6BAD-F630-4056-B96A-AB8548FFD9F1.png", + bannerImageLink: + "https://dl.airtable.com/.attachments/f3fcb42ededcb6be4de279284609e95a/66bee568/stsci-01gcvndsa55pfhd0jp3jsekaz1.png" + }, + { + projectName: "ZK-KYC", + tagline: "通過zk-SNARK實現KYC平台", + description: + "建立一個最大的KYC平台,讓合作夥伴(如CEX、dApp)通過我們平台加速KYC流程,提升使用者體驗。使用者只要在我們平台進行完KYC,日後要使用我們合作夥伴平台上的服務時,合作夥伴通過我們平台提供的zk-SNARKs驗證該使用者KYC Level後給予使用者對應的身份,不僅可以縮短合作夥伴驗證KYC的時程,也可以讓使用者能夠更快地體驗合作夥伴所提供的服務。", + ethereumAddress: "0x8569aa5D9632813efd5f5e32c5dd6083F2ecbEB3", + website: "https://www.youtube.com/watch?v=x5e6278rKpI&list=PLf_RyQYF8N3w2XWq5rroPcF8b1yVQd212&index=1", + thumbnailImageLink: "https://dl.airtable.com/.attachments/5f495238857729833d8cdb7525bf0664/8b72b9be/ZK-KYC.png", + logoCdnUrl: "https://dl.airtable.com/.attachments/5f495238857729833d8cdb7525bf0664/8b72b9be/ZK-KYC.png", + bannerImageLink: "https://dl.airtable.com/.attachments/3f242c8e704bc9fc544be44441bc7c06/76521c13.png" + }, + { + projectName: "ZK-Ownable", + tagline: "不公開地址也能證明自己是某個合約的擁有者,只要有 Proof 便能進行 onlyOwner 的操作。", + description: + "目前鏈上常用來做 admin 的合約有兩種,Ownable 或是 AccessControl,兩者因為都會直接曝露 address 而喪失 owner 的隱私。我們希望透過 ZKP 來取代 Ownable 的功能,並結合 Relayer 或是 PaymentMaster 來保護隱私。", + ethereumAddress: "0xD2B567D47f4F997815E6CF33D8cF4344F968b830", + website: "https://www.youtube.com/watch?v=HnXbAFqfNQg&list=PLf_RyQYF8N3w2XWq5rroPcF8b1yVQd212&index=3", + thumbnailImageLink: "https://dl.airtable.com/.attachments/44e482ce082fa689aa2be16c82a18164/53079fd8/p9IU4k5.jpg", + logoCdnUrl: "https://dl.airtable.com/.attachments/44e482ce082fa689aa2be16c82a18164/53079fd8/p9IU4k5.jpg", + bannerImageLink: "https://dl.airtable.com/.attachments/1b76e08e73cb81324a623ea4ad4b1a8b/be41f002/HGdB3h7.png" + }, + { + projectName: "ZK Conditioner", + tagline: "用 ZKP 做匿名且即時的鏈上治理", + description: + "區塊鏈上的合約可以經由代幣質押或註冊後進入會員系統(一個神秘的 merkle tree),並每隔一段時間放出一個訊號去控制/修正治理參數。就像一支冷氣遙控器,房間裡的人都可以按升溫或降溫,如果每個人操作的頻率有限制(比方說十分鐘一次)的話,那麼可以說房間的溫度是眾人的共識(吧?) 舉例:穩定幣專案 MakerDAO 需要靠鏈上投票決定借款利率,治理代幣持有者可以存入 100 MKR 來得到一席資格,每一席一天可以投一次票來讓利息增加或減少 1bp,投票會即時生效,沒有人知道哪些人有投票,投了什麼。", + ethereumAddress: "0xc1F9BB72216E5ecDc97e248F65E14df1fE46600a", + website: "https://www.youtube.com/watch?v=oWryi7fj4m0&list=PLf_RyQYF8N3w2XWq5rroPcF8b1yVQd212&index=2", + thumbnailImageLink: "https://dl.airtable.com/.attachments/50597e6d9f04f05ce963b5912369933d/a512c939/Logo.png", + logoCdnUrl: "https://dl.airtable.com/.attachments/50597e6d9f04f05ce963b5912369933d/a512c939/Logo.png", + bannerImageLink: "https://dl.airtable.com/.attachments/f8475c00d69a3e272324318c2e6191c7/56f15dc3/Cover.png" + }, + { + projectName: "ZK Ownership", + tagline: "運用 ZKP 隱藏合約上的使用者地址,並讓使用者可用同一個私鑰和不同服務互動。", + description: + "使用者地址常會被設定在各個服務的合約上,像是 NFT owner, smart wallet owner & guardian 或是開發者常用的 contract owner,因為地址是透明地被存放合約上,容易被找出關聯性而成為攻擊的目標。此專案讓使用者在鏈下用私鑰計算出 ZKP,再帶入驗證合約後與上述服務互動,從而讓地址不會被明記在合約中,並且看不出各個服務是由同一把私鑰控制。", + ethereumAddress: "0x200153f4D183A95D3fC88e772234a0e7031d9487", + website: "https://www.youtube.com/watch?v=3yuSidzrlf0&list=PLf_RyQYF8N3w2XWq5rroPcF8b1yVQd212&index=10", + thumbnailImageLink: "https://dl.airtable.com/.attachments/bf74c2b7cad2c05d6ea009ad48d68437/0941e32f/Logo.png", + logoCdnUrl: "https://dl.airtable.com/.attachments/bf74c2b7cad2c05d6ea009ad48d68437/0941e32f/Logo.png", + bannerImageLink: "https://dl.airtable.com/.attachments/e9c53c0bba5874181869e315a0bcfb68/1f949074/Banner.png" + }, + + { + projectName: "Anonymous Stand-In", + tagline: "透過建立匿名替身 (Anonymous Stand-In) 來進行如投票等操作.", + description: + "藉由登記替身需要押金, 以及讓 qualified user 提出恰一個登記替身的 zero-knowledge proof , 我們可以建立 qualified user 的一對一匿名替身. 之後用這組匿名替身操作就如同一般的 account, 不再需要 ZKP.", + ethereumAddress: "0x6663bFba582b8A6228c33D4b732502Ce08f6b38C", + website: "https://www.youtube.com/watch?v=-S6gNtPGP6c&list=PLf_RyQYF8N3w2XWq5rroPcF8b1yVQd212&index=8", + thumbnailImageLink: + "https://dl.airtable.com/.attachments/e7c80c0bc05992097f5c5a617e8d88bf/683b9870/AnonymousStandInLogo.png", + logoCdnUrl: + "https://dl.airtable.com/.attachments/e7c80c0bc05992097f5c5a617e8d88bf/683b9870/AnonymousStandInLogo.png", + bannerImageLink: + "https://dl.airtable.com/.attachments/974b03d7a3d8d355ccc997b73c6234f6/2b5dd1e1/AnonymousStandInBanner.png" + }, + { + projectName: "zk-AWOS", + tagline: + "一套自動化的零知識經費核銷系統,廠商不需提交完整的經費核銷證明(營業秘密)資料的同時,能達到自動審查核銷的系統。", + description: + "利用零知識證明技術,並將以往廠商提供的請款資料進行公開與私有的分類,透過政府或投資機構的專案補助計畫合約紙本,列出經費補助條件與限制,利用零知識工具與web3 library,透過鏈上的智能合約進行自動驗證,取得驗證結果,根據驗證結果決定是否該請款單予以核銷放款。", + ethereumAddress: "0x2cbc643ba2263fc2b3ba17eab7cfb93e2f5d9489", + website: "https://www.youtube.com/watch?v=4h0rKBf-lyg&list=PLf_RyQYF8N3w2XWq5rroPcF8b1yVQd212&index=12", + thumbnailImageLink: + "https://dl.airtable.com/.attachments/431a95b97f2edd28502925de41c83f99/e1e15f9f/III_zk-AWOS_icon.png", + logoCdnUrl: "https://dl.airtable.com/.attachments/431a95b97f2edd28502925de41c83f99/e1e15f9f/III_zk-AWOS_icon.png", + bannerImageLink: + "https://dl.airtable.com/.attachments/637437b6a83ff500a2e432db10c08361/75e50bc4/III_zk-AWOS_banner.png" + }, + { + projectName: "ZK Charity Token", + tagline: "Token makes donation easier and with more privacy", + description: + "ZK Charity Token 是一個用於慈善捐款且兼具隱私的token. 用戶購買內含一筆慈善基金的token, 並會在設定條件內定期定額捐款給慈善機構. 用戶在購買token後, 能夠在social media 上顯示出捐款證明. 用戶能夠保留實際捐款金額, 基金總額等資訊的隱私. 只提供用戶希望透露資訊的證明", + ethereumAddress: "0xe79c90cE8c5152338348f50B5873fAf2d0EC88cD", + website: "https://www.youtube.com/watch?v=-CHZW9RBybo&list=PLf_RyQYF8N3w2XWq5rroPcF8b1yVQd212&index=5", + thumbnailImageLink: + "https://dl.airtable.com/.attachments/130229f3a03ab44a07763322932ef2b6/1cd1b978/zkcharitytoken.png", + logoCdnUrl: "https://dl.airtable.com/.attachments/130229f3a03ab44a07763322932ef2b6/1cd1b978/zkcharitytoken.png", + bannerImageLink: + "https://dl.airtable.com/.attachments/7bfa6f3151cbd1c0f99e1bcbcdcaad0b/7ecf8619/zkcharitytokenbanner.png" + }, + { + projectName: "ZKANON (TBD)", + tagline: "Privacy Layer of DAO tools for NFT gated community.", + description: + "Since the rise of PFP projects, many communities have adopted NFT as their membership pass.Existing tools, like snapshot, do not provide privacy respected options for these token-gated communities. This project aims to provide a layer that bridges the NFT communities with the Semaphore protocol and provide privacy-respected DAO tools.Since verifying the ZK proof on the ethereum mainnet could be prohibitively expensive for many users and applications, we plan to separate the contracts on ethereum mainnet and roll up chains.An L1 contract will be deployed to verify the ownership of the NFTs as most of the prominent NFT projects are built on the ethereum mainnet. The L1 contract will also signal the L2 contracts to register and update the Semaphore group.The use of Semaphore protocol instead of building a ZK circuit from scratch will allow the users to access and better integrate or leverage the projects/tools also built on top of the Semaphore protocol.", + ethereumAddress: "0xCacCa9E4A93dfECC4EB172634cB73DA9e0EcEAd7", + website: "https://www.youtube.com/watch?v=4h0rKBf-lyg&list=PLf_RyQYF8N3w2XWq5rroPcF8b1yVQd212&index=13", + thumbnailImageLink: "https://dl.airtable.com/.attachments/7f3a3bb3aaca2dc86ba1a8713b00e99d/c3b1bd75/logozk.png", + logoCdnUrl: "https://dl.airtable.com/.attachments/7f3a3bb3aaca2dc86ba1a8713b00e99d/c3b1bd75/logozk.png", + bannerImageLink: "https://dl.airtable.com/.attachments/32aa0a52453dab3648a6821f4904fe31/516466e1/banner.png" + }, + { + projectName: "BillioMaZK", + tagline: + "建立一個去中心化的資產額證明DID,在不透露自身address與資產分佈的情況下,盤點多個address的資產並提供一個資產總額的證明以供其他服務使用。", + description: + "富比世排行榜會顯示富豪的資產金額與排名,但不會透露他的財務分佈,像是多少存款在什麼銀行、近期投資了什麼等。而我們打算建立一個去中心化的資產額證明DID,User註冊輸入名稱後,提供MetaMask 綁定的 address,會去計算User的資產總額,並以User所填寫的名稱顯示在前端排行榜裡面,此排行榜可以證明此User的財富狀況,並定期做更新。我們也讓User可以生成id commitment來與第三方的服務做驗證來確定User的資產總額。", + ethereumAddress: "0xEbf29A4dc710040B12E68465331F70e42f053d7b", + website: "https://www.youtube.com/watch?v=iiKHAhX_4bg&list=PLf_RyQYF8N3w2XWq5rroPcF8b1yVQd212&index=7", + thumbnailImageLink: + "https://dl.airtable.com/.attachments/a0d5862e620bc55424a93518d330c931/33b4b16b/BillioMaZK_icon.png", + logoCdnUrl: "https://dl.airtable.com/.attachments/a0d5862e620bc55424a93518d330c931/33b4b16b/BillioMaZK_icon.png", + bannerImageLink: + "https://dl.airtable.com/.attachments/2da713079d872ecd716fdb2e16a4c6bd/6d6d60eb/BillioMaZK_project_Banner.png" + }, + { + projectName: "zKarma", + tagline: "吹哨者的安全出口,讓吹哨者可以安全發言的鏈上平台。", + description: + "在 Zkarma 裡面有兩種身份:吹哨者和一般使用者。我們會確保吹哨者的匿名性,讓他可以安心的暢所欲言,同時為了防止大量假帳號的入侵,我們也會要求想要評論文章的一般使用者使用 Interep 或是 BrightID 進行真實身份的驗證。為了避免有心人利用追哨者的身份,在平台上也會根據文章的評論數和按讚數來進行排序。", + ethereumAddress: "0x8865d9736Ad52c6cdBbEA9bCd376108284CFd0e4", + website: "https://www.youtube.com/watch?v=_z1TSCVX6iM&list=PLf_RyQYF8N3w2XWq5rroPcF8b1yVQd212&index=6", + thumbnailImageLink: + "https://dl.airtable.com/.attachments/847517bc0c5b9c1c538c4048f0b56cd7/daab0684/70e538dcde1e4c2c843d318eec8c19c4-08.png", + logoCdnUrl: + "https://dl.airtable.com/.attachments/847517bc0c5b9c1c538c4048f0b56cd7/daab0684/70e538dcde1e4c2c843d318eec8c19c4-08.png", + bannerImageLink: + "https://dl.airtable.com/.attachments/54b1a73d8433ce1fdaf60635025dbba4/7ed0d95f/70e538dcde1e4c2c843d318eec8c19c4-07.png" + } +] + +export const deployedContracts = { + PoseidonT3: "0x2BE63c9Fa837D1E2f31f5878596E1258c683FF05", + PoseidonT4: "0xe392e6C401646746Ac6E676088F1498c0E1cd5b7", + PoseidonT5: "0x5C3EbDf02D7aB7B5aB6AdD2f3E0c4dcd4F39152d", + PoseidonT6: "0x827bfd6bfd690E0Ac2fDaFBDD000302489C8E176", + GrantRoundFactory: "0xb2491007E6Ca5Ca03ed1dc99dF22A459A2Fb133F", + PollFactory: "0x98550A670A5b2b538849548453AC204aB2Ef1305", + MessageAqFactory: "0x98fBbD71dA3ace0Aa67731E58103d112006E8c78", + MessageAqFactoryGrants: "0xb01966f1FE51d3E1740d8c1475A0D0156d74068C", + SimpleHackathon: "0x9800429Ecc5798FF7D8557d42b9d71cc34Ce4680", + VKRegistry: "0x4bB2fa1bF454E9706316d8865401452EdD2066d2", + BaseERC20Token: "0xEac99f7a55bAEF2FF12BC16b9b1AB94F0478F033", + MockVerifier: "0x6a5F5107EbF4C058138D3688630d1A406dC42e04", + PollProcessorAndTallier: "0x2a67B257757Ea4f5658FCE5d8D981639e5C714Df", + QFI: "0x9F4696A093a3850d52c7F1560B9091cB1fD1Be91" +} + +export const coordinatorPubkey = "macipk.ec4173e95d2bf03100f4c694d5c26ba6ab9817c0a5a0df593536a8ee2ec7af04" +export const userWallets = ["0x8fC402C39AA931f5f4FFd804CE85D4CC59899D64"] +export const ProcessVk = new VerifyingKey( + new G1Point(BigInt(0), BigInt(1)), + new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), + new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), + new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), + [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] +) + +export const TallyVk = new VerifyingKey( + new G1Point(BigInt(0), BigInt(1)), + new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), + new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), + new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), + [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] +) + +export const STATE_TREE_DEPTH = 10 +export const STATE_TREE_ARITY = 5 +export const MESSAGE_TREE_ARITY = 5 + +export const treeDepths = { + intStateTreeDepth: 3, + messageTreeDepth: 9, + messageTreeSubDepth: 2, + voteOptionTreeDepth: 3 +} + +export const messageBatchSize = MESSAGE_TREE_ARITY ** treeDepths.messageTreeSubDepth +export const tallyBatchSize = STATE_TREE_ARITY ** treeDepths.intStateTreeDepth + +export const maxValues = { + maxUsers: STATE_TREE_ARITY ** STATE_TREE_DEPTH, + maxMessages: MESSAGE_TREE_ARITY ** treeDepths.messageTreeDepth, + maxVoteOptions: MESSAGE_TREE_ARITY ** treeDepths.voteOptionTreeDepth +} +export const userSignUps = [ + "macipk.7acf52461a12be91c4c7b91b3360b1bf20afd6c174b8c0dba1da0a8f9f68ec2c", + "macipk.e36e2fcbbbc74a6135f33a78a79846ad168839c6c979304ffd8c84fd093a540d", + "macipk.a07761a461759de5c775e522c8922f5ebd536db5a226eb37adbe505576f8a72c", + "macipk.dc8129b005bca2bbffb072c5922388fdac5e56c86865b51410a218e9485b9101", + "macipk.b61e233aa83fbe59e0ee4a3c3ab6e09023bdc8d09f12de01e3f170ac251a1e9e", + "macipk.758df40f69743896c9ae0faaeaabcd695c479598cbd9a6908010e05ccb42e595", + "macipk.82043866260a20de001bdd0d81af1fea7bff3556fee21c61bbf0280747b0dd95", + "macipk.53348b2e8175cbb4e07002fec9bb9133016a4afcbae2bc8026d7f28b9c1d1d15", + "macipk.01b22b51c8c992ca39208bbd93de0278c7e218eea655c370c004fa39f52a479b", + "macipk.e3bdb347f8409cb7f488c193f15464f84f8e37a968b5bc4643df07f17e14f381", + "macipk.dc795fa0d4803cf67acb0c23d4b0e7618307fe682685afcf48735f51c12d93ae", + "macipk.67fd38c9a38c26fa3abc5d0d0cdd8bb7de66369b59501c443b42fd6ff46e6592", + "macipk.fca12aaa0160ca3f643e24bcd18e4045a5821a1d8590a0fb0ab9639dbbda9e03", + "macipk.42aaec7124eb41e18aacc1ad2797bfa683317ea963fd4d44d0116e2811b14316", + "macipk.617f333945f5e101f01d1bad13831493da31b658886be2bc1a9b3dc13c733a21", + "macipk.6e3400cf9c7be9b1020954139e0fe6fbc6f6074c464b8a6d3d5d12025cdfb39a", + "macipk.75f4b6afaff2ba5307c90c1cf5663e642724063a5f7965ae79622acbbe340010", + "macipk.db66a214b936b2fda722b83cba519d2f42dc16bbca759e9cc5a9dcafc6d0f081", + "macipk.cb45e2818af75af5745aa975cadfbc5f54507a39d941a230851439bcc737ea00", + "macipk.71085cef9ab0626004fae20ebbac3453827d9655435c04caf132ceac381f8c0a", + "macipk.12c44c2f34d9cdb0585240b8d6e578f8ade78f8a5548f80c4b3dee3a88bdaf2b", + "macipk.6e352a0b7927b5265af7daa060bf24776b79197e6633dfde65eaebc2c69bc680", + "macipk.81ede7391323bca3a14e1ad283806c5900e2cd9087a35a142faf7da5a8464d0d", + "macipk.4ba4c3cf3d88040f2efdca0fb0e6c95fcfbd3dc516d8531b98816eaa94cbacaa", + "macipk.9ce49ee7692f4de7ab0baeeec6f4655abd491fc25a4fc35af3b7a6a41627fa06", + "macipk.2f0050f87285ebb8e38102a048ef26427f0b2f4a55ef538df73227635c895224", + "macipk.0f8701db018253fb2efe5052df166f43a329285840e68772b8ca872d55f5a612", + "macipk.de7b527af39520e5671f75451edd26112b44ce6e9998d86bfc9a3badfe635913", + "macipk.235774d7642e6b86e74bdbf258c90ffbf00788a68dbddc152956890cc032d620", + "macipk.33d70896110e9a3653b95be1fe28c70b36cd5f76895035eaad8e0530fd85e32a", + "macipk.db44e0322c59a259fe2aedf326eda03048ceec64de4862ede6b73f51270bc517", + "macipk.41113f7412cb3d7c26f8111f7cb2d20e267a5aa5c22b874430df8e446409e0ad", + "macipk.8c98c8bf5521f385d259c261c41dc7cefc59384b8bcfca7ffd8356e8594c0c1f", + "macipk.163c8ebed4d124cfb3100016697809261ecb3142c4e23930667aa961dd635cab", + "macipk.07cce0d773c10a956a93e8687ea6a31530ccc0459f3e623392a3a8481723a49b", + "macipk.ebcaea3da3125e7031552e443b35a70d85f666b5d4c389edca4071379d884030", + "macipk.5c08184f9bc083104ae262a40ca92d4300c76ddb76dfceb61a8f14cfad531f1e", + "macipk.357dc6ad57d2e761a6bd3e4515baeb33e2fb2ac91fa946cd0097f59845d966a7", + "macipk.0a3a28efa8dbea4090e65f65d185536c633db583cc09e034554c3866db3627a9", + "macipk.082cf3b264ce41d79ddfdb0a7f478f8bccd3fd4c82afc57b3fdefa464a0b028b", + "macipk.fa31366dc9971efab18f0dc4467447b4954ed2a23766e17be69ff7a6cef30b95", + "macipk.57cacd7986497d84ae1e40541ba08a89536d4c95082a9500fdd1cb650369e50d", + "macipk.b9075c8568b89ba7da62fb4ebb82104116ba95080a989f2f1346170045137d99", + "macipk.64d364b9ade0161d12fdacb4ca97f58b941c5a85c30156fa7fcb7270ce37f12b", + "macipk.ddda96351a23048a903eed4948c06daaad48c050307a1f405d928dba89515e91", + "macipk.da5ac337489b145230b53a0b8f85683dc95d8795e15f72b9dcd8f53c3035a00a", + "macipk.bf818a92fdb9c2df1d9aa13b18dc1fd8e1785e9c9247b821d43e1fca4535e690", + "macipk.073e833a49fd16655d1d74361e451054193c1cf8ac48e95a5a99a383f0c3699f", + "macipk.c0224a4a604ea2af53bfa1390f247997af8ac8bb80cfdeb053aef953d91a3e81", + "macipk.61afbe134eed69a9d21d7763051ac8a38487501ca370be00af82cff7d76fd588", + "macipk.3c33d6a79c19aa9c000d20806920d6438111660ab2bf8c318568925f171fa311", + "macipk.def7a2915e9d00f28b7343e7ae3c815a6c6ab86efb7fd03198c73f66a86a250e", + "macipk.3a70add1803f41a9dfcdf698dd3d309dbde0796ce9504bf33d25959cd0fe599f", + "macipk.a503c7ebf6174520934c8895c7880f6e88692c52f36dfb4f763b19d611191029", + "macipk.2020318bf6f906fab338c448a1cf96e323ec3ed0fe684dc1bfc7c1631ef43a82", + "macipk.09c708f23c1b43bbf4192ce29fc0bff9ee44f9236811a39dc3a3a1a3c9f82917", + "macipk.63f6cde677a266f077833f0f9b1fce005ae2fbe702b30c98179610599bd7d71f", + "macipk.79eb9b92b0db56b686db6abb95b124461d72c47aead590bb5ec3ebcda15c5d06", + "macipk.8bbeda639fece67c2f1e44e4aa8589082ea69cba662ad2ef6ebe972153825c17", + "macipk.27089e665ce1dc25307ea1515b0df0e366d242073c01399a5483bb0fd04bc0a4", + "macipk.1cfc9dbd0bda14e39ae4ec4d73ea0adcdf071c641dfa8d066718714389020c2a", + "macipk.be9e48ff87ffa77788d8890e6c71253f23b831089a7fc33838d3b6197e0daa2b", + "macipk.1625c10a58d827793a862ad97091e3bd2adddd2c568af7aba0cb263227b1020a", + "macipk.54305870061253c927d1bebb625b3c82021a1643868bad9faaaf693fd6a7d003", + "macipk.425eeea2e6ce0976f337e2dcb33cdba884b2c0476aeae0f8e1d1e88031b5c919", + "macipk.4393255c972acbd28d447a84456b8cc31472de88363df4d99dfd08d95d0f0523", + "macipk.c7d6dd2c3d7a376840e2442035868c87d8a1c09cd792ece55bf2470a4a64cb84", + "macipk.2561f4418077f39856626b1f30da334bf7c73a0df87b82e5e0020624cfa62217", + "macipk.05e76f189495a63b9fe7392918e7a852852bcd454cc4961eaa3506dbf742c809", + "macipk.73bbd1aaf69cf19cf25385c9a6abe01442d6e271495ac504062889513b9e9929", + "macipk.5a36e183de773974a64ed3c935eecc09a863f7fc904b4da85c8b937babfeee14", + "macipk.2344ccae7465f6d3594a55b20840e0597e0f569f5aa56e4689a4fbc4373585a8", + "macipk.a7539236ce77313b21131356c0cc9639dd17c98d7955e0593207d3ac1c0ca517", + "macipk.1bf516c09851ed844986a91a926c39d39d80a483d7d74fb39557e53022252925", + "macipk.a45e15eb8eab66ead65dd9f5009a6ee33f3aa9da5ca33b919b3d5bd62f542f8c", + "macipk.0d04f9c5200b1956a5a9e5d75cf0f8f7e66b28b9409bbf92048db5eb17a8b4a3", + "macipk.ece38d581f326793a7bce2eec54df540d1dc78b424577eabaeeaf19cec1ad22b", + "macipk.81120757d10da64a21c6ab366fac1aabd4b0a27624f7713f80cf7d0117429685", + "macipk.fc85009333c675be35c0fb4724f41cf4d0efa5e95ced2f5497de7d617f39b916", + "macipk.fdd3a330aae8de111b742ab5d2c3b5cd0283162e6ca54f070562dfe9b2fb031e", + "macipk.23cbc42c1116542f48b6d05656300e6b10bbc691c74c28f6b6a9d2438e407911", + "macipk.ffd064427367e91e45149428e8b128038966da3f4c065d1dd2f92d73dd796c8d", + "macipk.9f08b1d6c7a0af1836c880a19e4b68d4cbf00dcdee1e54b94c9d1aa193b5748f", + "macipk.609e655d312864091fc60aa4b80cd7f58e8700be0088716732c6fc7eaaf7e805", + "macipk.cdc9ea12b19ae35186b506241490429d2c443b587418bb6a1d350af1ac50d992", + "macipk.cc2ceefc0d9f92a67b2150868e6ffa9ceb52370acb9083b99b2d517a1b490485", + "macipk.5b32e9f25ba09a8cddc991bf3eeeb261731052f274d1746e7c660c50331ce2a3", + "macipk.42859a7f60bd73e3dcac13e441a9062067d540eba6351186fbdb32fd647f4d25", + "macipk.d4dc8e47d815617cc07d058f8db3d0e75e8c1341124a128385cc2500eb9c0121", + "macipk.cdde3a220539bf8ba3f96160d81f6376487a9dd2574c3e8bb95732b72d2c2f0b", + "macipk.25c38c6d092bce46e45e64a50ea4f477fe147078602115b52bf3a00a89f99f8e", + "macipk.a121e3cc035ab450b5a2a0846b6ed667716f2cd6d95985ecf040fe4d5fb48c81", + "macipk.e345454a6e56266498278dd82a837410eb3558113be42330954da05105ebab8b", + "macipk.f57342e466d9677b6a5a1adb7e89025662064076213f6d9d79101b1369726d95", + "macipk.e1ed56c9f033f5a1490b857456a90f35831f758254ba1abf7438ec8b9252ee04", + "macipk.e5a35b020de252b2cb2c63135f7072080d0c032c51a6f78a4b63e22a378d1ca8", + "macipk.cdf8492034f98faa033889e18edfa638c92e273e01645dac25fa8d2e420bbb14", + "macipk.c5490cd9dc70b3b287d201f5ed306ff69d5983fa03cdb39e3b475718b3c99d2f", + "macipk.c1e776dcde996a78e25a3870133d912550776dee99243e7dc3dd488b1e4e642c", + "macipk.f5ee5b2bb0ea9b8559137e2721f2cbf27ab366b9e14615260ce537a56b85e1ac", + "macipk.b4cce4e36b2b366f88a1e7d79af17c0381f25c79c52dad1d027adf2ae556242c", + "macipk.84564a0333d28e58805f016d02f031328e6ce543310257e56bc969d0e8f3af22", + "macipk.2eb3db017928cd54e43c38cc496b3c9906848498abbbfbf6165d38cdef39da14", + "macipk.14cc13d37d36eb674a9d2f8480fdfe2c7d465f0779003c7f24d7f56535421628", + "macipk.a20e67817fda802842d2e75647e37f7a11b5cf9611dbe89c20c9ad1f7e455206", + "macipk.39cfbd36aebdb8de223401f9d6ea2fdd88456c474c0d5e9306ba17b8c98e961a", + "macipk.de7a2bdfb129716152755b47a66f72a3838e534b3af6cd0bbfc97f6470a89f22", + "macipk.f3894aaf89d6b5aff7ba91dab6c72793142bf6e1783b3b77b71777461b574b2a", + "macipk.5a062998af5507154ab387b5e4fdbd1d4dd9f2deb40715799e8a8bcfde63651d", + "macipk.57584f2b1f6bfb15d9c42a03dc920ef0ea279718ecf6f11d033b88db9d87219d", + "macipk.6b226bb321a2048e1fb69b400dfc2a9113a56331d3f62153d2077a09c589b28a", + "macipk.df016e9bdfba9e7951ed3fd75e8a6a2f774fbd24eb4f809778ee11c2e4371930", + "macipk.5cd9072611ccf6da3f3a244ba84163deeb4917a0cf4d2943a6e1ecf6616edf01", + "macipk.7563a9fa5b666f502d15ac8327e460169846149e9aac2a3402040e53a51231a8", + "macipk.d5c575d11288dd7456a54c03574ab1a5c3eececa19734352c6c770e3c6bde896", + "macipk.3aa7f2f33b2b7cbc25a67418880d6cd4a141ebf7048535f007c490a279e7c02c", + "macipk.d1a9318aa4a0fa9706399d75d12e3333211020fb0699e70baddcf4870acddd05", + "macipk.aab411f64714fcaa2b884651f72e417c01424e210c98772d5f6e607b1be33227", + "macipk.73538ad6ee4cb7121d52e3ce90791fcde82b2eeb6a8abc8388457c351bd48b91", + "macipk.c3232e0df0dbe7ecb8f4c0e09eb1d9da03f0477f47088d78d7364c57ed6ef20e", + "macipk.48bb6e76818793ee53e02653fd2a7f75bb131d1104789c433e43c74f28bb36aa", + "macipk.de657f26b4f03f79c438e8b443f8fa03a3b459904f0e088d5ab998e22eff5f0b", + "macipk.5b1bbea6bf646051a304cbe2b3ffd4e7d439e53f9f78e07530022681dd62c027", + "macipk.6e5e272468f8dfb52a02d08ca41d28f7d18975654d7919d310a9d9687b53b9a7", + "macipk.e1d12535f6eb92c645514d0429090e7558f8cf5a278f025ea28555fa927dcb98", + "macipk.7fcb89a68909f80ae61d106b36a6f154d09511ff362bdd98f32347a694f8b10e", + "macipk.0d008871e4df7297890d490c7a1361a4a248458e0855bc65d5590d767b163919", + "macipk.79d66d1bde82d9a7673c4028119048dd40d9536cba14abd143d93b693e98d304", + "macipk.4ff547d0d8373d3bbaf4b6eba7c3674d23e86e0b25c39d00bac4d2113f95ce0a", + "macipk.758a51f56a3637297703643c11c23bede357a8b6adbff8526a94c273060690ac", + "macipk.c487fee48fa21bb0ccc55ad4d12a69da6e71714a13ac21a9a9c6189829d1fd88", + "macipk.42f76d145a82e413a5a2022187ea68dee674fe59db8bfe38bc255f9781fd8b22", + "macipk.ea829ddade2f9f7aff6916f9ce8d5bb5b16a77ecb2a2fc4510105f7408d3e987", + "macipk.2cf3ffe0f0f5c16fef2d2dec317f7262f97bc989b9352d76122b88bb1bbd2507", + "macipk.a4656008d36cbdaafa884321cfea0bbbdbed4a445d6065e181c8f50492f3e613", + "macipk.bd9d9018e71f8cbfb7bb8e7aed36a7aa7c3a02c25c8f942b0dc5c40e8de28991", + "macipk.d388a224ce8cd1ae8215cb9f88e3ded74002aea596b63efaa7a941458213359c", + "macipk.5f9e4cac8a1ed86a344bd513418b29e74b72f70393021ef3d3aa077f96b78a15", + "macipk.d2f3a16823f5569d0dcb2d8f00b455710a221db00f68645bfee4593912c51e8b", + "macipk.384bb7307827b10376c78a53d31a070e2d8e6202f034507a4e0a2da355e42dac", + "macipk.09e91acf7777d5e335f541cb0db656bdf530a92cfe7f4d22b96850c61b6b7608", + "macipk.07482971b89f082a71418c5ad3654cbb8eba20ab9f00acf84e056c8bfe345794", + "macipk.e85a6fb087badb5e68f2413b06f1583c3c086a388c6cc05aa8e4b5546490d02e", + "macipk.539f0594bec9c82a24df1a464cd24a2bf33f40baadee85e57cf75032d5ad4219", + "macipk.8ae53549b06bdddb199235097908d47e30b0fff9cd2f46956b091b593cbf942a", + "macipk.ab1bb4e779e0cf8cdc8f0b709fb7fa9fa6c5d037a49ad65f0a9bde9618880d0f", + "macipk.6c38ad238ecab62201a0cb0a685fc4dfc4c00fee31386618619de521273f9917", + "macipk.4924231a9c56ddecef18c8f652ccf2233b2047ef4d771c06a6b90717b375bf9b", + "macipk.c722dc9725c6a4332eeacbcb9132366249b04b316e3019280e55c992ffa6b920", + "macipk.ef2b8aaa3e86d8462c5ff35703944afb44f41f0b46ec5437b37462fb6e98b201", + "macipk.5c9d1f229b844f477216417058945befc94ffe51b057f76ed02cead6b4d06218", + "macipk.141e7129e62337a21dded2c9d1a078f75cb10a097fc349236fd77e771719b315", + "macipk.2b37c409322707319ebf77d94bdc5c17f77dc5b43d70327f17ddf1e4baa48007", + "macipk.4acac6c0c20b4a3add03066a2eabe52c9775e859256196c08210031699e91e01", + "macipk.7d67d868d6c991ff025b8d7383cf7b981649669aca036fed65e775b07d7d1783", + "macipk.0bde8fb38e505a191f4c9df28d0bfa2c319fef1f2b07ff3f88f3d772e5bc0914", + "macipk.98b155d3b43e5a63c286309ebb9cf7ebb8fa01ee68dec1ffa647695fce30ed8c", + "macipk.59a7e45bdc828533c56bdacce7e65cb2be4a900f8caea15af7ef2a171c055319", + "macipk.0c92ddaf764cff6210ac31f9ab47cd3bb287b67dfcb1ffa536fc4e4c9e27a69b", + "macipk.0615ef20953e72f318b04d86a4c2563e9b57f76a799d0f70f73b65452b0d461a", + "macipk.616e41f5a5f925890a4c22e57f9cdab04c6217bc56d7b91f31535531e1643426", + "macipk.9f00c78eb7a842cad96a8b3ffa9c1d454500ca66614131f6b66231fe9dd96614", + "macipk.246dcf44f707d9b67a698f9970186425a3d283a99111a90736b787cb3e66fea3", + "macipk.687c55144c25c6cc0432b8e3616d035c1304e2a6b1ce6670389957bb7aec5213", + "macipk.ffc9ccf4f8a85970faaec74ec29fb10c54813218910fc7e541ee2c66f9af8f17", + "macipk.e3596ce2093a06f274e1ef1d9651830fbb167548eef94c700c380b679f49632b", + "macipk.11acd69c82733bd365dba5ee9710515b5eb289411a72ee37e1872b7f1ece1294", + "macipk.cc9892257110b03d14ea838077c2c43dff3ed4551095e3e9ee85f48e942cdf17", + "macipk.87b0fb4ecbec10b18b1a5f4bfbda018074fb3ff76e7caa55ad1e1769870aaa9c", + "macipk.de1b056e8cbed4026744d5aa57062176cb980f70ddbf45214e691ca11b92ec88", + "macipk.35de751d8fbbcc4fcc72a41294f9aff9f443657be724482b8f69b9a45aa5350c", + "macipk.78a856669cab220ed65c85ca45bca785e204557d94caaf8c236f17fb50ee8290", + "macipk.a3eaac07279200ec76b59602a70333c50534d779700e8fb60aea2dcdfb4fed1e", + "macipk.109dfbdace0fdf5b1d5f19aa6613b7692b0eb2b247311ec1b2775d6726963d0e", + "macipk.752d7a8f4aa099f95b8ece92ede006c69e79b04b2252fd2181891ab6e3060c0f", + "macipk.f4f535947468ca481594204759c362cf8cf61065b135684f2b00b6713962bc06", + "macipk.bc0002871c8bd1dcdd5e364d46982f374c55620d922eb6fd35297a958a5c6a24", + "macipk.6ee22be0c94b54fb92197f1d1dd8f6157cdd98450b320fa24e37f7ca83e0282f", + "macipk.dc1234fefb23052e00202e72caaf27ab0ac8372765d95c76718645ef5d1acf12", + "macipk.086bb20b87f46f873b07511b0fbbd63576ab91b5135b48c0dfbd4590ad705e1a", + "macipk.ffaa746127fb254e8b230554a980fc7615e8320a65a8901f3dfc2d4216a9bf88", + "macipk.70a74aa21f31fe94a36a2f418881fd36b2318a9c7dd52b2e706dd79519db2fac", + "macipk.de34010e544f7fffb50cb9f7c641601947e8f866c31cdd3a6891c972b7fe77a8", + "macipk.b9d9cc07984adffb6094bcb59a1ea81c9d6ee9abfe8a7d665b51bc3cafd4a301", + "macipk.fb1e9b76a0c43104a31588fbc2109c13736d4391805194fa28536f187ceb6281", + "macipk.96dee4c12ab9c88227d7d8ff584c62feaa6db0f88fa5a4a4ca576e8a67ffb82a", + "macipk.d5f9cdfbfae667cc861df310fcf90f17d7a7c2d141006eb51ce6c8070871b60f", + "macipk.0269b75dd47ed582db2509306d76dfc1e6651f178bce2bf3e45d86b9b99fb1a4", + "macipk.a59998f1c0da2dad4783a908a4d7dee9d36c3e17c76cf1cc8f79c6dcc2d66186", + "macipk.b4f6fda38d7170c0ec017cfa47f96bc9ff7b50cbf62bf5d5acf43a9df9eb012e", + "macipk.6c20017c6ffa00650ea6c249ee369ecec500698a7af7a3d827267171f4de370e", + "macipk.6ea7150d3e9b8cf6311054b3f9556a11f7ec9f7c4bac1d947d0ed14f56cfd9a3", + "macipk.dedc7028b12e52fa484fecc47427579cb1442e32238c93064c2ba76df5ebeca3", + "macipk.2777944d3743801bcee01c405c0dd5d41b26c6e5fb280816f2f4fe24dcedae0c", + "macipk.ce3bb715f4e9516e3bcf9003ec62914d549798959c8c0f11aa8ca413a9376d2e", + "macipk.11792877102e05adabcae2e57e02733e64c3c5ee2c8e33358650178184a63dae", + "macipk.866224fefde120e0d92c3f2665d53b783e57e38604b359f11ef0af064fa62a13", + "macipk.6fcda486ba62fecd0a43617d67e8250e729d20a128e44f5514082f609a5ac09b", + "macipk.249f9fe08765a321fad66803b1fa2863816dd2cbbda830377133dd5ae0159a2f", + "macipk.d3b28c77a553cb387043cac815b035d76ea32ff7e57c57475304c28ed08dd79d", + "macipk.81ac48216c06c5555b2f97652caebd3cb732ef851ddcb5dae5bd715efec4662e", + "macipk.7fddff872f89a5c07fc2b2e4bf95bd9f38851d2170148ed775d79fa7b776fe04", + "macipk.f2680ffeb29367fbd53a8d93c2f932d0255b2865fa7cb113a9157b707b19d1a2", + "macipk.9cf9600a666b20222be213d01ada56f478171269453a19f5ed7ddf5eb638d99e", + "macipk.98ac6016fb44aadee9400ab935aa85e90e04780876236b6c8b27c9ab3fdf5922", + "macipk.8488e91100510d32c8e89472520afd55a76fa5c2f672d37650ef5aecf727d202", + "macipk.1839b9fd95d17790bd6e8802e1efe762020edf81a45b04e8bf02eb607999d50c", + "macipk.7739dfc4106f120a83172dfc9e8bc622d00f56584db40808018c16ca9b30a208", + "macipk.deeb650ba143ce92e29d75002ed9c9fcc1edfaa68be0e4b1d82b4ee927815b2a", + "macipk.31e3b690500b62a50f6414a7dd62612a9719c35f968d55b296baf477253c42ab", + "macipk.568b87085f29a9c45c2e55438810f54c877795322a8a67e994c531dcda195086", + "macipk.44760887b50a947128d190ddf36009aafde57de85c723a70e64793f5ac7cb5a0", + "macipk.777b14b1e52022e8f3a73ccdb7246f6521abde17625c5a066b215974c55e4007", + "macipk.668cdcbf4369c164bd0813a9008ff0624eb06eedad2c7c8bac1a936bdb36e5a1", + "macipk.9ac08be92a577e973b88227ccf62934204a5daf9ce6bfd4d1440c591fe9140ad", + "macipk.eef7ce2d4fd5a7243163684c6e67e82c762d8aba25c0c2cbd35705a59a2ae394", + "macipk.545df3fb2317630c206d350570ffc67d659fbb65058b6a88f07322fe06ff91a1", + "macipk.17b42bd033b9186a6630f905299e68184e62aac654e031ddc37fa93287746817", + "macipk.36d9b827628b3b7ebf786f2c35f483788ea8a9dd2b09a2c659f585a9cdca2715", + "macipk.9a3ad9e8889aba7e0c085d27ca976a5096eab4663b3f9372b4a489fe0c240195", + "macipk.2927f9bd7eb8c0aabbee7098d0f1bf0e102209c179ba4b29fcfacda52e7813a3", + "macipk.999ef514e3364c0df40e783cf20f9496b1c440bb15eea2c18eb84b059cfe2909", + "macipk.7bda015cc1e5cb9ffd110599903d86ac4bbb1ac34a8eb66a5ed62f1305ec972d", + "macipk.52d74eec161678e0f0700dc709b9a47007c2b949612906342184426a10af320e", + "macipk.08eb5bda816b04c206536cb37f17c8ae40b3bd5c3d06fa1e7514a574e6311a9e", + "macipk.1dea3d6d2c04f5563200cb95ba81305578740a7af95b9648800384685ffca780", + "macipk.ebac1d77711e06ba7a7ffea55e306efa3613fa4043780f63b589a820ce4aba07", + "macipk.4c0d31b087728b71248090e21be4a27db26e40d93184088fee5561272684c912", + "macipk.8f0612d01016034d1b32ba3c67f0122883f856f4386bd8aed2f80ad9d320b095", + "macipk.372f083ed702f9fad73fddb34e10b1bdce2090d7061bf5241d869f3ff9cab188", + "macipk.b9273c4f3092192ba25c8914d50abe1571791603159511ef7000c2309edc4787", + "macipk.f38bf0b70d2ae1367f31f368ded62c5fe7e652fc1f7bba2499e0e59d40fcd81c", + "macipk.2b920ab2e138537725fff6e779d773da7a33d111f5952398a520d0749026ed06", + "macipk.76bf639283d55ff69ec58731bee7440fb8074a2232c511c4041ac892f103a81a", + "macipk.c8a428d0288ed981c581ee1612f66a88429b3857238a4292330e439d7db9c613", + "macipk.c71790af39d6289ceaa337a3ad8536bdb51572368349aad8d7f34fbb592c3b05", + "macipk.f11c6e93bb421eaeb5340758f9961225a42c268b0db1002c580bd97b528f7229", + "macipk.3393f0abcb319eae1e3d2576cadb2c414eafd1a2dd97bcb8adafac75680eef0a", + "macipk.90d3e444cbdc080d358916c6b959a935f80614b7010ee9ceb7d5912216fc3d25", + "macipk.3c3fe09e902d909f78e91a8ee7ec5c6f73dfa20188652732ec4e21e2467e4612", + "macipk.bb74b1ced25d2227d06978fd15a0fbf9b24ffb87883f36dfc560981a5d0fb781", + "macipk.bb311fab73b6e5a2350fea75b3ecb042a465f2d8e4cd5da3ea7f00beb89faf0b", + "macipk.4fd54b186852b3cfc6577ff52eb5ebcca6d001dacf19952501ccffa366cc0194", + "macipk.e66fcb03cc08d5bf854496937f629507a50f335775300b3caf995c4d9f03bf14", + "macipk.48f635daa65158c35691041888cd76ca189d493ebbe6f6fb2e987156c762ca82", + "macipk.5830c976933a42e106762a81d13e7b41960717d087883d898d223b3d9938f5ad", + "macipk.33efe36e03b164ce95c554bcd2d591b7e6783459a0b8a1f4230c030d169de8a1", + "macipk.7f9bb272fcf20d3943e7af9844d404bf2b6f60aafe3c47f129c38f8fc3062e0a", + "macipk.d0d3392619a353f8f43a569e1885a5d81dae4bf779f591507a7e5e5aa2859f2f", + "macipk.cd7bb722e95d120de8795d79474cef9a91074d8101ccc565ed6c47860616098e", + "macipk.67b58de8881d20bf1cc2a4a99ecf0eb727b6905097a928d2fd08c88820cc5c1f", + "macipk.27f5442f4e13c47281cba576d9ea88ed65f2df76dfb7ceac83a8fbba15cba0af", + "macipk.5e62f503e21bea517bebc42da01cdaac538ef10d23aca96ed87f1a75c90a0e83", + "macipk.a1a11fea85cb026600e049c66c65ba7473901b3af9d8cf8901dad245d02e340a", + "macipk.5c13c2f168a28397129b91de14b98131edef5a25da8be88010f98c4b11b86c25", + "macipk.f57ed6048efc562ae47e805498fbe0728afe7943939e531196c14d3d01911521", + "macipk.f2970daa63ada125cf7d07ef184849c4f06d94bb641a9508dad02bb5f71bea2d", + "macipk.5f1b6e79282afbd97bc2fddd5850f11fff9148133c4239115708d68888c8648d", + "macipk.49b6b26efc5a27167e588bc8877738f7f258074314cfda93014ddec4dad90d0c", + // "macipk.182f6fcbe4a9f05719a70611fc6a56cc7c355a58941867a82db8daaf24dfc9a8", + // "macipk.bcf35b509b00d2b575cbc80fe35f72874686b0b1441f3da3d10dcc3507b2f1a3", + // "macipk.e2ba1649334990cfe3f8b64f14ec2b77a2bf95a841d434489e56ef53d0ab4e27", + // "macipk.d41458b4a2d87398f487d1921e97f51e552f5fd5f90d613016b7a4ec2e46c086", + // "macipk.32139696986d3d09cda0a345513121f73849b2f4bcf55ad79cab19a9db0e1a80", + // "macipk.dc7904fef6b2cd2718a51a68620671f02b11211860da8d2ded3a978b38ecff01", + // "macipk.bbb786546f643744d54974412bb4fa42c5a9de36f8716e68e2e843559645c814", + // "macipk.c3582041ad1a4bc1ea5074bd5487c33fe1b24221ca4f395984ce10d6219ee129", + // "macipk.eb6ff83fbc9dccbaa7ebe01fecf8c952b9edaca38a8d9dcc8f6408d20e1e49af", + // "macipk.7a6d58f49e5069772fdba5cfcfe9bfb0c4772d19f8fe8ec9ee871b6296fbf710", + // "macipk.134514a09e444d973b55eb9e46698dc73dda7bf6c383532fdf81d9b48389c68c", + // "macipk.ae015632d129dc5d3c2268beae3d8a41bbf4222c11c46ea4443b888975cfd189", + // "macipk.b6e7c3357a4187fc93bd35fc5d3cfd539f0edda38c3b062fd863817ef7c18985", + // "macipk.9e2c9ee2bce68c29e81237df058b75eaaedc8e77ebbcbfcccfed169a543a36a6", + // "macipk.ede0b9113b94a4351d866d396d79cd4e7f7f75e3ae485b8159fbd0a540e4bd1c", + // "macipk.529577fd6ac888c8553aa82b26e381e9c7e4227056e686042845af8ef2ec01a0", + // "macipk.34719ce4909e08820f7c9dfafdc05409a1c2c87b8fb658b9c622bdb554251897", + // "macipk.b9039a1e724a353cb62ac1584ff739fe6e284b8cbd0267b0ee27bfeb0deb2c0b", + // "macipk.a53a4c223c4256f3267c3eb9f40da8be5964eacadec97a3fcb73f668123cfc92", + // "macipk.ec255bec436b6d4f55a849e9d523446bac3f0ec45aa168247b4287b50824c113", + // "macipk.13350fe542762a3a3f4788557c1e40090679995f892369fe7fbc4ef7e25d8c89", + // "macipk.4ebc84af993eb12fabd20a48e4ad50cf2f61cc86350b01bb6e08154e9e744a2b", + // "macipk.02add540d7f2b2c00d3f88c3267176658add825b835899b2b27dd6b72504461e", + // "macipk.726d90981331e5e5957a9fea81af698738d8a618cdd0bc66273d100a12d3700c", + // "macipk.50d44201fabee868855a5a518461cd09bb8db7bcfe72ec2ad2dbfd72983349aa", + // "macipk.5eb4d79415ea39e7336468616a6800b1613c545270a5151173ee5348f5a06e1d", + // "macipk.8b4ccfbc1d93585afe3a93f0432e05f0d99022de075b9ff3805e5d4215708e20", + // "macipk.8ce2e76513b3f34e23bb533456c498f398a9095b05c7db29c6f91fcc31166804", + // "macipk.cd9164bfed25cc28accdf02f7546feeb56852d257ed1039c7523fd8dd25a8a0c", + // "macipk.feacb113fa981ac2870aca9bd0f514b121f141673dff5bbae06fcdee618d1d16", + // "macipk.d06cb79d6f1d90f0e4037c8699ae0f973e9a2218a47a0bc963ea5957fd44b78b", + // "macipk.26e8812662e413d0e8e9740c4fbda174371ccde7634b20b62d72c630730a3dab", + // "macipk.6c004cbdf9f80e08e0654884053dff09c8b41ebca66ac3d767f967daed5e08a4", + // "macipk.1b28b353b29613a630cb8e0a3206ef5b94acafa3fd830f3f5e76aefe07d81688", + // "macipk.3a516e852bb9449dcd904ce05a10c07cef8d34c2553248431be67a8435b43498", + // "macipk.50c49c407ea9a23f9445b7b9aa93c44c79aee22190c9fb669c1839eb0dd5c42d", + // "macipk.40eb73fb3c9bcfd4c145e13c0c83ee719aef99a190243d15a2006e0c4b4f760a", + // "macipk.8247290f2103529a247454a1af542f973364a47036e287158238dcc6682d6504", + // "macipk.ee4dc692de089a659da48d1bb69e90591e01b0995465dc34250160122877cbaf", + // "macipk.80b85bd48f820601709740f1a89633f365e781e760f177529ef5209e9b1db31c", + // "macipk.bca7089bc3858d1190eaba62e7b40d0cc3507c733416260e561f77591fdd6f2a", + // "macipk.977fbf6812ca88994f4514a74eba071135d44dc93036208c5927ca0f0c1a69a6", + // "macipk.df55b186986c372cbd69257e20ffcc1b8937defc1f261edd9399672f6f67950f", + // "macipk.7fa56de4232b2fb9ac76f4f7cb3615a3f2b8540d470c837b65059f685403d986", + // "macipk.ee7406ce477a023b241f9eec0f502590bcf96654abf5572c26bb009870681127", + // "macipk.7c2e8bb1e68ccbd3b8aa272896de93a6694c6936a8ed71c061bbfe8660cd1fa0", + // "macipk.220d90dafa89f1a1a3052360e84e2ab904ef6c93f26212b46f7db754c2c2f118", + // "macipk.7e1d72ca52d35a09055a556ec2b87b80a4a62f510ac0b96c22142e6501d93a98", + // "macipk.d29114658200f68010a6970b1234dee5b0a0353df803f0c375f914df6d19a60a", + // "macipk.ea5a0b323c49e14bfefd32b3b5a0c2a7f716297b3160c644c7aceec70d22b480", + // "macipk.2d15b2c16d968543f683f8d65886401677ecca37d55857e084a4fcbd1ee36a05", + // "macipk.e3285fb111fbcb7e66b695255ecbc43df2d1007133dbae57be9fbeb0f6f8b918", + // "macipk.cd68f0b48ea9d1329ca06e2651ddb7b34a6d27f9484dba127f66b3053507c494", + // "macipk.7fe59fe404f35a2d829960623af467c209fff36ebf6412d22a8969b92805dc0d", + // "macipk.07b0ca137cb9e24d1943cc2f7cac184e0c74f70d9cd8c13ceec964f31b85d31e", + // "macipk.4e8d70b379d591b82ae9ada34532f44f71c7a8b2de59f3f3a47b7f794b5bc70f", + // "macipk.382b1d228a5d2e73d302ee346b9fd70108ecde7da072942a5dbb5e378bc7098b", + // "macipk.b7c0b4789622f53b0ec9cf470d7ca6a8b4a674e1f9aebf57f3eacf59d77a4329", + // "macipk.c053ad84a22954756fa0a5f44030f55db01d9953bad151fdd7ee9154a35d2b8e", + // "macipk.2e4ee9c5c093d782242f195904bea4d8d3f27fa97451e743557fe957fcd6e817", + // "macipk.6ed32abc252e4b82e9dfb9bbf5695094478d946fba70a65421be7c22eef0812c", + // "macipk.fd9f485a8a3a94853397391736dca1d709ff0823d7294f3620fd199e3729c006", + // "macipk.5775f9545352bdd22db2151ef09f4e4ea277e9010de43bd4249f4a23f7ab67a6", + // "macipk.af3bced2a724c9e9b76c3de01c8711eb1306aebddc89656522088edb2cfbe72d", + // "macipk.2b88dcccb72566929eeb5d0402a48190510e426809e1b4916bfab901dc210d2e", + // "macipk.2ef92f5ac72f7f8c196abb12616950f47bcffb04848093cd39eef7d17b8ff78c", + // "macipk.08322f4f972d9583e550a3f27ae8e849c2ef2550a22c718ee3c3a9b65ab6239b", + // "macipk.7c78bafbcae033067aceef8ecdaeeb91012d9481de292be4bf160af633db0505", + // "macipk.02221b60dd3f58bb4729ce9545eb1e56a37ba6be9fd80c6251319936fd57580f", + // "macipk.049ebcb501119477e0941c5fe7718931dcf164c5219605f18b260ef00280a017", + // "macipk.f1150c3a44b1845d5bda8907167b9c1b35d1a8d02dec18c4d4f7c5491d6f8115", + // "macipk.1452143bcfcee65b505eab6dc49beb5c24141fff74be9dd57130c6596951b917", + // "macipk.1c5f9a1a0b64ea7c7fc0666b4b41c5cac02b684b2aee9822e1e74173ab883c96", + // "macipk.ea1ed29a2a3d149338fcac4584553cb03a5c6f51b3cc3a1e42f82d990b97f112", + // "macipk.15addd7c839351b71b6c7e3a86e8ee6259aaf94cf734fe5dbb6d039a0e6986ae", + // "macipk.181b77224a3f25f1d1591f0f5599ee6e805dbcac5a32289b5f87ea6d4e24c895", + // "macipk.6a3dc2ce5f80b0115d28bebe44d813ee362070e747f30fe9593112bc7010f992", + // "macipk.0677fcf24955e306c73aba37b924cd0eecf97ecc54198759c461ee152e7f6995", + // "macipk.13215b91085547409bc6cead074a3f6a252e0c4ff0147c6a401c08690af11994", + // "macipk.fe3f2637e37648c2da221a38d16c750ed1e8c6309f842787894ae352c9cccd88", + // "macipk.74bfd5fc2cb6c267b5a06e9b5595ad532044c26bac790a48a5e19bd98769c825", + // "macipk.e1fb215e08dbf9ce7b75c4bc9e0479f01df8a46f52733966e01ec5b57106da1f", + // "macipk.420358d69b815f59687de92498e2d91761a3f52b6a610eade290bd06d539f9ab", + // "macipk.84204e3858a0d3c2141f1980d5e5cae8ca0ebe9dddd888834a69354f09efd929", + // "macipk.2b3e802006b6d1407eeeb6a9a03b6dd20ce47bf38966418fa8b94a9504ae9304", + // "macipk.757cec61479ecc0062e621747e2aca43e9eda4cefd704f2662b9d91d2acc4206", + // "macipk.477bfbf3e1d68edd999b490a5b266a06ff63a336aa01fa0f48c906da934c39a2", + // "macipk.889858f98001c83d6a73e9ff30eace43b88b4e6052db7ab77c3a38a7683537a7", + // "macipk.1f0e1c8df662529d702f374bab4957cb9d40ddf5d9757f2119a731b387659aa0", + // "macipk.93bc296b000ebe450bbd9523e423ea1b262d6a0f3bb83833e8cac358fcab7e1e", + // "macipk.87a50c2c5e1542096efff08643e29e9a0a80dae00cab90d4729eec7b64002ea1", + // "macipk.31507cdafa48b5461304d2a704009bfb0b953ff542c90da7ec42b2710a323627", + // "macipk.c67cc7fc493d29d741f50278082e7d2d9a2b869e7772895d8476b155e49f48ac", + // "macipk.12411ef6cc170f58c8d29ab65ed8bd9ce2fcd9a3af459fd4aec8f1a7fd9d002c", + // "macipk.f29886a51a44bc69279f795ded8339b0a1b08a20e40fc3b50e46da54c0903ea9", + // "macipk.d1e5f03f0acac32e950794b389016cd8141637fe71b9126ed1ef438ee4fd1599", + // "macipk.580abf307f9e583d62a719ca9fa4dbd0426d47c5c5b2807d8a11ffb85a09d893", + // "macipk.f2ea6203c222bc89b61fe586c8ad30aba8d8c57270e0f6d5839d78e98f1e96a6", + // "macipk.2bdfc61cbc791bf5caef483af313930885d75c2fe34e8f945042d83213999f91", + // "macipk.90c76c4118df214dde1f5eaa64e27b5def2470fa673cd3302efcca896b415606", + // "macipk.742d49d43c3dd5e660c7a9138a9a52048fdaba023d41eb9bf9014036222cf790", + // "macipk.597be075444c2b61a7c3abceeb5160581a198de9724baf62cb4ae9e7da5ef525", + // "macipk.f089d6fdafc47ec561972dcf7666496dbe77163d5ac5250d2ec24d9a21180580", + // "macipk.3249968b752ce50f16d33d9b65fb85b9e270dd5f34054e7b0f91d81ecb41dd9d", + // "macipk.37894ea00170540f9fb7875e45c2fb3c0c6b2868b697e9fe3f7b169fd3374e30", + // "macipk.2bd6595178a7e77c1b31a340e95b73b8d10dbe4dc2ea3ed5583dbe04c9ca3e8b", + // "macipk.1ab8f587d8510d9793b28ee93c8b14931644b73329204a149a52e68cfe799812", + // "macipk.fd9f483e969b1c680f8e010b87e7ba38b25823a456c3d4fabde99d7aa14cea8c", + // "macipk.d5fc701264f186a8b382bc403ff655e6eb1016e52b74e83e00ed2b736c07cd1f", + // "macipk.501152b9ecb0a4dbef119f1e0f6f1a05c96eae96593519b9872550fc8822f38f", + // "macipk.23c1f867ce23551be56f526f23418e1d28d35925254ddb6fe80fa091b27aae08", + // "macipk.8ae4c45d82caad3f2a514d932696d56f513aec27f49795dc5063b764d01e4aab", + // "macipk.a91540a652a9bc31b64b0150c1f72180c926831b5c3b6eb29a50b1028913171f", + // "macipk.0439ee1aff1824d6e6a7f3d04b7a4bf1950d18d74276637c427ad975ce12e10d", + // "macipk.5605fac571539c82be593a026374ec101db3b8d3c73acbc3f41e53da9611089f", + // "macipk.842be505e87c80fdf040a19c0c22dfc2df14cf2cf6ba5ff118059158c36e0014", + // "macipk.122acf25208f347c58509c8840698176619542b480983d25195a274c3863d81b", + // "macipk.90fc8e6f9f2e705dff213343d91c1ca74587b37bd7a0cdb4c0a6948c801e1f01", + // "macipk.1d6aa0347c737e26956ee8e5bf71e9bf39cf835c5757e52d5809dac157895123", + // "macipk.0b6ca730cf637f5dd880de5039efa3f1fb021265751adc5aca0579872de8de10", + // "macipk.25989d5f76a1a6982653f8a35bd4e3ea8d534d2b5775f05aa8e03f2bd223c22f", + // "macipk.f3979b9db7dc69ad9703c6fb4b52f1a0157e19e90efd514ea63c8b6a9af6188d", + // "macipk.099d55d88779c24c390366b484db2f4dc70cce4e60ac2c24a209de71fc77ee97", + // "macipk.5bf123a0933658ca649ae5893b04fc7fea97b34602db8942529c45f1a935c19d", + // "macipk.2bf56b37997664c5bda0cc1fa70e893c715412531e992cbd0d394595cf85098a", + // "macipk.813276b42deef978bfea6bb38b0bb85384c6f9122a9607b1f0f5d699427b8025", + // "macipk.71f4a761f2be80b86c805a1295832efb0f936f31ccee58d8b71c67be5b795381", + // "macipk.4d166879cd224b418acd721e6c0baf4620ec7285c1810c52634bca99fdc12f2c", + // "macipk.e130ce23608f5446c4427bf3dc4b1c2bf334581069575ebda71f3e777b5acf08", + // "macipk.3ea6584ae41c9059b55ab0e918fbf594c368ec35855eb18ab91b948ce9365f2b", + // "macipk.29fce56567dcb415be460bdf8708d35ef2ae97a7398d82d687da96af59b903aa", + // "macipk.02bf71666c299de6702c8e31f032334800a4426468c6c281e47e59c5a650a52f", + // "macipk.d45de057e7f64b9d803da256dc8f637833cca55e4aa3ee3ca5d15f27e8f5e21e", + // "macipk.bc9634a0e8f396aab35578c88db294acab9abc66cd37aadd72277f26946ffe16", + // "macipk.8068a5e5d9bece5070fd0deff7573aa7787517e59ec1c9bc1ce727c733739e80", + // "macipk.80f2c46d8770747449eaeeb1fc069dfafdb1f371c19b75928aecda804f7e319d", + // "macipk.e9330e6c81f9f89a2f772c3aa10279c6928f25575389ff92ba1bbf76e2faaa89", + // "macipk.fa73d02a88ef768cc9190261941dfd6a38c74b2f5c44caafbbf85a435569aa17", + // "macipk.53fc2bb3c328e7505a12f6a91e877b82ea1f49c8ceba403d22587666a7a0441b", + // "macipk.0960258e2fdca908dc7e48a3a8bb514fd0189d627a8fe35f1d372c6101abda0f", + // "macipk.57f70f06d46a2838a61a3ec257ea489744c11e781d06a8c2fa22489f86f68d1b", + // "macipk.82a6a1ea15082fe9f2d43919eb84209474ae472d4907b131a8ca7f60c11e3530", + // "macipk.dc86475d157b28808376d684eb48032f2059ef9c9fb8bfa6674c2de34369d78b", + // "macipk.1179044bd532977d53cbd2e3c4e2c6fb914e86167885aa104a11d6787e77919a", + // "macipk.db9128d70db863087729e86a6bd989f02e99807a02ae51c644cbdbee434e540f", + // "macipk.cea7cf9d88d0ee5dc81928d7691c1f9e4abb8101567984a3f6864962dcaf44ad", + // "macipk.46a9b1e745a0524a3926e8b8f6ca83c63a59bed9422835ec99a9033541a21396", + // "macipk.9032b1988e30168e896de8a87fb92c726389146320d23fa80cfb59773b5e5b89", + // "macipk.0d57122bc5014662223c571d1416459c3ca56fd5b417314bd0002ca5f78fdb9f", + // "macipk.ebbb6f8969cd972dbe699f51468a6553f658bd3b48e8f61de459eb2a73bab398", + // "macipk.51384da81587151443af6d53caed15476384560699690cef626759da13d87505", + // "macipk.6a9b6b6fe073ea26235565f6d00a21a925809020ad6cae0254b8fab30196f7a5", + // "macipk.907023c8eeab2f15bfb25cce848a7a657583f4bccbf4b8b83ba9b4eae1a94b13", + // "macipk.df6e1f4ef468ec758a0bcd1579b625aa9a54e7a9aae33f1af9b730655e6c161f", + // "macipk.6e1003af00159b25b71dae9d9a9b540293b8e6a43afb07aee236ff2275af350a", + // "macipk.ebcdd0dc02e001760f580d0f084c40d26891fb3646f9ee45716955eea011cfa6", + // "macipk.ce4f3c82458b48a77f38161900b53bc720beb5efcbba4779863a2bfae577c607", + // "macipk.cc34c0a029c7886ac8a2e44ce997e59e4f3624d6aed047a912fdd85dc4dd9f22", + // "macipk.580c48c43668a478f99d2df51103af1f8ebab82e4ea877754b07846e902af4a4", + // "macipk.bcdde3df17ead45a179899299aa29c7dc140baface632132849b31e48781d885", + // "macipk.70674a9bae521fbfd90d369efdcb1463d5c33fc034ee7f0a1a6ecd532937922d", + // "macipk.1ee7c714c77af67e6af8ff4bf6d7bf6b5f4f95f92958ca53fad07741689c8a8e", + // "macipk.8ce8eb1057e04a9b2432f9aa9dba86ff2bf1d09d1ecc73269c1e757f4569b22e", + // "macipk.143fb923012341c8017aa814ca4104d0d132c4e5e9253ca04e5a8023b60d6003", + // "macipk.4e1016e7fe1115a0e0cba4015fd68ba8dad28f84d4ed554b0010f5b775ff2405", + // "macipk.03897bb26e410a94083c274d749cc3d05422f6d1fee5c0b6dd3f34edf9cbd72a", + // "macipk.86c615de323f733c9da87044467f89899a2c65e206f269c892139f7af1e8c320", + // "macipk.ee7225099b1108368da440a75f4c1b0ec6548e77076241f242760275c0759727", + // "macipk.b9c09207bda255a5d889bdd482dc98b0f14801bcec2843575a5a0665d79960a2", + // "macipk.307eaae8e838e5d20b95d88b90c7410d098a5bd7b2e3b245f897aab11162a2ac", + // "macipk.4cd8ab02a56fd1929c02cd81ff391fb987ceab6b61be1234c6abf8c123e2d714", + // "macipk.aaa914a707e04a5b1dd45b4d615650b450c185290031074a5a074b94f4372ca2", + // "macipk.f82fbe9d8da6281b31b9c4ae1b820ad71782f02d15d22a0df1092b7c0714b025", + // "macipk.9320be0b5238a039d5aa9a7d0b386c9f48fdda57443043aed01577bf67247d2c", + // "macipk.3fc0c7eb1a4a97fe814668e028ae5c61c8e28e22c1e5682a66d8f07be07639a9", + // "macipk.52fea1d4463467c08013e74a137d6f98e0392dad6aec5f123d337da31e9e3c99", + // "macipk.956dd5d67e55fb42b68db951f472834ad058fd3d3966747a0f8d2d2ec3541e0d", + // "macipk.6d8ae9275cc1cc113e0bca103f56803013bb74b6b73d17393ef84c0e67ed2899", + // "macipk.11ce8c8a31a4b334f6f63fa84ae32705e36e49b5ce778cafcce403adff40a1ad", + // "macipk.ff11409ed2e5301ea3319383284003685d23c1ce07c12b95e5db69e5adf5eba6", + // "macipk.7a50b7388994a9d0ec0232918c22cb87160a3381a3d68e156d898854e7fb0da4", + // "macipk.d5067da46396aa242e4cd7bcc8f4f9060104acf9a5e2e37383c2d2b73edfe898", + // "macipk.ebd34c547cf9c8d48cf730ba9280af55f91a4338cd6b0054ec6c3bab86341185", + // "macipk.78af7766df0c44b329171957603673984748b0587b9bedcb802e374bd3f8fa08", + // "macipk.72e5d8463b0c1846e88f20bcfe09f03d06f0a2579a9cc053f29e5231b8ad86a9", + // "macipk.ab03322d86d2c27cd43d021f799b085ca500165495e272cb08ecbbecf446c522", + // "macipk.b95aded8d20fcf8b871501661554600df94042b36725a88654edecb72786fe22", + // "macipk.fd45c797cc5b02e8b64a50c284e8048c106097a382d5394b18ce8aa555131420", + // "macipk.5c0429983179d81b96e4c08e9316a63a0fd31f59d35ca4368a9a139a2b71f729", + // "macipk.9afed85c98d42f8a9cb4a9d3502e4ad1f1d621c68ad1b61d55c8a2fb43db03a1", + // "macipk.aca5e9bb547d629aed698e4904b840a8a0ba62e438d1788ff31d781c16978715", + // "macipk.9ad592c2c402757c70ad3c26255ce7c4fc67407ec28a5b333b50d112dbf5ae24", + // "macipk.a304bbdec849a23b4aca6a5fb72437e45288b901f68f3b69fa4cfe76f5ff3312", + // "macipk.96baba87d724d8f82cb3c78edeba6f69c78db96ab0a00993e4982462a785a091", + // "macipk.b48fe15dd3db04c3ff3bc6cc01196d51cd26982f26c9d3c3096fcb16d05f3d83", + // "macipk.aaf636248f6b6dba1ae66cf5cc6ddb3eb7ae9b1214ba00747fe3f2fc6559aa08", + // "macipk.321a29c49250caa356aa10237984d56973df2897dcb438527d21462eb76de6a5", + // "macipk.0365d6b8f50652d7b7ed8e644b8725362e9be5d8735cfa8a1c4879a6cc5236a4", + // "macipk.0bbb3d4049e1e9c095fba7800c4ab8d68858bd4b6cf9eb15de42a7a1a554908b", + // "macipk.ccc98c0a75fbdf61115e75ab18a12f3cd079b4d027750d7121b79f0f36383e06", + // "macipk.87a964965cd8b0180d2b517280caf367d59253268c149cb13d17e45b47d3c79b", + // "macipk.be8f31325d7e72e2db5ea038c910e7eb05007271f36ef02087dc771699c7dea4", + // "macipk.95c195600fb97512d83e723dc41d15201105b7d3a87dbe4cd284ab7c2c4e828b", + // "macipk.359eeaefe98762df998938e220c008218b06190070f63e1666d8e9c738d081a3", + // "macipk.c33a36bcba82376233d29c4f52b0e2e2076c5ac6eb2bfd08d1c293a87a3bc79e", + // "macipk.d6a10d6ab869e87bba5e59d947008349f65631b1d05481799ccf3e8d460ed09b", + // "macipk.c44bc5d05169531647168d0073ea4878ba80d072e8a39a7f25a716d1d2c35aaf", + // "macipk.612dc246e00d13eace08043a0f0dc9a42a6d6b8ab689cbe44b3e05599cc47380", + // "macipk.1798208ab696f8eb321ea8785f71fdb484625711016c0f068c51f814998f9f1b", + // "macipk.03fdc3d86494bd006e496173cf4ff1c5ca707188e43ecdf46763a6296f0a1f9d", + // "macipk.f463deced904a46248bc33e925a7692531040adec91daf979180fec2a0e4cb17", + // "macipk.a25baee2c05279973dd82e21b2776f4781518f4dc5623ad59900bd972bdafe83", + // "macipk.43da83942a1cb935dc679d80ca53b2651427a595a1ae2f87afe702891df18809", + // "macipk.82830b5a5e131a3d15202a2e4235b4282306420035eb9b4d40451af8c1c50094", + // "macipk.bdf59e6c919ed2fe03ab3f4b6ede4a83f54bc92ba9484373779203375908e09a", + // "macipk.c1eb2d9b0c3a293b64d0eb3e3d8d07fbd1acbd43e98631a8c99a8ae156ae0995", + // "macipk.6a02a18283150f0b6cc9022c30013bccc5a658e97dc667f54c53e1d079eab6a8", + // "macipk.317cbb8c285a2df2284a9a69c87f72d9831346bdc6f049f7633ad8fe6bc5efa1", + // "macipk.b8b4c027d460e0f624c87a7aa7798784f12c437b7252661e4d11e95909117608", + // "macipk.87cdc9f8eb2fd84b4fb09d12748d7bbd35724ebfdc63b441d4fa9a24cd732388", + // "macipk.e758c741481b1340b9b6c7aaa29e868fe96d5b297345569209a6eff68b25269d", + // "macipk.26d8e66dd3c58387c6f1da42681f7a2bea79cd3a613076da0a555ba9c3120e1f", + // "macipk.fe3fbf12c8f7553c555e1d5ce2e0e5d935d34963094b7770eef819ecf494a194", + // "macipk.f94c29f0d6b8c5dacef4c555b6cbf0500c1907dc39878ec186d9a631a5e1858f", + // "macipk.f49528941d93b9f61cfb216e0e15a57e916417a4c41b885fee8c97d1f3e93a03", + // "macipk.ce5fa1d65eda098fa72e046a095aa0d8e171e1d0573e0883670efe31e1988aa0", + // "macipk.d23ee2bf95779d97987bf680fe859c0861036229d8313b3dab697caf2943782c", + // "macipk.23b1123d126d95323a5113853237fc32c710b66a2eb7a367844d4c7d2e49ba13", + // "macipk.4ba35bf40693b7a12eb765f27c00ff5eb14ad9604ebe0a757d372e0ee10e9196", + // "macipk.f91718b07508e6111b8b41644e2ebb1ce544c007c9051345a6ea863f43f264a3", + // "macipk.c5d92a2af0a39934f7565c2793c0cb5b14b3765bc7f405f8df8ff1b7521f600d", + // "macipk.53eda4e2be3029191e1b426c9c7a4ff744814c7b217aded353f51c900170fe86", + // "macipk.22363eab958d557dd884eddf47003b1ef60a90a4e0cc19c0d95950d779d6729d", + // "macipk.17f4889451d7c17face9c74e6d244063eaae1ebd1963e4bffbc302a71504cd8e", + // "macipk.68a52df67e0131f3da20cef9ae3eac38e959019457330778ac7b871ed9db2d9b", + // "macipk.ba178d4617f890fb14d16e090fe7980c3b56b8011efbe8efb1dcbc19ad97ec9f", + // "macipk.b316d0e82f08f9f7de1ebd71e7eeab6d123f6a9bbcb5cfb78b968345a7603c84", + // "macipk.5e14b5c7ff7c3050cc40e4f93c063df53e80182b25c168d083ccd986e699fd09", + // "macipk.e39ecf9348e81b7af25e6f20d5e9b796ad32119f6948e721651243855c41d9ae", + // "macipk.ad1ea8383d6b61c6e4e3a5017e9990bd95b7da75d0dcbc1966607cad80774625", + // "macipk.81f1a37132de3a1da6bdc0ce11c966697491faf6b895dccdabde633489b71817" +] diff --git a/packages/cli/src/lib/files.ts b/packages/cli/src/lib/files.ts new file mode 100644 index 00000000..78e3d620 --- /dev/null +++ b/packages/cli/src/lib/files.ts @@ -0,0 +1,98 @@ +import { fileURLToPath } from "url" +import fs from "fs" +import path from "path" +import csv from "csvtojson" +import { Converter } from "csvtojson/v2/Converter" +import { parse } from "json2csv" + +/** + * Create a new empty directory. + * @param dirPath - the path where the directory must be created. + * @returns + */ +export const makeDir = (dirPath: string) => fs.mkdirSync(dirPath) + +/** + * Check a directory path + * @param filePath - the absolute or relative path. + * @returns true if the path exists, otherwise false. + */ +export const directoryExists = (filePath: string): boolean => fs.existsSync(filePath) + +/** + * Clean a directory specified at a given path. + * @param dirPath - the directory path. + */ +export const cleanDir = (dirPath: string): void => { + fs.rmSync(dirPath, { recursive: true, force: true }) + fs.mkdirSync(dirPath) +} + +/** + * Read a file at given path. + * @param filePath - the absolute or relative path. + * @returns + */ +export const readFileSync = (filePath: string): string => fs.readFileSync(filePath).toString() + +/** + * Read a file at given path. + * @param filePath - the absolute or relative path. + * @param content - the data to be stored. + * @returns + */ +export const writeFileSync = (filePath: string, content: any) => { + fs.writeFileSync(filePath, content) +} + +/** + * Read and return an object of a local JSON file located at a specific path. + * @param filePath - the absolute or relative path. + * @returns + */ +export const readJSONFile = (filePath: string): any => JSON.parse(readFileSync(filePath)) + +/** + * Read a local .json file at a given path. + * @param filePath + * @returns + */ +export const readLocalJsonFile = (filePath: string): any => { + const filename = fileURLToPath(import.meta.url) + const dirname = path.dirname(filename) + + return readJSONFile(path.join(dirname, filePath)) +} + +/** + * Write data a local .json file at a given path. + * @param filePath + * @param data + */ +export const writeLocalJsonFile = (filePath: string, data: JSON) => { + fs.writeFileSync(filePath, JSON.stringify(data), "utf-8") +} + +/** + * Parse a CSV file and returns an array JSON representation. + * @param filePath + * @returns Promise + */ +export const getCSVFileRecords = async (filePath: string): Promise => { + if (!directoryExists(filePath)) throw new Error(`Oops, looks like that the provided CSV file path does not exist!`) + return csv().fromFile(filePath) +} + +/** + * Create a new CSV file from a list of JSON objects. + * @param filePath - the path where the csv file will be stored. + * @param fields > - the fields of each CSV row. + * @param data > - the input data. + */ +export const jsonToCsv = (filePath: string, fields: Array, data: Array) => { + // Parse to CSV. + const csvData = parse(data, { fields }) + + // Create the file. + writeFileSync(`${filePath}.csv`, csvData) +} diff --git a/packages/cli/src/lib/keypair.ts b/packages/cli/src/lib/keypair.ts new file mode 100644 index 00000000..7654230a --- /dev/null +++ b/packages/cli/src/lib/keypair.ts @@ -0,0 +1,41 @@ +import { Wallet, utils } from "ethers" +import { Keypair as MaciKeyPair } from "@qfi/macisdk" +import { EthKeyPair, KeyPair } from "../../types/index.js" + +/** + * Generate a new Ethereum keypair. + * @returns + */ +export const generateEthereumKeyPair = (): EthKeyPair => { + // Generate a new Ethereum wallet. + const wallet = Wallet.fromMnemonic(utils.entropyToMnemonic(utils.randomBytes(32))) + + // Extract keys and mnemonic. + const { address, privateKey, publicKey } = wallet + const mnemonic = wallet.mnemonic.phrase + + return { + address, + mnemonic, + privateKey, + publicKey + } +} + +/** + * Generate a new MACI keypair. + * @returns + */ +export const generateMaciKeyPair = (): KeyPair => { + // Generate a new Ethereum wallet. + const wallet = new MaciKeyPair() + + // Extract keys. + const privateKey = wallet.privKey.serialize() + const publicKey = wallet.pubKey.serialize() + + return { + privateKey, + publicKey + } +} diff --git a/packages/cli/src/lib/prompts.ts b/packages/cli/src/lib/prompts.ts new file mode 100644 index 00000000..254c23db --- /dev/null +++ b/packages/cli/src/lib/prompts.ts @@ -0,0 +1,31 @@ +import ora, { Ora } from "ora" +import prompts, { Answers } from "prompts" + +/** + * Show a binary question with custom options for confirmation purposes. + * @param question - the question to be answered. + * @param active - the active option (= yes). + * @param inactive - the inactive option (= no). + * @returns >> + */ +export const askForConfirmation = async (question: string, active = "yes", inactive = "no"): Promise> => + prompts({ + type: "toggle", + name: "confirmation", + message: question, + initial: false, + active, + inactive + }) + +/** + * Return a custom spinner. + * @param text - the text that should be displayed as spinner status. + * @param spinnerLogo - the logo. + * @returns - a new Ora custom spinner. + */ +export const customSpinner = (text: string, spinnerLogo: any): Ora => + ora({ + text, + spinner: spinnerLogo + }) diff --git a/packages/cli/src/lib/qrcode.ts b/packages/cli/src/lib/qrcode.ts new file mode 100644 index 00000000..56040d8c --- /dev/null +++ b/packages/cli/src/lib/qrcode.ts @@ -0,0 +1,18 @@ +import QRCode from "qrcode" +import { QRCodeFileType } from "../../types/index.js" + +/** + * + * @param filePath - the path of the file where the QR Code will be stored. + * @param key - the key to be converted to a QR Code. + * @param type - the different type of files where is possible to store the QR Code. + */ +// eslint-disable-next-line arrow-body-style +export default (filePath: string, key: string, type: QRCodeFileType): Promise => { + // NOTE: return Promise to close loose threads. + return QRCode.toFile(`${filePath}.${type}`, key, { + type, + // 'H' can resist the damage to symbol by ~30%. + errorCorrectionLevel: "H" + }) +} diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json new file mode 100644 index 00000000..f62fbbc5 --- /dev/null +++ b/packages/cli/tsconfig.json @@ -0,0 +1,32 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "strict": false, + "target": "ES5", + "module": "esnext", + "moduleResolution": "node", + "esModuleInterop": true, + "resolveJsonModule": true, + "preserveConstEnums": true, + "skipLibCheck": true, + "declaration": true, + "allowSyntheticDefaultImports": true, + "typeRoots": ["node_modules/@types", "types"], + "noImplicitReturns": true, + "noUnusedLocals": false, + "sourceMap": true, + "outDir": "dist/", + "declarationDir": "dist/types", + "paths": { + "@qfi/contracts": ["@qfi/contracts"] + } + }, + "ts-node": { + "compilerOptions": { + "target": "esnext", + "module": "commonjs" + } + }, + "include": ["src/**/*", "types/**/*", "*.json"], + "exclude": ["node_modules", "tsconfig.json"] +} diff --git a/packages/cli/types/index.ts b/packages/cli/types/index.ts new file mode 100644 index 00000000..564fae98 --- /dev/null +++ b/packages/cli/types/index.ts @@ -0,0 +1,46 @@ +import { ethers } from "ethers" + +export type EthKeyPair = { + privateKey: string + publicKey: string + address: string + mnemonic: string +} + +export type KeyPair = { + privateKey: string + publicKey: string +} + +export enum QRCodeFileType { + PNG = "png", + SVG = "svg", + UTF8 = "utf8" +} + +export type UserConnectedToNetwork = { + provider: ethers.providers.JsonRpcProvider + wallet: ethers.Wallet +} + +export type Network = { + name: string + rpcUrl: string + chainId: number +} + +export type Recipient = { + projectName: string + tagline: string + description: string + ethereumAddress: string + website: string + bannerImageLink: string + thumbnailImageLink: string + logoCdnUrl: string +} + +export type UserSignupData = { + ethereumAddress: string + maciPK: string +} diff --git a/packages/contracts/.eslintrc.json b/packages/contracts/.eslintrc.json index 23aebc57..de8724f9 100644 --- a/packages/contracts/.eslintrc.json +++ b/packages/contracts/.eslintrc.json @@ -1,21 +1,47 @@ { - "env": { - "browser": true, - "es2021": true - }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended" + "root": true, + "env": { + "es6": true + }, + "extends": ["eslint:recommended"], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 6, + "project": ["./tsconfig.json"] + }, + "plugins": ["@typescript-eslint"], + "rules": { + "no-console": [ + "warn", + { + "allow": ["info", "warn", "error"] + } ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 13 - }, - "plugins": [ - "@typescript-eslint" - ], - "rules": { - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-unused-vars": "off" - } + "no-restricted-syntax": "off", + "no-underscore-dangle": "off", + "no-param-reassign": "off", + "no-await-in-loop": "off", + "import/no-cycle": "off", + "import/extensions": "off", + "no-bitwise": "off", + "class-methods-use-this": "warn", + "no-useless-escape": "warn", + "no-undef": "warn", + "no-unused-vars": "warn", + "prefer-regex-literals": "warn", + "import/no-extraneous-dependencies": "off", + "import/no-relative-packages": "off", + "@typescript-eslint/no-loop-func": "off", + "@typescript-eslint/no-shadow": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/lines-between-class-members": "off", + "@typescript-eslint/naming-convention": [ + "error", + { + "selector": "variable", + "format": ["camelCase", "PascalCase", "UPPER_CASE", "snake_case"], + "leadingUnderscore": "allow" + } + ] + } } diff --git a/packages/contracts/.lintstagedrc b/packages/contracts/.lintstagedrc deleted file mode 100644 index adcde4c1..00000000 --- a/packages/contracts/.lintstagedrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "*.sol": "solhint --fix", - "*.ts": "eslint --fix" -} diff --git a/packages/contracts/.prettierrc b/packages/contracts/.prettierrc new file mode 100644 index 00000000..8a1bed8d --- /dev/null +++ b/packages/contracts/.prettierrc @@ -0,0 +1,5 @@ +{ + "tabWidth": 2, + "useTabs": false, + "printWidth": 150, +} diff --git a/packages/contracts/.solhint.json b/packages/contracts/.solhint.json index c7cdcffa..f26c9011 100644 --- a/packages/contracts/.solhint.json +++ b/packages/contracts/.solhint.json @@ -3,7 +3,7 @@ "rules": { "compiler-version": ["error", "^0.8.1"], "not-rely-on-time": "off", - "quotes": ["warn", "single"], + "quotes": ["warn", "double"], "reason-string": ["warn", { "maxLength": 64 }], "max-states-count": ["warn", 18], "check-send-result": "off", diff --git a/packages/contracts/CHANGELOG.md b/packages/contracts/CHANGELOG.md new file mode 100644 index 00000000..eb35bb67 --- /dev/null +++ b/packages/contracts/CHANGELOG.md @@ -0,0 +1,177 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [2.1.0](https://github.com/quadratic-funding/qfi/compare/v2.0.1...v2.1.0) (2022-07-08) + + +### Features + +* **ethbarcelona: cli easy setup:** change max projects ([9a88f84](https://github.com/quadratic-funding/qfi/commit/9a88f843f621ac6e83ded42dc64a7059b51ecc7b)) + + + + + +# [2.0.0](https://github.com/quadratic-funding/qfi/compare/v1.5.0...v2.0.0) (2022-06-29) + + +### Features + +* **ethbarcelona cli:** configure cli for eth barcelona: polygon support ([5c87081](https://github.com/quadratic-funding/qfi/commit/5c8708192f0ab5615d8a2c909917e4a9a73d4df9)) +* **polygon support:** gas price tweaks, eject csv of public keys on key gen ([0ff3ab0](https://github.com/quadratic-funding/qfi/commit/0ff3ab0526069b21e808d73239c0d1c19d706826)) + + + + + +# [1.6.0](https://github.com/quadratic-funding/qfi/compare/v1.5.0...v1.6.0) (2022-06-29) + + +### Features + +* **ethbarcelona cli:** configure cli for eth barcelona: polygon support ([5c87081](https://github.com/quadratic-funding/qfi/commit/5c8708192f0ab5615d8a2c909917e4a9a73d4df9)) +* **polygon support:** gas price tweaks, eject csv of public keys on key gen ([0ff3ab0](https://github.com/quadratic-funding/qfi/commit/0ff3ab0526069b21e808d73239c0d1c19d706826)) + + + + + +# [1.5.0](https://github.com/quadratic-funding/qfi/compare/v1.4.1...v1.5.0) (2022-06-11) + +**Note:** Version bump only for package @qfi/contracts + + + + + +# [1.4.0](https://github.com/quadratic-funding/qfi/compare/v1.3.0...v1.4.0) (2022-06-11) + +**Note:** Version bump only for package @qfi/contracts + + + + + +# [1.1.0](https://github.com/quadratic-funding/qfi/compare/v1.0.1...v1.1.0) (2022-06-10) + + +### Features + +* **cli:** dothething command to batch all the other commands ([0254747](https://github.com/quadratic-funding/qfi/commit/0254747fdc6da224300986d476a855ab289f65b1)) + + + + + +# [1.0.0](https://github.com/quadratic-funding/qfi/compare/v0.3.3...v1.0.0) (2022-06-09) + +**Note:** Version bump only for package @qfi/contracts + + + + + +## [0.3.3](https://github.com/quadratic-funding/qfi/compare/v0.3.2...v0.3.3) (2022-06-09) + +**Note:** Version bump only for package @qfi/contracts + + + + + +## [0.3.1](https://github.com/quadratic-funding/qfi/compare/v0.2.2...v0.3.1) (2022-06-09) + + +### Bug Fixes + +* wrong controller parameter value passed to SimpleRecipientRegistry constructor ([26c8c11](https://github.com/quadratic-funding/qfi/commit/26c8c119245ed5298c59c58eadd6d682d1e9f32d)) + + +### Features + +* **cli:** crate prague erc20, mint with 18 decimals ([dc40032](https://github.com/quadratic-funding/qfi/commit/dc40032fba08832b35bb5ce4862bd77952908e00)) + + + + + +# [0.3.0](https://github.com/quadratic-funding/qfi/compare/v0.2.2...v0.3.0) (2022-06-08) + +**Note:** Version bump only for package @qfi/contracts + + + + + +## [0.2.1](https://github.com/quadratic-funding/qfi/compare/v0.2.0...v0.2.1) (2022-06-08) + + +### Features + +* **contracts:** emergency fund distribution on round cancel ([1c55859](https://github.com/quadratic-funding/qfi/commit/1c55859b96815f032161b9d20bbee42163a56e2b)) + + + + + +# [0.2.0](https://github.com/quadratic-funding/qfi/compare/v0.1.0...v0.2.0) (2022-06-03) + + +### Features + +* **contracts:** simple hackathon contracts, 99% code coverage ([aed7974](https://github.com/quadratic-funding/qfi/commit/aed79744022e4c2f1f72bcb2ce0b342914576cca)) +* implement Capital Constaint for QF, fix failing tests ([30efe04](https://github.com/quadratic-funding/qfi/commit/30efe04634afb461da7d88e7cc818a6f0707421e)) + + +### BREAKING CHANGES + +* **contracts:** fixed maci decorators to verify tally results, disabled contribution payouts since +sign ups will not require contribution +* changes the finalization step on QF rounds + + + + + +# [0.1.0](https://github.com/quadratic-funding/qfi/compare/v0.0.4...v0.1.0) (2022-06-02) + +**Note:** Version bump only for package @qfi/contracts + + + + + +## [0.0.4](https://github.com/quadratic-funding/qfi/compare/v0.0.3...v0.0.4) (2022-06-01) + +**Note:** Version bump only for package @qfi/contracts + + + + + +## [0.0.3](https://github.com/quadratic-funding/qfi/compare/v0.0.2...v0.0.3) (2022-06-01) + + +### Bug Fixes + +* **all:** fix circular dependencies, changes to hoisting in monorepo, fix failing build ([1421c97](https://github.com/quadratic-funding/qfi/commit/1421c971a8dd5a85d96fbf67baf5a0dac6a7b062)) +* **ci:** build failing ([e85b744](https://github.com/quadratic-funding/qfi/commit/e85b74426f45a3b75148e82cfaf85cee62da0701)) + + + + + +## 0.0.2 (2022-06-01) + + +### Bug Fixes + +* update abi imports from build to typechain folder ([26917de](https://github.com/quadratic-funding/qfi/commit/26917de487116c38c66259304371ea242982e6a3)) +* wrong workaround address ([8bddfb4](https://github.com/quadratic-funding/qfi/commit/8bddfb467a9c17cf457ac3f60f0cae0afe4b069f)) + + +### Features + +* add unit test for QFI deploy and initialization ([4151380](https://github.com/quadratic-funding/qfi/commit/41513804565cf86485ca4890f748369c3e9d395d)) diff --git a/packages/contracts/contracts/AccQueue.sol b/packages/contracts/contracts/AccQueue.sol new file mode 100755 index 00000000..45121acd --- /dev/null +++ b/packages/contracts/contracts/AccQueue.sol @@ -0,0 +1,581 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.10; + +import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; + +library PoseidonT3 { + function hash2(uint256[2] memory input) public pure returns (uint256) {} + + function hashLeftRight(uint256 _left, uint256 _right) public pure returns (uint256) {} +} + +library PoseidonT6 { + function hash5(uint256[5] memory input) public pure returns (uint256) {} +} + +/* + * This contract defines a Merkle tree where each leaf insertion only updates a + * subtree. To obtain the main tree root, the contract owner must merge the + * subtrees together. Merging subtrees requires at least 2 operations: + * mergeSubRoots(), and merge(). To get around the gas limit, + * the mergeSubRoots() can be performed in multiple transactions. + */ +abstract contract AccQueue is OwnableUpgradeable { + // The maximum tree depth + uint256 public constant MAX_DEPTH = 32; + + // A Queue is a 2D array of Merkle roots and indices which represents nodes + // in a Merkle tree while it is progressively updated. + struct Queue { + // IMPORTANT: the following declares an array of b elements of type T: T[b] + // And the following declares an array of b elements of type T[a]: T[a][b] + // As such, the following declares an array of MAX_DEPTH+1 arrays of + // uint256[4] arrays, **not the other way round**: + uint256[4][MAX_DEPTH + 1] levels; + uint256[MAX_DEPTH + 1] indices; + } + + // The depth of each subtree + uint256 public immutable subDepth; + + // The number of elements per hash operation. Should be either 2 (for + // binary trees) or 5 (quinary trees). The limit is 5 because that is the + // maximum supported number of inputs for the EVM implementation of the + // Poseidon hash function + uint256 internal immutable hashLength; + + // hashLength ** subDepth + uint256 internal immutable subTreeCapacity; + + // True hashLength == 2, false if hashLength == 5 + bool internal isBinary; + + // The index of the current subtree. e.g. the first subtree has index 0, the + // second has 1, and so on + uint256 public currentSubtreeIndex; + + // Tracks the current subtree. + Queue internal leafQueue; + + // Tracks the smallest tree of subroots + Queue internal subRootQueue; + + // Subtree roots + mapping(uint256 => uint256) public subRoots; + + // Merged roots + uint256[MAX_DEPTH + 1] public mainRoots; + + // Whether the subtrees have been merged + bool public subTreesMerged; + + // Whether entire merkle tree has been merged + bool public treeMerged; + + // The root of the shortest possible tree which fits all current subtree + // roots + uint256 public smallSRTroot; + + // Tracks the next subroot to queue + uint256 internal nextSubRootIndex; + + // The number of leaves inserted across all subtrees so far + uint256 public numLeaves; + + constructor(uint256 _subDepth, uint256 _hashLength) { + require(_subDepth > 0, "AccQueue: _subDepth must be more than 0"); + require(_subDepth <= MAX_DEPTH, "AccQueue: only supports up to MAX_DEPTH levels"); + require(_hashLength == 2 || _hashLength == 5, "AccQueue: only supports _hashLength of 2 or 5"); + + isBinary = _hashLength == 2; + subDepth = _subDepth; + hashLength = _hashLength; + subTreeCapacity = _hashLength ** _subDepth; + } + + function initialize() external initializer { + __Ownable_init(); + } + + /* + * Hash the contents of the specified level and the specified leaf. + * This is a virtual function as the hash function which the overriding + * contract uses will be either PoseidonT3.hashLeftRight or PoseidonT6.hash5, which require + * different input array lengths. + * @param _level The level to hash. + * @param _leaf The leaf include with the level. + */ + function hashLevel(uint256 _level, uint256 _leaf) internal virtual returns (uint256) {} + + function hashLevelLeaf(uint256 _level, uint256 _leaf) public view virtual returns (uint256) {} + + /* + * Returns the zero leaf at a specified level. + * This is a virtual function as the hash function which the overriding + * contract uses will be either PoseidonT3.hashLeftRight or PoseidonT6.hash5, which will produce + * different zero values (e.g. PoseidonT3.hashLeftRight(0, 0) vs + * PoseidonT6.hash5([0, 0, 0, 0, 0]). Moreover, the zero value may be a + * nothing-up-my-sleeve value. + */ + function getZero(uint256 _level) internal virtual returns (uint256) {} + + /* + * Add a leaf to the queue for the current subtree. + * @param _leaf The leaf to add. + */ + function enqueue(uint256 _leaf) public onlyOwner returns (uint256) { + uint256 leafIndex = numLeaves; + // Recursively queue the leaf + _enqueue(_leaf, 0); + + // Update the leaf counter + numLeaves = leafIndex + 1; + + // Now that a new leaf has been added, mainRoots and smallSRTroot are + // obsolete + delete mainRoots; + delete smallSRTroot; + subTreesMerged = false; + + // If a subtree is full + if (numLeaves % subTreeCapacity == 0) { + // Store the subroot + subRoots[currentSubtreeIndex] = leafQueue.levels[subDepth][0]; + + // Increment the index + currentSubtreeIndex++; + + // Delete ancillary data + delete leafQueue.levels[subDepth][0]; + delete leafQueue.indices; + } + + return leafIndex; + } + + /* + * Updates the queue at a given level and hashes any subroots that need to + * be hashed. + * @param _leaf The leaf to add. + * @param _level The level at which to queue the leaf. + */ + function _enqueue(uint256 _leaf, uint256 _level) internal { + require(_level <= subDepth, "AccQueue: invalid level"); + + while (true) { + uint256 n = leafQueue.indices[_level]; + + if (n != hashLength - 1) { + // Just store the leaf + leafQueue.levels[_level][n] = _leaf; + + if (_level != subDepth) { + // Update the index + leafQueue.indices[_level]++; + } + + return; + } + + // Hash the leaves to next level + _leaf = hashLevel(_level, _leaf); + + // Reset the index for this level + delete leafQueue.indices[_level]; + + // Queue the hash of the leaves into to the next level + _level++; + } + } + + /* + * Fill any empty leaves of the current subtree with zeros and store the + * resulting subroot. + */ + function fill() public onlyOwner { + if (numLeaves % subTreeCapacity == 0) { + // If the subtree is completely empty, then the subroot is a + // precalculated zero value + subRoots[currentSubtreeIndex] = getZero(subDepth); + } else { + // Otherwise, fill the rest of the subtree with zeros + _fill(0); + + // Store the subroot + subRoots[currentSubtreeIndex] = leafQueue.levels[subDepth][0]; + + // Reset the subtree data + delete leafQueue.levels; + + // Reset the merged roots + delete mainRoots; + } + + // Increment the subtree index + uint256 curr = currentSubtreeIndex + 1; + currentSubtreeIndex = curr; + + // Update the number of leaves + numLeaves = curr * subTreeCapacity; + + // Reset the subroot tree root now that it is obsolete + delete smallSRTroot; + + subTreesMerged = false; + } + + /* + * A function that queues zeros to the specified level, hashes, + * the level, and enqueues the hash to the next level. + * @param _level The level at which to queue zeros. + */ + function _fill(uint256 _level) internal virtual {} + + /* + * Insert a subtree. Used for batch enqueues. + */ + function insertSubTree(uint256 _subRoot) public onlyOwner { + subRoots[currentSubtreeIndex] = _subRoot; + + // Increment the subtree index + currentSubtreeIndex++; + + // Update the number of leaves + numLeaves += subTreeCapacity; + + // Reset the subroot tree root now that it is obsolete + delete smallSRTroot; + + subTreesMerged = false; + } + + /* + * Calculate the lowest possible height of a tree with all the subroots + * merged together. + */ + function calcMinHeight() public view returns (uint256) { + uint256 depth = 1; + while (true) { + if (hashLength ** depth >= currentSubtreeIndex) { + break; + } + depth++; + } + + return depth; + } + + /* + * Merge all subtrees to form the shortest possible tree. + * This function can be called either once to merge all subtrees in a + * single transaction, or multiple times to do the same in multiple + * transactions. If _numSrQueueOps is set to 0, this function will attempt + * to merge all subtrees in one go. If it is set to a number greater than + * 0, it will perform up to that number of queueSubRoot() operations. + * @param _numSrQueueOps The number of times this function will call + * queueSubRoot(), up to the maximum number of times + * is necessary. If it is set to 0, it will call + * queueSubRoot() as many times as is necessary. Set + * this to a low number and call this function + * multiple times if there are many subroots to + * merge, or a single transaction would run out of + * gas. + */ + function mergeSubRoots(uint256 _numSrQueueOps) public onlyOwner { + // This function can only be called once unless a new subtree is created + require(!subTreesMerged, "AccQueue: subtrees already merged"); + + // There must be subtrees to merge + require(numLeaves > 0, "AccQueue: nothing to merge"); + + // Fill any empty leaves in the current subtree with zeros ony if the + // current subtree is not full + if (numLeaves % subTreeCapacity != 0) { + fill(); + } + + // If there is only 1 subtree, use its root + if (currentSubtreeIndex == 1) { + smallSRTroot = getSubRoot(0); + subTreesMerged = true; + return; + } + + uint256 depth = calcMinHeight(); + + uint256 queueOpsPerformed = 0; + for (uint256 i = nextSubRootIndex; i < currentSubtreeIndex; i++) { + if (_numSrQueueOps != 0 && queueOpsPerformed == _numSrQueueOps) { + // If the limit is not 0, stop if the limit has been reached + return; + } + + // Queue the next subroot + queueSubRoot(getSubRoot(nextSubRootIndex), 0, depth); + + // Increment the next subroot counter + nextSubRootIndex++; + + // Increment the ops counter + queueOpsPerformed++; + } + + // The height of the tree of subroots + uint256 m = hashLength ** depth; + + // Queue zeroes to fill out the SRT + if (nextSubRootIndex == currentSubtreeIndex) { + uint256 z = getZero(subDepth); + for (uint256 i = currentSubtreeIndex; i < m; i++) { + queueSubRoot(z, 0, depth); + } + } + + // Store the smallest main root + smallSRTroot = subRootQueue.levels[depth][0]; + subTreesMerged = true; + } + + /* + * Queues a subroot into the subroot tree. + * @param _leaf The value to queue. + * @param _level The level at which to queue _leaf. + * @param _maxDepth The depth of the tree. + */ + function queueSubRoot(uint256 _leaf, uint256 _level, uint256 _maxDepth) internal { + if (_level > _maxDepth) { + return; + } + + uint256 n = subRootQueue.indices[_level]; + + if (n != hashLength - 1) { + // Just store the leaf + subRootQueue.levels[_level][n] = _leaf; + subRootQueue.indices[_level]++; + } else { + // Hash the elements in this level and queue it in the next level + uint256 hashed; + if (isBinary) { + uint256[2] memory inputs; + inputs[0] = subRootQueue.levels[_level][0]; + inputs[1] = _leaf; + hashed = PoseidonT3.hash2(inputs); + } else { + uint256[5] memory inputs; + for (uint8 i = 0; i < n; i++) { + inputs[i] = subRootQueue.levels[_level][i]; + } + inputs[n] = _leaf; + hashed = PoseidonT6.hash5(inputs); + } + + // TODO: change recursion to a while loop + // Recurse + delete subRootQueue.indices[_level]; + queueSubRoot(hashed, _level + 1, _maxDepth); + } + } + + /* + * Merge all subtrees to form a main tree with a desired depth. + * @param _depth The depth of the main tree. It must fit all the leaves or + * this function will revert. + */ + function merge(uint256 _depth) public onlyOwner returns (uint256) { + // The tree depth must be more than 0 + require(_depth > 0, "AccQueue: _depth must be more than 0"); + + // Ensure that the subtrees have been merged + require(subTreesMerged, "AccQueue: subtrees must be merged before calling merge()"); + + // Check the depth + require(_depth <= MAX_DEPTH, "AccQueue: _depth must be lte MAX_DEPTH"); + + // Calculate the SRT depth + uint256 srtDepth = subDepth; + while (true) { + if (hashLength ** srtDepth >= numLeaves) { + break; + } + srtDepth++; + } + + require(_depth >= srtDepth, "AccQueue: _depth must be gte the SRT depth"); + + // If the depth is the same as the SRT depth, just use the SRT root + if (_depth == srtDepth) { + mainRoots[_depth] = smallSRTroot; + treeMerged = true; + return smallSRTroot; + } else { + uint256 root = smallSRTroot; + + // Calculate the main root + + for (uint256 i = srtDepth; i < _depth; i++) { + uint256 z = getZero(i); + + if (isBinary) { + uint256[2] memory inputs; + inputs[0] = root; + inputs[1] = z; + root = PoseidonT3.hash2(inputs); + } else { + uint256[5] memory inputs; + inputs[0] = root; + inputs[1] = z; + inputs[2] = z; + inputs[3] = z; + inputs[4] = z; + root = PoseidonT6.hash5(inputs); + } + } + + mainRoots[_depth] = root; + treeMerged = true; + return root; + } + } + + /* + * Returns the subroot at the specified index. Reverts if the index refers + * to a subtree which has not been filled yet. + * @param _index The subroot index. + */ + function getSubRoot(uint256 _index) public view returns (uint256) { + require(currentSubtreeIndex > _index, "AccQueue: _index must refer to a complete subtree"); + return subRoots[_index]; + } + + /* + * Returns the subroot tree (SRT) root. Its value must first be computed + * using mergeSubRoots. + */ + function getSmallSRTroot() public view returns (uint256) { + require(subTreesMerged, "AccQueue: subtrees must be merged first"); + return smallSRTroot; + } + + /* + * Return the merged Merkle root of all the leaves at a desired depth. + * merge() or merged(_depth) must be called first. + * @param _depth The depth of the main tree. It must first be computed + * using mergeSubRoots() and merge(). + */ + function getMainRoot(uint256 _depth) public view returns (uint256) { + require(hashLength ** _depth >= numLeaves, "AccQueue: getMainRoot: _depth must be high enough"); + + return mainRoots[_depth]; + } + + function getSrIndices() public view returns (uint256, uint256) { + return (nextSubRootIndex, currentSubtreeIndex); + } +} + +abstract contract AccQueueBinary is AccQueue { + constructor(uint256 _subDepth) AccQueue(_subDepth, 2) {} + + function hashLevel(uint256 _level, uint256 _leaf) internal override returns (uint256) { + uint256 hashed = PoseidonT3.hashLeftRight(leafQueue.levels[_level][0], _leaf); + + // Free up storage slots to refund gas. + delete leafQueue.levels[_level][0]; + + return hashed; + } + + function hashLevelLeaf(uint256 _level, uint256 _leaf) public view override returns (uint256) { + uint256 hashed = PoseidonT3.hashLeftRight(leafQueue.levels[_level][0], _leaf); + return hashed; + } + + function _fill(uint256 _level) internal override { + while (_level < subDepth) { + uint256 n = leafQueue.indices[_level]; + + if (n != 0) { + // Fill the subtree level with zeros and hash the level + uint256 hashed; + + uint256[2] memory inputs; + uint256 z = getZero(_level); + inputs[0] = leafQueue.levels[_level][0]; + inputs[1] = z; + hashed = PoseidonT3.hash2(inputs); + + // Update the subtree from the next level onwards with the new leaf + _enqueue(hashed, _level + 1); + } + + // Reset the current level + delete leafQueue.indices[_level]; + + _level++; + } + } +} + +abstract contract AccQueueQuinary is AccQueue { + constructor(uint256 _subDepth) AccQueue(_subDepth, 5) {} + + function hashLevel(uint256 _level, uint256 _leaf) internal override returns (uint256) { + uint256[5] memory inputs; + inputs[0] = leafQueue.levels[_level][0]; + inputs[1] = leafQueue.levels[_level][1]; + inputs[2] = leafQueue.levels[_level][2]; + inputs[3] = leafQueue.levels[_level][3]; + inputs[4] = _leaf; + uint256 hashed = PoseidonT6.hash5(inputs); + + // Free up storage slots to refund gas. Note that using a loop here + // would result in lower gas savings. + delete leafQueue.levels[_level]; + + return hashed; + } + + function hashLevelLeaf(uint256 _level, uint256 _leaf) public view override returns (uint256) { + uint256[5] memory inputs; + inputs[0] = leafQueue.levels[_level][0]; + inputs[1] = leafQueue.levels[_level][1]; + inputs[2] = leafQueue.levels[_level][2]; + inputs[3] = leafQueue.levels[_level][3]; + inputs[4] = _leaf; + uint256 hashed = PoseidonT6.hash5(inputs); + + return hashed; + } + + function _fill(uint256 _level) internal override { + while (_level < subDepth) { + uint256 n = leafQueue.indices[_level]; + + if (n != 0) { + // Fill the subtree level with zeros and hash the level + uint256 hashed; + + uint256[5] memory inputs; + uint256 z = getZero(_level); + uint8 i = 0; + for (; i < n; i++) { + inputs[i] = leafQueue.levels[_level][i]; + } + + for (; i < hashLength; i++) { + inputs[i] = z; + } + hashed = PoseidonT6.hash5(inputs); + + // Update the subtree from the next level onwards with the new leaf + _enqueue(hashed, _level + 1); + } + + // Reset the current level + delete leafQueue.indices[_level]; + + _level++; + } + } +} \ No newline at end of file diff --git a/packages/contracts/contracts/BaseERC20Token.sol b/packages/contracts/contracts/BaseERC20Token.sol deleted file mode 100644 index e5ec4ae4..00000000 --- a/packages/contracts/contracts/BaseERC20Token.sol +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 - -pragma solidity ^0.8.1; - -import '@openzeppelin/contracts/token/ERC20/ERC20.sol'; - -contract BaseERC20Token is ERC20 { - constructor(uint256 initialSupply) - ERC20('Any old ERC20 token', 'AOE') - { - _mint(msg.sender, initialSupply); - } -} diff --git a/packages/contracts/contracts/FundsManager.sol b/packages/contracts/contracts/FundsManager.sol deleted file mode 100644 index e2a23c2c..00000000 --- a/packages/contracts/contracts/FundsManager.sol +++ /dev/null @@ -1,114 +0,0 @@ -//SPDX-License-Identifier: MIT -pragma solidity ^0.8.1; - -import '@openzeppelin/contracts/token/ERC20/ERC20.sol'; -import '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol'; -import '@openzeppelin/contracts/utils/structs/EnumerableSet.sol'; -import {Ownable} from '@openzeppelin/contracts/access/Ownable.sol'; - -import {GrantRound} from './GrantRound.sol'; - -/** - * @title Funds Manager - * @author Q - * @notice Handles funding sources and donations for Grant rounds - * @dev Responsible for sending matching funds to the Grant round contract - */ -contract FundsManager is Ownable { - /** - * Event issued when a funding source is correctly added to the set. - * @param _source The address of the funding source. - */ - event FundingSourceAdded(address _source); - - /** - * Event issued when a funding source is correctly removed from the set. - * @param _source The address of the funding source. - */ - event FundingSourceRemoved(address _source); - - using EnumerableSet for EnumerableSet.AddressSet; - using SafeERC20 for ERC20; - - EnumerableSet.AddressSet private fundingSources; - - constructor() {} - - /** - * @dev Add matching funds source. - * @param _source Address of a funding source. - */ - function addFundingSource(address _source) external { - bool result = fundingSources.add(_source); - require(result, 'Factory: Funding source already added'); - - emit FundingSourceAdded(_source); - } - - /** - * @dev Remove matching funds source. - * @param _source Address of the funding source. - */ - function removeFundingSource(address _source) external { - bool result = fundingSources.remove(_source); - require(result, 'Factory: Funding source not found'); - - emit FundingSourceRemoved(_source); - } - - /** - * @dev Get total amount of matching funds. - */ - function getMatchingFunds(ERC20 token) external view returns (uint256) { - uint256 matchingPoolSize = token.balanceOf(address(this)); - for (uint256 index = 0; index < fundingSources.length(); index++) { - address fundingSource = fundingSources.at(index); - uint256 allowance = token.allowance(fundingSource, address(this)); - uint256 balance = token.balanceOf(fundingSource); - uint256 contribution = allowance < balance ? allowance : balance; - matchingPoolSize += contribution; - } - return matchingPoolSize; - } - - /* - * @dev Transfer funds from matching pool to current funding round and finalize it. - * @param _totalSpent Total amount of spent voice credits. - * @param _totalSpentSalt The salt. - */ - function transferMatchingFunds( - // uint256 _totalSpent, - // uint256 _totalSpentSalt, - GrantRound currentRound - ) internal { - require( - address(currentRound) != address(0), - 'Factory: Funding round has not been deployed' - ); - ERC20 roundToken = currentRound.nativeToken(); - // Factory contract is the default funding source - uint256 matchingPoolSize = roundToken.balanceOf(address(this)); - if (matchingPoolSize > 0) { - roundToken.safeTransfer(address(currentRound), matchingPoolSize); - } - // Pull funds from other funding sources - for (uint256 index = 0; index < fundingSources.length(); index++) { - address fundingSource = fundingSources.at(index); - uint256 allowance = roundToken.allowance( - fundingSource, - address(this) - ); - uint256 balance = roundToken.balanceOf(fundingSource); - uint256 contribution = allowance < balance ? allowance : balance; - if (contribution > 0) { - roundToken.safeTransferFrom( - fundingSource, - address(currentRound), - contribution - ); - } - } - // currentRound.finalize(_totalSpent, _totalSpentSalt); - // emit RoundFinalized(address(currentRound)); - } -} diff --git a/packages/contracts/contracts/GrantRound.sol b/packages/contracts/contracts/GrantRound.sol deleted file mode 100644 index ed9b77ab..00000000 --- a/packages/contracts/contracts/GrantRound.sol +++ /dev/null @@ -1,279 +0,0 @@ -//SPDX-License-Identifier: MIT -pragma experimental ABIEncoderV2; -pragma solidity ^0.8.1; - -import {PollFactory, Poll, PollProcessorAndTallyer} from 'qaci-contracts/contracts/Poll.sol'; -import {VkRegistry} from 'qaci-contracts/contracts/VkRegistry.sol'; -import {Params} from 'qaci-contracts/contracts/Params.sol'; -import {IMACI} from 'qaci-contracts/contracts/IMACI.sol'; -import {AccQueue} from 'qaci-contracts/contracts/trees/AccQueue.sol'; - -import '@openzeppelin/contracts/token/ERC20/ERC20.sol'; -import '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol'; - -import {IRecipientRegistry} from './recipientRegistry/IRecipientRegistry.sol'; - -/** - * @title Quadratic Funding Round Contract - * @author Q - * @notice This contract manages contributions, withdrawals, Voting and the distribution of funds for a particular grant round. - * @dev Inherits from Poll Contract and uses the Poll Contract interface to manage the voting. - */ -contract GrantRound is Poll { - /** - * Event issued when a registered user posts a (batch of) message(s) to vote. - * @param _voter The address of the person who published a (batch of) message(s). - */ - event Voted(address indexed _voter); - - /** - * Event issued when the coordinator publishes the IPFS hash for the vote tally. - * @param _tallyHash The IPFS hash of the vote tally. - */ - event TallyPublished(string _tallyHash); - - /** - * Event issued when the owner (deployer) cancel the Grant Round. - * @param _isFinalized True when the Grant Round is finalized, otherwise false. - * @param _isCancelled True when the Grant Round is cancelled, otherwise false. - */ - event GrantRoundCancelled(bool _isFinalized, bool _isCancelled); - - /** - * Event issued when the beneficiary (recipient) claims the corresponding Grant Round funds. - * @param _recipient The address of the recipient. - * @param _voteOptionIndex The index of the voting option associated with the recipient. - * @param _allocatedAmount The amount to be claimed. - */ - event FundsClaimed(address _recipient, uint256 _voteOptionIndex, uint256 _allocatedAmount); - - using SafeERC20 for ERC20; - - uint256 public voiceCreditFactor; - address public coordinator; - ERC20 public nativeToken; - IRecipientRegistry public recipientRegistry; - mapping(uint256 => bool) private recipients; - - bool public isCancelled; - bool public isFinalized; - string public tallyHash; - uint256 public totalSpent; - uint256 public totalVotes; - uint256 public matchingPoolSize; - - /** - * @notice Constructor for the GrantRound, special type of poll that implements Quadratic Funding. - * @dev Binds the contracts that will be used to tally the Poll and sets duration ans coordinator. - * @param _voiceCreditFactor uint256 The factor by which the voiceCredit is multiplied to determine the amount of voice credits that are distributed to the contributor. - * @param _coordinator The address of the coordinator of the GrantRound. - * @param _nativeToken The address of the ERC20 token used for the GrantRound. - * @param _duration uint256, the duration of the GrantRound - * @param _maxValues MaxValues stored in memory, the maxMessages and maxVoteOptions of the GrantRound as uint256 values - * @param _treeDepths TreeDepths stored in memory, intStateTreeDepth, messageTreeSubDepth, messageTreeDepth, and voteOptionTreeDepth as uint8 values - * @param _batchSizes BatchSizes stored in memory, this inlcudes the message batch size and the tally batch size - * @param _coordinatorPubKey PubKey stored in memory, MACI pubkey of the coordinator of the GrantRounds - * @param _extContracts ExtContracts stored in memory, this includes the maci, and messageAq contracts that will be used to tally the Poll. - */ - constructor( - uint256 _voiceCreditFactor, - address _coordinator, - ERC20 _nativeToken, - uint256 _duration, - MaxValues memory _maxValues, - TreeDepths memory _treeDepths, - BatchSizes memory _batchSizes, - PubKey memory _coordinatorPubKey, - ExtContracts memory _extContracts, - IRecipientRegistry _recipientRegistry - ) - Poll( - _duration, - _maxValues, - _treeDepths, - _batchSizes, - _coordinatorPubKey, - _extContracts - ) - { - voiceCreditFactor = _voiceCreditFactor; - coordinator = _coordinator; - nativeToken = _nativeToken; - recipientRegistry = _recipientRegistry; - } - - /** - * @notice Allows anyone to publish a batch of messages (an encrypted command and signature). - * @dev This function also enqueues the messages. - * @param _messages Message[] The messages to publish as an array of Message structs. - * @param _encPubKeys PubKey[] An array of epheremal public keys which can be combined with the - * coordinator's private key to generate an ECDH shared key with which - * to encrypt the message. - */ - function publishMessageBatch( - Message[] calldata _messages, - PubKey[] calldata _encPubKeys - ) external { - uint256 batchSize = _messages.length; - for (uint8 i = 0; i < batchSize; i++) { - publishMessage(_messages[i], _encPubKeys[i]); - } - - emit Voted(msg.sender); - } - - /** - * @dev Publish the IPFS hash of the vote tally. Only coordinator can publish. - * @param _tallyHash IPFS hash of the vote tally. - */ - function publishTallyHash(string calldata _tallyHash) external { - require( - msg.sender == coordinator, - 'GrantRound: Sender is not the coordinator' - ); - require(!isFinalized, 'GrantRound: Round finalized'); - require( - bytes(_tallyHash).length != 0, - 'GrantRound: Tally hash is empty string' - ); - tallyHash = _tallyHash; - - emit TallyPublished(_tallyHash); - } - - /* - * @dev Get the total amount of votes from MACI, - * verify the total amount of spent voice credits across all recipients, - * and allow recipients to claim funds. - * @param _totalSpent Total amount of spent voice credits. - * @param _totalSpentSalt The salt. - */ - function finalize(uint256 _totalSpent, uint256 _totalSpentSalt) - external - onlyOwner - isAfterVotingDeadline - { - require(!isFinalized, 'GrantRound: Already finalized'); - require(stateAqMerged, 'GrantRound: State AQ not merged'); - require( - address(extContracts.maci) != address(0), - 'GrantRound: MACI not deployed' - ); - require( - bytes(tallyHash).length != 0, - 'GrantRound: Tally hash has not been published' - ); - // If nobody voted, the round should be cancelled to avoid locking of matching funds - require(numMessages > 0, 'GrantRound: No votes'); - - //TODO: Actually verify using new decorators - bool verified = verifySpentVoiceCredits(_totalSpent, _totalSpentSalt); - require( - verified, - 'GrantRound: Incorrect total amount of spent voice credits' - ); - totalSpent = _totalSpent; - // Total amount of spent voice credits is the size of the pool of direct rewards. - // Everything else, including unspent voice credits and downscaling error, - // is considered a part of the matching pool - matchingPoolSize = - nativeToken.balanceOf(address(this)) - - totalSpent * - voiceCreditFactor; - isFinalized = true; - } - - /** - * @dev Cancel funding round. - */ - function cancel() external onlyOwner { - require(!isFinalized, 'GrantRound: Already finalized'); - isFinalized = true; - isCancelled = true; - - emit GrantRoundCancelled(isFinalized, isCancelled); - } - - /** - * @dev Get allocated token amount (without verification). - * @param _tallyResult The result of vote tally for the recipient. - * @param _spent The amount of voice credits spent on the recipient. - */ - function getAllocatedAmount(uint256 _tallyResult, uint256 _spent) - public - view - returns (uint256) - { - return - (matchingPoolSize * _tallyResult) / - totalVotes + - _spent * - voiceCreditFactor; - } - - /* - * @dev Claim allocated tokens. - * @param _voteOptionIndex Vote option index. - * @param _tallyResult The result of vote tally for the recipient. - * @param _tallyResultProof Proof of correctness of the vote tally. - * @param _tallyResultSalt Salt. - * @param _spent The amount of voice credits spent on the recipient. - * @param _spentProof Proof of correctness for the amount of spent credits. - * @param _spentSalt Salt. - */ - function claimFunds( - uint256 _voteOptionIndex, - uint256 _tallyResult, - uint256[][] memory _tallyResultProof, - uint256 _spentVoiceCreditsHash, - uint256 _perVOSpentVoiceCreditsHash, - uint256 _tallyCommitment, - uint256 _spent, - uint256[][] memory _spentProof, - uint256 _spentSalt - ) external { - require(isFinalized, 'GrantRound: Round not finalized'); - require(!isCancelled, 'GrantRound: Round has been cancelled'); - require( - !recipients[_voteOptionIndex], - 'FundingRound: Funds already claimed' - ); - { - bool resultVerified = verifyTallyResult( - _voteOptionIndex, - _tallyResult, - _tallyResultProof, - _spentVoiceCreditsHash, - _perVOSpentVoiceCreditsHash, - _tallyCommitment - ); - require(resultVerified, 'FundingRound: Incorrect tally result'); - - bool spentVerified = verifyPerVOSpentVoiceCredits( - _voteOptionIndex, - _spent, - _spentProof, - _spentSalt - ); - require( - spentVerified, - 'FundingRound: Incorrect amount of spent voice credits' - ); - } - recipients[_voteOptionIndex] = true; - (uint256 deployTime, uint256 duration) = getDeployTimeAndDuration(); - address recipient = recipientRegistry.getRecipientAddress( - _voteOptionIndex, - deployTime, - deployTime + duration - ); - if (recipient == address(0)) { - // Send funds back to the matching pool - recipient = owner(); - } - uint256 allocatedAmount = getAllocatedAmount(_tallyResult, _spent); - nativeToken.safeTransfer(recipient, allocatedAmount); - - emit FundsClaimed(recipient, _voteOptionIndex, allocatedAmount); - } -} diff --git a/packages/contracts/contracts/GrantRoundFactory.sol b/packages/contracts/contracts/GrantRoundFactory.sol deleted file mode 100644 index 0d49000a..00000000 --- a/packages/contracts/contracts/GrantRoundFactory.sol +++ /dev/null @@ -1,163 +0,0 @@ -//SPDX-License-Identifier: MIT -pragma experimental ABIEncoderV2; -pragma solidity ^0.8.1; - -import {PollFactory, Poll, MessageAqFactory, PollDeploymentParams} from 'qaci-contracts/contracts/Poll.sol'; -import {VkRegistry} from 'qaci-contracts/contracts/VkRegistry.sol'; -import {Params} from 'qaci-contracts/contracts/Params.sol'; -import {Hasher, PoseidonT3, PoseidonT4, PoseidonT5, PoseidonT6} from 'qaci-contracts/contracts/crypto/Hasher.sol'; -import {IMACI} from 'qaci-contracts/contracts/IMACI.sol'; -import {AccQueue} from 'qaci-contracts/contracts/trees/AccQueue.sol'; -import {DomainObjs, IPubKey, IMessage} from 'qaci-contracts/contracts/DomainObjs.sol'; -import {Ownable} from '@openzeppelin/contracts/access/Ownable.sol'; -import '@openzeppelin/contracts/token/ERC20/ERC20.sol'; -import '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol'; - -import {GrantRound} from './GrantRound.sol'; -import {IRecipientRegistry} from './recipientRegistry/IRecipientRegistry.sol'; - -/** - * @title Quadratic Funding Round Factory Contracts - * @author Q - * @notice Deploys new Quadratic Funding Round Contracts - * @dev Factory Contract to deploy a special type of Poll called GrantRound. - */ -contract GrantRoundFactory is - Params, - IPubKey, - IMessage, - Ownable, - Hasher, - PollDeploymentParams -{ - /** - * Event issued when the owner sets/changes the address of the MessageAqFactory smart contract. - * @param _messageAqFactory The Ethereum address of the new MessageAqFactory smart contract. - */ - event MessageAqFactoryChanged(address _messageAqFactory); - - /** - * Event issued when the owner sets/changes the address of the RecipientRegistry smart contract. - * @param _recipientRegistry The Ethereum address of the new RecipientRegistry smart contract. - */ - event RecipientRegistryChanged(address _recipientRegistry); - - using SafeERC20 for ERC20; - - MessageAqFactory public messageAqFactory; - IRecipientRegistry public recipientRegistry; - - constructor() {} - - /** - * @notice Sets the MessageAqFactory to use for the grant rounds - * @dev public function, _messageAqFactory should deploy new AccQueueQuinaryMaci AccQueue(s), need to set before calling deployGrantRound - * @param _messageAqFactory MessageAqFactory stored in memory - */ - function setMessageAqFactory(MessageAqFactory _messageAqFactory) - public - onlyOwner - { - messageAqFactory = _messageAqFactory; - - emit MessageAqFactoryChanged(address(_messageAqFactory)); - } - - /** - * @notice Sets the recipientRegistry to use for the grant rounds - * @dev public function, - * @param _recipientRegistry IRecipientRegistry stored in memory - */ - function setRecipientRegistry(IRecipientRegistry _recipientRegistry) - public - onlyOwner - { - recipientRegistry = _recipientRegistry; - - emit RecipientRegistryChanged(address(_recipientRegistry)); - } - - /** - * @notice Deploys a new GrantRound Contract - * @dev public function - * @param _voiceCreditFactor uint256 The factor by which the voiceCredit is multiplied to determine the amount of voice credits that are distributed to the contributor. - * @param _coordinator The address of the coordinator of the GrantRound. - * @param _nativeToken The address of the ERC20 token used for the GrantRound. - * @param _duration uint256 stored in memory, the duration of the GrantRound - * @param _maxValues MaxValues stored in memory, the maxMessages and maxVoteOptions of the GrantRound as uint256 values - * @param _treeDepths TreeDepths stored in memory, intStateTreeDepth, messageTreeSubDepth, messageTreeDepth, and voteOptionTreeDepth as uint8 values - * @param _batchSizes BatchSizes stored in memory, messageBatchSize and tallyBatchSize as uint8 values - * @param _coordinatorPubKey PubKey stored in memory, MACI pubkey of the coordinator of the GrantRound - * @param _maci VkRegistry - * @param _grantRoundOwner address stored in memory - */ - /* - * Deploy a new Poll contract and AccQueue contract for messages. - */ - function deployGrantRound( - uint256 _voiceCreditFactor, - address _coordinator, - ERC20 _nativeToken, - uint256 _duration, - MaxValues memory _maxValues, - TreeDepths memory _treeDepths, - BatchSizes memory _batchSizes, - PubKey memory _coordinatorPubKey, - VkRegistry _vkRegistry, - IMACI _maci, - address _grantRoundOwner - ) public onlyOwner returns (GrantRound) { - uint8 treeArity = 5; - - // Validate _maxValues - // NOTE: these checks may not be necessary. Removing them will save - // 0.28 Kb of bytecode. - - // maxVoteOptions must be less than 2 ** 50 due to circuit limitations; - // it will be packed as a 50-bit value along with other values as one - // of the inputs (aka packedVal) - - require( - _maxValues.maxMessages <= treeArity**_treeDepths.messageTreeDepth && - _maxValues.maxMessages >= _batchSizes.messageBatchSize && - _maxValues.maxMessages % _batchSizes.messageBatchSize == 0 && - _maxValues.maxVoteOptions <= - treeArity**_treeDepths.voteOptionTreeDepth && - _maxValues.maxVoteOptions < (2**50), - 'PollFactory: invalid _maxValues' - ); - - AccQueue messageAq = messageAqFactory.deploy( - _treeDepths.messageTreeSubDepth - ); - - ExtContracts memory extContracts; - - // TODO: remove _vkRegistry; only PollProcessorAndTallyer needs it - extContracts.vkRegistry = _vkRegistry; - extContracts.maci = _maci; - extContracts.messageAq = messageAq; - - GrantRound grantRound = new GrantRound( - _voiceCreditFactor, - _coordinator, - _nativeToken, - _duration, - _maxValues, - _treeDepths, - _batchSizes, - _coordinatorPubKey, - extContracts, - recipientRegistry - ); - - // Make the Poll contract own the messageAq contract, so only it can - // run enqueue/merge - messageAq.transferOwnership(address(grantRound)); - - // TODO: should this be _maci.owner() instead? - grantRound.transferOwnership(_grantRoundOwner); - - return grantRound; - } -} diff --git a/packages/contracts/contracts/Jubjub.sol b/packages/contracts/contracts/Jubjub.sol new file mode 100644 index 00000000..b879ac7a --- /dev/null +++ b/packages/contracts/contracts/Jubjub.sol @@ -0,0 +1,529 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.10; +import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; +import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; +import {VkRegistry} from "./VkRegistry.sol"; +import {Pairing} from "./Pairing.sol"; +import {AccQueue} from "./AccQueue.sol"; +import {Multicallable} from "./utils/Multicallable.sol"; +import {PoseidonT3} from "./poseidon/PoseidonT3.sol"; +import {PoseidonT4} from "./poseidon/PoseidonT4.sol"; +import {PoseidonT5} from "./poseidon/PoseidonT5.sol"; +import {PoseidonT6} from "./poseidon/PoseidonT6.sol"; + +import {ISignUpGatekeeper} from "./flavors/ISignUpGatekeeper.sol"; +import {IInitialVoiceCreditProxy} from "./flavors/IInitialVoiceCreditProxy.sol"; + +/** + * @author Q + * @title Jubjub + * @dev Max VoteOptionTreeDepth is 5 (5^5 = 3125), Max MessageTreeDepth is 10 (5^10 = 9765625), + * Changing the voteOptionTreeDepth will change the empty ballot roots + * @notice Need to link Poseidon Libraries. Jubjub is the main contract that manages the state of the protocol, + * it contains the logic for the various state transitions that occur during the protocol. + */ +contract Jubjub is OwnableUpgradeable, Multicallable { + uint256 internal constant SNARK_SCALAR_FIELD = 21888242871839275222246405745257275088548364400416034343698204186575808495617; + uint256 internal constant PAD_PUBKEY_X = 10457101036533406547632367118273992217979173478358440826365724437999023779287; + uint256 internal constant PAD_PUBKEY_Y = 19824078218392094440610104313265183977899662750282163392862422243483260492317; + // BigInt( solidityPackedSha256( ['bytes'], [toUtf8Bytes('Maci')])) % SNARK_FIELD_SIZE + uint256 internal constant NOTHING_UP_MY_SLEEVE = 8370432830353022751713833565135785980866757267633941821328460903436894336785; + uint256 internal constant BLANK_STATE_LEAF_HASH = uint256(6769006970205099520508948723718471724660867171122235270773600567925038008762); + uint256 internal constant BLANK_MESSAGE_LEAF_HASH = uint256(13538681568993277969463027820094671926946581652698677548910942555920874803124); + + uint256 constant TREE_ARITY = 5; + uint256 constant MESSAGE_DATA_LENGTH = 10; + + uint256 public stateTreeDepth; + uint256 public stateTreeSubDepth; + uint256 public messageTreeDepth; + uint256 public messageTreeSubDepth; + uint256 public voteOptionTreeDepth; + uint256[5] internal emptyBallotRoots; + + bool public isInitialised; + uint256 public numPolls; + uint256 public numSignUps; + uint256 public numMessages; + + uint256 public coordinatorPubKeyHash; + uint256 public numBatchesProcessed; + uint256 public currentStateCommitment; + uint256 public currentMessageCommitment; + uint256 public currentBallotCommitment; + uint256 public currentSbCommitment; + + mapping(uint256 => uint256) public stateLeafTimeStamps; + mapping(uint256 => address) public polls; + mapping(uint256 => address) public pollResults; + + enum MESSAGE_TYPE { + INVALID, + VOTE, + TOPUP + } + + // Contracts for the merkle trees that store MACI state and message leaves, respectively + AccQueue public stateAq; + AccQueue public messageAq; + + ISignUpGatekeeper public signUpGatekeeper; + IInitialVoiceCreditProxy public voiceCreditProxy; + + VkRegistry public vkRegistry; + PubKey public coordinatorPubKey; + + // Signup period starts upon deployment. + uint256 public signUpTimestamp; + uint256 public voteDeadline; + uint256 public voteDurationSeconds; + bool public signUpsOpen; + + struct PubKey { + uint256 x; + uint256 y; + } + + struct EdDSASignature { + uint256 R8x; + uint256 R8y; + uint256 S; + } + + struct VerifyingKey { + Pairing.G1Point alpha1; + Pairing.G2Point beta2; + Pairing.G2Point gamma2; + Pairing.G2Point delta2; + Pairing.G1Point[] ic; + } + + struct Message { + uint256 msgType; + uint256[MESSAGE_DATA_LENGTH] data; + } + + // PoseidonT5.hash4[PubkeyX, PubkeyY, voiceCreditBalance, timestamp] + struct StateLeaf { + PubKey pubKey; + uint256 voiceCreditBalance; + uint256 timestamp; + } + + struct MessageLeaf { + PubKey pubKey; + Message encryptedMessage; + } + modifier afterInit() { + require(isInitialised, "MACI: not initialised"); + _; + } + + modifier isWithinVotingDeadline() { + require(block.timestamp < voteDeadline, "ERROR_VOTING_PERIOD_PASSED"); + _; + } + + // Events necessary to recreate maci state offchain + event Init(ISignUpGatekeeper _signUpGatekeeper, IInitialVoiceCreditProxy _topupCredit); + event SignUp(uint256 _stateIndex, PubKey _userPubKey, uint256 _voiceCreditBalance, uint256 _timestamp); + event MergeMaciStateAqSubRoots(uint256 _pollId, uint256 _numSrQueueOps); + event MergeMaciStateAq(uint256 _pollId); + + event DeployPoll(uint256 _pollId, address _pollAddr, PubKey _pubKey); + event PublishMessage(Message _message, PubKey _encPubKey); + + event MergeMessageAqSubRoots(uint256 _numSrQueueOps); + event MergeMessageAq(uint256 _messageRoot); + + constructor() { + require(BLANK_STATE_LEAF_HASH == blankStateLeafHash(), "MACI: BLANK_STATE_LEAF_HASH is incorrect"); + require(BLANK_MESSAGE_LEAF_HASH == blankMessageLeafHash(), "MACI: BLANK_MESSAGE_LEAF_HASH is incorrect"); + } + + function hash(uint256 _left, uint256 _right) public view returns (uint256) { + uint256[2] memory input; + input[0] = _left; + input[1] = _right; + return PoseidonT3.hash2(input); + } + + /** + * @notice Hashes a message leaf into a single field element. + * @param _message The message to hash. + * @param _encPubKey The public key of the recipient. + * @return uint256 The poseidon hash of the message leaf. + */ + function hashMessageLeaf(Message memory _message, PubKey memory _encPubKey) public pure returns (uint256) { + require(_message.data.length == 10, "Invalid message"); + uint256[5] memory n; + n[0] = _message.data[0]; + n[1] = _message.data[1]; + n[2] = _message.data[2]; + n[3] = _message.data[3]; + n[4] = _message.data[4]; + + uint256[5] memory m; + m[0] = _message.data[5]; + m[1] = _message.data[6]; + m[2] = _message.data[7]; + m[3] = _message.data[8]; + m[4] = _message.data[9]; + + return PoseidonT6.hash5([_message.msgType, PoseidonT6.hash5(n), PoseidonT6.hash5(m), _encPubKey.x, _encPubKey.y]); + } + + /** + * @notice Hashes a state leaf into a single field element. + * @param _stateLeaf The state leaf to hash. + * @return The poseidon hash of the state leaf. + */ + function hashStateLeaf(StateLeaf memory _stateLeaf) public pure returns (uint256) { + uint256[4] memory plaintext; + plaintext[0] = _stateLeaf.pubKey.x; + plaintext[1] = _stateLeaf.pubKey.y; + plaintext[2] = _stateLeaf.voiceCreditBalance; + plaintext[3] = _stateLeaf.timestamp; + + return PoseidonT5.hash4(plaintext); + } + + /* + * blankMessageLeafHash() returns the hash of a blank message leaf. + * This is used to pad the message tree. + */ + function blankMessageLeafHash() public pure returns (uint256) { + uint256[10] memory _data = [NOTHING_UP_MY_SLEEVE, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + PubKey memory _padKey = PubKey(PAD_PUBKEY_X, PAD_PUBKEY_Y); + Message memory _message = Message(uint256(1), _data); + return hashMessageLeaf(_message, _padKey); + + // return uint256(keccak256("MACI")) % SNARK_SCALAR_FIELD; + } + + /* + * blankStateLeafHash() returns the hash of a blank state leaf. + * This is used to pad the state tree. + */ + function blankStateLeafHash() public pure returns (uint256) { + PubKey memory _padKey = PubKey(PAD_PUBKEY_X, PAD_PUBKEY_Y); + StateLeaf memory _stateLeaf = StateLeaf(_padKey, 0, 0); + + return hashStateLeaf(_stateLeaf); + } + + /* + * Initialise the various factory/helper contracts. This should only be run + * once and it must be run before deploying the first Poll. + * @param _vkRegistry The VkRegistry contract + * @param _topupCredit The topupCredit contract + * @param _stateTreeDepth The depth of the state tree + * @param _stateTreeSubDepth The depth of the state tree sub tree + * @param _messageTreeDepth The depth of the message tree + * @param _messageTreeSubDepth The depth of the message tree sub tree + * @param _emptyBallotRoots The empty ballot roots + * @param _signUpGatekeeper The signup gatekeeper contract + * @param _voiceCreditProxy The voice credit proxy contract + * @param _stateAq The state aq contract + * @param _vkRegistry The vk registry contract + * @param _maci The poll processor contract + */ + function initialize( + uint256 _stateTreeDepth, + uint256 _messageTreeDepth, + uint256 _stateTreeSubDepth, + uint256 _messageTreeSubDepth, + uint256[] memory _emptyBallotRoots, + ISignUpGatekeeper _signUpGatekeeper, + IInitialVoiceCreditProxy _voiceCreditProxy, + AccQueue _stateAq, + AccQueue _messageAq + ) external initializer { + __Ownable_init(); + require(owner() != address(0), "Jubjub owner must be set"); + require(!isInitialised, "MACI: already initialised"); + + signUpTimestamp = block.timestamp; + signUpsOpen = true; + isInitialised = true; + + signUpGatekeeper = _signUpGatekeeper; + voiceCreditProxy = _voiceCreditProxy; + + // NOTE: allow to initialize with a non-blank state aq + stateAq = _stateAq; + messageAq = _messageAq; + stateTreeDepth = _stateTreeDepth; + stateTreeSubDepth = _stateTreeSubDepth; + messageTreeDepth = _messageTreeDepth; + messageTreeSubDepth = _messageTreeSubDepth; + + if (stateAq.numLeaves() == uint256(0)) { + stateAq.enqueue(BLANK_STATE_LEAF_HASH); + } + require(messageAq.numLeaves() == 0, "MACI: message aq is not empty"); + { + messageAq.enqueue(BLANK_MESSAGE_LEAF_HASH); + } + + emptyBallotRoots[0] = _emptyBallotRoots[0]; + emptyBallotRoots[1] = _emptyBallotRoots[1]; + emptyBallotRoots[2] = _emptyBallotRoots[2]; + emptyBallotRoots[3] = _emptyBallotRoots[3]; + emptyBallotRoots[4] = _emptyBallotRoots[4]; + + require(stateTreeSubDepth == stateAq.subDepth(), "INCORRECT SUBDEPTH"); + require(messageTreeSubDepth == messageAq.subDepth(), "INCORRECT SUBDEPTH"); + require(stateTreeDepth < stateAq.MAX_DEPTH(), "INCORRECT DEPTH"); + + emit Init(_signUpGatekeeper, _voiceCreditProxy); + } + + function setVkRegistry(VkRegistry _vkRegistry) public onlyOwner { + vkRegistry = _vkRegistry; + } + + /** + * @notice Allows any eligible user sign up. The sign-up gatekeeper should prevent + * double sign-ups or ineligible users from doing so. This function will + * only succeed if the sign-up deadline has not passed. It also enqueues a + * fresh state leaf into the state AccQueue. + * @dev Note that the circuits only support up to (5 ** 10 - 1) signups + * @param _pubKey The user's desired public key. + * @param _signUpGatekeeperData Data to pass to the sign-up gatekeeper's register() function. For instance, the POAPGatekeeper or SignUpTokenGatekeeper requires this value to be the ABI-encoded token ID. + * @param _initialVoiceCreditProxyData Data to pass to the InitialVoiceCreditProxy, which allows it to determine how many voice credits this user should have. + */ + function signUp(PubKey memory _pubKey, bytes memory _signUpGatekeeperData, bytes memory _initialVoiceCreditProxyData) public afterInit { + // The circuits only support up to (5 ** 10 - 1) signups + require(numSignUps < TREE_ARITY ** stateTreeDepth, "MACI: maximum number of signups reached"); + + require(_pubKey.x < SNARK_SCALAR_FIELD && _pubKey.y < SNARK_SCALAR_FIELD, "MACI: _pubKey values should be less than the snark scalar field"); + require(signUpsOpen, "MACI: signups are closed"); + + unchecked { + numSignUps++; + } + + // Register the user via the sign-up gatekeeper. This function should + // throw if the user has already registered or if ineligible to do so. + signUpGatekeeper.register(msg.sender, _signUpGatekeeperData); + uint256 voiceCreditBalance = voiceCreditProxy.getVoiceCredits(msg.sender, _initialVoiceCreditProxyData); + + uint256 timestamp = block.timestamp; + // Create a state leaf and enqueue it. + uint256 stateLeaf = hashStateLeaf(StateLeaf(_pubKey, voiceCreditBalance, timestamp)); + uint256 stateIndex = stateAq.enqueue(stateLeaf); + + emit SignUp(stateIndex, _pubKey, voiceCreditBalance, timestamp); + } + + /** + * @notice Publish a message to the message queue. This function will only succeed + * if the voting deadline has passed. It also enqueues a fresh message + * leaf into the message AccQueue. + * @param _message The message to publish. + * @param _encPubKey The public key of the recipient. + */ + function publishMessage(Message memory _message, PubKey memory _encPubKey) public isWithinVotingDeadline { + require(numMessages <= TREE_ARITY ** messageTreeDepth, "ERROR_MAX_MESSAGES_REACHED"); + require(_encPubKey.x < SNARK_SCALAR_FIELD && _encPubKey.y < SNARK_SCALAR_FIELD, "ERROR_INVALID_PUBKEY"); + require(voteDeadline > block.timestamp, "ERROR_VOTING_ENDED"); + + unchecked { + numMessages++; + } + _message.msgType = 1; + uint256 messageLeaf = hashMessageLeaf(_message, _encPubKey); + messageAq.enqueue(messageLeaf); + + emit PublishMessage(_message, _encPubKey); + } + + function publishMessageBatch(Message[] calldata _messages, PubKey[] calldata _encPubKeys) external { + uint256 batchSize = _messages.length; + for (uint8 i = 0; i < batchSize; i++) { + publishMessage(_messages[i], _encPubKeys[i]); + } + } + + /* + * The first step of merging the MACI state AccQueue. This allows the + * ProcessMessages circuit to access the latest state tree and ballots via + * currentSbCommitment. + */ + function mergeStateAqSubRoots(uint256 _numSrQueueOps) public onlyOwner { + // TODO: validate this is correct, should be able to merge on next round + // This function cannot be called after the stateAq was merged + require(!stateAq.treeMerged() && !signUpsOpen, "ERROR_STATE_AQ_ALREADY_MERGED"); + + if (!stateAq.subTreesMerged()) { + stateAq.mergeSubRoots(_numSrQueueOps); + } + + emit MergeMaciStateAqSubRoots(numPolls, _numSrQueueOps); + } + + /* + * The second step of merging the MACI state AccQueue. This allows the + * ProcessMessages circuit to access the latest state tree and ballots via + * currentSbCommitment. + * @param _pollId The ID of the Poll + */ + function mergeStateAq() public onlyOwner { + // This function can only be called if the stateAq subtrees are merged and signups are closed. + require(!stateAq.treeMerged() && !signUpsOpen, "ERROR_STATE_AQ_ALREADY_MERGED"); + require(stateAq.subTreesMerged() == true, "ERROR_STATE_AQ_SUBTREES_NEED_MERGE"); + + // Set currentStateRootCommitment, + currentStateCommitment = stateAq.merge(stateTreeDepth); + + emit MergeMaciStateAq(currentStateCommitment); + } + + /* + * Called to open a new poll or to reset the current poll in the case of an invalid state transition. + */ + function resetBallotCommitment(uint256 _voteOptionTreeDepth) public onlyOwner { + // This functionshould be called once the stateAq is merged and signups are closed. + // require(!stateAq.subTreesMerged(), "ERROR_STATE_AQ_SUBTREES_NEED_MERGE"); + require(!signUpsOpen, "SIGNUPS_NOT_CLOSED"); + // Reset currentBallotRootCommitment + currentBallotCommitment = emptyBallotRoots[_voteOptionTreeDepth - 1]; + // Reset currentSbCommitment, hash + currentSbCommitment = PoseidonT4.hash3([currentStateCommitment, currentBallotCommitment, uint256(0)]); + } + + /* + * Deploy a new Poll contract. + * @param _duration How long should the Poll last for + * @param _treeDepths The depth of the Merkle trees + */ + function startVoting(uint256 _voteOptionTreeDepth, uint256 _duration, PubKey memory _coordinatorPubKey) public afterInit { + require(!stateAq.treeMerged(), "ERROR_STATE_AQ_ALREADY_MERGED"); + require(!stateAq.subTreesMerged(), "ERROR_STATE_AQ_SUBTREES_MERGED"); + require(messageAq.numLeaves() == 1, "ERROR_MESSAGE_AQ_NOT_EMPTY"); + + signUpsOpen = false; + resetBallotCommitment(_voteOptionTreeDepth); + + uint256[10] memory _data = [NOTHING_UP_MY_SLEEVE, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + PubKey memory _padKey = PubKey(PAD_PUBKEY_X, PAD_PUBKEY_Y); + Message memory _message = Message(uint256(MESSAGE_TYPE.VOTE), _data); + + unchecked { + numPolls++; + numMessages++; + } + + voteDurationSeconds = _duration; + voteDeadline = block.timestamp + _duration; + voteOptionTreeDepth = _voteOptionTreeDepth; + + // messageAq = _messageAq; + // messageAq.enqueue(BLANK_MESSAGE_LEAF_HASH); //SAVE GAS AND PRECOMPUTE + + coordinatorPubKey = _coordinatorPubKey; + coordinatorPubKeyHash = PoseidonT3.hashLeftRight(_coordinatorPubKey.x, _coordinatorPubKey.y); + numBatchesProcessed = 0; + + emit DeployPoll(numPolls, address(this), _coordinatorPubKey); + emit PublishMessage(_message, _padKey); + } + + /* + * The first step in merging the message AccQueue so that the + * ProcessMessages circuit can access the message root. + */ + function mergeMessageAqSubRoots(uint256 _numSrQueueOps) public onlyOwner { + require(!messageAq.treeMerged() && !signUpsOpen, "ERROR_MESSAGE_AQ_ALREADY_MERGED"); + + if (!messageAq.subTreesMerged()) { + messageAq.mergeSubRoots(_numSrQueueOps); + } + emit MergeMessageAqSubRoots(_numSrQueueOps); + } + + /* + * The second step in merging the message AccQueue so that the + * ProcessMessages circuit can access the message root. + */ + function mergeMessageAq() public onlyOwner { + // This function can only be called if the stateAq subtrees are merged and signups are closed. + require(!messageAq.treeMerged(), "ERROR_MESSAGE_AQ_ALREADY_MERGED"); + require(messageAq.subTreesMerged() == true, "ERROR_MESSAGE_AQ_SUBTREES_NEED_MERGE"); + + // Set currentStateRootCommitment, + currentMessageCommitment = messageAq.merge(messageTreeDepth); + + emit MergeMessageAq(currentMessageCommitment); + } + + function calculateCurrentMessageBatchIndex() public view returns (uint256) { + uint256 messageBatchSize = 5 ** messageTreeSubDepth; + uint256 paddingForFirstBatch = numMessages % messageBatchSize; + if (numBatchesProcessed == 0) { + if (paddingForFirstBatch == 0) { + return (numMessages / messageBatchSize) * messageBatchSize; + } else { + return numMessages; + } + } else { + if (paddingForFirstBatch == 0) { + return numMessages - numBatchesProcessed * messageBatchSize; + } else { + return numMessages - paddingForFirstBatch - ((numBatchesProcessed - 1) * messageBatchSize); + } + } + } + + /* + * Update the Poll's currentSbCommitment if the proof is valid. + * @param _poll The poll to update + * @param _newSbCommitment The new state root and ballot root commitment + * after all messages are processed + * @param _proof The zk-SNARK proof + */ + function processMessages(uint256 _newStateCommitment, uint256 _newSbCommitment, uint256[8] memory _proof) public onlyOwner { + // This function can only be called if the stateAq is merged and signups are closed. + require(stateAq.treeMerged(), "ERROR_STATE_AQ_NOT_MERGED"); + require(messageAq.treeMerged(), "ERROR_MESSAGE_AQ_NOT_ALREADY_MERGED"); + require(calculateCurrentMessageBatchIndex() > 0, "ERROR_NO_MORE_MESSAGES"); + // There must be unprocessed messages, + + // Require that the message queue has been merged + uint256 messageRoot = messageAq.getMainRoot(messageTreeDepth); + require(messageRoot != 0, "ERROR_MESSAGE_AQ_NOT_MERGED"); + + uint256 messageBatchSize = 5 ** messageTreeSubDepth; + + // Get the verifying key from the VkRegistry + VkRegistry.VerifyingKey memory vk = vkRegistry.getProcessVk(stateTreeDepth, messageTreeDepth, voteOptionTreeDepth, messageBatchSize); + + bool isValid = true; + uint256 currentMessageBatchIndex = calculateCurrentMessageBatchIndex(); + //TODO: refactor process proof + // maci.verifyProcessProof( + // currentMessageBatchIndex, + // _newSbCommitment, + // _proof, + // vk, + // numMessages, + // messageRoot, + // currentSbCommitment, + // coordinatorPubKeyHash, + // 5**voteOptionTreeDepth, //NOTE: max vote options + // 5**messageTreeSubDepth // NOTE: messageBatchSize + // ); + require(isValid, "ERROR_INVALID_PROCESS_MESSAGE_PROOF"); + + { + currentSbCommitment = _newSbCommitment; + numBatchesProcessed++; + } + } + + function openSignUpPeriod() public onlyOwner { + require(!signUpsOpen, "ERROR_SIGNUPS_ALREADY_OPEN"); + signUpsOpen = true; + } +} diff --git a/packages/contracts/contracts/JubjubFactory.sol b/packages/contracts/contracts/JubjubFactory.sol new file mode 100644 index 00000000..16ee6353 --- /dev/null +++ b/packages/contracts/contracts/JubjubFactory.sol @@ -0,0 +1,157 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.4; + +import {Jubjub} from "./Jubjub.sol"; +import {AccQueue, AccQueueQuinary} from "./AccQueue.sol"; +import {StateTree} from "./StateTree.sol"; +import {MessageTree} from "./MessageTree.sol"; +import {Multicallable} from "./utils/Multicallable.sol"; +import {LibClone} from "./utils/LibClone.sol"; +import {VkRegistry} from "./VkRegistry.sol"; +import {ISignUpGatekeeper} from "./flavors/ISignUpGatekeeper.sol"; +import {IInitialVoiceCreditProxy} from "./flavors/IInitialVoiceCreditProxy.sol"; +import {Pairing} from "./Pairing.sol"; + +/// @title JubjubFactory +/// @notice This contract is used to deploy new Jubjubs +contract JubjubFactory is VkRegistry, Multicallable { + /// ----------------------------------------------------------------------- + /// Library Usage + /// ----------------------------------------------------------------------- + + using LibClone for address; //hacks + + /// ----------------------------------------------------------------------- + /// Events + /// ----------------------------------------------------------------------- + + event JubjubDeployed(Jubjub indexed jubjub); + event StateTreeDeployed(AccQueue indexed StateTree); + event MessageTreeDeployed(AccQueue indexed MessageTree); + + /// ----------------------------------------------------------------------- + /// Immutables + /// ----------------------------------------------------------------------- + + uint256 internal STATE_TREE_SUBDEPTH = 3; + uint256 internal MESSAGE_TREE_SUBDEPTH = 3; + + uint256[5] internal emptyBallotRoots; + + Jubjub public jubjubTemplate; + StateTree internal stateTreeTemplate; + MessageTree internal messageTreeTemplate; + + Jubjub public currentJubjub; + + /// ----------------------------------------------------------------------- + /// Constructor + /// ----------------------------------------------------------------------- + + constructor() payable { + jubjubTemplate = new Jubjub(); + stateTreeTemplate = new StateTree(STATE_TREE_SUBDEPTH); + messageTreeTemplate = new MessageTree(MESSAGE_TREE_SUBDEPTH); + emptyBallotRoots[0] = uint256(4904028317433377177773123885584230878115556059208431880161186712332781831975); + emptyBallotRoots[1] = uint256(344732312350052944041104345325295111408747975338908491763817872057138864163); + emptyBallotRoots[2] = uint256(19445814455012978799483892811950396383084183210860279923207176682490489907069); + emptyBallotRoots[3] = uint256(10621810780690303482827422143389858049829670222244900617652404672125492013328); + emptyBallotRoots[4] = uint256(17077690379337026179438044602068085690662043464643511544329656140997390498741); + } + + /// ----------------------------------------------------------------------- + /// Deployment Logic + /// ----------------------------------------------------------------------- + + function determineJubjub(bytes32 salt) public view virtual returns (address) { + return address(jubjubTemplate).predictDeterministicAddress(abi.encodePacked(), salt, address(this)); + } + + function deployJubjub( + bytes32 salt, // create2 salt. + ISignUpGatekeeper _signUpGatekeeper, + IInitialVoiceCreditProxy _voiceCreditProxy + ) public payable virtual { + Jubjub jubjub = Jubjub( + address(jubjubTemplate).cloneDeterministic( + abi.encodePacked(), // we dont have constructor args + salt + ) + ); + + uint256[] memory _emptyBallotRoots = new uint256[](5); + _emptyBallotRoots[0] = emptyBallotRoots[0]; + _emptyBallotRoots[1] = emptyBallotRoots[1]; + _emptyBallotRoots[2] = emptyBallotRoots[2]; + _emptyBallotRoots[3] = emptyBallotRoots[3]; + _emptyBallotRoots[4] = emptyBallotRoots[4]; + + AccQueue _stateAq = deployStateTree(salt); + AccQueue _messageAq = deployMessageTree(salt); + _stateAq.transferOwnership(address(jubjub)); + _messageAq.transferOwnership(address(jubjub)); + + require(_stateAq.owner() != address(0), "stateTree owner must be set"); + require(_messageAq.owner() != address(0), "msgTree owner must be set"); + + // _stateAq.transferOwnership(address(jubjub)); + // _messageAq.transferOwnership(address(jubjub)); + + jubjub.initialize(6, 8, 3, 3, _emptyBallotRoots, _signUpGatekeeper, _voiceCreditProxy, _stateAq, _messageAq); + jubjub.setVkRegistry(VkRegistry(address(this))); + + uint256 processVkSig = genProcessVkSig(6, 8, 3, 3); + VerifyingKey storage processVk = processVks[processVkSig]; + processVk.alpha1 = Pairing.G1Point(uint256(0), uint256(1)); + processVk.beta2 = Pairing.G2Point([uint256(2), uint256(3)], [uint256(4), uint256(5)]); + processVk.gamma2 = Pairing.G2Point([uint256(6), uint256(7)], [uint256(8), uint256(9)]); + processVk.delta2 = Pairing.G2Point([uint256(10), uint256(11)], [uint256(12), uint256(13)]); + processVk.ic.push(Pairing.G1Point(uint256(14), uint256(15))); + processVk.ic.push(Pairing.G1Point(uint256(16), uint256(17))); + + uint256 tallyVkSig = genTallyVkSig(6, 3, 3); + VerifyingKey storage tallyVk = tallyVks[tallyVkSig]; + processVk.alpha1 = Pairing.G1Point(uint256(0), uint256(1)); + processVk.beta2 = Pairing.G2Point([uint256(2), uint256(3)], [uint256(4), uint256(5)]); + processVk.gamma2 = Pairing.G2Point([uint256(6), uint256(7)], [uint256(8), uint256(9)]); + processVk.delta2 = Pairing.G2Point([uint256(10), uint256(11)], [uint256(12), uint256(13)]); + processVk.ic.push(Pairing.G1Point(uint256(14), uint256(15))); + processVk.ic.push(Pairing.G1Point(uint256(16), uint256(17))); + + setVerifyingKeys(6, 3, 8, 3, 3, processVk, tallyVk); + jubjub.transferOwnership(msg.sender); + + + + currentJubjub = jubjub; + emit JubjubDeployed(jubjub); + } + + function deployStateTree( + bytes32 salt // create2 salt. + ) public payable virtual returns (AccQueue) { + StateTree stateTree = StateTree( + address(stateTreeTemplate).cloneDeterministic( + abi.encodePacked(salt, STATE_TREE_SUBDEPTH), // we dont have constructor args + salt + ) + ); + stateTree.initialize(); + emit StateTreeDeployed(stateTree); + return stateTree; + } + + function deployMessageTree( + bytes32 salt // create2 salt. + ) public payable virtual returns (AccQueue) { + MessageTree messageTree = MessageTree( + address(messageTreeTemplate).cloneDeterministic( + abi.encodePacked(salt, MESSAGE_TREE_SUBDEPTH), // we dont have constructor args + salt + ) + ); + messageTree.initialize(); + emit MessageTreeDeployed(messageTree); + return messageTree; + } +} diff --git a/packages/contracts/contracts/MessageTree.sol b/packages/contracts/contracts/MessageTree.sol new file mode 100644 index 00000000..3d2c9964 --- /dev/null +++ b/packages/contracts/contracts/MessageTree.sol @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.4; +import {AccQueue, AccQueueQuinary} from "./AccQueue.sol"; + +contract MessageTree is AccQueueQuinary { + uint256[33] internal zeros; + + constructor(uint256 _subDepth) AccQueueQuinary(_subDepth) { + // Quinary tree zeros (hash of a blank state leaf) + zeros[0] = uint256(6769006970205099520508948723718471724660867171122235270773600567925038008762); + zeros[1] = uint256(1817443256073160983037956906834195537015546107754139333779374752610409243040); + zeros[2] = uint256(5025334324706345710800763986625066818722194863275454698142520938431664775139); + zeros[3] = uint256(14192954438167108345302805021925904074255585459982294518284934685870159779036); + zeros[4] = uint256(20187882570958996766847085412101405873580281668670041750401431925441526137696); + zeros[5] = uint256(19003337309269317766726592380821628773167513668895143249995308839385810331053); + zeros[6] = uint256(8492845964288036916491732908697290386617362835683911619537012952509890847451); + zeros[7] = uint256(21317322053785868903775560086424946986124609731059541056518805391492871868814); + zeros[8] = uint256(4256218134522031233385262696416028085306220785615095518146227774336224649500); + zeros[9] = uint256(20901832483812704342876390942522900825096860186886589193649848721504734341597); + zeros[10] = uint256(9267454486648593048583319961333207622177969074484816717792204743506543655505); + zeros[11] = uint256(7650747654726613674993974917452464536868175649563857452207429547024788245109); + zeros[12] = uint256(12795449162487060618571749226308575208199045387848354123797521555997299022426); + zeros[13] = uint256(2618557044910497521493457299926978327841926538380467450910611798747947773417); + zeros[14] = uint256(4921285654960018268026585535199462620025474147042548993648101553653712920841); + zeros[15] = uint256(3955171118947393404895230582611078362154691627898437205118006583966987624963); + zeros[16] = uint256(14699122743207261418107167543163571550551347592030521489185842204376855027947); + zeros[17] = uint256(19194001556311522650950142975587831061973644651464593103195262630226529549573); + zeros[18] = uint256(6797319293744791648201295415173228627305696583566554220235084234134847845566); + zeros[19] = uint256(1267384159070923114421683251804507954363252272096341442482679590950570779538); + zeros[20] = uint256(3856223245980092789300785214737986268213218594679123772901587106666007826613); + zeros[21] = uint256(18676489457897260843888223351978541467312325190019940958023830749320128516742); + zeros[22] = uint256(1264182110328471160091364892521750324454825019784514769029658712768604765832); + zeros[23] = uint256(2656996430278859489720531694992812241970377217691981498421470018287262214836); + zeros[24] = uint256(18383091906017498328025573868990834275527351249551450291689105976789994000945); + zeros[25] = uint256(13529005048172217954112431586843818755284974925259175262114689118374272942448); + zeros[26] = uint256(12992932230018177961399273443546858115054107741258772159002781102941121463198); + zeros[27] = uint256(2863122912185356538647249583178796893334871904920344676880115119793539219810); + zeros[28] = uint256(21225940722224750787686036600289689346822264717843340643526494987845938066724); + zeros[29] = uint256(10287710058152238258370855601473179390407624438853416678054122418589867334291); + zeros[30] = uint256(19473882726731003241332772446613588021823731071450664115530121948154136765165); + zeros[31] = uint256(5317840242664832852914696563734700089268851122527105938301831862363938018455); + zeros[32] = uint256(16560004488485252485490851383643926099553282582813695748927880827248594395952); + } + + function getZero(uint256 _level) internal view override returns (uint256) { + return zeros[_level]; + } +} diff --git a/packages/contracts/contracts/Pairing.sol b/packages/contracts/contracts/Pairing.sol new file mode 100755 index 00000000..b79a2dc0 --- /dev/null +++ b/packages/contracts/contracts/Pairing.sol @@ -0,0 +1,158 @@ +// SPDX-License-Identifier: MIT +// Copyright 2017 Christian Reitwiessner +// 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. + +// 2019 OKIMS + +pragma solidity ^0.8.10; + +library Pairing { + uint256 constant PRIME_Q = + 21888242871839275222246405745257275088696311157297823662689037894645226208583; + + struct G1Point { + uint256 x; + uint256 y; + } + + // Encoding of field elements is: X[0] * z + X[1] + struct G2Point { + uint256[2] x; + uint256[2] y; + } + + /* + * @return The negation of p, i.e. p.plus(p.negate()) should be zero. + */ + function negate(G1Point memory p) internal pure returns (G1Point memory) { + // The prime q in the base field F_q for G1 + if (p.x == 0 && p.y == 0) { + return G1Point(0, 0); + } else { + return G1Point(p.x, PRIME_Q - (p.y % PRIME_Q)); + } + } + + /* + * @return The sum of two points of G1 + */ + function plus( + G1Point memory p1, + G1Point memory p2 + ) internal view returns (G1Point memory r) { + uint256[4] memory input; + input[0] = p1.x; + input[1] = p1.y; + input[2] = p2.x; + input[3] = p2.y; + bool success; + + // solium-disable-next-line security/no-inline-assembly + assembly { + success := staticcall(sub(gas(), 2000), 6, input, 0xc0, r, 0x60) + // Use "invalid" to make gas estimation work + switch success + case 0 { + invalid() + } + } + + require(success, "pairing-add-failed"); + } + + /* + * @return The product of a point on G1 and a scalar, i.e. + * p == p.scalar_mul(1) and p.plus(p) == p.scalar_mul(2) for all + * points p. + */ + function scalar_mul( + G1Point memory p, + uint256 s + ) internal view returns (G1Point memory r) { + uint256[3] memory input; + input[0] = p.x; + input[1] = p.y; + input[2] = s; + bool success; + // solium-disable-next-line security/no-inline-assembly + assembly { + success := staticcall(sub(gas(), 2000), 7, input, 0x80, r, 0x60) + // Use "invalid" to make gas estimation work + switch success + case 0 { + invalid() + } + } + require(success, "pairing-mul-failed"); + } + + /* @return The result of computing the pairing check + * e(p1[0], p2[0]) * .... * e(p1[n], p2[n]) == 1 + * For example, + * pairing([P1(), P1().negate()], [P2(), P2()]) should return true. + */ + function pairing( + G1Point memory a1, + G2Point memory a2, + G1Point memory b1, + G2Point memory b2, + G1Point memory c1, + G2Point memory c2, + G1Point memory d1, + G2Point memory d2 + ) internal view returns (bool) { + G1Point[4] memory p1 = [a1, b1, c1, d1]; + G2Point[4] memory p2 = [a2, b2, c2, d2]; + + uint256 inputSize = 24; + uint256[] memory input = new uint256[](inputSize); + + for (uint256 i = 0; i < 4; i++) { + uint256 j = i * 6; + input[j + 0] = p1[i].x; + input[j + 1] = p1[i].y; + input[j + 2] = p2[i].x[0]; + input[j + 3] = p2[i].x[1]; + input[j + 4] = p2[i].y[0]; + input[j + 5] = p2[i].y[1]; + } + + uint256[1] memory out; + bool success; + + // solium-disable-next-line security/no-inline-assembly + assembly { + success := staticcall( + sub(gas(), 2000), + 8, + add(input, 0x20), + mul(inputSize, 0x20), + out, + 0x20 + ) + // Use "invalid" to make gas estimation work + switch success + case 0 { + invalid() + } + } + + require(success, "pairing-opcode-failed"); + + return out[0] != 0; + } +} diff --git a/packages/contracts/contracts/QFI.sol b/packages/contracts/contracts/QFI.sol deleted file mode 100644 index e1e164e2..00000000 --- a/packages/contracts/contracts/QFI.sol +++ /dev/null @@ -1,448 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma experimental ABIEncoderV2; -pragma solidity ^0.8.1; - -import {MACI} from "qaci-contracts/contracts/MACI.sol"; -import {Params} from "qaci-contracts/contracts/Params.sol"; - -import {PollFactory, Poll, PollProcessorAndTallyer, MessageAqFactory} from "qaci-contracts/contracts/Poll.sol"; -import {VkRegistry} from "qaci-contracts/contracts/VkRegistry.sol"; -import {InitialVoiceCreditProxy} from "qaci-contracts/contracts/initialVoiceCreditProxy/InitialVoiceCreditProxy.sol"; -import {SignUpGatekeeper} from "qaci-contracts/contracts/gatekeepers/SignUpGatekeeper.sol"; -import {ConstantInitialVoiceCreditProxy} from "qaci-contracts/contracts/initialVoiceCreditProxy/ConstantInitialVoiceCreditProxy.sol"; -import {FreeForAllGatekeeper} from "qaci-contracts/contracts/gatekeepers/FreeForAllSignUpGatekeeper.sol"; - -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; - -import {GrantRound} from "./GrantRound.sol"; -import {FundsManager} from "./FundsManager.sol"; -import {GrantRoundFactory} from "./GrantRoundFactory.sol"; - -/** - * @title Quadratic Funding Infrastructure - * @author Q - * @notice Top level contract for the Quadratic Funding Infrastructure - * @dev Special type of MACI that allows for a quadratic funding scheme. - */ -contract QFI is MACI, FundsManager { - /** - * Event issued when the QFI contract is deployed. - * @param _grantRoundFactory The Ethereum smart contract address of the current Grant Round Factory. - * @param _nativeToken The Ethereum smart contract address of the ERC20 Token used for the current Grant Round. - * @param _voiceCreditFactor Constant used to handle VCs / Tokens conversions (e.g., reconstruct the exact contribution amount in Token from VCs). - * @param _currentStage The updated value for the current QFI stage. - */ - event QfiDeployed( - address _grantRoundFactory, - address _nativeToken, - uint256 _voiceCreditFactor, - Stage _currentStage - ); - - /** - * Event issued when the owner (deployer) initialize the QFI contract. - * @param _messageAqFactoryGrantRounds The Ethereum smart contract address of the Message AQ Factory for the current Grant Round. - * @param _currentStage The updated value for the current QFI stage. - */ - event QfiInitialized(address _messageAqFactoryGrantRounds, Stage _currentStage); - - /** - * Event issued when the owner (deployer) set the PollProcessorAndTallyer contract. - * @param _pollProcessorAndTallyer The Ethereum smart contract address of the PollProcessorAndTallyer contract for the current Grant Round. - */ - event PollProcessorAndTallyerChanged(address _pollProcessorAndTallyer); - - /** - * Event issued when an unregistered user signs up and contributes to the current Grant Round. - * @param _contributor The Ethereum address of who sends the contribution. - * @param _amount The amount in native ERC20 tokens submitted as contribution. - */ - event ContributionSent( - address _contributor, - uint256 _amount - ); - - /** - * Event issued when a contributor decides to withdraw his/her contribution for the current Grant Round. - * @param _contributor The Ethereum address of who withdraws the contribution. - */ - event ContributionWithdrew(address _contributor); - - /** - * Event issued when the owner (deployer) deploy a new Grant Round. - * @param _currentGrantRound The Ethereum smart contract address of the current Grant Round. - * @param _duration The duration of the current Grant Round. - * @param _maxValues The maximum amount of messages and vote options of the current Grant Round. - * @param _treeDepths The intStateTreeDepth, messageTreeSubDepth, messageTreeDepth, and voteOptionTreeDepth. - * @param _batchSizes The message and vote tally batch sizes. - * @param _coordinatorPubKey The MACI public key of the coordinator of the current Grant Round. - * @param _currentStage The updated value for the current QFI stage. - */ - event GrantRoundDeployed( - address _currentGrantRound, - uint256 _duration, - MaxValues _maxValues, - TreeDepths _treeDepths, - BatchSizes _batchSizes, - PubKey _coordinatorPubKey, - Stage _currentStage - ); - - /** - * Event issued when the owner (deployer) decides to close the voting period for the current Grant Round. - * @param _currentStage The updated value for the current QFI stage. - */ - event VotingPeriodClosed(Stage _currentStage); - - /** - * Event issued when the owner (deployer) decides to start accepting contribution/signup period for the next Grant Round. - * @param _currentStage The updated value for the current QFI stage. - */ - event PreRoundContributionPeriodStarted(Stage _currentStage); - - /** - * Event issued when the owner finalizes the current Grant Round. - * @param _currentGrantRound The Ethereum smart contract address of the current Grant Round. - * @param _currentStage The updated value for the current QFI stage. - */ - event GrantRoundFinalized(address _currentGrantRound, Stage _currentStage); - - using SafeERC20 for ERC20; - enum Stage { - // The contract is not yet initialized - NOT_INITIALIZED, - // The current poll/grant round is NOT started and MACI is waiting for SignUp/Topups from contributions - WAITING_FOR_SIGNUPS_AND_TOPUPS, - // The current poll/grant round is started, voice credit balances are locked, can submit messages to current poll - VOTING_PERIOD_OPEN, - // The current poll/grant round is over, cannot submit messages to current poll, but votes have not been tallied yet - WAITING_FOR_FINALIZATION, - // The current poll/grant round is over, and votes have been tallied, and matching funds have been distributed to grant contract - FINALIZED, - // The current poll/grant round is cancelled, and contributions can be withdrawn - CANCELLED - } - - Stage public currentStage; - // Constants - uint256 private constant MAX_VOICE_CREDITS = 10**9; // MACI allows 2 ** 32 voice credits max - uint256 private constant MAX_CONTRIBUTION_AMOUNT = 10**4; // In tokens - - // State - uint256 public voiceCreditFactor; - - struct ContributorStatus { - uint256 voiceCredits; - bool isRegistered; - } - - MessageAqFactory public messageAqFactoryGrants; - GrantRoundFactory public grantRoundFactory; - GrantRound public currentGrantRound; - PollProcessorAndTallyer public pollProcessorAndTallyer; - - uint256 public nextGrantRoundId; - uint256 public contributorCount; - ERC20 public nativeToken; - - // A mapping of grantRound IDs to GrantRound contracts. - mapping(uint256 => GrantRound) public grantRounds; - mapping(address => ContributorStatus) private contributors; - - /** - * @notice Constructor for the Quadratic Funding Infrastructure - * @dev Binds the contracts that are needed for the Quadratic Funding Infrastructure - * @param _grantRoundFactory GrantRoundFactory, the contract that will be used to create GrantRounds which are a special type of Poll - * @param _pollFactory PollFactory, the contract that will be used to create Polls - * @param _signUpGatekeeper SignUpGatekeeper, the contract that will be used to limit who can sign up to MACI - * @param _initialVoiceCreditProxy InitialVoiceCreditProxy, the contract that will be used to set the initial voice credit balance for a user - */ - constructor( - ERC20 _nativeToken, - GrantRoundFactory _grantRoundFactory, - PollFactory _pollFactory, - SignUpGatekeeper _signUpGatekeeper, - InitialVoiceCreditProxy _initialVoiceCreditProxy - ) MACI(_pollFactory, _signUpGatekeeper, _initialVoiceCreditProxy) { - grantRoundFactory = _grantRoundFactory; - currentStage = Stage.NOT_INITIALIZED; - nativeToken = _nativeToken; - voiceCreditFactor = - (MAX_CONTRIBUTION_AMOUNT * uint256(10)**nativeToken.decimals()) / - MAX_VOICE_CREDITS; - voiceCreditFactor = voiceCreditFactor > 0 ? voiceCreditFactor : 1; - - emit QfiDeployed( - address(_grantRoundFactory), - address(_nativeToken), - voiceCreditFactor, - currentStage - ); - } - - /* - * Initialise the various factory/helper contracts. This should only be run - * once and it must be run before deploying the first Poll. - */ - function initialize( - VkRegistry _vkRegistry, - MessageAqFactory _messageAqFactoryPolls, - MessageAqFactory _messageAqFactoryGrantRounds - ) public onlyOwner { - // The VkRegistry owner must be the owner of this contract, this is checked in the init function - init(_vkRegistry, _messageAqFactoryPolls); - - messageAqFactoryGrants = _messageAqFactoryGrantRounds; - - require( - grantRoundFactory.owner() == address(this), - "MACI: GrantFactory owner incorrectly set" - ); - - // The PollFactory needs to store the MessageAqFactory address - grantRoundFactory.setMessageAqFactory(_messageAqFactoryGrantRounds); - - // The MessageAQFactory owner must be the PollFactory contract - require( - messageAqFactoryGrants.owner() == address(grantRoundFactory), - "MACI: MessageAqFactory owner incorrectly set" - ); - currentStage = Stage.WAITING_FOR_SIGNUPS_AND_TOPUPS; - - emit QfiInitialized(address(_messageAqFactoryGrantRounds), currentStage); - } - - /** - * @notice Sets the PollProcessorAndTallyer to use for the grant round - * @dev public function, - * @param _pollProcessorAndTallyer PollProcessorAndTallyer stored in memory - */ - function setPollProcessorAndTallyer( - PollProcessorAndTallyer _pollProcessorAndTallyer - ) public onlyOwner { - pollProcessorAndTallyer = _pollProcessorAndTallyer; - - emit PollProcessorAndTallyerChanged(address(_pollProcessorAndTallyer)); - } - - /** - * @notice Contribute tokens to this funding round. - * @dev public function, allows a user to contribute to this funding round by sending tokens in exchange for voice credits. - * @param pubKey Contributor's public key. - * @param amount Contribution amount. - */ - function contribute(PubKey calldata pubKey, uint256 amount) external { - require( - numSignUps < STATE_TREE_ARITY**stateTreeDepth, - "MACI: maximum number of signups reached" - ); - require( - currentStage == Stage.WAITING_FOR_SIGNUPS_AND_TOPUPS, - "QFI: Not accepting signups or top ups" - ); - require( - amount > 0, - "QFI: Contribution amount must be greater than zero" - ); - require( - amount <= MAX_VOICE_CREDITS * voiceCreditFactor, - "QFI: Contribution amount is too large" - ); - // TODO: TOP UP CHECK - require( - contributors[msg.sender].voiceCredits == 0, - "QFI: top ups not supported, donate to matching pool instead" - ); - uint256 voiceCredits = amount / voiceCreditFactor; - contributors[msg.sender] = ContributorStatus(voiceCredits, false); - contributorCount += 1; - bytes memory signUpGatekeeperData = abi.encode( - msg.sender, - voiceCredits - ); - bytes memory initialVoiceCreditProxyData = abi.encode( - msg.sender, - voiceCredits - ); - nativeToken.safeTransferFrom(msg.sender, address(this), amount); - - signUp(pubKey, signUpGatekeeperData, initialVoiceCreditProxyData); - - emit ContributionSent(msg.sender, amount); - } - - /** - * @dev Get the amount of voice credits for a given address. - * This function is a part of the InitialVoiceCreditProxy interface. - * @param _data Encoded address of a user. - */ - function getVoiceCredits( - address, /* _caller */ - bytes memory _data - ) public view returns (uint256) { - address user = abi.decode(_data, (address)); - uint256 initialVoiceCredits = contributors[user].voiceCredits; - require( - initialVoiceCredits > 0, - "FundingRound: User does not have any voice credits" - ); - return initialVoiceCredits; - } - - /** - * @dev Withdraw contributed funds from the pool if the round has been cancelled. - */ - function withdrawContribution() external { - // require(isCancelled, 'FundingRound: Round not cancelled'); - // Reconstruction of exact contribution amount from VCs may not be possible due to a loss of precision - uint256 amount = contributors[msg.sender].voiceCredits * - voiceCreditFactor; - require(amount > 0, "FundingRound: Nothing to withdraw"); - contributors[msg.sender].voiceCredits = 0; - nativeToken.safeTransfer(msg.sender, amount); - - emit ContributionWithdrew(msg.sender); - } - - /** - * @notice Deploys a new grant round. - * @dev Deploys a special kind of Poll called a GrantRound. - * @param _duration uint256 stored in memory, the duration of the GrantRound - * @param _maxValues MaxValues stored in memory, the maxMessages and maxVoteOptions of the GrantRound as uint256 values - * @param _treeDepths TreeDepths stored in memory, intStateTreeDepth, messageTreeSubDepth, messageTreeDepth, and voteOptionTreeDepth as uint8 values - * @param _coordinatorPubKey PubKey stored in memory, MACI pubkey of the coordinator of the GrantRounds - */ - function deployGrantRound( - uint256 _duration, - MaxValues memory _maxValues, - TreeDepths memory _treeDepths, - PubKey memory _coordinatorPubKey, - address coordinator - ) public afterInit onlyOwner { - require( - currentStage == Stage.WAITING_FOR_SIGNUPS_AND_TOPUPS, - "MACI: Cannot deploy a new grant round while not in the WAITING_FOR_SIGNUPS_AND_TOPUPS stage" - ); - uint256 pollId = nextPollId; - uint256 grantRoundId = nextGrantRoundId; - - // The message batch size and the tally batch size - BatchSizes memory batchSizes = BatchSizes( - uint8(MESSAGE_TREE_ARITY)**uint8(_treeDepths.messageTreeSubDepth), - uint8(STATE_TREE_ARITY)**uint8(_treeDepths.intStateTreeDepth) - ); - - GrantRound g = grantRoundFactory.deployGrantRound( - voiceCreditFactor, - coordinator, - nativeToken, - _duration, - _maxValues, - _treeDepths, - batchSizes, - _coordinatorPubKey, - vkRegistry, - this, - owner() - ); - - currentGrantRound = g; - polls[pollId] = g; - grantRounds[grantRoundId] = g; - // Increment the grantRound ID for the next poll - nextGrantRoundId++; - // Increment the poll ID for the next poll - nextPollId++; - - currentStage = Stage.VOTING_PERIOD_OPEN; - - emit GrantRoundDeployed( - address(currentGrantRound), - _duration, - _maxValues, - _treeDepths, - batchSizes, - _coordinatorPubKey, - currentStage - ); - } - - /** - * @notice Retrieves the grant round contract given its ID. - * @dev public view function, returns the Poll address given its grantRoundId. - * @param _grantRoundId uint256 grantRoundId of the GrantRound to retrieve - * @return returns the GrantRound contract - */ - function getGrantRound(uint256 _grantRoundId) - public - view - returns (GrantRound) - { - require( - _grantRoundId < nextGrantRoundId, - "MACI: grantRound with _grantRoundId does not exist" - ); - return grantRounds[_grantRoundId]; - } - - /** - * @notice Calculate the voting deadline for a grant round. - * @dev public view function - * @param grantRound uint256 grantRoundId of the GrantRound to use - * @return uint256 the voting deadline for the current grant round - */ - function getVotingDeadline(uint256 grantRound) - public - view - returns (uint256) - { - GrantRound g = getGrantRound(grantRound); - (uint256 deployTime, uint256 duration) = g.getDeployTimeAndDuration(); - // Require that the voting period is over - uint256 deadline = duration + deployTime; - return deadline; - } - - function closeVotingAndWaitForDeadline() public onlyOwner { - require( - currentStage == Stage.VOTING_PERIOD_OPEN, - "MACI: Cannot deploy a new grant round while not in the WAITING_FOR_SIGNUPS_AND_TOPUPS stage" - ); - //TODO: ACTUALLY CLOSE THE VOTING PERIOD on the grant round contract - currentStage = Stage.WAITING_FOR_FINALIZATION; - - emit VotingPeriodClosed(currentStage); - } - - function finalizeCurrentRound(uint256 _totalSpent, uint256 _totalSpentSalt) - external - onlyOwner - { - require( - currentStage == Stage.WAITING_FOR_FINALIZATION, - "QFI: Cannot finalize a grant round while not in the WAITING_FOR_FINALIZATION stage" - ); - bool proccesingComplete = pollProcessorAndTallyer.processingComplete(); - require(proccesingComplete, "QFI: messages have not been proccessed"); - GrantRound g = currentGrantRound; - //NOTE: tansfer the funds to the grant round contract first before finalizing, so that the matching pool is calculated correctly - //NOTE: matching pool will be balance of the grant contract less the totalSpent * voiceCreditFactor - transferMatchingFunds(g); - g.finalize(_totalSpent, _totalSpentSalt); - - currentStage = Stage.FINALIZED; - - emit GrantRoundFinalized(address(g), currentStage); - } - - function acceptContributionsAndTopUpsBeforeNewRound() public onlyOwner { - require( - currentStage == Stage.FINALIZED, - "QFI: Cannot deploy a new grant round while not in the WAITING_FOR_SIGNUPS_AND_TOPUPS stage" - ); - currentStage = Stage.WAITING_FOR_SIGNUPS_AND_TOPUPS; - - emit PreRoundContributionPeriodStarted(currentStage); - } -} diff --git a/packages/contracts/contracts/StateTree.sol b/packages/contracts/contracts/StateTree.sol new file mode 100644 index 00000000..6d0105f8 --- /dev/null +++ b/packages/contracts/contracts/StateTree.sol @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.4; +import {AccQueue, AccQueueQuinary} from "./AccQueue.sol"; + +contract StateTree is AccQueueQuinary { + uint256[33] internal zeros; + + constructor(uint256 _subDepth) AccQueueQuinary(_subDepth) { + // Quinary tree zeros (hash of a blank state leaf) + zeros[0] = uint256(6769006970205099520508948723718471724660867171122235270773600567925038008762); + zeros[1] = uint256(1817443256073160983037956906834195537015546107754139333779374752610409243040); + zeros[2] = uint256(5025334324706345710800763986625066818722194863275454698142520938431664775139); + zeros[3] = uint256(14192954438167108345302805021925904074255585459982294518284934685870159779036); + zeros[4] = uint256(20187882570958996766847085412101405873580281668670041750401431925441526137696); + zeros[5] = uint256(19003337309269317766726592380821628773167513668895143249995308839385810331053); + zeros[6] = uint256(8492845964288036916491732908697290386617362835683911619537012952509890847451); + zeros[7] = uint256(21317322053785868903775560086424946986124609731059541056518805391492871868814); + zeros[8] = uint256(4256218134522031233385262696416028085306220785615095518146227774336224649500); + zeros[9] = uint256(20901832483812704342876390942522900825096860186886589193649848721504734341597); + zeros[10] = uint256(9267454486648593048583319961333207622177969074484816717792204743506543655505); + zeros[11] = uint256(7650747654726613674993974917452464536868175649563857452207429547024788245109); + zeros[12] = uint256(12795449162487060618571749226308575208199045387848354123797521555997299022426); + zeros[13] = uint256(2618557044910497521493457299926978327841926538380467450910611798747947773417); + zeros[14] = uint256(4921285654960018268026585535199462620025474147042548993648101553653712920841); + zeros[15] = uint256(3955171118947393404895230582611078362154691627898437205118006583966987624963); + zeros[16] = uint256(14699122743207261418107167543163571550551347592030521489185842204376855027947); + zeros[17] = uint256(19194001556311522650950142975587831061973644651464593103195262630226529549573); + zeros[18] = uint256(6797319293744791648201295415173228627305696583566554220235084234134847845566); + zeros[19] = uint256(1267384159070923114421683251804507954363252272096341442482679590950570779538); + zeros[20] = uint256(3856223245980092789300785214737986268213218594679123772901587106666007826613); + zeros[21] = uint256(18676489457897260843888223351978541467312325190019940958023830749320128516742); + zeros[22] = uint256(1264182110328471160091364892521750324454825019784514769029658712768604765832); + zeros[23] = uint256(2656996430278859489720531694992812241970377217691981498421470018287262214836); + zeros[24] = uint256(18383091906017498328025573868990834275527351249551450291689105976789994000945); + zeros[25] = uint256(13529005048172217954112431586843818755284974925259175262114689118374272942448); + zeros[26] = uint256(12992932230018177961399273443546858115054107741258772159002781102941121463198); + zeros[27] = uint256(2863122912185356538647249583178796893334871904920344676880115119793539219810); + zeros[28] = uint256(21225940722224750787686036600289689346822264717843340643526494987845938066724); + zeros[29] = uint256(10287710058152238258370855601473179390407624438853416678054122418589867334291); + zeros[30] = uint256(19473882726731003241332772446613588021823731071450664115530121948154136765165); + zeros[31] = uint256(5317840242664832852914696563734700089268851122527105938301831862363938018455); + zeros[32] = uint256(16560004488485252485490851383643926099553282582813695748927880827248594395952); + } + + function getZero(uint256 _level) internal view override returns (uint256) { + return zeros[_level]; + } +} diff --git a/packages/contracts/contracts/VkRegistry.sol b/packages/contracts/contracts/VkRegistry.sol new file mode 100755 index 00000000..6f00de42 --- /dev/null +++ b/packages/contracts/contracts/VkRegistry.sol @@ -0,0 +1,189 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.10; + +import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; +import {Pairing} from "./Pairing.sol"; + +/* + * Stores verifying keys for the circuits. + * Each circuit has a signature which is its compile-time constants represented + * as a uint256. + */ +contract VkRegistry is Ownable { + struct VerifyingKey { + Pairing.G1Point alpha1; + Pairing.G2Point beta2; + Pairing.G2Point gamma2; + Pairing.G2Point delta2; + Pairing.G1Point[] ic; + } + mapping(uint256 => VerifyingKey) internal processVks; + mapping(uint256 => bool) internal processVkSet; + + mapping(uint256 => VerifyingKey) internal tallyVks; + mapping(uint256 => bool) internal tallyVkSet; + + mapping(uint256 => VerifyingKey) internal subsidyVks; + mapping(uint256 => bool) internal subsidyVkSet; + + event ProcessVkSet(uint256 _sig); + event TallyVkSet(uint256 _sig); + event SubsidyVkSet(uint256 _sig); + + function isProcessVkSet(uint256 _sig) public view returns (bool) { + return processVkSet[_sig]; + } + + function isTallyVkSet(uint256 _sig) public view returns (bool) { + return tallyVkSet[_sig]; + } + + function isSubsidyVkSet(uint256 _sig) public view returns (bool) { + return subsidyVkSet[_sig]; + } + + function genProcessVkSig( + uint256 _stateTreeDepth, + uint256 _messageTreeDepth, + uint256 _voteOptionTreeDepth, + uint256 _messageBatchSize + ) public pure returns (uint256) { + return (_messageBatchSize << 192) + (_stateTreeDepth << 128) + (_messageTreeDepth << 64) + _voteOptionTreeDepth; + } + + function genTallyVkSig(uint256 _stateTreeDepth, uint256 _intStateTreeDepth, uint256 _voteOptionTreeDepth) public pure returns (uint256) { + return (_stateTreeDepth << 128) + (_intStateTreeDepth << 64) + _voteOptionTreeDepth; + } + + function genSubsidyVkSig(uint256 _stateTreeDepth, uint256 _intStateTreeDepth, uint256 _voteOptionTreeDepth) public pure returns (uint256) { + return (_stateTreeDepth << 128) + (_intStateTreeDepth << 64) + _voteOptionTreeDepth; + } + + function setVerifyingKeys( + uint256 _stateTreeDepth, + uint256 _intStateTreeDepth, + uint256 _messageTreeDepth, + uint256 _voteOptionTreeDepth, + uint256 _messageBatchSize, + VerifyingKey memory _processVk, + VerifyingKey memory _tallyVk + ) public onlyOwner { + uint256 processVkSig = genProcessVkSig(_stateTreeDepth, _messageTreeDepth, _voteOptionTreeDepth, _messageBatchSize); + + require(!processVkSet[processVkSig], "VkRegistry: process vk already set"); + + uint256 tallyVkSig = genTallyVkSig(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); + + require(!tallyVkSet[tallyVkSig], "VkRegistry: tally vk already set"); + + VerifyingKey storage processVk = processVks[processVkSig]; + processVk.alpha1 = _processVk.alpha1; + processVk.beta2 = _processVk.beta2; + processVk.gamma2 = _processVk.gamma2; + processVk.delta2 = _processVk.delta2; + for (uint8 i = 0; i < _processVk.ic.length; i++) { + processVk.ic.push(_processVk.ic[i]); + } + + processVkSet[processVkSig] = true; + + VerifyingKey storage tallyVk = tallyVks[tallyVkSig]; + tallyVk.alpha1 = _tallyVk.alpha1; + tallyVk.beta2 = _tallyVk.beta2; + tallyVk.gamma2 = _tallyVk.gamma2; + tallyVk.delta2 = _tallyVk.delta2; + for (uint8 i = 0; i < _tallyVk.ic.length; i++) { + tallyVk.ic.push(_tallyVk.ic[i]); + } + tallyVkSet[tallyVkSig] = true; + + emit TallyVkSet(tallyVkSig); + emit ProcessVkSet(processVkSig); + } + + function setSubsidyKeys( + uint256 _stateTreeDepth, + uint256 _intStateTreeDepth, + uint256 _voteOptionTreeDepth, + VerifyingKey memory _subsidyVk + ) public onlyOwner { + uint256 subsidyVkSig = genSubsidyVkSig(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); + + require(!subsidyVkSet[subsidyVkSig], "VkRegistry: subsidy vk already set"); + + VerifyingKey storage subsidyVk = subsidyVks[subsidyVkSig]; + subsidyVk.alpha1 = _subsidyVk.alpha1; + subsidyVk.beta2 = _subsidyVk.beta2; + subsidyVk.gamma2 = _subsidyVk.gamma2; + subsidyVk.delta2 = _subsidyVk.delta2; + for (uint8 i = 0; i < _subsidyVk.ic.length; i++) { + subsidyVk.ic.push(_subsidyVk.ic[i]); + } + subsidyVkSet[subsidyVkSig] = true; + + emit SubsidyVkSet(subsidyVkSig); + } + + function hasProcessVk( + uint256 _stateTreeDepth, + uint256 _messageTreeDepth, + uint256 _voteOptionTreeDepth, + uint256 _messageBatchSize + ) public view returns (bool) { + uint256 sig = genProcessVkSig(_stateTreeDepth, _messageTreeDepth, _voteOptionTreeDepth, _messageBatchSize); + return processVkSet[sig]; + } + + function getProcessVkBySig(uint256 _sig) public view returns (VerifyingKey memory) { + require(processVkSet[_sig], "VkRegistry: process verifying key not set"); + + return processVks[_sig]; + } + + function getProcessVk( + uint256 _stateTreeDepth, + uint256 _messageTreeDepth, + uint256 _voteOptionTreeDepth, + uint256 _messageBatchSize + ) public view returns (VerifyingKey memory) { + uint256 sig = genProcessVkSig(_stateTreeDepth, _messageTreeDepth, _voteOptionTreeDepth, _messageBatchSize); + + return getProcessVkBySig(sig); + } + + function hasTallyVk(uint256 _stateTreeDepth, uint256 _intStateTreeDepth, uint256 _voteOptionTreeDepth) public view returns (bool) { + uint256 sig = genTallyVkSig(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); + + return tallyVkSet[sig]; + } + + function getTallyVkBySig(uint256 _sig) public view returns (VerifyingKey memory) { + require(tallyVkSet[_sig], "VkRegistry: tally verifying key not set"); + + return tallyVks[_sig]; + } + + function getTallyVk(uint256 _stateTreeDepth, uint256 _intStateTreeDepth, uint256 _voteOptionTreeDepth) public view returns (VerifyingKey memory) { + uint256 sig = genTallyVkSig(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); + + return getTallyVkBySig(sig); + } + + function hasSubsidyVk(uint256 _stateTreeDepth, uint256 _intStateTreeDepth, uint256 _voteOptionTreeDepth) public view returns (bool) { + uint256 sig = genSubsidyVkSig(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); + + return subsidyVkSet[sig]; + } + + function getSubsidyVkBySig(uint256 _sig) public view returns (VerifyingKey memory) { + require(subsidyVkSet[_sig], "VkRegistry: subsidy verifying key not set"); + + return subsidyVks[_sig]; + } + + function getSubsidyVk(uint256 _stateTreeDepth, uint256 _intStateTreeDepth, uint256 _voteOptionTreeDepth) public view returns (VerifyingKey memory) { + uint256 sig = genSubsidyVkSig(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); + + return getSubsidyVkBySig(sig); + } +} diff --git a/packages/contracts/contracts/flavors/ConstantInitialVoiceCreditProxy.sol b/packages/contracts/contracts/flavors/ConstantInitialVoiceCreditProxy.sol new file mode 100644 index 00000000..5f23b92c --- /dev/null +++ b/packages/contracts/contracts/flavors/ConstantInitialVoiceCreditProxy.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.1; + +abstract contract InitialVoiceCreditProxy { + function getVoiceCredits(address _user, bytes memory _data) public virtual view returns (uint256) {} +} + +contract ConstantInitialVoiceCreditProxy is InitialVoiceCreditProxy { + + uint256 internal balance; + + constructor(uint256 _balance) { + balance = _balance; + } + + function getVoiceCredits(address, bytes memory) public override view returns (uint256) { + return balance; + } +} diff --git a/packages/contracts/contracts/flavors/F.sol b/packages/contracts/contracts/flavors/F.sol new file mode 100644 index 00000000..b08399c5 --- /dev/null +++ b/packages/contracts/contracts/flavors/F.sol @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.1; + +import { ISignUpGatekeeper } from './ISignUpGatekeeper.sol'; + +contract FreeForAllGatekeeper is ISignUpGatekeeper { + /* + * Registers the user without any restrictions. + */ + function register(address, bytes memory) public override { + } +} diff --git a/packages/contracts/contracts/flavors/IInitialVoiceCreditProxy.sol b/packages/contracts/contracts/flavors/IInitialVoiceCreditProxy.sol new file mode 100644 index 00000000..231a5643 --- /dev/null +++ b/packages/contracts/contracts/flavors/IInitialVoiceCreditProxy.sol @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.1; + +/** + * @dev Interface of the InitialVoiceCreditProxy contract. + * the contract is used to get the initial voice credit balance of a user + */ +abstract contract IInitialVoiceCreditProxy { + function getVoiceCredits( + address _user, + bytes memory _data + ) public view virtual returns (uint256) {} +} diff --git a/packages/contracts/contracts/flavors/ISignUpGatekeeper.sol b/packages/contracts/contracts/flavors/ISignUpGatekeeper.sol new file mode 100644 index 00000000..86a0ee0b --- /dev/null +++ b/packages/contracts/contracts/flavors/ISignUpGatekeeper.sol @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.1; + +/** + * @dev Interface of the SignUpGatekeeper contract. + * SignUpGatekeeper is a contract that allows users to sign up based on some + * condition. For example, a SignUpGatekeeper contract could allow users to + * sign up if they own a specific NFT token or are part of a dao. + */ +abstract contract ISignUpGatekeeper { + function register(address _user, bytes memory _data) public virtual {} +} diff --git a/packages/contracts/contracts/flavors/NFTSignup.sol b/packages/contracts/contracts/flavors/NFTSignup.sol new file mode 100644 index 00000000..603d77d8 --- /dev/null +++ b/packages/contracts/contracts/flavors/NFTSignup.sol @@ -0,0 +1,67 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.1; + +import "@openzeppelin/contracts/access/Ownable.sol"; +import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol"; +import {SimpleRecipientRegistry} from "../recipientRegistry/SimpleRecipientRegistry.sol"; +import {ISignUpGatekeeper} from "./ISignUpGatekeeper.sol"; + +/* + * An ERC721 token that can be used to sign up + */ +contract SignUpNFT is ERC721, Ownable { + constructor() ERC721("SignUpToken", "SignUpToken") {} + + /* + * Mints a token with the given ID and assigns it to the given address. + * @param to The address to which the token will be assigned. + * @param tokenId The ID of the token to be minted. + */ + function giveToken(address to, uint256 tokenId) public onlyOwner { + _mint(to, tokenId); + } +} + +abstract contract InitialVoiceCreditProxy { + function getVoiceCredits(address _user, bytes memory _data) public view virtual returns (uint256) {} +} + +/* + * only allows users to sign up if they own a specific NFT token + */ +contract NFTSignup is ISignUpGatekeeper, SimpleRecipientRegistry { + address public operator; + uint256 public balance; + SignUpNFT public nft; + + // can only signup once + mapping(uint256 => bool) internal registeredTokenIds; + + constructor(SignUpNFT _token, uint256 _balance, address _operator) SimpleRecipientRegistry(_operator) { + operator = _operator; + balance = _balance; + nft = _token; + } + + /* + * Registers the user if they own an NFT + * @param _user The user's Ethereum address. + * @param _data The token ID + */ + function register(address _user, bytes memory _data) public override { + require(address(operator) == msg.sender, "SignUpTokenGatekeeper: only specified MACI instance can call this function"); + // Decode the given _data bytes into a uint256 which is the token ID + uint256 tokenId = abi.decode(_data, (uint256)); + + // Check if the user owns the token + bool ownsToken = nft.ownerOf(tokenId) == _user; + require(ownsToken == true, "SignUpTokenGatekeeper: this user does not own the token"); + + // Check if the token has already been used + bool alreadyRegistered = registeredTokenIds[tokenId]; + require(alreadyRegistered == false, "SignUpTokenGatekeeper: this token has already been used to sign up"); + + // Mark the token as already used + registeredTokenIds[tokenId] = true; + } +} diff --git a/packages/contracts/contracts/flavors/SimpleHackathon.sol b/packages/contracts/contracts/flavors/SimpleHackathon.sol new file mode 100644 index 00000000..79e949f9 --- /dev/null +++ b/packages/contracts/contracts/flavors/SimpleHackathon.sol @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.1; + +import "@openzeppelin/contracts/access/Ownable.sol"; +import {SimpleRecipientRegistry} from "../recipientRegistry/SimpleRecipientRegistry.sol"; +import {ISignUpGatekeeper} from "./ISignUpGatekeeper.sol"; +import {IInitialVoiceCreditProxy} from "./IInitialVoiceCreditProxy.sol"; + +contract SimpleHackathon is + ISignUpGatekeeper, + IInitialVoiceCreditProxy, + SimpleRecipientRegistry +{ + uint256 internal balance; + address internal operator; + + constructor( + uint256 _balance, + address _operator + ) SimpleRecipientRegistry(_operator) { + operator = _operator; + balance = _balance; + } + + /* + * Registers the user if they own the token with the token ID encoded in + * _data. Throws if the user is does not own the token or if the token has + * already been used to sign up. + * @param _user The user's Ethereum address. + * @param _data noop + */ + function register(address _user, bytes memory _data) public view override { + require( + address(operator) == msg.sender, + "SignUpTokenGatekeeper: only specified operator instance can call this function" + ); + require( + _user == owner(), + "SignUpTokenGatekeeper: only owner can call this function" + ); + } + + function getVoiceCredits( + address, + bytes memory + ) public view override returns (uint256) { + return balance; + } +} diff --git a/packages/contracts/contracts/poseidon/PoseidonT3.sol b/packages/contracts/contracts/poseidon/PoseidonT3.sol new file mode 100644 index 00000000..6f60bd90 --- /dev/null +++ b/packages/contracts/contracts/poseidon/PoseidonT3.sol @@ -0,0 +1,492 @@ +/// SPDX-License-Identifier: MIT +pragma solidity ^0.8.10; + +library PoseidonT3 { + uint constant F = 21888242871839275222246405745257275088548364400416034343698204186575808495617; + + uint constant M00 = 0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b; + uint constant M01 = 0x2969f27eed31a480b9c36c764379dbca2cc8fdd1415c3dded62940bcde0bd771; + uint constant M02 = 0x143021ec686a3f330d5f9e654638065ce6cd79e28c5b3753326244ee65a1b1a7; + uint constant M10 = 0x16ed41e13bb9c0c66ae119424fddbcbc9314dc9fdbdeea55d6c64543dc4903e0; + uint constant M11 = 0x2e2419f9ec02ec394c9871c832963dc1b89d743c8c7b964029b2311687b1fe23; + uint constant M12 = 0x176cc029695ad02582a70eff08a6fd99d057e12e58e7d7b6b16cdfabc8ee2911; + uint constant M20 = 0x2b90bba00fca0589f617e7dcbfe82e0df706ab640ceb247b791a93b74e36736d; + uint constant M21 = 0x101071f0032379b697315876690f053d148d4e109f5fb065c8aacc55a0f89bfa; + uint constant M22 = 0x19a3fc0a56702bf417ba7fee3802593fa644470307043f7773279cd71d25d5e0; + + // See here for a simplified implementation: https://github.com/vimwitch/poseidon-solidity/blob/e57becdabb65d99fdc586fe1e1e09e7108202d53/contracts/Poseidon.sol#L40 + // Based on: https://github.com/iden3/circomlibjs/blob/v0.0.8/src/poseidon_slow.js + function hash2(uint[2] memory) public pure returns (uint) { + assembly { + // memory 0x00 to 0x3f (64 bytes) is scratch space for hash algos + // we can use it in inline assembly because we're not calling e.g. keccak + // + // memory 0x80 is the default offset for free memory + // we take inputs as a memory argument so we simply write over + // that memory after loading it + + // we have the following variables at memory offsets + // state0 - 0x00 + // state1 - 0x20 + // state2 - 0x80 + // state3 - 0xa0 + // state4 - ... + + function pRound(c0, c1, c2) { + let state0 := addmod(mload(0x0), c0, F) + let state1 := addmod(mload(0x20), c1, F) + let state2 := addmod(mload(0x80), c2, F) + + let p := mulmod(state0, state0, F) + state0 := mulmod(mulmod(p, p, F), state0, F) + + mstore(0x0, addmod(addmod(mulmod(state0, M00, F), mulmod(state1, M10, F), F), mulmod(state2, M20, F), F)) + mstore(0x20, addmod(addmod(mulmod(state0, M01, F), mulmod(state1, M11, F), F), mulmod(state2, M21, F), F)) + mstore(0x80, addmod(addmod(mulmod(state0, M02, F), mulmod(state1, M12, F), F), mulmod(state2, M22, F), F)) + } + + function fRound(c0, c1, c2) { + let state0 := addmod(mload(0x0), c0, F) + let state1 := addmod(mload(0x20), c1, F) + let state2 := addmod(mload(0x80), c2, F) + + let p := mulmod(state0, state0, F) + state0 := mulmod(mulmod(p, p, F), state0, F) + p := mulmod(state1, state1, F) + state1 := mulmod(mulmod(p, p, F), state1, F) + p := mulmod(state2, state2, F) + state2 := mulmod(mulmod(p, p, F), state2, F) + + mstore(0x0, addmod(addmod(mulmod(state0, M00, F), mulmod(state1, M10, F), F), mulmod(state2, M20, F), F)) + mstore(0x20, addmod(addmod(mulmod(state0, M01, F), mulmod(state1, M11, F), F), mulmod(state2, M21, F), F)) + mstore(0x80, addmod(addmod(mulmod(state0, M02, F), mulmod(state1, M12, F), F), mulmod(state2, M22, F), F)) + } + + // scratch variable for exponentiation + let p + + { + // load the inputs from memory + let state1 := addmod(mload(0x80), 0x00f1445235f2148c5986587169fc1bcd887b08d4d00868df5696fff40956e864, F) + let state2 := addmod(mload(0xa0), 0x08dff3487e8ac99e1f29a058d0fa80b930c728730b7ab36ce879f3890ecf73f5, F) + mstore(0x60, addmod(mload(0xc0), 0x2f27be690fdaee46c3ce28f7532b13c856c35342c84bda6e20966310fadc01d0, F)) + + p := mulmod(state1, state1, F) + state1 := mulmod(mulmod(p, p, F), state1, F) + p := mulmod(state2, state2, F) + state2 := mulmod(mulmod(p, p, F), state2, F) + + // state0 pow5mod and M[] multiplications are pre-calculated + + mstore(0x0, addmod(addmod(0x2229fe5e63f56eef4bfba02c26292de10ac2b2b045e6184acff16e4660c05f6b, mulmod(state1, M10, F), F), mulmod(state2, M20, F), F)) + mstore(0x20, addmod(addmod(0x2949435275a29cdbffe3e4101a45669873f9408a5d11e21b4ec6edf8501eee4d, mulmod(state1, M11, F), F), mulmod(state2, M21, F), F)) + mstore(0x80, addmod(addmod(0x20c290a7269657965092ef5700a447f5bc2c41dfca932f527cb2600ac9bcfefb, mulmod(state1, M12, F), F), mulmod(state2, M22, F), F)) + } + + fRound( + 0x2f27be690fdaee46c3ce28f7532b13c856c35342c84bda6e20966310fadc01d0, + 0x2b2ae1acf68b7b8d2416bebf3d4f6234b763fe04b8043ee48b8327bebca16cf2, + 0x0319d062072bef7ecca5eac06f97d4d55952c175ab6b03eae64b44c7dbf11cfa + ) + + fRound( + 0x28813dcaebaeaa828a376df87af4a63bc8b7bf27ad49c6298ef7b387bf28526d, + 0x2727673b2ccbc903f181bf38e1c1d40d2033865200c352bc150928adddf9cb78, + 0x234ec45ca27727c2e74abd2b2a1494cd6efbd43e340587d6b8fb9e31e65cc632 + ) + + fRound( + 0x15b52534031ae18f7f862cb2cf7cf760ab10a8150a337b1ccd99ff6e8797d428, + 0x0dc8fad6d9e4b35f5ed9a3d186b79ce38e0e8a8d1b58b132d701d4eecf68d1f6, + 0x1bcd95ffc211fbca600f705fad3fb567ea4eb378f62e1fec97805518a47e4d9c + ) + + pRound( + 0x10520b0ab721cadfe9eff81b016fc34dc76da36c2578937817cb978d069de559, + 0x1f6d48149b8e7f7d9b257d8ed5fbbaf42932498075fed0ace88a9eb81f5627f6, + 0x1d9655f652309014d29e00ef35a2089bfff8dc1c816f0dc9ca34bdb5460c8705 + ) + + pRound( + 0x04df5a56ff95bcafb051f7b1cd43a99ba731ff67e47032058fe3d4185697cc7d, + 0x0672d995f8fff640151b3d290cedaf148690a10a8c8424a7f6ec282b6e4be828, + 0x099952b414884454b21200d7ffafdd5f0c9a9dcc06f2708e9fc1d8209b5c75b9 + ) + + pRound( + 0x052cba2255dfd00c7c483143ba8d469448e43586a9b4cd9183fd0e843a6b9fa6, + 0x0b8badee690adb8eb0bd74712b7999af82de55707251ad7716077cb93c464ddc, + 0x119b1590f13307af5a1ee651020c07c749c15d60683a8050b963d0a8e4b2bdd1 + ) + + pRound( + 0x03150b7cd6d5d17b2529d36be0f67b832c4acfc884ef4ee5ce15be0bfb4a8d09, + 0x2cc6182c5e14546e3cf1951f173912355374efb83d80898abe69cb317c9ea565, + 0x005032551e6378c450cfe129a404b3764218cadedac14e2b92d2cd73111bf0f9 + ) + + pRound( + 0x233237e3289baa34bb147e972ebcb9516469c399fcc069fb88f9da2cc28276b5, + 0x05c8f4f4ebd4a6e3c980d31674bfbe6323037f21b34ae5a4e80c2d4c24d60280, + 0x0a7b1db13042d396ba05d818a319f25252bcf35ef3aeed91ee1f09b2590fc65b + ) + + pRound( + 0x2a73b71f9b210cf5b14296572c9d32dbf156e2b086ff47dc5df542365a404ec0, + 0x1ac9b0417abcc9a1935107e9ffc91dc3ec18f2c4dbe7f22976a760bb5c50c460, + 0x12c0339ae08374823fabb076707ef479269f3e4d6cb104349015ee046dc93fc0 + ) + + pRound( + 0x0b7475b102a165ad7f5b18db4e1e704f52900aa3253baac68246682e56e9a28e, + 0x037c2849e191ca3edb1c5e49f6e8b8917c843e379366f2ea32ab3aa88d7f8448, + 0x05a6811f8556f014e92674661e217e9bd5206c5c93a07dc145fdb176a716346f + ) + + pRound( + 0x29a795e7d98028946e947b75d54e9f044076e87a7b2883b47b675ef5f38bd66e, + 0x20439a0c84b322eb45a3857afc18f5826e8c7382c8a1585c507be199981fd22f, + 0x2e0ba8d94d9ecf4a94ec2050c7371ff1bb50f27799a84b6d4a2a6f2a0982c887 + ) + + pRound( + 0x143fd115ce08fb27ca38eb7cce822b4517822cd2109048d2e6d0ddcca17d71c8, + 0x0c64cbecb1c734b857968dbbdcf813cdf8611659323dbcbfc84323623be9caf1, + 0x028a305847c683f646fca925c163ff5ae74f348d62c2b670f1426cef9403da53 + ) + + pRound( + 0x2e4ef510ff0b6fda5fa940ab4c4380f26a6bcb64d89427b824d6755b5db9e30c, + 0x0081c95bc43384e663d79270c956ce3b8925b4f6d033b078b96384f50579400e, + 0x2ed5f0c91cbd9749187e2fade687e05ee2491b349c039a0bba8a9f4023a0bb38 + ) + + pRound( + 0x30509991f88da3504bbf374ed5aae2f03448a22c76234c8c990f01f33a735206, + 0x1c3f20fd55409a53221b7c4d49a356b9f0a1119fb2067b41a7529094424ec6ad, + 0x10b4e7f3ab5df003049514459b6e18eec46bb2213e8e131e170887b47ddcb96c + ) + + pRound( + 0x2a1982979c3ff7f43ddd543d891c2abddd80f804c077d775039aa3502e43adef, + 0x1c74ee64f15e1db6feddbead56d6d55dba431ebc396c9af95cad0f1315bd5c91, + 0x07533ec850ba7f98eab9303cace01b4b9e4f2e8b82708cfa9c2fe45a0ae146a0 + ) + + pRound( + 0x21576b438e500449a151e4eeaf17b154285c68f42d42c1808a11abf3764c0750, + 0x2f17c0559b8fe79608ad5ca193d62f10bce8384c815f0906743d6930836d4a9e, + 0x2d477e3862d07708a79e8aae946170bc9775a4201318474ae665b0b1b7e2730e + ) + + pRound( + 0x162f5243967064c390e095577984f291afba2266c38f5abcd89be0f5b2747eab, + 0x2b4cb233ede9ba48264ecd2c8ae50d1ad7a8596a87f29f8a7777a70092393311, + 0x2c8fbcb2dd8573dc1dbaf8f4622854776db2eece6d85c4cf4254e7c35e03b07a + ) + + pRound( + 0x1d6f347725e4816af2ff453f0cd56b199e1b61e9f601e9ade5e88db870949da9, + 0x204b0c397f4ebe71ebc2d8b3df5b913df9e6ac02b68d31324cd49af5c4565529, + 0x0c4cb9dc3c4fd8174f1149b3c63c3c2f9ecb827cd7dc25534ff8fb75bc79c502 + ) + + pRound( + 0x174ad61a1448c899a25416474f4930301e5c49475279e0639a616ddc45bc7b54, + 0x1a96177bcf4d8d89f759df4ec2f3cde2eaaa28c177cc0fa13a9816d49a38d2ef, + 0x066d04b24331d71cd0ef8054bc60c4ff05202c126a233c1a8242ace360b8a30a + ) + + pRound( + 0x2a4c4fc6ec0b0cf52195782871c6dd3b381cc65f72e02ad527037a62aa1bd804, + 0x13ab2d136ccf37d447e9f2e14a7cedc95e727f8446f6d9d7e55afc01219fd649, + 0x1121552fca26061619d24d843dc82769c1b04fcec26f55194c2e3e869acc6a9a + ) + + pRound( + 0x00ef653322b13d6c889bc81715c37d77a6cd267d595c4a8909a5546c7c97cff1, + 0x0e25483e45a665208b261d8ba74051e6400c776d652595d9845aca35d8a397d3, + 0x29f536dcb9dd7682245264659e15d88e395ac3d4dde92d8c46448db979eeba89 + ) + + pRound( + 0x2a56ef9f2c53febadfda33575dbdbd885a124e2780bbea170e456baace0fa5be, + 0x1c8361c78eb5cf5decfb7a2d17b5c409f2ae2999a46762e8ee416240a8cb9af1, + 0x151aff5f38b20a0fc0473089aaf0206b83e8e68a764507bfd3d0ab4be74319c5 + ) + + pRound( + 0x04c6187e41ed881dc1b239c88f7f9d43a9f52fc8c8b6cdd1e76e47615b51f100, + 0x13b37bd80f4d27fb10d84331f6fb6d534b81c61ed15776449e801b7ddc9c2967, + 0x01a5c536273c2d9df578bfbd32c17b7a2ce3664c2a52032c9321ceb1c4e8a8e4 + ) + + pRound( + 0x2ab3561834ca73835ad05f5d7acb950b4a9a2c666b9726da832239065b7c3b02, + 0x1d4d8ec291e720db200fe6d686c0d613acaf6af4e95d3bf69f7ed516a597b646, + 0x041294d2cc484d228f5784fe7919fd2bb925351240a04b711514c9c80b65af1d + ) + + pRound( + 0x154ac98e01708c611c4fa715991f004898f57939d126e392042971dd90e81fc6, + 0x0b339d8acca7d4f83eedd84093aef51050b3684c88f8b0b04524563bc6ea4da4, + 0x0955e49e6610c94254a4f84cfbab344598f0e71eaff4a7dd81ed95b50839c82e + ) + + pRound( + 0x06746a6156eba54426b9e22206f15abca9a6f41e6f535c6f3525401ea0654626, + 0x0f18f5a0ecd1423c496f3820c549c27838e5790e2bd0a196ac917c7ff32077fb, + 0x04f6eeca1751f7308ac59eff5beb261e4bb563583ede7bc92a738223d6f76e13 + ) + + pRound( + 0x2b56973364c4c4f5c1a3ec4da3cdce038811eb116fb3e45bc1768d26fc0b3758, + 0x123769dd49d5b054dcd76b89804b1bcb8e1392b385716a5d83feb65d437f29ef, + 0x2147b424fc48c80a88ee52b91169aacea989f6446471150994257b2fb01c63e9 + ) + + pRound( + 0x0fdc1f58548b85701a6c5505ea332a29647e6f34ad4243c2ea54ad897cebe54d, + 0x12373a8251fea004df68abcf0f7786d4bceff28c5dbbe0c3944f685cc0a0b1f2, + 0x21e4f4ea5f35f85bad7ea52ff742c9e8a642756b6af44203dd8a1f35c1a90035 + ) + + pRound( + 0x16243916d69d2ca3dfb4722224d4c462b57366492f45e90d8a81934f1bc3b147, + 0x1efbe46dd7a578b4f66f9adbc88b4378abc21566e1a0453ca13a4159cac04ac2, + 0x07ea5e8537cf5dd08886020e23a7f387d468d5525be66f853b672cc96a88969a + ) + + pRound( + 0x05a8c4f9968b8aa3b7b478a30f9a5b63650f19a75e7ce11ca9fe16c0b76c00bc, + 0x20f057712cc21654fbfe59bd345e8dac3f7818c701b9c7882d9d57b72a32e83f, + 0x04a12ededa9dfd689672f8c67fee31636dcd8e88d01d49019bd90b33eb33db69 + ) + + pRound( + 0x27e88d8c15f37dcee44f1e5425a51decbd136ce5091a6767e49ec9544ccd101a, + 0x2feed17b84285ed9b8a5c8c5e95a41f66e096619a7703223176c41ee433de4d1, + 0x1ed7cc76edf45c7c404241420f729cf394e5942911312a0d6972b8bd53aff2b8 + ) + + pRound( + 0x15742e99b9bfa323157ff8c586f5660eac6783476144cdcadf2874be45466b1a, + 0x1aac285387f65e82c895fc6887ddf40577107454c6ec0317284f033f27d0c785, + 0x25851c3c845d4790f9ddadbdb6057357832e2e7a49775f71ec75a96554d67c77 + ) + + pRound( + 0x15a5821565cc2ec2ce78457db197edf353b7ebba2c5523370ddccc3d9f146a67, + 0x2411d57a4813b9980efa7e31a1db5966dcf64f36044277502f15485f28c71727, + 0x002e6f8d6520cd4713e335b8c0b6d2e647e9a98e12f4cd2558828b5ef6cb4c9b + ) + + pRound( + 0x2ff7bc8f4380cde997da00b616b0fcd1af8f0e91e2fe1ed7398834609e0315d2, + 0x00b9831b948525595ee02724471bcd182e9521f6b7bb68f1e93be4febb0d3cbe, + 0x0a2f53768b8ebf6a86913b0e57c04e011ca408648a4743a87d77adbf0c9c3512 + ) + + pRound( + 0x00248156142fd0373a479f91ff239e960f599ff7e94be69b7f2a290305e1198d, + 0x171d5620b87bfb1328cf8c02ab3f0c9a397196aa6a542c2350eb512a2b2bcda9, + 0x170a4f55536f7dc970087c7c10d6fad760c952172dd54dd99d1045e4ec34a808 + ) + + pRound( + 0x29aba33f799fe66c2ef3134aea04336ecc37e38c1cd211ba482eca17e2dbfae1, + 0x1e9bc179a4fdd758fdd1bb1945088d47e70d114a03f6a0e8b5ba650369e64973, + 0x1dd269799b660fad58f7f4892dfb0b5afeaad869a9c4b44f9c9e1c43bdaf8f09 + ) + + pRound( + 0x22cdbc8b70117ad1401181d02e15459e7ccd426fe869c7c95d1dd2cb0f24af38, + 0x0ef042e454771c533a9f57a55c503fcefd3150f52ed94a7cd5ba93b9c7dacefd, + 0x11609e06ad6c8fe2f287f3036037e8851318e8b08a0359a03b304ffca62e8284 + ) + + pRound( + 0x1166d9e554616dba9e753eea427c17b7fecd58c076dfe42708b08f5b783aa9af, + 0x2de52989431a859593413026354413db177fbf4cd2ac0b56f855a888357ee466, + 0x3006eb4ffc7a85819a6da492f3a8ac1df51aee5b17b8e89d74bf01cf5f71e9ad + ) + + pRound( + 0x2af41fbb61ba8a80fdcf6fff9e3f6f422993fe8f0a4639f962344c8225145086, + 0x119e684de476155fe5a6b41a8ebc85db8718ab27889e85e781b214bace4827c3, + 0x1835b786e2e8925e188bea59ae363537b51248c23828f047cff784b97b3fd800 + ) + + pRound( + 0x28201a34c594dfa34d794996c6433a20d152bac2a7905c926c40e285ab32eeb6, + 0x083efd7a27d1751094e80fefaf78b000864c82eb571187724a761f88c22cc4e7, + 0x0b6f88a3577199526158e61ceea27be811c16df7774dd8519e079564f61fd13b + ) + + pRound( + 0x0ec868e6d15e51d9644f66e1d6471a94589511ca00d29e1014390e6ee4254f5b, + 0x2af33e3f866771271ac0c9b3ed2e1142ecd3e74b939cd40d00d937ab84c98591, + 0x0b520211f904b5e7d09b5d961c6ace7734568c547dd6858b364ce5e47951f178 + ) + + pRound( + 0x0b2d722d0919a1aad8db58f10062a92ea0c56ac4270e822cca228620188a1d40, + 0x1f790d4d7f8cf094d980ceb37c2453e957b54a9991ca38bbe0061d1ed6e562d4, + 0x0171eb95dfbf7d1eaea97cd385f780150885c16235a2a6a8da92ceb01e504233 + ) + + pRound( + 0x0c2d0e3b5fd57549329bf6885da66b9b790b40defd2c8650762305381b168873, + 0x1162fb28689c27154e5a8228b4e72b377cbcafa589e283c35d3803054407a18d, + 0x2f1459b65dee441b64ad386a91e8310f282c5a92a89e19921623ef8249711bc0 + ) + + pRound( + 0x1e6ff3216b688c3d996d74367d5cd4c1bc489d46754eb712c243f70d1b53cfbb, + 0x01ca8be73832b8d0681487d27d157802d741a6f36cdc2a0576881f9326478875, + 0x1f7735706ffe9fc586f976d5bdf223dc680286080b10cea00b9b5de315f9650e + ) + + pRound( + 0x2522b60f4ea3307640a0c2dce041fba921ac10a3d5f096ef4745ca838285f019, + 0x23f0bee001b1029d5255075ddc957f833418cad4f52b6c3f8ce16c235572575b, + 0x2bc1ae8b8ddbb81fcaac2d44555ed5685d142633e9df905f66d9401093082d59 + ) + + pRound( + 0x0f9406b8296564a37304507b8dba3ed162371273a07b1fc98011fcd6ad72205f, + 0x2360a8eb0cc7defa67b72998de90714e17e75b174a52ee4acb126c8cd995f0a8, + 0x15871a5cddead976804c803cbaef255eb4815a5e96df8b006dcbbc2767f88948 + ) + + pRound( + 0x193a56766998ee9e0a8652dd2f3b1da0362f4f54f72379544f957ccdeefb420f, + 0x2a394a43934f86982f9be56ff4fab1703b2e63c8ad334834e4309805e777ae0f, + 0x1859954cfeb8695f3e8b635dcb345192892cd11223443ba7b4166e8876c0d142 + ) + + pRound( + 0x04e1181763050e58013444dbcb99f1902b11bc25d90bbdca408d3819f4fed32b, + 0x0fdb253dee83869d40c335ea64de8c5bb10eb82db08b5e8b1f5e5552bfd05f23, + 0x058cbe8a9a5027bdaa4efb623adead6275f08686f1c08984a9d7c5bae9b4f1c0 + ) + + pRound( + 0x1382edce9971e186497eadb1aeb1f52b23b4b83bef023ab0d15228b4cceca59a, + 0x03464990f045c6ee0819ca51fd11b0be7f61b8eb99f14b77e1e6634601d9e8b5, + 0x23f7bfc8720dc296fff33b41f98ff83c6fcab4605db2eb5aaa5bc137aeb70a58 + ) + + pRound( + 0x0a59a158e3eec2117e6e94e7f0e9decf18c3ffd5e1531a9219636158bbaf62f2, + 0x06ec54c80381c052b58bf23b312ffd3ce2c4eba065420af8f4c23ed0075fd07b, + 0x118872dc832e0eb5476b56648e867ec8b09340f7a7bcb1b4962f0ff9ed1f9d01 + ) + + pRound( + 0x13d69fa127d834165ad5c7cba7ad59ed52e0b0f0e42d7fea95e1906b520921b1, + 0x169a177f63ea681270b1c6877a73d21bde143942fb71dc55fd8a49f19f10c77b, + 0x04ef51591c6ead97ef42f287adce40d93abeb032b922f66ffb7e9a5a7450544d + ) + + pRound( + 0x256e175a1dc079390ecd7ca703fb2e3b19ec61805d4f03ced5f45ee6dd0f69ec, + 0x30102d28636abd5fe5f2af412ff6004f75cc360d3205dd2da002813d3e2ceeb2, + 0x10998e42dfcd3bbf1c0714bc73eb1bf40443a3fa99bef4a31fd31be182fcc792 + ) + + pRound( + 0x193edd8e9fcf3d7625fa7d24b598a1d89f3362eaf4d582efecad76f879e36860, + 0x18168afd34f2d915d0368ce80b7b3347d1c7a561ce611425f2664d7aa51f0b5d, + 0x29383c01ebd3b6ab0c017656ebe658b6a328ec77bc33626e29e2e95b33ea6111 + ) + + pRound( + 0x10646d2f2603de39a1f4ae5e7771a64a702db6e86fb76ab600bf573f9010c711, + 0x0beb5e07d1b27145f575f1395a55bf132f90c25b40da7b3864d0242dcb1117fb, + 0x16d685252078c133dc0d3ecad62b5c8830f95bb2e54b59abdffbf018d96fa336 + ) + + pRound( + 0x0a6abd1d833938f33c74154e0404b4b40a555bbbec21ddfafd672dd62047f01a, + 0x1a679f5d36eb7b5c8ea12a4c2dedc8feb12dffeec450317270a6f19b34cf1860, + 0x0980fb233bd456c23974d50e0ebfde4726a423eada4e8f6ffbc7592e3f1b93d6 + ) + + pRound( + 0x161b42232e61b84cbf1810af93a38fc0cece3d5628c9282003ebacb5c312c72b, + 0x0ada10a90c7f0520950f7d47a60d5e6a493f09787f1564e5d09203db47de1a0b, + 0x1a730d372310ba82320345a29ac4238ed3f07a8a2b4e121bb50ddb9af407f451 + ) + + pRound( + 0x2c8120f268ef054f817064c369dda7ea908377feaba5c4dffbda10ef58e8c556, + 0x1c7c8824f758753fa57c00789c684217b930e95313bcb73e6e7b8649a4968f70, + 0x2cd9ed31f5f8691c8e39e4077a74faa0f400ad8b491eb3f7b47b27fa3fd1cf77 + ) + + pRound( + 0x23ff4f9d46813457cf60d92f57618399a5e022ac321ca550854ae23918a22eea, + 0x09945a5d147a4f66ceece6405dddd9d0af5a2c5103529407dff1ea58f180426d, + 0x188d9c528025d4c2b67660c6b771b90f7c7da6eaa29d3f268a6dd223ec6fc630 + ) + + pRound( + 0x3050e37996596b7f81f68311431d8734dba7d926d3633595e0c0d8ddf4f0f47f, + 0x15af1169396830a91600ca8102c35c426ceae5461e3f95d89d829518d30afd78, + 0x1da6d09885432ea9a06d9f37f873d985dae933e351466b2904284da3320d8acc + ) + + pRound( + 0x2796ea90d269af29f5f8acf33921124e4e4fad3dbe658945e546ee411ddaa9cb, + 0x202d7dd1da0f6b4b0325c8b3307742f01e15612ec8e9304a7cb0319e01d32d60, + 0x096d6790d05bb759156a952ba263d672a2d7f9c788f4c831a29dace4c0f8be5f + ) + + fRound( + 0x054efa1f65b0fce283808965275d877b438da23ce5b13e1963798cb1447d25a4, + 0x1b162f83d917e93edb3308c29802deb9d8aa690113b2e14864ccf6e18e4165f1, + 0x21e5241e12564dd6fd9f1cdd2a0de39eedfefc1466cc568ec5ceb745a0506edc + ) + + fRound( + 0x1cfb5662e8cf5ac9226a80ee17b36abecb73ab5f87e161927b4349e10e4bdf08, + 0x0f21177e302a771bbae6d8d1ecb373b62c99af346220ac0129c53f666eb24100, + 0x1671522374606992affb0dd7f71b12bec4236aede6290546bcef7e1f515c2320 + ) + + fRound( + 0x0fa3ec5b9488259c2eb4cf24501bfad9be2ec9e42c5cc8ccd419d2a692cad870, + 0x193c0e04e0bd298357cb266c1506080ed36edce85c648cc085e8c57b1ab54bba, + 0x102adf8ef74735a27e9128306dcbc3c99f6f7291cd406578ce14ea2adaba68f8 + ) + + { + let state0 := addmod(mload(0x0), 0x0fe0af7858e49859e2a54d6f1ad945b1316aa24bfbdd23ae40a6d0cb70c3eab1, F) + let state1 := addmod(mload(0x20), 0x216f6717bbc7dedb08536a2220843f4e2da5f1daa9ebdefde8a5ea7344798d22, F) + let state2 := addmod(mload(0x80), 0x1da55cc900f0d21f4a3e694391918a1b3c23b2ac773c6b3ef88e2e4228325161, F) + + p := mulmod(state0, state0, F) + state0 := mulmod(mulmod(p, p, F), state0, F) + p := mulmod(state1, state1, F) + state1 := mulmod(mulmod(p, p, F), state1, F) + p := mulmod(state2, state2, F) + state2 := mulmod(mulmod(p, p, F), state2, F) + + mstore(0x0, addmod(addmod(mulmod(state0, M00, F), mulmod(state1, M10, F), F), mulmod(state2, M20, F), F)) + return(0, 0x20) + } + } + } + + function hashLeftRight(uint256 _left, uint256 _right) + public + pure + returns (uint256) + { + uint256[2] memory input; + input[0] = _left; + input[1] = _right; + return hash2(input); + } +} \ No newline at end of file diff --git a/packages/contracts/contracts/poseidon/PoseidonT4.sol b/packages/contracts/contracts/poseidon/PoseidonT4.sol new file mode 100644 index 00000000..4f404de4 --- /dev/null +++ b/packages/contracts/contracts/poseidon/PoseidonT4.sol @@ -0,0 +1,768 @@ +/// SPDX-License-Identifier: MIT +pragma solidity ^0.8.10; + +library PoseidonT4 { + uint constant F = + 21888242871839275222246405745257275088548364400416034343698204186575808495617; + + uint constant M00 = + 0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad; + uint constant M01 = + 0x2a75a171563b807db525be259699ab28fe9bc7fb1f70943ff049bc970e841a0c; + uint constant M02 = + 0x2070679e798782ef592a52ca9cef820d497ad2eecbaa7e42f366b3e521c4ed42; + uint constant M03 = + 0x2f545e578202c9732488540e41f783b68ff0613fd79375f8ba8b3d30958e7677; + uint constant M10 = + 0x277686494f7644bbc4a9b194e10724eb967f1dc58718e59e3cedc821b2a7ae19; + uint constant M11 = + 0x083abff5e10051f078e2827d092e1ae808b4dd3e15ccc3706f38ce4157b6770e; + uint constant M12 = + 0x2e18c8570d20bf5df800739a53da75d906ece318cd224ab6b3a2be979e2d7eab; + uint constant M13 = + 0x23810bf82877fc19bff7eefeae3faf4bb8104c32ba4cd701596a15623d01476e; + uint constant M20 = + 0x023db68784e3f0cc0b85618826a9b3505129c16479973b0a84a4529e66b09c62; + uint constant M21 = + 0x1a5ad71bbbecd8a97dc49cfdbae303ad24d5c4741eab8b7568a9ff8253a1eb6f; + uint constant M22 = + 0x0fa86f0f27e4d3dd7f3367ce86f684f1f2e4386d3e5b9f38fa283c6aa723b608; + uint constant M23 = + 0x014fcd5eb0be6d5beeafc4944034cf321c068ef930f10be2207ed58d2a34cdd6; + uint constant M30 = + 0x1d359d245f286c12d50d663bae733f978af08cdbd63017c57b3a75646ff382c1; + uint constant M31 = + 0x0d745fd00dd167fb86772133640f02ce945004a7bc2c59e8790f725c5d84f0af; + uint constant M32 = + 0x03f3e6fab791f16628168e4b14dbaeb657035ee3da6b2ca83f0c2491e0b403eb; + uint constant M33 = + 0x00c15fc3a1d5733dd835eae0823e377f8ba4a8b627627cc2bb661c25d20fb52a; + + // See here for a simplified implementation: https://github.com/vimwitch/poseidon-solidity/blob/e57becdabb65d99fdc586fe1e1e09e7108202d53/contracts/Poseidon.sol#L40 + // Based on: https://github.com/iden3/circomlibjs/blob/v0.0.8/src/poseidon_slow.js + function hash3(uint[3] memory) public pure returns (uint) { + assembly { + // memory 0x00 to 0x3f (64 bytes) is scratch space for hash algos + // we can use it in inline assembly because we're not calling e.g. keccak + // + // memory 0x80 is the default offset for free memory + // we take inputs as a memory argument so we simply write over + // that memory after loading it + + // we have the following variables at memory offsets + // state0 - 0x00 + // state1 - 0x20 + // state2 - 0x80 + // state3 - 0xa0 + // state4 - ... + + function pRound(c0, c1, c2, c3) { + let state0 := addmod(mload(0x0), c0, F) + let state1 := addmod(mload(0x20), c1, F) + let state2 := addmod(mload(0x80), c2, F) + let state3 := addmod(mload(0xa0), c3, F) + + let p := mulmod(state0, state0, F) + state0 := mulmod(mulmod(p, p, F), state0, F) + + mstore( + 0x0, + addmod( + addmod( + addmod(mulmod(state0, M00, F), mulmod(state1, M10, F), F), + mulmod(state2, M20, F), + F + ), + mulmod(state3, M30, F), + F + ) + ) + mstore( + 0x20, + addmod( + addmod( + addmod(mulmod(state0, M01, F), mulmod(state1, M11, F), F), + mulmod(state2, M21, F), + F + ), + mulmod(state3, M31, F), + F + ) + ) + mstore( + 0x80, + addmod( + addmod( + addmod(mulmod(state0, M02, F), mulmod(state1, M12, F), F), + mulmod(state2, M22, F), + F + ), + mulmod(state3, M32, F), + F + ) + ) + mstore( + 0xa0, + addmod( + addmod( + addmod(mulmod(state0, M03, F), mulmod(state1, M13, F), F), + mulmod(state2, M23, F), + F + ), + mulmod(state3, M33, F), + F + ) + ) + } + + function fRound(c0, c1, c2, c3) { + let state0 := addmod(mload(0x0), c0, F) + let state1 := addmod(mload(0x20), c1, F) + let state2 := addmod(mload(0x80), c2, F) + let state3 := addmod(mload(0xa0), c3, F) + + let p := mulmod(state0, state0, F) + state0 := mulmod(mulmod(p, p, F), state0, F) + p := mulmod(state1, state1, F) + state1 := mulmod(mulmod(p, p, F), state1, F) + p := mulmod(state2, state2, F) + state2 := mulmod(mulmod(p, p, F), state2, F) + p := mulmod(state3, state3, F) + state3 := mulmod(mulmod(p, p, F), state3, F) + + mstore( + 0x0, + addmod( + addmod( + addmod(mulmod(state0, M00, F), mulmod(state1, M10, F), F), + mulmod(state2, M20, F), + F + ), + mulmod(state3, M30, F), + F + ) + ) + mstore( + 0x20, + addmod( + addmod( + addmod(mulmod(state0, M01, F), mulmod(state1, M11, F), F), + mulmod(state2, M21, F), + F + ), + mulmod(state3, M31, F), + F + ) + ) + mstore( + 0x80, + addmod( + addmod( + addmod(mulmod(state0, M02, F), mulmod(state1, M12, F), F), + mulmod(state2, M22, F), + F + ), + mulmod(state3, M32, F), + F + ) + ) + mstore( + 0xa0, + addmod( + addmod( + addmod(mulmod(state0, M03, F), mulmod(state1, M13, F), F), + mulmod(state2, M23, F), + F + ), + mulmod(state3, M33, F), + F + ) + ) + } + + // scratch variable for exponentiation + let p + + { + // load the inputs from memory + let state1 := addmod( + mload(0x80), + 0x265ddfe127dd51bd7239347b758f0a1320eb2cc7450acc1dad47f80c8dcf34d6, + F + ) + let state2 := addmod( + mload(0xa0), + 0x199750ec472f1809e0f66a545e1e51624108ac845015c2aa3dfc36bab497d8aa, + F + ) + let state3 := addmod( + mload(0xc0), + 0x157ff3fe65ac7208110f06a5f74302b14d743ea25067f0ffd032f787c7f1cdf8, + F + ) + mstore( + 0xa0, + addmod( + mload(0xe0), + 0x2e49c43c4569dd9c5fd35ac45fca33f10b15c590692f8beefe18f4896ac94902, + F + ) + ) + + p := mulmod(state1, state1, F) + state1 := mulmod(mulmod(p, p, F), state1, F) + p := mulmod(state2, state2, F) + state2 := mulmod(mulmod(p, p, F), state2, F) + p := mulmod(state3, state3, F) + state3 := mulmod(mulmod(p, p, F), state3, F) + + // state0 pow5mod and M[] multiplications are pre-calculated + + mstore( + 0x0, + addmod( + addmod( + addmod( + 0x211184aac7468125da9b5527788aed6331caa8335774fe66f16acc6c66c456d7, + mulmod(state1, M10, F), + F + ), + mulmod(state2, M20, F), + F + ), + mulmod(state3, M30, F), + F + ) + ) + mstore( + 0x20, + addmod( + addmod( + addmod( + 0x19764435729b98150ca53b559b7b1bdd91692d645e831f4a30d30d510792687a, + mulmod(state1, M11, F), + F + ), + mulmod(state2, M21, F), + F + ), + mulmod(state3, M31, F), + F + ) + ) + mstore( + 0x80, + addmod( + addmod( + addmod( + 0x21f642c132b82c867835f1753eecedd4679085e8c78f6a0ae4a8cd81e9834bdf, + mulmod(state1, M12, F), + F + ), + mulmod(state2, M22, F), + F + ), + mulmod(state3, M32, F), + F + ) + ) + mstore( + 0xa0, + addmod( + addmod( + addmod( + 0x26bc2b5c607af61196105d955bd3d9b2cf795edcf9e39d1e508c542ca85d6be3, + mulmod(state1, M13, F), + F + ), + mulmod(state2, M23, F), + F + ), + mulmod(state3, M33, F), + F + ) + ) + } + + fRound( + 0x2e49c43c4569dd9c5fd35ac45fca33f10b15c590692f8beefe18f4896ac94902, + 0x0e35fb89981890520d4aef2b6d6506c3cb2f0b6973c24fa82731345ffa2d1f1e, + 0x251ad47cb15c4f1105f109ae5e944f1ba9d9e7806d667ffec6fe723002e0b996, + 0x13da07dc64d428369873e97160234641f8beb56fdd05e5f3563fa39d9c22df4e + ) + + fRound( + 0x0c009b84e650e6d23dc00c7dccef7483a553939689d350cd46e7b89055fd4738, + 0x011f16b1c63a854f01992e3956f42d8b04eb650c6d535eb0203dec74befdca06, + 0x0ed69e5e383a688f209d9a561daa79612f3f78d0467ad45485df07093f367549, + 0x04dba94a7b0ce9e221acad41472b6bbe3aec507f5eb3d33f463672264c9f789b + ) + + fRound( + 0x0a3f2637d840f3a16eb094271c9d237b6036757d4bb50bf7ce732ff1d4fa28e8, + 0x259a666f129eea198f8a1c502fdb38fa39b1f075569564b6e54a485d1182323f, + 0x28bf7459c9b2f4c6d8e7d06a4ee3a47f7745d4271038e5157a32fdf7ede0d6a1, + 0x0a1ca941f057037526ea200f489be8d4c37c85bbcce6a2aeec91bd6941432447 + ) + + pRound( + 0x0c6f8f958be0e93053d7fd4fc54512855535ed1539f051dcb43a26fd926361cf, + 0x123106a93cd17578d426e8128ac9d90aa9e8a00708e296e084dd57e69caaf811, + 0x26e1ba52ad9285d97dd3ab52f8e840085e8fa83ff1e8f1877b074867cd2dee75, + 0x1cb55cad7bd133de18a64c5c47b9c97cbe4d8b7bf9e095864471537e6a4ae2c5 + ) + + pRound( + 0x1dcd73e46acd8f8e0e2c7ce04bde7f6d2a53043d5060a41c7143f08e6e9055d0, + 0x011003e32f6d9c66f5852f05474a4def0cda294a0eb4e9b9b12b9bb4512e5574, + 0x2b1e809ac1d10ab29ad5f20d03a57dfebadfe5903f58bafed7c508dd2287ae8c, + 0x2539de1785b735999fb4dac35ee17ed0ef995d05ab2fc5faeaa69ae87bcec0a5 + ) + + pRound( + 0x0c246c5a2ef8ee0126497f222b3e0a0ef4e1c3d41c86d46e43982cb11d77951d, + 0x192089c4974f68e95408148f7c0632edbb09e6a6ad1a1c2f3f0305f5d03b527b, + 0x1eae0ad8ab68b2f06a0ee36eeb0d0c058529097d91096b756d8fdc2fb5a60d85, + 0x179190e5d0e22179e46f8282872abc88db6e2fdc0dee99e69768bd98c5d06bfb + ) + + pRound( + 0x29bb9e2c9076732576e9a81c7ac4b83214528f7db00f31bf6cafe794a9b3cd1c, + 0x225d394e42207599403efd0c2464a90d52652645882aac35b10e590e6e691e08, + 0x064760623c25c8cf753d238055b444532be13557451c087de09efd454b23fd59, + 0x10ba3a0e01df92e87f301c4b716d8a394d67f4bf42a75c10922910a78f6b5b87 + ) + + pRound( + 0x0e070bf53f8451b24f9c6e96b0c2a801cb511bc0c242eb9d361b77693f21471c, + 0x1b94cd61b051b04dd39755ff93821a73ccd6cb11d2491d8aa7f921014de252fb, + 0x1d7cb39bafb8c744e148787a2e70230f9d4e917d5713bb050487b5aa7d74070b, + 0x2ec93189bd1ab4f69117d0fe980c80ff8785c2961829f701bb74ac1f303b17db + ) + + pRound( + 0x2db366bfdd36d277a692bb825b86275beac404a19ae07a9082ea46bd83517926, + 0x062100eb485db06269655cf186a68532985275428450359adc99cec6960711b8, + 0x0761d33c66614aaa570e7f1e8244ca1120243f92fa59e4f900c567bf41f5a59b, + 0x20fc411a114d13992c2705aa034e3f315d78608a0f7de4ccf7a72e494855ad0d + ) + + pRound( + 0x25b5c004a4bdfcb5add9ec4e9ab219ba102c67e8b3effb5fc3a30f317250bc5a, + 0x23b1822d278ed632a494e58f6df6f5ed038b186d8474155ad87e7dff62b37f4b, + 0x22734b4c5c3f9493606c4ba9012499bf0f14d13bfcfcccaa16102a29cc2f69e0, + 0x26c0c8fe09eb30b7e27a74dc33492347e5bdff409aa3610254413d3fad795ce5 + ) + + pRound( + 0x070dd0ccb6bd7bbae88eac03fa1fbb26196be3083a809829bbd626df348ccad9, + 0x12b6595bdb329b6fb043ba78bb28c3bec2c0a6de46d8c5ad6067c4ebfd4250da, + 0x248d97d7f76283d63bec30e7a5876c11c06fca9b275c671c5e33d95bb7e8d729, + 0x1a306d439d463b0816fc6fd64cc939318b45eb759ddde4aa106d15d9bd9baaaa + ) + + pRound( + 0x28a8f8372e3c38daced7c00421cb4621f4f1b54ddc27821b0d62d3d6ec7c56cf, + 0x0094975717f9a8a8bb35152f24d43294071ce320c829f388bc852183e1e2ce7e, + 0x04d5ee4c3aa78f7d80fde60d716480d3593f74d4f653ae83f4103246db2e8d65, + 0x2a6cf5e9aa03d4336349ad6fb8ed2269c7bef54b8822cc76d08495c12efde187 + ) + + pRound( + 0x2304d31eaab960ba9274da43e19ddeb7f792180808fd6e43baae48d7efcba3f3, + 0x03fd9ac865a4b2a6d5e7009785817249bff08a7e0726fcb4e1c11d39d199f0b0, + 0x00b7258ded52bbda2248404d55ee5044798afc3a209193073f7954d4d63b0b64, + 0x159f81ada0771799ec38fca2d4bf65ebb13d3a74f3298db36272c5ca65e92d9a + ) + + pRound( + 0x1ef90e67437fbc8550237a75bc28e3bb9000130ea25f0c5471e144cf4264431f, + 0x1e65f838515e5ff0196b49aa41a2d2568df739bc176b08ec95a79ed82932e30d, + 0x2b1b045def3a166cec6ce768d079ba74b18c844e570e1f826575c1068c94c33f, + 0x0832e5753ceb0ff6402543b1109229c165dc2d73bef715e3f1c6e07c168bb173 + ) + + pRound( + 0x02f614e9cedfb3dc6b762ae0a37d41bab1b841c2e8b6451bc5a8e3c390b6ad16, + 0x0e2427d38bd46a60dd640b8e362cad967370ebb777bedff40f6a0be27e7ed705, + 0x0493630b7c670b6deb7c84d414e7ce79049f0ec098c3c7c50768bbe29214a53a, + 0x22ead100e8e482674decdab17066c5a26bb1515355d5461a3dc06cc85327cea9 + ) + + pRound( + 0x25b3e56e655b42cdaae2626ed2554d48583f1ae35626d04de5084e0b6d2a6f16, + 0x1e32752ada8836ef5837a6cde8ff13dbb599c336349e4c584b4fdc0a0cf6f9d0, + 0x2fa2a871c15a387cc50f68f6f3c3455b23c00995f05078f672a9864074d412e5, + 0x2f569b8a9a4424c9278e1db7311e889f54ccbf10661bab7fcd18e7c7a7d83505 + ) + + pRound( + 0x044cb455110a8fdd531ade530234c518a7df93f7332ffd2144165374b246b43d, + 0x227808de93906d5d420246157f2e42b191fe8c90adfe118178ddc723a5319025, + 0x02fcca2934e046bc623adead873579865d03781ae090ad4a8579d2e7a6800355, + 0x0ef915f0ac120b876abccceb344a1d36bad3f3c5ab91a8ddcbec2e060d8befac + ) + + pRound( + 0x1797130f4b7a3e1777eb757bc6f287f6ab0fb85f6be63b09f3b16ef2b1405d38, + 0x0a76225dc04170ae3306c85abab59e608c7f497c20156d4d36c668555decc6e5, + 0x1fffb9ec1992d66ba1e77a7b93209af6f8fa76d48acb664796174b5326a31a5c, + 0x25721c4fc15a3f2853b57c338fa538d85f8fbba6c6b9c6090611889b797b9c5f + ) + + pRound( + 0x0c817fd42d5f7a41215e3d07ba197216adb4c3790705da95eb63b982bfcaf75a, + 0x13abe3f5239915d39f7e13c2c24970b6df8cf86ce00a22002bc15866e52b5a96, + 0x2106feea546224ea12ef7f39987a46c85c1bc3dc29bdbd7a92cd60acb4d391ce, + 0x21ca859468a746b6aaa79474a37dab49f1ca5a28c748bc7157e1b3345bb0f959 + ) + + pRound( + 0x05ccd6255c1e6f0c5cf1f0df934194c62911d14d0321662a8f1a48999e34185b, + 0x0f0e34a64b70a626e464d846674c4c8816c4fb267fe44fe6ea28678cb09490a4, + 0x0558531a4e25470c6157794ca36d0e9647dbfcfe350d64838f5b1a8a2de0d4bf, + 0x09d3dca9173ed2faceea125157683d18924cadad3f655a60b72f5864961f1455 + ) + + pRound( + 0x0328cbd54e8c0913493f866ed03d218bf23f92d68aaec48617d4c722e5bd4335, + 0x2bf07216e2aff0a223a487b1a7094e07e79e7bcc9798c648ee3347dd5329d34b, + 0x1daf345a58006b736499c583cb76c316d6f78ed6a6dffc82111e11a63fe412df, + 0x176563472456aaa746b694c60e1823611ef39039b2edc7ff391e6f2293d2c404 + ) + + pRound( + 0x2ef1e0fad9f08e87a3bb5e47d7e33538ca964d2b7d1083d4fb0225035bd3f8db, + 0x226c9b1af95babcf17b2b1f57c7310179c1803dec5ae8f0a1779ed36c817ae2a, + 0x14bce3549cc3db7428126b4c3a15ae0ff8148c89f13fb35d35734eb5d4ad0def, + 0x2debff156e276bb5742c3373f2635b48b8e923d301f372f8e550cfd4034212c7 + ) + + pRound( + 0x2d4083cf5a87f5b6fc2395b22e356b6441afe1b6b29c47add7d0432d1d4760c7, + 0x0c225b7bcd04bf9c34b911262fdc9c1b91bf79a10c0184d89c317c53d7161c29, + 0x03152169d4f3d06ec33a79bfac91a02c99aa0200db66d5aa7b835265f9c9c8f3, + 0x0b61811a9210be78b05974587486d58bddc8f51bfdfebbb87afe8b7aa7d3199c + ) + + pRound( + 0x203e000cad298daaf7eba6a5c5921878b8ae48acf7048f16046d637a533b6f78, + 0x1a44bf0937c722d1376672b69f6c9655ba7ee386fda1112c0757143d1bfa9146, + 0x0376b4fae08cb03d3500afec1a1f56acb8e0fde75a2106d7002f59c5611d4daa, + 0x00780af2ca1cad6465a2171250fdfc32d6fc241d3214177f3d553ef363182185 + ) + + pRound( + 0x10774d9ab80c25bdeb808bedfd72a8d9b75dbe18d5221c87e9d857079bdc31d5, + 0x10dc6e9c006ea38b04b1e03b4bd9490c0d03f98929ca1d7fb56821fd19d3b6e8, + 0x00544b8338791518b2c7645a50392798b21f75bb60e3596170067d00141cac16, + 0x222c01175718386f2e2e82eb122789e352e105a3b8fa852613bc534433ee428c + ) + + pRound( + 0x2840d045e9bc22b259cfb8811b1e0f45b77f7bdb7f7e2b46151a1430f608e3c5, + 0x062752f86eebe11a009c937e468c335b04554574c2990196508e01fa5860186b, + 0x06041bdac48205ac87adb87c20a478a71c9950c12a80bc0a55a8e83eaaf04746, + 0x04a533f236c422d1ff900a368949b0022c7a2ae092f308d82b1dcbbf51f5000d + ) + + pRound( + 0x13e31d7a67232fd811d6a955b3d4f25dfe066d1e7dc33df04bde50a2b2d05b2a, + 0x011c2683ae91eb4dfbc13d6357e8599a9279d1648ff2c95d2f79905bb13920f1, + 0x0b0d219346b8574525b1a270e0b4cba5d56c928e3e2c2bd0a1ecaed015aaf6ae, + 0x14abdec8db9c6dc970291ee638690209b65080781ef9fd13d84c7a726b5f1364 + ) + + pRound( + 0x1a0b70b4b26fdc28fcd32aa3d266478801eb12202ef47ced988d0376610be106, + 0x278543721f96d1307b6943f9804e7fe56401deb2ef99c4d12704882e7278b607, + 0x16eb59494a9776cf57866214dbd1473f3f0738a325638d8ba36535e011d58259, + 0x2567a658a81ffb444f240088fa5524c69a9e53eeab6b7f8c41c3479dcf8c644a + ) + + pRound( + 0x29aa1d7c151e9ad0a7ab39f1abd9cf77ab78e0215a5715a6b882ade840bb13d8, + 0x15c091233e60efe0d4bbfce2b36415006a4f017f9a85388ce206b91f99f2c984, + 0x16bd7d22ff858e5e0882c2c999558d77e7673ad5f1915f9feb679a8115f014cf, + 0x02db50480a07be0eb2c2e13ed6ef4074c0182d9b668b8e08ffe6769250042025 + ) + + pRound( + 0x05e4a220e6a3bc9f7b6806ec9d6cdba186330ef2bf7adb4c13ba866343b73119, + 0x1dda05ebc30170bc98cbf2a5ee3b50e8b5f70bc424d39fa4104d37f1cbcf7a42, + 0x0184bef721888187f645b6fee3667f3c91da214414d89ba5cd301f22b0de8990, + 0x1498a307e68900065f5e8276f62aef1c37414b84494e1577ad1a6d64341b78ec + ) + + pRound( + 0x25f40f82b31dacc4f4939800b9d2c3eacef737b8fab1f864fe33548ad46bd49d, + 0x09d317cc670251943f6f5862a30d2ea9e83056ce4907bfbbcb1ff31ce5bb9650, + 0x2f77d77786d979b23ba4ce4a4c1b3bd0a41132cd467a86ab29b913b6cf3149d0, + 0x0f53dafd535a9f4473dc266b6fccc6841bbd336963f254c152f89e785f729bbf + ) + + pRound( + 0x25c1fd72e223045265c3a099e17526fa0e6976e1c00baf16de96de85deef2fa2, + 0x2a902c8980c17faae368d385d52d16be41af95c84eaea3cf893e65d6ce4a8f62, + 0x1ce1580a3452ecf302878c8976b82be96676dd114d1dc8d25527405762f83529, + 0x24a6073f91addc33a49a1fa306df008801c5ec569609034d2fc50f7f0f4d0056 + ) + + pRound( + 0x25e52dbd6124530d9fc27fe306d71d4583e07ca554b5d1577f256c68b0be2b74, + 0x23dffae3c423fa7a93468dbccfb029855974be4d0a7b29946796e5b6cd70f15d, + 0x06342da370cc0d8c49b77594f6b027c480615d50be36243a99591bc9924ed6f5, + 0x2754114281286546b75f09f115fc751b4778303d0405c1b4cc7df0d8e9f63925 + ) + + pRound( + 0x15c19e8534c5c1a8862c2bc1d119eddeabf214153833d7bdb59ee197f8187cf5, + 0x265fe062766d08fab4c78d0d9ef3cabe366f3be0a821061679b4b3d2d77d5f3e, + 0x13ccf689d67a3ec9f22cb7cd0ac3a327d377ac5cd0146f048debfd098d3ec7be, + 0x17662f7456789739f81cd3974827a887d92a5e05bdf3fe6b9fbccca4524aaebd + ) + + pRound( + 0x21b29c76329b31c8ef18631e515f7f2f82ca6a5cca70cee4e809fd624be7ad5d, + 0x18137478382aadba441eb97fe27901989c06738165215319939eb17b01fa975c, + 0x2bc07ea2bfad68e8dc724f5fef2b37c2d34f761935ffd3b739ceec4668f37e88, + 0x2ddb2e376f54d64a563840480df993feb4173203c2bd94ad0e602077aef9a03e + ) + + pRound( + 0x277eb50f2baa706106b41cb24c602609e8a20f8d72f613708adb25373596c3f7, + 0x0d4de47e1aba34269d0c620904f01a56b33fc4b450c0db50bb7f87734c9a1fe5, + 0x0b8442bfe9e4a1b4428673b6bd3eea6f9f445697058f134aae908d0279a29f0c, + 0x11fe5b18fbbea1a86e06930cb89f7d4a26e186a65945e96574247fddb720f8f5 + ) + + pRound( + 0x224026f6dfaf71e24d25d8f6d9f90021df5b774dcad4d883170e4ad89c33a0d6, + 0x0b2ca6a999fe6887e0704dad58d03465a96bc9e37d1091f61bc9f9c62bbeb824, + 0x221b63d66f0b45f9d40c54053a28a06b1d0a4ce41d364797a1a7e0c96529f421, + 0x30185c48b7b2f1d53d4120801b047d087493bce64d4d24aedce2f4836bb84ad4 + ) + + pRound( + 0x23f5d372a3f0e3cba989e223056227d3533356f0faa48f27f8267318632a61f0, + 0x2716683b32c755fd1bf8235ea162b1f388e1e0090d06162e8e6dfbe4328f3e3b, + 0x0977545836866fa204ca1d853ec0909e3d140770c80ac67dc930c69748d5d4bc, + 0x1444e8f592bdbfd8025d91ab4982dd425f51682d31472b05e81c43c0f9434b31 + ) + + pRound( + 0x26e04b65e9ca8270beb74a1c5cb8fee8be3ffbfe583f7012a00f874e7718fbe3, + 0x22a5c2fa860d11fe34ee47a5cd9f869800f48f4febe29ad6df69816fb1a914d2, + 0x174b54d9907d8f5c6afd672a738f42737ec338f3a0964c629f7474dd44c5c8d7, + 0x1db1db8aa45283f31168fa66694cf2808d2189b87c8c8143d56c871907b39b87 + ) + + pRound( + 0x1530bf0f46527e889030b8c7b7dfde126f65faf8cce0ab66387341d813d1bfd1, + 0x0b73f613993229f59f01c1cec8760e9936ead9edc8f2814889330a2f2bade457, + 0x29c25a22fe2164604552aaea377f448d587ab977fc8227787bd2dc0f36bcf41e, + 0x2b30d53ed1759bfb8503da66c92cf4077abe82795dc272b377df57d77c875526 + ) + + pRound( + 0x12f6d703b5702aab7b7b7e69359d53a2756c08c85ede7227cf5f0a2916787cd2, + 0x2520e18300afda3f61a40a0b8837293a55ad01071028d4841ffa9ac706364113, + 0x1ec9daea860971ecdda8ed4f346fa967ac9bc59278277393c68f09fa03b8b95f, + 0x0a99b3e178db2e2e432f5cd5bef8fe4483bf5cbf70ed407c08aae24b830ad725 + ) + + pRound( + 0x07cda9e63db6e39f086b89b601c2bbe407ee0abac3c817a1317abad7c5778492, + 0x08c9c65a4f955e8952d571b191bb0adb49bd8290963203b35d48aab38f8fc3a3, + 0x2737f8ce1d5a67b349590ddbfbd709ed9af54a2a3f2719d33801c9c17bdd9c9e, + 0x1049a6c65ff019f0d28770072798e8b7909432bd0c129813a9f179ba627f7d6a + ) + + pRound( + 0x18b4fe968732c462c0ea5a9beb27cecbde8868944fdf64ee60a5122361daeddb, + 0x2ff2b6fd22df49d2440b2eaeeefa8c02a6f478cfcf11f1b2a4f7473483885d19, + 0x2ec5f2f1928fe932e56c789b8f6bbcb3e8be4057cbd8dbd18a1b352f5cef42ff, + 0x265a5eccd8b92975e33ad9f75bf3426d424a4c6a7794ee3f08c1d100378e545e + ) + + pRound( + 0x2405eaa4c0bde1129d6242bb5ada0e68778e656cfcb366bf20517da1dfd4279c, + 0x094c97d8c194c42e88018004cbbf2bc5fdb51955d8b2d66b76dd98a2dbf60417, + 0x2c30d5f33bb32c5c22b9979a605bf64d508b705221e6a686330c9625c2afe0b8, + 0x01a75666f6241f6825d01cc6dcb1622d4886ea583e87299e6aa2fc716fdb6cf5 + ) + + pRound( + 0x0a3290e8398113ea4d12ac091e87be7c6d359ab9a66979fcf47bf2e87d382fcb, + 0x154ade9ca36e268dfeb38461425bb0d8c31219d8fa0dfc75ecd21bf69aa0cc74, + 0x27aa8d3e25380c0b1b172d79c6f22eee99231ef5dc69d8dc13a4b5095d028772, + 0x2cf4051e6cab48301a8b2e3bca6099d756bbdf485afa1f549d395bbcbd806461 + ) + + pRound( + 0x301e70f729f3c94b1d3f517ddff9f2015131feab8afa5eebb0843d7f84b23e71, + 0x298beb64f812d25d8b4d9620347ab02332dc4cef113ae60d17a8d7a4c91f83bc, + 0x1b362e72a5f847f84d03fd291c3c471ed1c14a15b221680acf11a3f02e46aa95, + 0x0dc8a2146110c0b375432902999223d5aa1ef6e78e1e5ebcbc1d9ba41dc1c737 + ) + + pRound( + 0x0a48663b34ce5e1c05dc93092cb69778cb21729a72ddc03a08afa1eb922ff279, + 0x0a87391fb1cd8cdf6096b64a82f9e95f0fe46f143b702d74545bb314881098ee, + 0x1b5b2946f7c28975f0512ff8e6ca362f8826edd7ea9c29f382ba8a2a0892fd5d, + 0x01001cf512ac241d47ebe2239219bc6a173a8bbcb8a5b987b4eac1f533315b6b + ) + + pRound( + 0x2fd977c70f645db4f704fa7d7693da727ac093d3fb5f5febc72beb17d8358a32, + 0x23c0039a3fab4ad3c2d7cc688164f39e761d5355c05444d99be763a97793a9c4, + 0x19d43ee0c6081c052c9c0df6161eaac1aec356cf435888e79f27f22ff03fa25d, + 0x2d9b10c2f2e7ac1afddccffd94a563028bf29b646d020830919f9d5ca1cefe59 + ) + + pRound( + 0x2457ca6c2f2aa30ec47e4aff5a66f5ce2799283e166fc81cdae2f2b9f83e4267, + 0x0abc392fe85eda855820592445094022811ee8676ed6f0c3044dfb54a7c10b35, + 0x19d2cc5ca549d1d40cebcd37f3ea54f31161ac3993acf3101d2c2bc30eac1eb0, + 0x0f97ae3033ffa01608aafb26ae13cd393ee0e4ec041ba644a3d3ab546e98c9c8 + ) + + pRound( + 0x16dbc78fd28b7fb8260e404cf1d427a7fa15537ea4e168e88a166496e88cfeca, + 0x240faf28f11499b916f085f73bc4f22eef8344e576f8ad3d1827820366d5e07b, + 0x0a1bb075aa37ff0cfe6c8531e55e1770eaba808c8fdb6dbf46f8cab58d9ef1af, + 0x2e47e15ea4a47ff1a6a853aaf3a644ca38d5b085ac1042fdc4a705a7ce089f4d + ) + + pRound( + 0x166e5bf073378348860ca4a9c09d39e1673ab059935f4df35fb14528375772b6, + 0x18b42d7ffdd2ea4faf235902f057a2740cacccd027233001ed10f96538f0916f, + 0x089cb1b032238f5e4914788e3e3c7ead4fc368020b3ed38221deab1051c37702, + 0x242acd3eb3a2f72baf7c7076dd165adf89f9339c7b971921d9e70863451dd8d1 + ) + + pRound( + 0x174fbb104a4ee302bf47f2bd82fce896eac9a068283f326474af860457245c3b, + 0x17340e71d96f466d61f3058ce092c67d2891fb2bb318613f780c275fe1116c6b, + 0x1e8e40ac853b7d42f00f2e383982d024f098b9f8fd455953a2fd380c4df7f6b2, + 0x0529898dc0649907e1d4d5e284b8d1075198c55cad66e8a9bf40f92938e2e961 + ) + + pRound( + 0x2162754db0baa030bf7de5bb797364dce8c77aa017ee1d7bf65f21c4d4e5df8f, + 0x12c7553698c4bf6f3ceb250ae00c58c2a9f9291efbde4c8421bef44741752ec6, + 0x292643e3ba2026affcb8c5279313bd51a733c93353e9d9c79cb723136526508e, + 0x00ccf13e0cb6f9d81d52951bea990bd5b6c07c5d98e66ff71db6e74d5b87d158 + ) + + pRound( + 0x185d1e20e23b0917dd654128cf2f3aaab6723873cb30fc22b0f86c15ab645b4b, + 0x14c61c836d55d3df742bdf11c60efa186778e3de0f024c0f13fe53f8d8764e1f, + 0x0f356841b3f556fce5dbe4680457691c2919e2af53008184d03ee1195d72449e, + 0x1b8fd9ff39714e075df124f887bf40b383143374fd2080ba0c0a6b6e8fa5b3e8 + ) + + pRound( + 0x0e86a8c2009c140ca3f873924e2aaa14fc3c8ae04e9df0b3e9103418796f6024, + 0x2e6c5e898f5547770e5462ad932fcdd2373fc43820ca2b16b0861421e79155c8, + 0x05d797f1ab3647237c14f9d1df032bc9ff9fe1a0ecd377972ce5fd5a0c014604, + 0x29a3110463a5aae76c3d152875981d0c1daf2dcd65519ef5ca8929851da8c008 + ) + + pRound( + 0x2974da7bc074322273c3a4b91c05354cdc71640a8bbd1f864b732f8163883314, + 0x1ed0fb06699ba249b2a30621c05eb12ca29cb91aa082c8bfcce9c522889b47dc, + 0x1c793ef0dcc51123654ff26d8d863feeae29e8c572eca912d80c8ae36e40fe9b, + 0x1e6aac1c6d3dd3157956257d3d234ef18c91e82589a78169fbb4a8770977dc2f + ) + + pRound( + 0x1a20ada7576234eee6273dd6fa98b25ed037748080a47d948fcda33256fb6bf5, + 0x191033d6d85ceaa6fc7a9a23a6fd9996642d772045ece51335d49306728af96c, + 0x006e5979da7e7ef53a825aa6fddc3abfc76f200b3740b8b232ef481f5d06297b, + 0x0b0d7e69c651910bbef3e68d417e9fa0fbd57f596c8f29831eff8c0174cdb06d + ) + + pRound( + 0x25caf5b0c1b93bc516435ec084e2ecd44ac46dbbb033c5112c4b20a25c9cdf9d, + 0x12c1ea892cc31e0d9af8b796d9645872f7f77442d62fd4c8085b2f150f72472a, + 0x16af29695157aba9b8bbe3afeb245feee5a929d9f928b9b81de6dadc78c32aae, + 0x0136df457c80588dd687fb2f3be18691705b87ec5a4cfdc168d31084256b67dc + ) + + pRound( + 0x1639a28c5b4c81166aea984fba6e71479e07b1efbc74434db95a285060e7b089, + 0x03d62fbf82fd1d4313f8e650f587ec06816c28b700bdc50f7e232bd9b5ca9b76, + 0x11aeeb527dc8ce44b4d14aaddca3cfe2f77a1e40fc6da97c249830de1edfde54, + 0x13f9b9a41274129479c5e6138c6c8ee36a670e6bc68c7a49642b645807bfc824 + ) + + fRound( + 0x0e4772fa3d75179dc8484cd26c7c1f635ddeeed7a939440c506cae8b7ebcd15b, + 0x1b39a00cbc81e427de4bdec58febe8d8b5971752067a612b39fc46a68c5d4db4, + 0x2bedb66e1ad5a1d571e16e2953f48731f66463c2eb54a245444d1c0a3a25707e, + 0x2cf0a09a55ca93af8abd068f06a7287fb08b193b608582a27379ce35da915dec + ) + + fRound( + 0x2d1bd78fa90e77aa88830cabfef2f8d27d1a512050ba7db0753c8fb863efb387, + 0x065610c6f4f92491f423d3071eb83539f7c0d49c1387062e630d7fd283dc3394, + 0x2d933ff19217a5545013b12873452bebcc5f9969033f15ec642fb464bd607368, + 0x1aa9d3fe4c644910f76b92b3e13b30d500dae5354e79508c3c49c8aa99e0258b + ) + + fRound( + 0x027ef04869e482b1c748638c59111c6b27095fa773e1aca078cea1f1c8450bdd, + 0x2b7d524c5172cbbb15db4e00668a8c449f67a2605d9ec03802e3fa136ad0b8fb, + 0x0c7c382443c6aa787c8718d86747c7f74693ae25b1e55df13f7c3c1dd735db0f, + 0x00b4567186bc3f7c62a7b56acf4f76207a1f43c2d30d0fe4a627dcdd9bd79078 + ) + + { + let state0 := addmod( + mload(0x0), + 0x1e41fc29b825454fe6d61737fe08b47fb07fe739e4c1e61d0337490883db4fd5, + F + ) + let state1 := addmod( + mload(0x20), + 0x12507cd556b7bbcc72ee6dafc616584421e1af872d8c0e89002ae8d3ba0653b6, + F + ) + let state2 := addmod( + mload(0x80), + 0x13d437083553006bcef312e5e6f52a5d97eb36617ef36fe4d77d3e97f71cb5db, + F + ) + let state3 := addmod( + mload(0xa0), + 0x163ec73251f85443687222487dda9a65467d90b22f0b38664686077c6a4486d5, + F + ) + + p := mulmod(state0, state0, F) + state0 := mulmod(mulmod(p, p, F), state0, F) + p := mulmod(state1, state1, F) + state1 := mulmod(mulmod(p, p, F), state1, F) + p := mulmod(state2, state2, F) + state2 := mulmod(mulmod(p, p, F), state2, F) + p := mulmod(state3, state3, F) + state3 := mulmod(mulmod(p, p, F), state3, F) + + mstore( + 0x0, + addmod( + addmod( + addmod(mulmod(state0, M00, F), mulmod(state1, M10, F), F), + mulmod(state2, M20, F), + F + ), + mulmod(state3, M30, F), + F + ) + ) + return(0, 0x20) + } + } + } +} diff --git a/packages/contracts/contracts/poseidon/PoseidonT5.sol b/packages/contracts/contracts/poseidon/PoseidonT5.sol new file mode 100644 index 00000000..bf1c547c --- /dev/null +++ b/packages/contracts/contracts/poseidon/PoseidonT5.sol @@ -0,0 +1,761 @@ +/// SPDX-License-Identifier: MIT +pragma solidity ^0.8.10; + +library PoseidonT5 { + uint constant F = 21888242871839275222246405745257275088548364400416034343698204186575808495617; + + uint constant M00 = 0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1; + uint constant M01 = 0x2a70b9f1d4bbccdbc03e17c1d1dcdb02052903dc6609ea6969f661b2eb74c839; + uint constant M02 = 0x2f69a7198e1fbcc7dea43265306a37ed55b91bff652ad69aa4fa8478970d401d; + uint constant M03 = 0x0c3f050a6bf5af151981e55e3e1a29a13c3ffa4550bd2514f1afd6c5f721f830; + uint constant M04 = 0x2a20e3a4a0e57d92f97c9d6186c6c3ea7c5e55c20146259be2f78c2ccc2e3595; + uint constant M10 = 0x25fb50b65acf4fb047cbd3b1c17d97c7fe26ea9ca238d6e348550486e91c7765; + uint constant M11 = 0x281154651c921e746315a9934f1b8a1bba9f92ad8ef4b979115b8e2e991ccd7a; + uint constant M12 = 0x001c1edd62645b73ad931ab80e37bbb267ba312b34140e716d6a3747594d3052; + uint constant M13 = 0x0dec54e6dbf75205fa75ba7992bd34f08b2efe2ecd424a73eda7784320a1a36e; + uint constant M14 = 0x1049f8210566b51faafb1e9a5d63c0ee701673aed820d9c4403b01feb727a549; + uint constant M20 = 0x293d617d7da72102355f39ebf62f91b06deb5325f367a4556ea1e31ed5767833; + uint constant M21 = 0x28c2be2f8264f95f0b53c732134efa338ccd8fdb9ee2b45fb86a894f7db36c37; + uint constant M22 = 0x15b98ce93e47bc64ce2f2c96c69663c439c40c603049466fa7f9a4b228bfc32b; + uint constant M23 = 0x1c482a25a729f5df20225815034b196098364a11f4d988fb7cc75cf32d8136fa; + uint constant M24 = 0x02ecac687ef5b4b568002bd9d1b96b4bef357a69e3e86b5561b9299b82d69c8e; + uint constant M30 = 0x104d0295ab00c85e960111ac25da474366599e575a9b7edf6145f14ba6d3c1c4; + uint constant M31 = 0x21888041e6febd546d427c890b1883bb9b626d8cb4dc18dcc4ec8fa75e530a13; + uint constant M32 = 0x12c7e2adfa524e5958f65be2fbac809fcba8458b28e44d9265051de33163cf9c; + uint constant M33 = 0x2625ce48a7b39a4252732624e4ab94360812ac2fc9a14a5fb8b607ae9fd8514a; + uint constant M34 = 0x2d3a1aea2e6d44466808f88c9ba903d3bdcb6b58ba40441ed4ebcf11bbe1e37b; + uint constant M40 = 0x0aaa35e2c84baf117dea3e336cd96a39792b3813954fe9bf3ed5b90f2f69c977; + uint constant M41 = 0x14ddb5fada0171db80195b9592d8cf2be810930e3ea4574a350d65e2cbff4941; + uint constant M42 = 0x2efc2b90d688134849018222e7b8922eaf67ce79816ef468531ec2de53bbd167; + uint constant M43 = 0x07f017a7ebd56dd086f7cd4fd710c509ed7ef8e300b9a8bb9fb9f28af710251f; + uint constant M44 = 0x14074bb14c982c81c9ad171e4f35fe49b39c4a7a72dbb6d9c98d803bfed65e64; + + // See here for a simplified implementation: https://github.com/vimwitch/poseidon-solidity/blob/e57becdabb65d99fdc586fe1e1e09e7108202d53/contracts/Poseidon.sol#L40 + // Based on: https://github.com/iden3/circomlibjs/blob/v0.0.8/src/poseidon_slow.js + function hash4(uint[4] memory) public pure returns (uint) { + assembly { + // memory 0x00 to 0x3f (64 bytes) is scratch space for hash algos + // we can use it in inline assembly because we're not calling e.g. keccak + // + // memory 0x80 is the default offset for free memory + // we take inputs as a memory argument so we simply write over + // that memory after loading it + + // we have the following variables at memory offsets + // state0 - 0x00 + // state1 - 0x20 + // state2 - 0x80 + // state3 - 0xa0 + // state4 - ... + + function pRound(c0, c1, c2, c3, c4) { + let state0 := addmod(mload(0x0), c0, F) + let state1 := addmod(mload(0x20), c1, F) + let state2 := addmod(mload(0x80), c2, F) + let state3 := addmod(mload(0xa0), c3, F) + let state4 := addmod(mload(0xc0), c4, F) + + let p := mulmod(state0, state0, F) + state0 := mulmod(mulmod(p, p, F), state0, F) + + mstore( + 0x0, + addmod(addmod(addmod(addmod(mulmod(state0, M00, F), mulmod(state1, M10, F), F), mulmod(state2, M20, F), F), mulmod(state3, M30, F), F), mulmod(state4, M40, F), F) + ) + mstore( + 0x20, + addmod(addmod(addmod(addmod(mulmod(state0, M01, F), mulmod(state1, M11, F), F), mulmod(state2, M21, F), F), mulmod(state3, M31, F), F), mulmod(state4, M41, F), F) + ) + mstore( + 0x80, + addmod(addmod(addmod(addmod(mulmod(state0, M02, F), mulmod(state1, M12, F), F), mulmod(state2, M22, F), F), mulmod(state3, M32, F), F), mulmod(state4, M42, F), F) + ) + mstore( + 0xa0, + addmod(addmod(addmod(addmod(mulmod(state0, M03, F), mulmod(state1, M13, F), F), mulmod(state2, M23, F), F), mulmod(state3, M33, F), F), mulmod(state4, M43, F), F) + ) + mstore( + 0xc0, + addmod(addmod(addmod(addmod(mulmod(state0, M04, F), mulmod(state1, M14, F), F), mulmod(state2, M24, F), F), mulmod(state3, M34, F), F), mulmod(state4, M44, F), F) + ) + } + + function fRound(c0, c1, c2, c3, c4) { + let state0 := addmod(mload(0x0), c0, F) + let state1 := addmod(mload(0x20), c1, F) + let state2 := addmod(mload(0x80), c2, F) + let state3 := addmod(mload(0xa0), c3, F) + let state4 := addmod(mload(0xc0), c4, F) + + let p := mulmod(state0, state0, F) + state0 := mulmod(mulmod(p, p, F), state0, F) + p := mulmod(state1, state1, F) + state1 := mulmod(mulmod(p, p, F), state1, F) + p := mulmod(state2, state2, F) + state2 := mulmod(mulmod(p, p, F), state2, F) + p := mulmod(state3, state3, F) + state3 := mulmod(mulmod(p, p, F), state3, F) + p := mulmod(state4, state4, F) + state4 := mulmod(mulmod(p, p, F), state4, F) + + mstore( + 0x0, + addmod(addmod(addmod(addmod(mulmod(state0, M00, F), mulmod(state1, M10, F), F), mulmod(state2, M20, F), F), mulmod(state3, M30, F), F), mulmod(state4, M40, F), F) + ) + mstore( + 0x20, + addmod(addmod(addmod(addmod(mulmod(state0, M01, F), mulmod(state1, M11, F), F), mulmod(state2, M21, F), F), mulmod(state3, M31, F), F), mulmod(state4, M41, F), F) + ) + mstore( + 0x80, + addmod(addmod(addmod(addmod(mulmod(state0, M02, F), mulmod(state1, M12, F), F), mulmod(state2, M22, F), F), mulmod(state3, M32, F), F), mulmod(state4, M42, F), F) + ) + mstore( + 0xa0, + addmod(addmod(addmod(addmod(mulmod(state0, M03, F), mulmod(state1, M13, F), F), mulmod(state2, M23, F), F), mulmod(state3, M33, F), F), mulmod(state4, M43, F), F) + ) + mstore( + 0xc0, + addmod(addmod(addmod(addmod(mulmod(state0, M04, F), mulmod(state1, M14, F), F), mulmod(state2, M24, F), F), mulmod(state3, M34, F), F), mulmod(state4, M44, F), F) + ) + } + + // scratch variable for exponentiation + let p + + { + // load the inputs from memory + let state1 := addmod(mload(0x80), 0x0554d736315b8662f02fdba7dd737fbca197aeb12ea64713ba733f28475128cb, F) + let state2 := addmod(mload(0xa0), 0x2f83b9df259b2b68bcd748056307c37754907df0c0fb0035f5087c58d5e8c2d4, F) + let state3 := addmod(mload(0xc0), 0x2ca70e2e8d7f39a12447ac83052451b461f15f8b41a75ef31915208f5aba9683, F) + let state4 := addmod(mload(0xe0), 0x1cb5f9319be6a45e91b04d7222271c94994196f12ed22c5d4ec719cb83ecfea9, F) + mstore(0xe0, addmod(mload(0x100), 0x2eb4f99c69f966ebf8a42192de7ff61621c7bb47b93750c2b9ea08d18446c122, F)) + + p := mulmod(state1, state1, F) + state1 := mulmod(mulmod(p, p, F), state1, F) + p := mulmod(state2, state2, F) + state2 := mulmod(mulmod(p, p, F), state2, F) + p := mulmod(state3, state3, F) + state3 := mulmod(mulmod(p, p, F), state3, F) + p := mulmod(state4, state4, F) + state4 := mulmod(mulmod(p, p, F), state4, F) + + // state0 pow5mod and M[] multiplications are pre-calculated + + mstore( + 0x0, + addmod( + addmod( + addmod(addmod(0x1282bc78005ba97a80ccae28ce172790ca301e19e52354333993891b9fd27bd4, mulmod(state1, M10, F), F), mulmod(state2, M20, F), F), + mulmod(state3, M30, F), + F + ), + mulmod(state4, M40, F), + F + ) + ) + mstore( + 0x20, + addmod( + addmod( + addmod(addmod(0x25ce673773c90bcab91ecf14a691cbc59aeff5abfff4cfc7c6a85d51a79468fa, mulmod(state1, M11, F), F), mulmod(state2, M21, F), F), + mulmod(state3, M31, F), + F + ), + mulmod(state4, M41, F), + F + ) + ) + mstore( + 0x80, + addmod( + addmod( + addmod(addmod(0x2933f130a05a81186977481f40b428b2fa98c4a8f2561aad43098fb380f746b7, mulmod(state1, M12, F), F), mulmod(state2, M22, F), F), + mulmod(state3, M32, F), + F + ), + mulmod(state4, M42, F), + F + ) + ) + mstore( + 0xa0, + addmod( + addmod( + addmod(addmod(0x178f5c848248d8ae30d9d4e6c27ec06995bba97b9d0ab13bb7b63e121958133e, mulmod(state1, M13, F), F), mulmod(state2, M23, F), F), + mulmod(state3, M33, F), + F + ), + mulmod(state4, M43, F), + F + ) + ) + mstore( + 0xc0, + addmod( + addmod( + addmod(addmod(0x1f52dac6047456323348e214a18a3aad024561b12c7ca045cd2484b9d4ffe3c0, mulmod(state1, M14, F), F), mulmod(state2, M24, F), F), + mulmod(state3, M34, F), + F + ), + mulmod(state4, M44, F), + F + ) + ) + } + + fRound( + 0x2eb4f99c69f966ebf8a42192de7ff61621c7bb47b93750c2b9ea08d18446c122, + 0x224a28e5a35385a7c5198169e405d9ea0fc7da8b93ee13b6d5f7d099e299520e, + 0x0f7411b465e600eed8afdd6afca49c3036f33ecbd9a0f97823796b993bbd82f7, + 0x0f9d0d5aad2c9555a2be7150392d8d9819b208ae3370f99a0626f9ff5d90e4e3, + 0x1e9a96dc8292bb596f52a59538d329229732b25259cf744b6a12d30702d6fba0 + ) + + fRound( + 0x08780514ccd90380887d578c45555e593cfe52eab4b945c6c2cd4d528fb3fe3c, + 0x272498fced686c7ac8149fa3f73ef8c2ced64717e3556d5a59f119d629ccb5fc, + 0x01ef8f9dd7c93aac4b7cb80930bd06eb45bd350aff585f10e3d0ef8a782ef7df, + 0x045b9f59b6595e614dc08f222b469b138e886e64bf3c40aa97ea0ae754934d30, + 0x0ac1e91c57d9da919fd6f59d2a40ff8ea3e41e24e247a387adf2584295d61c66 + ) + + fRound( + 0x028a1621a94054b0c7f9a421353cd89d0fd67061aee99979d12e68f04e62d134, + 0x26b41802c071ea4c9632647ed059236e50c19c3fb3c96d09d02aae2a0dcd9dbc, + 0x2fb5dda8072bb72cbaac2f63e468215e05c9de06758db6a94af34384aedb462b, + 0x2212d3a0f5fccaf244ff3547fd823249ad8ab8ba2a18d383dd05c56ee894d850, + 0x1b041ad5b2f0684258e4dfaeea09be56a3276fdb19f44c015cd0c7eed465e2e3 + ) + + pRound( + 0x0a01776bb22f4b6b8eccff33e76fded3144fb7e3ac14e846a91e64afb1500eff, + 0x2b7b5674aaecc3cbf34d3f275066d549a4f33ae8c15cf827f7936440810ace43, + 0x29d299b80cd4489e4cf75779ed54b48c60b042257b78fc004c1b803381a3bdfd, + 0x1c46831d9a74529357641c219d721a74a427110032b5e1dd19dde30424be401e, + 0x06d7626c953ccb72f37141dc34d578e036296c0657674f80739ae1d883e91269 + ) + + pRound( + 0x28ffddc86f18c136c54002748e0c410edc5c440a3022cd960f108c71cda2930c, + 0x2e67f7ee5e4aa295f85deed09e400b17be67f1b7ed2ab6adb8ec0619f6fbc5e9, + 0x26ce38fa636c90630e97f25114a79a2dca56859ef759e53ce7abf22c24e80f27, + 0x2e6e07c3c95bf7c34dd7a01d00a7ffec42cb3d16a1f72721afacb4c4cfd35db1, + 0x2aa74f7597f0c9f45f91d7961c3a54fb8890d276612e1246384b1470da24d8cc + ) + + pRound( + 0x287d681a46a2faae2c7c090f668ab45b8a71313c1509183e2ec0ca639b7f73fe, + 0x212bd19df812eaaef4a40600528f3d7da5d3106ff565aa3b11e29f3305e73c04, + 0x1154f7cf519186bf1aafb14b350eb860f97fd9740926dab93809c28404713504, + 0x1dff6385cb31f1c24637810a4bd1b16fbf5152905be36583da747e79661fc207, + 0x0e444582d22b4e76c081d34c44c18e424011a34d5476252863ea3c606b551e5c + ) + + pRound( + 0x0323c9e433ba66c4abab6638328f02f1815773e9c2846323ff72d3aab7e4eff8, + 0x12746bbd71791059193bba79cdec448f25b8cf002740112db70f2c6876a9c29d, + 0x1173b7d112c2a798fd9b9d3751842c75d466c837cf50d73efd049eb4438a2240, + 0x13d51c1090a1ad4876d1e555d7fed13da8e5713b25026ebe5fdb4808703243da, + 0x00874c1344a4ad51ff8dcb7cbd2d9743cb72743f0394efe7f4a58ebeb956baa1 + ) + + pRound( + 0x22df22131aaab85865ce236b07f244fa0eea48d3546e97d6a32a562074fef08f, + 0x0bf964d2dbd25b908708b437a445fc3e984524a59101e6c18bf5eb05a919f155, + 0x09b18d9b917a55bca302be1f7f181e0e640b9d73a9ab298c69b435b5fc502f32, + 0x094f5534444fae36a4bfc1d5bf3dc05bfbbbc70a6365366dd6745a5067289e43, + 0x2999bab1a5f25210519fa6622af53a15a3e240c0da5701cb784fddc0dc23f01f + ) + + pRound( + 0x2f6898c07581f6371ca94db73710e88084301bce8a93d13669575a11b03a3d23, + 0x07268eaaba08bc19ec16d7e1318a4740565deb1e8e5742f862174b1a6866fccb, + 0x186279b003454db01339ff77113bc9eb62603e078e1c6689a6c9582c41a0529f, + 0x18a3f736509197d6e4915bdd04d3e5ddb67e2cc5de9a22750768e5524737172c, + 0x0a21fa1988cf38d877cc1e2ed24c808c725e2d4bcb2d3a007b5987b87085671d + ) + + pRound( + 0x15b285cbe26c467f1faf5ef6a64625228328c184a2c43bc00b36a135e785fba2, + 0x164b7062c4671cf08c08b8c3f9806d560b7775b7c902f5788cd28de3e779f161, + 0x0890ba0819ac0a6f86d9865fe7e50ef361c61d3d43b6e65d7a24f651249baa70, + 0x2fbea4d65d7ed425a42712e5a721e4eaa627ac5cb0eb878ccc2ee0aed543e922, + 0x0492bf383c36fa55540303a3b536f85e7b70a58e854ab9b9103d7f5f379abaaa + ) + + pRound( + 0x05e91fe944e944104e20251c565142d61d6185a9ce85675f6a969d56292dc24e, + 0x12fe5c2029e4b33893d463cb041acad0995b9621e6e49c3b7e380a76e36e6c1c, + 0x024154adf0255d47958f7723921474131f2629fadc89496906cd01dc6fa0784e, + 0x18824a09e6afaf4a36ed2462a86bd0bad798815644f2bbde8813c13457a45550, + 0x0c8b482dba0ad51be9f255de0c3dbddddf84a630af68d50bbb06983e3d5d58a5 + ) + + pRound( + 0x17325fd0ab635871363e0a1667d3b67c5a4fa67fcd6aaf86441392878fdb05e6, + 0x050ae95f6d2f1519122f5af67b690f31e550773fa8d18bf71cc6d0e911fa402e, + 0x0f0d139a0e81e943038cb288d62636764bbb6295f07569885771ec84edc50c40, + 0x1c0f8697795689cdf70fd2f2c0f93d1a79b39ebc7a1b1c549dbbca7b8e747cd6, + 0x2bd0f940ad936b796d2bc2e048bc979e49be23a4b13598f9fe536a16dc1d81e6 + ) + + pRound( + 0x27eb1be27c9c4e934778c09a0053337fa06ebb275e096d167ce54d1e96ee62cb, + 0x2e4889d830a67e5a8f96bdd3155a7ca3284fbd307d1f71b0f151be62548e2aea, + 0x193fe3db0ab47d3c5d2ec5e9c5bd9983c9891f2cadc165db6064bbe6fcc1e305, + 0x2bf3086e96c36c7bce415907ad0c40ed6e9661c009679e4e37cb13027c83e525, + 0x12f16e2de6d4ad46a98cdb697c6cad5dd5e7e413f741ccf29ff2ea486e59bb28 + ) + + pRound( + 0x2a72147d230119f3a0262e3653ddd19f33f3d5d6ec6c4bf0ad919b0343b92d2f, + 0x21be0e2c4bfd64e56dc47f957806dc5f0a2d9bcc26412e2977df79acc10ba974, + 0x0e2d7e1dc946d70b2749a3b54367b25a71b84fb911aa57ae137fd4b6c21b444a, + 0x2667f7fb5a4fa1246170a745d8a4188cc31adb0eae3325dc9f3f07d4b92b3e2e, + 0x2ccc6f431fb7400730a783b66064697a1550c12b08dfeb72830e107da78e3405 + ) + + pRound( + 0x08888a94fc5a2ca34f0201462420001fae6dbee9e8ca0c242ec50621e38e6e5d, + 0x02977b34eeaa3cb6ad40dd42c9b6fdd7a0d2fbe753af88b36acfcd3ccbc53f2a, + 0x120ccce13d28b75cfd6fb6c9ea13a648bfcfe0d7e6ff8e9610b5e9f971e16b9a, + 0x09fad2269c4a8e93c81e1b9770ea098c92787a4575b2bd73a0bf2af32f86ff3c, + 0x026091fd3d4c44d50a4b310e4ac6f0fa0debdb70775eeb8af630cffb60092d6f + ) + + pRound( + 0x29404aa2ba565b77bb7fba9dfb6fc3212543cc56afad6afcb904fd2bca893994, + 0x2749475c399aaf39d4e87c2548695b4ef1ffd86590e0827de7201351b7c883f9, + 0x098c842322479f7239912b50424685cba2ebe2dc2e4da70ac7557dab65ffa222, + 0x18cef581222b647e31238e57fead7d5c758ace14c93c4da40191d0c053b51936, + 0x13177839c68a5080d4e746745e43711d3cbc0ca4a108f98d63b2aa681698de60 + ) + + pRound( + 0x020ca696f531e43ec088f56f4b74325626cc4df712c0e5f0a907d88e5f0deffd, + 0x27230eede9cccfc9fa805a30fc548db693d13708c646841d16e028387c7ac022, + 0x01645911c1198b01d64fde34a342a1786497c05969a015439057d2fe75bb281c, + 0x2c323fe16481bf496e439c88341ce25f198971e14487056cfdca4a451a5d8643, + 0x0fc082dfe70728e8450bd2074c3e22e1b022c124d3bffe8b5af88ae6db5085c8 + ) + + pRound( + 0x2052c174800db209d8cdca568dcc25b3be9642116ac4c77efe8a488b423521ee, + 0x28e420e10df2fbb5af96d621d55423190be351ce8129065a8dd9fd05b3ece9c0, + 0x25698ca5e24a1b799f783c4462a24db655d6ae1bdacd1cb549d6e0bc3ae5069a, + 0x160a9981a5c89a57cf8ffbfa57d51049a297b61074422ac134d9b857d6984d35, + 0x21c91a39e145c3bc34d9b694b843f3bf8b7cebf59ddbb0a064642b069997f3d4 + ) + + pRound( + 0x1ac8d80dcd5ee876d2b09345ef112345d6eaa029d93f03b6d10975461e41734c, + 0x0ab3e6ad0ecf8b8e7c1662a4174c52225d822895e2755544b8dbcea5657ce02c, + 0x1c675182512620ae27e3b0b917b3a21ca52ef3ef5909b4e1c5b2237cbdab3377, + 0x2cdbc998dfd7affd3d948d0c85bad2e2e37a4a3e07a7d75d0c8a9092ac2bed45, + 0x23b584a56e2117b0774bf67cc0dee33324337350309dff833e491a133bb63b2e + ) + + pRound( + 0x1e9e2b310f60ba9f8cb73030a3c9d2a10d133bc6ba4ec1152f3d20de1465e9a5, + 0x0e01e365ba5b3031abc3e720140ae746c9ab5dab987520c460bcd4f1fa5b22db, + 0x040884cdcfc64bfc7b7127340498d5c443382011b61c9a4b1387d85bc1264e68, + 0x190b1ee1205eb9500c74a3998f2bea36353f1724d6067ed0a0a17de311ef9668, + 0x1647c72aec6c4388d04f52fc23cd9c08c1dfcf65ce61e165fc28d1f832bd3b2c + ) + + pRound( + 0x2430006346a0145f799880cc4c8736269f5494d89fb48b02842e595b71e4541d, + 0x177b9a08343917e1365107a3da3ae7f69d853902bb16bacb3221850252b757af, + 0x04a420e642b11ae94e58862a68f5e32609cd53d0ae29423439b11d04666df4f8, + 0x25d0e0f739fb39fc105a88fab0afd810de2461858e956ccccdfabeddb6a25c8f, + 0x04476d91b7eff2fd85905cbf58651edc320cb15610eaed452c4d4ffa0c740a27 + ) + + pRound( + 0x1090c0b68b3d7d7b8bc9ca2419eb8dea1c28f6d5e1250cb5e9780fd9ca286fae, + 0x25393ce3b9256d50448a725c5c7cd5ad376f2d435855c10ebf2899cb5c6617be, + 0x25931c0c7371f4f1fc862f306e6e5830ed824388d6b9342697d144f0fab46630, + 0x2396cb501700bbe6c82aad51b0fb79cf8a4d353185d5808203f73f22afbf62f6, + 0x26a363483348b58954ea748a7129a7b0a3dc9068c3cca7b5b3f0ce03b8724884 + ) + + pRound( + 0x27ca107ca204f2a18d6f1535b92c5478c99b893334215f6ba7a0e5b45fcd6897, + 0x26da28fc097ed77ce4662bde326b2cceac15f7301178581d8d2d02b3b2d91056, + 0x056ab351691d8bb3703e3055070ac9cc655774c1bb35d57572971ba56ee0cb89, + 0x2638b57f23b754aec76d109a2f481aa3c22547a11ffc50152d729af632376a90, + 0x304754bb8c57d60732f492c2605184fdc33e46a532bdec80ea7bc5519ede7cef + ) + + pRound( + 0x00d1727f8457ee03514f155b5806cbf748ec6857fc554010752ac93a9b7619ac, + 0x00ee1f3c66fbc05c43ba295a303c72fab5bca86805ec9419c588e50947761fa3, + 0x0afafadcf5b4dd4a4a76b5a1d82415fd10a19fbcfc59078c61f9297eb675d972, + 0x0b2449f39746085e86ce45e8eed108ee65a234835a0a6a5ea8996d124dd04d0a, + 0x206b0ce2f1b2c5b7c9f37b0045227095f6c6f071ec3bdda76a7ddf4823dd5dd6 + ) + + pRound( + 0x0feba4fb87834c7cb696e67433628cd6caffc3a4ef20fea852c7e1029459409c, + 0x254dbfac74c49b0b8926752e084e02513b06f1315e6d70e18173e972336e55d3, + 0x0addb1372cee4e164655168c367559e19606c5bd17910aeb37719edfa0ca8762, + 0x26b25b7e257f3e97c799024fb019f65c6ca4d8d81b1ae16221a589d68831d759, + 0x090995b79acec240413b8d4c658787e5a4657b9ab00bdb5b1960b1059e113ba3 + ) + + pRound( + 0x08dbdc2e21ef11f2c57299687843cea3eb0d8e40e99131f42974178d44f73b7b, + 0x09e8aba671481197679faf752a0f78e342fe9c491596ab6758f170939785179f, + 0x1deb05180e833e45659052a7ebaf816c7efd12a7f9eec94b7bc7c683f1363d5c, + 0x19a70ec6bdfc9098a926efbcc04aa9ee248997e8b2c24af335fd6523e5250879, + 0x21d773660adafb8a879986f9aab4890566353a3777d8a3f1eb93abe10bbf1f64 + ) + + pRound( + 0x09f1890f72e9dc713e20ba637b89d5d397a6b01fcd667347f6f46617841c3901, + 0x05af459361eb454d2a300c61e446998d48fa1f897bf219d608c2145c33b111c3, + 0x0fa1a1d6829f0345664a66dc75a657335f336f15f340756cfa12fc850cc8b513, + 0x02e47a35bcc0c3a0bda0b1c0307ad543f4280fcf87f636f853655cf97a628bb0, + 0x14f773e9834c6bdeb8f90e78bf4c24b7203411460112491036621895204d0f12 + ) + + pRound( + 0x102d98cf502ed843255cf19d29bc7d8e642abe7cfd639992ffb091962fc8f7cc, + 0x043dd5f4aa5a76dd4c47f6c65da7ca2320d4c73ad3294738cba686a7e91373c2, + 0x21833819c3337194a6c0d29a48d4f2676f0e7c79743a306f4cfdb2b26bd11efa, + 0x0f281925cf5ee649b474a6819d116ca3eb4eca246c311ecadc53262a3cff2b53, + 0x0d3e2477a7b10beb44709c7746d6824edf625dd60504d5dc93ce662f15c238d6 + ) + + pRound( + 0x2cd7f641bedbf66956ff8a01be9cde35d80f80ab51e73b49acbfc3eff5aefc44, + 0x29e95b492bf2f95f4d09380f98b74e389149d24045811d7a86dd861310463cf8, + 0x22da66bc62e8f011266efca86a6c810f9ae4c51af6ffeb57f8b3c50df83cc13e, + 0x0fe6d30de7a82d163023491794f4aca3220db79e8129df3643072d841925554a, + 0x0050e842a1299909123c46eff185c23ad312d03fef1adfecc7e07ecb298fd67f + ) + + pRound( + 0x2130a3a7b3221222be34cc53a42d7733666f9ddf714ed7c5885cbbdb63108c21, + 0x2df9ee294edf99e3d8d5883fe0566c24aa66731f34a93280e1d328e67b33c9fa, + 0x1bf7d6e489ad8c0cf26eb68cc21ff54158132396dc250aeba4b6fc5fc3372762, + 0x0c602fa155be958761eaf739617ab136cf7b807728bf7fe35d4778d311780e54, + 0x2e50e2c5b36aa20532407d86b8d22d7d5154080a24972faeb63faf0121ed7f21 + ) + + pRound( + 0x17c2510982a7b5825710d6290ec4f782f674995ee8409b42b459123b180332e1, + 0x0b0d52f03c8af7276803ecf2465b885b21337b538eabd2f6b2ab255f376b42a8, + 0x0f5633df1972b9455953d88a63f80647a9ac77c6c0f85d4561972dd8fab8bd14, + 0x0ebf7ad29ca13804e1422e939681155124780ff43e76e929035498130a7f1572, + 0x1aff13c81bda47e80b02962173bba343e18f94bee27c8a57661b1103a720ffe2 + ) + + pRound( + 0x210449dbf5cf3061da2465be85505862d3f31de1a3b58ff35713be57efac6c07, + 0x088230c2794e50c57d75cd6d3c7b9dbe19d1e2f1d3001044b93ad1c3ee629817, + 0x1c408c256490b0a1da08dc464138dfc78cce9a9e16c7705617a4d6dbb20e7e3a, + 0x074517e081eb4c1f22d1771200fb07658f7c77654d58440490dd6f557e9e3903, + 0x02d04e9c21df1dbd88524bdb203691b4cee5530559d6cf0fa05adf61e12fdcbf + ) + + pRound( + 0x2eb7a011b8bce91082e13ebd75de3b58eb9b4650dae9f11aa81db32cf1b67b13, + 0x2efda77ed35f4af0299f75d6e8a849b54d2ac6bf95368304e6030c18f0cf17b5, + 0x09199dcafd50ce642eddbeda65206d4f61a73d10852b8114c51b2440192ae064, + 0x268c5cfc446d399c4dd319db666a75b5cb655d8c1797e9fa76181cb4216e1562, + 0x2303a652c949071826b0e9a36c80578697b44e912cce6687012854eda11a18dc + ) + + pRound( + 0x27c53563b12a6ee2c3f041f31dc45922bc5353eb110868d237073f4efb35fbdf, + 0x1201a87eaf4ae618f02bd82d0a5109049969b5248cfe90f42c278f22615d2b0e, + 0x2c43169439fcd69ead8214997bb069becafcb1ba2c51e5706cb4b43dab2a443d, + 0x0683597315359040ea03c45d6984c6894f46cbb36d702e3c4fb9847e6304d944, + 0x03545706706eab36afb93b128febd16fb0425e158314197b77795ad3a798d183 + ) + + pRound( + 0x1a33c254ec117619d35f1fc051b31728740bed23a6a37870edb393b71a0c0e6b, + 0x1ffe6968a4470cd567b0c002281caf996e88f71e759b87e6f338e517f1690c78, + 0x0fd66e03ba8808ffecb059c899fd80f4140ddd5d2a5c4483107f4e02e355b393, + 0x263ab69f13b966f8197394552906b17e6c8617a7bdd5d74a7be3396b7fe013ab, + 0x16a425e47d1110625054d5a165de413e3bd87d5aa3958fdd6eb7e03e39ba4046 + ) + + pRound( + 0x2dc510a4719ec10cad752f03c673f0e253cc31d13e39e909fcc5f73af9138d9a, + 0x24df8e8d856c5b5e1bd1cad23d07dda3423c5179329b7a82cb4aa709a94576e5, + 0x2bcc94ff4fc3c76f3cd5c68915a042e87628249a01b09561bdf24a6cdce5620f, + 0x076c1e88dc540c8d8de54e343df7c429d3295f52c38cffe6b48be86852da97df, + 0x09b5f209a451ac431c051fb12d9a5e4fe40ee1601120947da990fb8e12cb46e1 + ) + + pRound( + 0x205f17b0d8729e2eaa88d6a44135a6ab64e9424f55b0f1ea0683af75eb677c07, + 0x281c5c688836f6cf912638c38be046cd091681f0a41761720cdd1edf9f237029, + 0x1a053e6878e900f45f4d67448c471cf3009a44e7a02ea50e4afa44f2592621f5, + 0x100dc7d426debe3007fb7ceac84e4f5468efcb897e7bbee981742839d59e064c, + 0x17022672a016a957bb87e2cfadc8b75fb28905bdb62c82c80b1cb31b411e49c8 + ) + + pRound( + 0x1086db7e2760fc8b71053a87ebe151239fb8b547182b170de0c27203f954f4d2, + 0x15384fe39d73b63302460ae4c2942fac2b41fb65a185536fb85dd24fd7584064, + 0x2ebb599fe9136d424bf4abc5342c6c7447b1a853205fcfb5519e551357709008, + 0x1b4b5e87cfb9262cfec3c0f0542e4c5a4cf278292b4ce3eed996fac6f4d37288, + 0x2465053ae50b6885801f3f82e302cafbbb4a7581bb4fba60b637febe659e5057 + ) + + pRound( + 0x114f32edcdea09cd095c5bb5d38f1b97da9f05e18b3708bf6e0ab9d3d54859ef, + 0x2bc70dfeb2baab2f6b387cd77be779ac2e5e5519f3d18123ee28d8c2543c7148, + 0x01c9bf7a203ce22b775e3a61ad7e77b6a78348b9f6ec68a412e49bfe32c05415, + 0x0514b0fe5909ea887bedb0295fbbcec355cfb575ff6a97cd9f4ad00ccb57ee9b, + 0x267c76ec81934cc81a132a8b058910a12092520b12a201af03e3202d7b6c1b7e + ) + + pRound( + 0x29170e3322b3d8d5c78c84babbb470adf1622493ce83e95cfb151cf757bde5d6, + 0x019f6a8124b19e33af33e5d3873f9c335c6f09a45486cab536dd596ca41d9519, + 0x1904aa4d6908544a8b348e9db1981c27009ed8ea171518ae5405d036242b60e9, + 0x26f17873949bc679f7f043956694e422b3cee1de9dd6f6473b932a476455ff1a, + 0x1ac668f612b8243c193b33720b8aa54040c476031197131ebdcac9b18bc48f75 + ) + + pRound( + 0x0996d961a75c0d07196dae45bf624766ccfbf8555be9796da52f81568ef0663d, + 0x030c97e1b8cad1d4fd50d1b4383fbe6674d171f99c63febb5425b395c24fc819, + 0x06e3ad6a46900e2d3953370255b68f89b3e523f1fe502642ee226f2d8bd0848f, + 0x1d6b3755331cd0216b6880e42f9880f565cb94b0e0455153a329890588cc916e, + 0x28e4dcba4b96f12a59b041535e730ac8c35189dc0b85ac033dd38c08bae531f2 + ) + + pRound( + 0x08b6086046a835508ccf484f2974b6a6b0712a476260376c7a3b3e4bc4a47a14, + 0x162cd2ca7fe3b5f1444bcec97812019bb6fd85fba6a0536a89643e15b9bb3b52, + 0x28f1e03baaea9bbc05af5b11937e4f5cb5c9a9c1192063d1998c01c64d483a76, + 0x1bdb062778d7c15da395af2734c25faa0127d2aab4aa71366031a0bb6791ce10, + 0x2375839502e09890cb2914e829627e0e0fc98870b2324a8b50329ebdd24749cb + ) + + pRound( + 0x1fa8662fbcb61fb3ad7c55668dc9423a332dc87cfb2df456e92d33611ed7bb50, + 0x1e4fad2dd6b0a6f1f8707f721716c8a446e2fb2c47a5138f3f7f9736079d7694, + 0x211256d16c7269fd6df6f5fcdd1fa788ba3bd050059f53d261b0f5f13731ffe7, + 0x2e49084b336eceaa4f8e2a2e6af08318f42060e574dda341f4a1079b12bcc5a5, + 0x0ce19f54cdc39f7f3bf35192ac6808211aecea08dfe14cab758d25891fb00bb9 + ) + + pRound( + 0x0011c5d56c390e893cc394221261d8748dc60451e4ae4e1c84a8468bab2c14cb, + 0x17d79ff06b63ac2a8a9e05ee6af3dbb7ca60e17bfa39b47514a8cd8051579b4c, + 0x19a7d3a446cb5393dc74560093592b06b1a8b35cd6416a2ecab00173639015fa, + 0x030c00a0933dcdba2a808b2e1b9282f331f04596d8928da7aa6c3c97237037a6, + 0x16bcb447ce2d50f3ae25ad080695382e935d2d00184c4acc9370be8aab64139c + ) + + pRound( + 0x12341b46b0150aa25ea4ec8715312997e62124f37cab7b6d39255b7cd66feb1d, + 0x0e86d13917f44050b72a97b2bf610c84002fc28e296d1044dc89212db6a49ff4, + 0x08e6eb4089d37d66d357e00b53d7f30d1052a181f8f2eb14d059025b110c7262, + 0x2ea123856245f6c84738d15dd1481a0c0415ccb351a1e0cee10c48ce97ca7b18, + 0x2dca72b2ebcab8c23446e00330b163104195789025413abf664db0f9c84dfa6f + ) + + pRound( + 0x06ff9ed50d327e8463329f585ec924b3f2f6b4235f036fa4c64a26cbd42b6a6b, + 0x246a10b7e3e0089947f7c9bda3d54df8e2a60e0cca84ea2ac630a4535afbf730, + 0x22a63501c5f04b9018719ed99d700ee52f846a715ae67ad75c96b39d688b6691, + 0x2f4c50477f7fd9c671799ac5d2e224cdb9164f58351d8aa140ec07e514fae937, + 0x10ffb7aad1f51c7d13b17f4d876d9a1e38f0ba8a4a23d4b50cda32cad851567e + ) + + pRound( + 0x0e9cefddc3c2d3bea4d39722532d5420784027352187e7af1a056935c35803ae, + 0x07af84a4d3141e7ac23352e6dc6ea4afa1656f96a33c8978a3e83bdd4ba62b41, + 0x2d9e31a10aebc761f8de00d14b1e566d1a39323d6e89b638e940f3ec8a22c3c5, + 0x27f19a6532e66b5333db1afd592f66f1d36034b314dad8447656747be27e64c7, + 0x0058fa3c8454d63354b2024c3b4a577a180ed99f8f3155cd7e4d617d47d07ffd + ) + + pRound( + 0x041627b6715b780967957c080699343eb0414a205d3a175d708964956816a5d5, + 0x006ac49dd9253edc7f632e57b958ccecd98201471cf1f66589888f12b727c52d, + 0x0131adffd8bd7254b1d8c3616bbe3386ec0c9c0d6d25a9a4ec46a6bf18301398, + 0x1c4a6f52c9fccf7a4138e413ef62a28377977ad7e25e49a3cf030e1cd8f9f5b6, + 0x03f2a6be51ec677f946551b3860ea479fee048ae2078aeb7d1f7958d2c2645f6 + ) + + pRound( + 0x2da770aad2c2eb09391a0cb78ef3a9648a1372d8543119564d7376396b8ddc62, + 0x15278463665f74cddc1802febfab02cec9d45fe866c359c738062afb75d64a03, + 0x12fe278aa36544eac9731027090518d434e38ea966a08a6f8d580638ac54c773, + 0x149b9c802182558a4c45d119d3f4cc7fd8587604ca4f0d6e21b06ff30b6a23b6, + 0x0812e7b4d847bc8517d19319772f3c9855e044fd60dbac9a0adc4959b691dfe4 + ) + + pRound( + 0x02ed8d8ddeafe3d9d8df7f28a0bfaa7f555813c7e7503aea2a66973703a0c61b, + 0x0ebd073ba0537b514deb6029f921029e55e5e4d9a03d6b6ba1304038662d4db8, + 0x15c754d5b14b2c4205c6ba8d2ccd028255b3e792c6afa08b44ee75b62eff9f59, + 0x169515c89ac5479db0ed8fa6fa311b391cc1235270f4cbc5c29e7cbc30e8732a, + 0x25479fbfb3a68f982388f2621001101608bdc29f6ff037696d9161f5cd9a4fef + ) + + pRound( + 0x14475c4bd520451f3c852cb0311a578ca7f8e6e972182196ce09486e94be6071, + 0x045a691066cc66bec9baf2798833a1dfd3a847502aec8d5f5c4e73363d097799, + 0x26029c0c267c799fb833ac8a11e3a3f0147a8ca037221b90013b8bcb37eba683, + 0x163facb34ff572fbf7c946969c1c260873ce12a6a94a3e45b8101d5b948d1641, + 0x2c714e96e1913b351d969320cc69d5ec13e06a6275e58688af8ee00c4240ee28 + ) + + pRound( + 0x1c1661e2a7ce74b75aba84665ecd2bf9ddd6268f06debfe2d52b804eff1d5fa6, + 0x06a69ae795ee9bfe5e5af3e6619a47d26635b34c2a0889fea8c3c068b7dc2c71, + 0x113d58535d892115c5d28b4c19a3609374dbdbadf54195c731416c85d731d46a, + 0x2ab89102e2b8d5e638ff97d761da6042e534f1ff47f7917a2ca1a74063b46101, + 0x03c11ca79e41fdfe962730c45e699546349031893da2b4fd39804fd6a15ad1b3 + ) + + pRound( + 0x27096c672621403888014ddbbbfc9da1f7f67b4d4cfe846c6adf040faaf2669c, + 0x2de32ad15497aef4d504d4deeb53b13c66db790ce486130caa9dc2b57ef5be0d, + 0x0dc108f2b0a280d2fd5d341310722a2d28c738dddaec9f3d255754448eefd001, + 0x1869f3b763fe8164c96858a1bb9efad5bcdc3eebc409be7c7d34ca50365d832f, + 0x022ed3a2d9ff31cbf82559fe6a911843b616945e16a568d48c6d33767129682d + ) + + pRound( + 0x2155d6005210169e3944ed1365bd0e7292fca1f27c19c26610c6aec077d026bc, + 0x0de1ba7a562a8f7acae93263f5f1b4bbec0c0556c91af3db3ea5928c8caeae85, + 0x05dbb4406024beabcfce5bf46ec7da38126f740bce8d637b6351dfa7da902563, + 0x05d4149baac413bed4d8dc8ad778d32c00e789e3fcd72dccc97e5427a368fd5e, + 0x01cdf8b452d97c2b9be5046e7397e76ff0b6802fa941c7879212e22172c27b2e + ) + + pRound( + 0x1fc6a71867027f56af8085ff81adce33c4d7c5015eced8c71b0a22279d46c07c, + 0x1040bef4c642d0345d4d59a5a7a3a42ba9e185b75306d9c3568e0fda96aaafc2, + 0x16b79c3a6bf316e0ff2c91b289334a4d2b21e95676431918a8081475ab8fad0d, + 0x20dff1bc30f6db6b434b3a1387e3c8c6a34070e52b601fc13cbe1cdcd59f474e, + 0x0212ac2ab7a6eaaec254955030a970f8062dd4171a726a8bdfb7fd8512ae060d + ) + + pRound( + 0x2f29377491474442869a109c9215637cb02dc03134f0044213c8119f6996ae09, + 0x0984ca6a5f9185d525ec93c33fea603273be9f3866aa284c5837d9f32d814bfa, + 0x0d080a6b6b3b60700d299bd6fa81220de491361c8a6bd19ceb0ee9294b24f028, + 0x0e65cd99e84b052f6789530638cb0ad821acc85b6400264dce929ed7c85a4544, + 0x2e208875bc7ac1224808f72c716cd05ee30e3d20380ff6a655975da12736920b + ) + + pRound( + 0x2989f3ae477c2fd376a0b0ff3d7dfac1ae2e3b894afd29f64a60d1aa8592bad5, + 0x11361ce544e941379222d101e6fac0ce918106a463290a3e3a74c3cea7189459, + 0x1e8d014b86cb5a7da539e10c173f6a75d122a822b8fb366c34c8bd05a2061438, + 0x173f65adec8deee27ba812ad29558e23a0c2324167ef6c91212ee2c28ee98733, + 0x01c36daaf9f01f1bafee8bd0c779ac3e5da5df7ad45499d0991bd695310eddd9 + ) + + pRound( + 0x1353acb08c05adb4aa9ab1c485bb85fff277d1a3f2fc89944a6f5741f381e562, + 0x2e5abd2537207cad1860e71ea1188ee4009d33deb4f93aeb20f1c87a3b064d34, + 0x191d5c5edaef42d3d02eedbb7ab8562513deb4eb34913a13421726ba8f69455c, + 0x11d7f8d1f269264282a263fea6d7599d82a04c74c127de9dee7939dd2dcd089e, + 0x04218fde366829ed90f79ad5e67997973445cb4cd6bc6f951bad085286cac971 + ) + + pRound( + 0x0070772f7cf52453048397ca5f47a202027b73b489301c3227b71c730d76d6dd, + 0x038a389baef5d9a7c865b065687a1d9b67681a98cd051634c1dc04dbe3d2b861, + 0x09a5eefab8b36a80cda446b2b4b59ccd0f39d00966a50beaf19860789015a6e5, + 0x01b588848b8b47c8b969c145109b4b583d9ec99edfacb7489d16212c7584cd8c, + 0x0b846e4a390e560f6e1af6dfc3341419545e5abfa323d817fed91e30d42954a6 + ) + + pRound( + 0x23a6679c7d9adb660d43a02ddb900040eb1513bc394fc4f985cabfe85ce72fe3, + 0x2e0374a699197e343e5caa35f1351e9f4c3402fb7c85ecccf72f31d6fe089254, + 0x0752cd899e52dc4d7f7a08af4cde3ff64b8cc0b1176bb9ec37d41913a7a27b48, + 0x068f8813127299dac349a2b6d57397a50275142b664b802c99e2873dd7ae55a7, + 0x2ba70a102355d549677574167434b3f986872d04a295b5b8b374330f2da202b5 + ) + + pRound( + 0x2c467af88748abf6a334d1df03b5521309f9099b825dd289b8609e70a0b50828, + 0x05c5f20bef1bd82701009a2b448ae881e3a52c2d1a31957296d29e5763e8f497, + 0x0dc6385fdc567be5842a381f6006e2c60cd083a2c649d9f23ac8c9fe61b73871, + 0x142d3983f3dc7f7e19d49911b8670fa70378d5b84150d25ed255baa8114b369c, + 0x29a01efb2f6aa894fd7e6d98c96a0fa0f36f86a7a99aa35c00fa18c1b2df67bf + ) + + pRound( + 0x0525ffee737d605138c4a5066644ec630ab9e8afc64555b7d2a1af04eb613a76, + 0x1e807dca81d79581f076677ca0e822767e164f614910264ef177cf4238301dc8, + 0x0385fb3f89c74dc993510816472474d34c0223e0f733a52fdba56082dbd8757c, + 0x037640dc1afc0143e1a6298e53cae59fcfabd7016fd6ef1af558f337bab0ea01, + 0x1341999a1ed86919f12a6c5260829eee5fd56cf031da8050b7e4c0de896074b4 + ) + + pRound( + 0x069eb075866b0af356906d4bafb10ad773afd642efdcc5657b244f65bed8ece7, + 0x171c0b81e62136e395b38e8e08b3e646d2726101d3afaa02ea1909a619033696, + 0x2c81814c9453f51cb6eb55c311753e84cbbdcb39bfe696f95575107502acced8, + 0x29d843c0415d35d9e3b33fadcf274b2ab04b39032adca92ce39b8a86a7c3a604, + 0x085d6a1070f3513d8436bccdabb78750d8e15ea5947f2cdaa7669cf3fae7728b + ) + + fRound( + 0x11820363ed541daa10a44ba665bf302cdbf1dd4e6706b02c9e2a5cda412fc394, + 0x201935a58f5c57fc02b60d61a83785bddfd3150e05f1df5d105840b751a16317, + 0x0a8c2820c56971aae27a952abd33a03d46794eedd686cd8ecfed610e87c02e9a, + 0x180638ff301a64ca04abd6d0bd7500b6650b65ff33e6be1fd50dbc163a281877, + 0x095c716266f1de59044f97114a4158a3f85ca8a937cfbec63e9b321a812dd36b + ) + + fRound( + 0x17c31ea02fbc378320d86ffed6c7ca1583b618c5c1a687818d4087a497d73490, + 0x05b86c4bb8ef318b6a7227e4192d149d3c17a9764ccd660de4d50a77f192a91b, + 0x265bc95df4a4c4876ff70d7ea2fde2c7ab15f4a6ae0d237cd6ce74ba986c7a7b, + 0x24752b47bc6c6bc8d9bbe48f5fef2f6908701739c5f5b4b3d6c886d4715c7929, + 0x14814a1e0f492a4ea0d86e527a96482178d624b98da96ee5e583b9324d974efe + ) + + fRound( + 0x10def931073b6479bd60577378f29381997c8e041d3cfb3dc7523bca906f00bd, + 0x14f7ae770bf7e95f7f706c0d8ab4ed03fa0b880d28c69d031b4592c98610175f, + 0x1aef50a0cee751b59f926af40e8035d19decc9d428ebe4e775c5cc9dce1ce589, + 0x041935607172f68eba65ca60068dfe3b086c2a2d57d09602951214b57e73cf5a, + 0x26863e9dd24255d1573bd083959b856c0493fbefe83c819837a151d3bf452cb8 + ) + + { + let state0 := addmod(mload(0x0), 0x2036efb6f9830965eb3d7a068bd087c9f5adf251ba62052c652738e63ff8b3af, F) + let state1 := addmod(mload(0x20), 0x0c712a975b74dc9d766b639a029969ca30be4f75a753f854b00fa4f1b4f4ee9b, F) + let state2 := addmod(mload(0x80), 0x08014dab3cd1667e27afc99bfac1e6807afdff6456492ca3375731d387539699, F) + let state3 := addmod(mload(0xa0), 0x198d07192db4fac2a82a4a79839d6a2b97c4dd4d37b4e8f3b53009f79b34e6a4, F) + let state4 := addmod(mload(0xc0), 0x29eb1de42a3ad381b23b4131426897a32709b29d53bb946dfd15784d1f63e572, F) + + p := mulmod(state0, state0, F) + state0 := mulmod(mulmod(p, p, F), state0, F) + p := mulmod(state1, state1, F) + state1 := mulmod(mulmod(p, p, F), state1, F) + p := mulmod(state2, state2, F) + state2 := mulmod(mulmod(p, p, F), state2, F) + p := mulmod(state3, state3, F) + state3 := mulmod(mulmod(p, p, F), state3, F) + p := mulmod(state4, state4, F) + state4 := mulmod(mulmod(p, p, F), state4, F) + + mstore( + 0x0, + addmod(addmod(addmod(addmod(mulmod(state0, M00, F), mulmod(state1, M10, F), F), mulmod(state2, M20, F), F), mulmod(state3, M30, F), F), mulmod(state4, M40, F), F) + ) + return(0, 0x20) + } + } + } +} \ No newline at end of file diff --git a/packages/contracts/contracts/poseidon/PoseidonT6.sol b/packages/contracts/contracts/poseidon/PoseidonT6.sol new file mode 100644 index 00000000..a548eb9c --- /dev/null +++ b/packages/contracts/contracts/poseidon/PoseidonT6.sol @@ -0,0 +1,856 @@ +/// SPDX-License-Identifier: MIT +pragma solidity ^0.8.10; + +library PoseidonT6 { + uint constant F = 21888242871839275222246405745257275088548364400416034343698204186575808495617; + + uint constant M00 = 0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18; + uint constant M01 = 0x0a514a5c227f4cec95dfa029e8dd124c34895aa46bb27c0911f3780d5015540a; + uint constant M02 = 0x278bb49a7b4e44aea46eb0f882cb692801a6e60fdd5b5c23c63cd65ccce4fe0a; + uint constant M03 = 0x0c399e9f67aa40707a203feefb0b958bbdadcec5ca34901d253d026a2419f6a2; + uint constant M04 = 0x1d6b3d5f6ea369c26f825d2362933eaa31ea35ec0a77c1fbd9e01ca1523e4432; + uint constant M05 = 0x24be510095436206dd0abd0b0cbb95c883ab304aa52598b1a69306ec981a688d; + uint constant M10 = 0x11924f02fd19b09255aaa1cf46ea0518e3d7bfeef47421609491011db0bd0b02; + uint constant M11 = 0x192e16d17d956b257b85a652eefdf2ee09589eac5be80915775723d2cb1da06d; + uint constant M12 = 0x063edec1bed831f506af8db648d6fdea145345887e8bdcff109035a1d9b674d7; + uint constant M13 = 0x083f0df3f1a0351d0330ec3ff602ca8cc353b7f6e762c7107184cd7b423449f6; + uint constant M14 = 0x119ef188bb3dd0d32306976c19941e8664be687e7a69692da27da215a6f06d40; + uint constant M15 = 0x211610e2ad4a377426fadf7068b0c1a6c299a164c1c1a603eaed944870d0b9b9; + uint constant M20 = 0x247fa7f022304a1994ff505456c2201ef9b717369498d3ffce446601ed9df845; + uint constant M21 = 0x298ce0c1e3113bb935c7058e7772b533b1aa9db0c0926bdc8917e5605ca3ac10; + uint constant M22 = 0x1baef1cb5509b526a42061fb53657f99b3232500e855192cbe8c940e068c475f; + uint constant M23 = 0x1a6764d5943fc4a720b4c0a19fdb8c711984307287a58b9b5f9f5d58212cb263; + uint constant M24 = 0x2d9e0ab5c06893dfdfd03481381ba86b6e6292df5609d71f2c64b2d9a79f809e; + uint constant M25 = 0x15a67d981041b1f6f09f3f9ebefd864e779d3af08157786ac077505e50ec79fc; + uint constant M30 = 0x03fd7b19ef2c861f22f77ff810f54e277bc94eb76c02d79d986be3dcdf051c3f; + uint constant M31 = 0x094cb4e83621afd271e41bc71727f0158ebd612239ac9d698b17fe4be05b7fc8; + uint constant M32 = 0x1324564ac7bdf9e22164e9858d7fa8e368b165eaea3daf4eb67ee59c0df2e5d4; + uint constant M33 = 0x011a63a26feabf87fa66bde66cc25a922c96382d76c6a7ff48f1537beaed683a; + uint constant M34 = 0x25f16631bf77060f7ea34087c025bf135784319ef08cda2e31419ee0a529e658; + uint constant M35 = 0x049327fa79d28c12a2c82406947f77f06775b0287468b3136877701dbe7c9598; + uint constant M40 = 0x18bd41239c3e71579a677443ecffbd555a81eeeea69352a68b67c8563c0c2a06; + uint constant M41 = 0x03d880395be93c27d649af5fd142e76b33918cb8841d5a28173bd5cf7d328791; + uint constant M42 = 0x005761b8c6aecb1a8ca4ea4dfc2c8376064a4a8004ceeda210a55240562ddc13; + uint constant M43 = 0x08ca7b64657c3548f32bef5b63ad24288a41c0b251099ad27f9434307e3e64d4; + uint constant M44 = 0x144c7a11da5a7c5dabae3f33fbd03cad86d18bc594c79a497ecb9894edb554f1; + uint constant M45 = 0x230940dcc5232658ff9c29697a3fd416d170e8c998f1aa85dea0c42d79f951aa; + uint constant M50 = 0x2d78c3a5d28de9ff35bf0a257635196e5730ca7f40493277078cd75da8b4ebdc; + uint constant M51 = 0x28eeae6b5866ad68e443bbaf91680db7d7e2b3037e38fef61b42cbccffceca81; + uint constant M52 = 0x10c9e283159d58cb4cb2e35fde83a3ba1fdc28002ed9963d2a99f186178a148d; + uint constant M53 = 0x01998270471e9361955446b0cdb8bea915ec0675f1cd648ddcb04303507a4489; + uint constant M54 = 0x0f971162627723f3feadacb28b0c104cb8f74de508752fa8d7c0db2af13de8ee; + uint constant M55 = 0x1b121c049cd1159e289007e0c9da9995cc4bab4c26fb888ec3972a8a2e656964; + + // See here for a simplified implementation: https://github.com/vimwitch/poseidon-solidity/blob/e57becdabb65d99fdc586fe1e1e09e7108202d53/contracts/Poseidon.sol#L40 + // Based on: https://github.com/iden3/circomlibjs/blob/v0.0.8/src/poseidon_slow.js + function hash5(uint[5] memory) public pure returns (uint) { + assembly { + // memory 0x00 to 0x3f (64 bytes) is scratch space for hash algos + // we can use it in inline assembly because we're not calling e.g. keccak + // + // memory 0x80 is the default offset for free memory + // we take inputs as a memory argument so we simply write over + // that memory after loading it + + // we have the following variables at memory offsets + // state0 - 0x00 + // state1 - 0x20 + // state2 - 0x80 + // state3 - 0xa0 + // state4 - ... + + function round(c0, c1, c2, c3, c4) { + let state0 := addmod(mload(0x0), c0, F) + let state1 := addmod(mload(0x20), c1, F) + let state2 := addmod(mload(0x80), c2, F) + let state3 := addmod(mload(0xa0), c3, F) + let state4 := addmod(mload(0xc0), c4, F) + mstore(0x100, addmod(mload(0xe0), mload(0x100), F)) + + let p := mulmod(state0, state0, F) + state0 := mulmod(mulmod(p, p, F), state0, F) + if mload(0x120) { + p := mulmod(state1, state1, F) + state1 := mulmod(mulmod(p, p, F), state1, F) + p := mulmod(state2, state2, F) + state2 := mulmod(mulmod(p, p, F), state2, F) + p := mulmod(state3, state3, F) + state3 := mulmod(mulmod(p, p, F), state3, F) + p := mulmod(state4, state4, F) + state4 := mulmod(mulmod(p, p, F), state4, F) + c0 := mload(0x100) + p := mulmod(c0, c0, F) + mstore(0x100, mulmod(mulmod(p, p, F), c0, F)) + } + + p := addmod(addmod(addmod(mulmod(state0, M00, F), mulmod(state1, M10, F), F), mulmod(state2, M20, F), F), mulmod(state3, M30, F), F) + mstore(0x0, addmod(addmod(mulmod(state4, M40, F), mulmod(mload(0x100), M50, F), F), p, F)) + p := addmod(addmod(addmod(mulmod(state0, M01, F), mulmod(state1, M11, F), F), mulmod(state2, M21, F), F), mulmod(state3, M31, F), F) + mstore(0x20, addmod(addmod(mulmod(state4, M41, F), mulmod(mload(0x100), M51, F), F), p, F)) + p := addmod(addmod(addmod(mulmod(state0, M02, F), mulmod(state1, M12, F), F), mulmod(state2, M22, F), F), mulmod(state3, M32, F), F) + mstore(0x80, addmod(addmod(mulmod(state4, M42, F), mulmod(mload(0x100), M52, F), F), p, F)) + p := addmod(addmod(addmod(mulmod(state0, M03, F), mulmod(state1, M13, F), F), mulmod(state2, M23, F), F), mulmod(state3, M33, F), F) + mstore(0xa0, addmod(addmod(mulmod(state4, M43, F), mulmod(mload(0x100), M53, F), F), p, F)) + p := addmod(addmod(addmod(mulmod(state0, M04, F), mulmod(state1, M14, F), F), mulmod(state2, M24, F), F), mulmod(state3, M34, F), F) + mstore(0xc0, addmod(addmod(mulmod(state4, M44, F), mulmod(mload(0x100), M54, F), F), p, F)) + p := addmod(addmod(addmod(mulmod(state0, M05, F), mulmod(state1, M15, F), F), mulmod(state2, M25, F), F), mulmod(state3, M35, F), F) + mstore(0xe0, addmod(addmod(mulmod(state4, M45, F), mulmod(mload(0x100), M55, F), F), p, F)) + } + + // scratch variable for exponentiation + let p + + { + // load the inputs from memory + let state1 := addmod(mload(0x80), 0x0ab7b291388e5c9e43c0dc1f591fb83ecdb65022e1b70af43b8a7b40c1dff7c3, F) + let state2 := addmod(mload(0xa0), 0x2b7cbb217896f52c9a8c088e654af21e84cde754a3cef5b15c4d5466612d6adf, F) + let state3 := addmod(mload(0xc0), 0x2bc6b0ddbe1d701b6570428bdc1ca1bf0da59ff3bbbb95fc2bc71c0c6e67a65c, F) + let state4 := addmod(mload(0xe0), 0x123a55a31980384f3d20b2cecbc44ed60c38c11f7d20e9271efab9a905eefd3c, F) + mstore(0x120, addmod(mload(0x120), 0x1c2116e47e03a86bb11695b0a5f6dab6b9a460b1eb951ab01c259eca3fd47d51, F)) + mstore(0x100, addmod(mload(0x100), 0x037501cc8c9dc819309a769f4df098e588b01858bc8eb7e279e2883be9fb8c53, F)) + + p := mulmod(state1, state1, F) + state1 := mulmod(mulmod(p, p, F), state1, F) + p := mulmod(state2, state2, F) + state2 := mulmod(mulmod(p, p, F), state2, F) + p := mulmod(state3, state3, F) + state3 := mulmod(mulmod(p, p, F), state3, F) + p := mulmod(state4, state4, F) + state4 := mulmod(mulmod(p, p, F), state4, F) + p := mload(0x100) + p := mulmod(p, p, F) + mstore(0x100, mulmod(mulmod(p, p, F), mload(0x100), F)) + + // state0 pow5mod and M[] multiplications are pre-calculated + + p := addmod( + addmod(addmod(0x1c75a58d854d4821d299acc8b5bf528d82545baa1fccd11b4af481536dd42d76, mulmod(state1, M10, F), F), mulmod(state2, M20, F), F), + mulmod(state3, M30, F), + F + ) + mstore(0x0, addmod(addmod(mulmod(state4, M40, F), mulmod(mload(0x100), M50, F), F), p, F)) + p := addmod( + addmod(addmod(0x2c64e4fd7d22b7941e97b236fac1a6979275c4dbb22f9707238fb478316e73d9, mulmod(state1, M11, F), F), mulmod(state2, M21, F), F), + mulmod(state3, M31, F), + F + ) + mstore(0x20, addmod(addmod(mulmod(state4, M41, F), mulmod(mload(0x100), M51, F), F), p, F)) + p := addmod( + addmod(addmod(0x213c4e421d44e697cd674a6d377a752d9bc2ebf497165ce792643bf39fc034f7, mulmod(state1, M12, F), F), mulmod(state2, M22, F), F), + mulmod(state3, M32, F), + F + ) + mstore(0x80, addmod(addmod(mulmod(state4, M42, F), mulmod(mload(0x100), M52, F), F), p, F)) + p := addmod( + addmod(addmod(0x2435ad434d1117db1f271503cd65ce1c5c2ac1900e1cd74ae1c6e490593a934, mulmod(state1, M13, F), F), mulmod(state2, M23, F), F), + mulmod(state3, M33, F), + F + ) + mstore(0xa0, addmod(addmod(mulmod(state4, M43, F), mulmod(mload(0x100), M53, F), F), p, F)) + p := addmod( + addmod(addmod(0x36a710abf9f57bb09aa288687ad8dcbcb9dc74c200d89d83d8e3c41f28e6b2e, mulmod(state1, M14, F), F), mulmod(state2, M24, F), F), + mulmod(state3, M34, F), + F + ) + mstore(0xc0, addmod(addmod(mulmod(state4, M44, F), mulmod(mload(0x100), M54, F), F), p, F)) + p := addmod( + addmod(addmod(0x201541d8be11e6a050f6aea51e645577db6ab8ed6d672de377d108c0fc4dad04, mulmod(state1, M15, F), F), mulmod(state2, M25, F), F), + mulmod(state3, M35, F), + F + ) + mstore(0xe0, addmod(addmod(mulmod(state4, M45, F), mulmod(mload(0x100), M55, F), F), p, F)) + } + mstore(0x120, 1) + + mstore(0x100, 0x1c21d92bef197e73b234e4777b60db14e642a56cee71515d54e1ac71cde72bd3) + + round( + 0x1c2116e47e03a86bb11695b0a5f6dab6b9a460b1eb951ab01c259eca3fd47d51, + 0x2c18213489032e85a9c8cb8e9a65839bfaed13e57bc0fae49dbdaebf54f56f93, + 0x2ee8fed3d4d2c71a0429eafd8e5db1718f29e2227985fdf2ad8703c835b9e031, + 0x28c64d8f5ed7aac004c92029d9e9bf91ba9436d1cce94b9316d111c70a0c1714, + 0x18a01d9ffb747ae0de3e83c707f8b24f682c84f15abf571b34254a03478665e0 + ) + + mstore(0x100, 0x06bbcb8e8e180201293e712f4950f1b0bbee808c9d64263c84d9d8ae155cb892) + + round( + 0x0ad404ccbcb1e195897cb60c80981ebb9d66a6677dbbedad8b6455fe62d807b1, + 0x0a9b6de833064f93b6adb99af6c005945cb654cb7bd14c8b97af8b60cc1fb387, + 0x13129e3f930aed6d47690331ff09dc5160efa58ddce2c3e6180d45bec3aa3a6f, + 0x0d7a614c8991508ab1ce4895813bb1c82f18bf7bfc9e280ccca18079839387f1, + 0x0532f7ec36e30041b0486986875c913a49bddf2f5af5febe8c31f2f4094ffea5 + ) + + mstore(0x100, 0x2f1bdc5254f9220c1a731fc5276964dab26b385fa40b6b04bed9960e2543ba08) + + round( + 0x0f558a4db1a3ac07f61e2e6bee947f73586bf40f211ceb4f687ca5678a9dcb33, + 0x2be140a60b5b5f2f8edd78a818a969b20c643e419bcf0b577c24a0d0e7acfe98, + 0x1c49c4b9a9f09f7b9ad5f74ebacc710512b8e867bace27cb0dea06e89b96f631, + 0x170c1a732721b12cde7f33e476a39a1aa77a81c06e2eac503847b00d597652db, + 0x19c27d0e52f65ca34f4e31a068e49331c6bfc39d9241f9d4c302041615cf27f1 + ) + + mstore(0x120, 0) + mstore(0x100, 0x17f02dab745fbe3c081321fe5cef845e7b8d070b2514d29b2a7b7d89cc0815da) + + round( + 0x05b42d2fbccbf4d39d2be9339cabe9d0dc6d921e855cd91154b639d28d4a1cf0, + 0x1220040715a41ad59f4f410e0c05a42c5fd32ac52fe9d06f88188d71f61e0935, + 0x25f9526526155b83946609f7bb9507dd4925ef871dee916d9144ebb4ece1343c, + 0x017bfe4284299ae7740b6d0e204951e314a8a5d0452419147978a95b34742444, + 0x2a5d4764021ca71d78a9674cb6708f1588d2ceaf3578c4111cf8b359eef089cf + ) + + mstore(0x100, 0x129fe7fc3efac6a8ab23dba6d886f394da11f5953cf98e28269a0dba2a745dd3) + + round( + 0x19da62626db7199b65f4adcf57fa4a3dbaa1764a7bd155708ee6f378c89ef013, + 0x0f88e295fa2ed81b426c91fa69366a73edf75f39bf18634cd266ec4038829e05, + 0x1fe31c5548546c7948fe4ee1bd7412e3280eff7d20cb09aa85f49f2766148017, + 0x10fdc1613bdbf67f38bdde561b2f91e4cc48b59f98d643638fdc0afadbfe126e, + 0x1f2618c2ebe9574508b9c52f0000e33ebfddad1a03fdd6bca6ef7f0093127bef + ) + + mstore(0x100, 0x0091f96400e4297ea85bb186c17b304e82638e57fd631ff6315976e1a5dd8b86) + + round( + 0x15afd4cdf1e4f820c1631d4ab85ca4ba3bafcfee72beade9fae60523102448e3, + 0x1f2c74ba5c367e370d728e71e15b268851a7bb8b45528cb734956079ac99b012, + 0x1130e1872d76f2f9369cf59b95edf9ce19f01fa89c9c36b26e09def6786dad3c, + 0x13523d173f7e6badb73b63fc1c9bbdbee242c61bc68656493327533a5c1b1dca, + 0x14da40d0af427a65f1841b5adc96538653368f7254cb5667ddadbbad7a574cd4 + ) + + mstore(0x100, 0x1f8bd2ab8aa840664c4eee198c4684dc4b05772bb2a0869da6722b15f447a133) + + round( + 0x303329bf9031c5515b9a34d49a64bb6a0267bc7b54a0deca5c450277a002cdcb, + 0x14ed47e55c1da1c2f05d3c1a1b2e6c18509fc8336ecfe9db737916e283fa821b, + 0x1161f10b357775d810ad53bcc4a20d5add2b03251c747deb04ee94c565e58d6b, + 0x17a8a50ae72ce707f22bc070eb992851ca914eb94cc68eafbb8a96a714eb8221, + 0x1a6c61d795dbaf62f99250b37ec5df88645a1c153791db6312b932dc250e4f62 + ) + + mstore(0x100, 0x14bf7889457b20b7a1367b34a3a538217d693b52426aff40a4bb72893b1784ca) + + round( + 0x1ffcb852a4f0027a9799f131cd74b98ccfb8cbc06349d8fefcc62f10c8fb3e2f, + 0x035e742ec52f19b36d489c720f467ffad77cd53bc2db5dddb246b23021f79f18, + 0x1dfaaee41bdf94d783aa29fc62b7ec7b55673aa818d305fd42d175a05f2e3d86, + 0x2821378477a02e995005a5635088540945bd333f2d1455f038a219b8c4796b3a, + 0x1db4a4d0f238a570b1061c6eec81c02f31ffdd4a7c19e763174f238d04897421 + ) + + mstore(0x100, 0x250932e7b0adcf2c84ed4bfb60a36b6b82e55aa94751157b1d45794b081c8aad) + + round( + 0x2ced52c2bf296f87e57410c3ec9a9483a796d164f6049127109ff0d3a9c08465, + 0x1ddeac5805a7f4ada4d0441ed108e3149d4ce6584f49ae5bdfd46d6766eea334, + 0x2e36b4e5e9c97b462304e8e2b5f9dc88e1c9f2161ba040673f911123f042ae70, + 0x0c6840d1cb0666dc59e89b1865275d8a164b447c5ed64347caee63502c238d5e, + 0x137e2e3e89e71d461f4c9bc3e8f12183262a4d1db55c589b2caeaac01238f58c + ) + + mstore(0x100, 0x1632308688c25e790f57d68a5350241242a56305347de4a5009ce46b8cdcb91f) + + round( + 0x170a7292f5634c06dd3bf09ab5c9c4ecd4b00d5ce2f35f972b4555391f16b42d, + 0x0d68cbbe77289e78d5cbf51d70f1b75ba215df4e7bd0149d10b2c50f2a4f3b81, + 0x0caf74563b90525f645a6d2036ecd1306fa1dc680b49d9ce4ed24c9749973178, + 0x20a7d1c0a27fcce78ffe372f4c58306b166f9456ed46cdeb255e395b7d30d42a, + 0x0623f3226b5470b2789b8a53040e44443385e96b9cfa0be4d35015158a468465 + ) + + mstore(0x100, 0x2cf4890650d27240e195f60a4f698eda249b8dd614b23376b50178d2df6d2b8f) + + round( + 0x2de4793a6f99cd14e3f6642211f4d0b7bcfa361597c544ffcb5a567e9076f47f, + 0x1d4d06d19ea1b09cad79086d51bde11725a554fa99559ca2f09f3bb73d728c66, + 0x0480e7479a66a7cd9ea61c8b28974389908350abc4aafc18cd75e33dd130c144, + 0x30430b03368ebcaa91246960490bcf917d78681463e2e7d744bfb44335dac24d, + 0x0b57b37320127d4c50f269124b0dbdcb2b1f1352241a5d12103283e089c0c742 + ) + + mstore(0x100, 0x25e8da9ae0e42e840e04b230370e782bdb67534844325ba36fc7e5e160c66a74) + + round( + 0x1e221c5526898bfd12de86851a0d9703751a2f239008ab5f9b7d3b6911c64184, + 0x28e07485ad7d992ed1a58f329ca12adce4ec693ebddbb2952e54d339f2eebda5, + 0x2f44d64f84de16dc67bd5ead51efb1dc8381c84520c12854dd5ef3a079acd4e0, + 0x050a76bc32ebd1dfe2be330f304edc7ace7167ab7ba1516f4021c62cf0d4fac2, + 0x2f58c45e5d659a67d781367241f6c35d8cb46361d97b28947d29421c270594a9 + ) + + mstore(0x100, 0x0b1d7cecf3a79b2ad3fa298f6cea7ae95d80c0299ecc918e9f8c9c3d38d59d40) + + round( + 0x2fec734da20fe32003ea04f127f844724f38a368ba10c29544252be796040f7f, + 0x288a6778f3a83988a8ed1727f15e93b4cb14f4e3a3bbb91dd6d1facafffd5eef, + 0x20dcc6c75fd89259be7f406750b3db679a25a8cd2715d245b9175390ac922c84, + 0x17f42ba10942df25cb8a541782a18b6fd31cf965d11178c7b04ac45b4dea5dd3, + 0x028eeb85d115a904020e0c6148eec6603e9cedabc664abee764aafd455986ba5 + ) + + mstore(0x100, 0x0df7ca7278a13650b919d85497b2ebb0f71035a7c20430d4131d903ab7f57521) + + round( + 0x0440339c9764cec79c16efdb834a26261db8e3f12ce1cf722d23c0e11ff4cf07, + 0x06ca647c29727c1962a002177da2d504f4b07a5f7eb57c79b88e6b7abbbdad5c, + 0x2ea120a864f5c4093dd1a962e8f013c7b8ef778b04d2ba5bfc3cab28619ba9e3, + 0x2bb737546c4aee7c0cc2ba87c1157e2a77c479ebfb5dc76adbb39cf8697633fd, + 0x0e30da6490625d33e79cd50176f568f9a2c28c2f449a2bd51a25d15686803a93 + ) + + mstore(0x100, 0x2e52328483cb5b7ff2eb4e45b12e51b26232c9bc17b7292954c0a9f6bfa51bb9) + + round( + 0x27cc589f5bf585794abace589fb8a74a2f784c0990b80fcaa6944097f870e2d5, + 0x2255c36a38c8735de45cedf452afa842332d33042f78e60c43c7455421b325bf, + 0x133d9602bd3378d69f681c27b05bdffc98b7d86cca63d73a60caed485784d087, + 0x0e1548e942ae9d3e26860699b93727c817a9948616c93ef4accd981b1dc3d78a, + 0x0f20f0e55d93689fe09ec312f6af47627482e4bde0a1602a8e2c8d6e84e8a6ae + ) + + mstore(0x100, 0x23dac8ea54082fc131e173ae55e4630cd4ca7c871b2a0a479c1e74e7f191e62c) + + round( + 0x02b2162d533e059a6eda2abb74712edb3a7860beea95dd8a4abfc957660804f4, + 0x19e0927715d1cc6d389429947fb3737dad733974c6b2e13e5b3d432519516c74, + 0x0d3a800457d77785636303b8b94f17dcffcb46048872ac9f74ef7f27ee573705, + 0x2c974d1952557a1aac5f7bae4996616da619b73f441c4e504dc8fe9cfb559e32, + 0x0766bfeeede2ccf3708e1b4ff30714c22c1d434cdbe8f55514babc2dd5d97bef + ) + + mstore(0x100, 0x1f1b2078b60b0fce07824e2a2bc8cae8ee673514b0070a8b45710cc78cbb9942) + + round( + 0x17d5fb6c2cb37010e3e358ab2d575376870ed33186b8eae49ad3b47e340a8d7f, + 0x175dcac76d8a8126139b583ae38853290246e43e783fa6903ec8007f178c0023, + 0x0c4fd08fede5d221adb7abf549898c91e5be7e85bf1fd2a611bf182cc2e71655, + 0x277934b909e72d3a3475bb1ec766ab7a38ad59b128303fc5002f02a65bdfe729, + 0x0e88349998dfe703f1b184524f9c394d6004ccacf9cb952896e8cfdb0b078b68 + ) + + mstore(0x100, 0x0815fb8591fe01038cd3a3b38b236f9efca77c618d3bfc6c2a7fa89296c7e64f) + + round( + 0x2eb1559566c536ddbc316f6482d51fa340557657700f5b8a846e812a0ed334d1, + 0x1c4dbdc335cf6764355208b4c9d243d34541d623c669dec2c3ba066bbeaf6773, + 0x2374a6b2da6f8cab8e5cfe8d805dd3a2dfca1e8b7eba5dc8574021fd1241e3b4, + 0x19dd342533ccc603a99738e3fb5a569b94ef71b3e49f90fb874f6161733072f4, + 0x217d66db6c7fb3effa508800587d2eb3c6d03d8385132f2fcce7f35f2705cccf + ) + + mstore(0x100, 0x05b58a3dce57b281a271d69895052d887458a715783e8317e024a61a35ec10bc) + + round( + 0x2bb943b40c2bd456a6c17853b1ca88eb0ff36f5974b2ff9a5f5093e9bf63a16f, + 0x11a5153fce659513ee7cb9974ae6cba581e3b4cd14570c5709fec3d8d3fc82e9, + 0x1b72bfd07635d8501b2eff8785a2495bae74c7653cf90e6d5c9f144426836df4, + 0x14902c0700eec897ae178ba8caf850d793f1d87512bea0ecea39cf6b1fee233d, + 0x09c138c6e0a616a49ff90d43a6b043f3b745b78865856dc4c1a45e2fd84cb3f4 + ) + + mstore(0x100, 0x004d303b2dea627b2731be83f93ac34e7d14d178a13800558ca7396395eb118f) + + round( + 0x2be8d29525c0cfdd5e6b3125e3bde3bf558e55fbe867f024457a96765474d037, + 0x061d72f78f1ba9dc6b4d7f7784225d6a81bdfc1b5ad6c24369f9c0560523d9ad, + 0x0bf18aefcacffabdf4112eddadca6145738b4803b36145bb9516db501a0692e9, + 0x2e73dd105fa8b2ec931d8cdf29ec679e3a9801a93071a7d5ea30659255f03bc6, + 0x0f8440ef667c9ae81337ba5d8c927a5347de7296860b211cad1ecbfb5d3598ef + ) + + mstore(0x100, 0x2862b41374f89b695274b33b773f2554916e2bff9ff672545fc2f49563f62767) + + round( + 0x234541ad72040a70da2996a35269230c94699eef313a4d480508008cbc3d37c1, + 0x0d123f1e72d26b92bdd8fd73d14286c312ad4c23acb46b2e08c157104409e174, + 0x2fb360776f0de79d7098ee7aa4123c05ee6b05a8be460a774f3a048e138545bb, + 0x03685c079434e167276c57d3cc79703b7dfdc41c156ea1e8b7f99b6956a55326, + 0x260af0e0fffcc9772c1631b179344566b47aaada3681eb9034c6f75c3705c1c7 + ) + + mstore(0x100, 0x1a84d56a67bfdd3d965abdcd329aa78d4fe93434496f2d103861fd19d66d7260) + + round( + 0x02a9912fe170310227189ea1e691d0362f18b38b400b0eff192ca59513eba8d5, + 0x08e513ade694a0d8ac1f3ebf1a96440d32c713d5058e1224e070348c281f4a6f, + 0x140a4a431e2ee79400ed7465978d84773213c628264ff80f21ac7a6b673d09ab, + 0x296af4d019cb5df7d959b29d549c3f071202b4eba8b53dc5ee979ed143377927, + 0x01832e284a7f4c81614882b6939fc0f185573bd2023e3e505765470bb812b349 + ) + + mstore(0x100, 0x23a27809583bd1ea51f436de5443e108f69d44cdf51dc1f03e21948b4980b876) + + round( + 0x040cb82847773927d2aefdc07489037a9d1f7631eca75c9fb0dda0cb9dbde143, + 0x010dcf084cc29cb7caecf26aa633bce4ed2b019f2887cee7b1a78f89d3fabe2f, + 0x07edc22a0911ea214425ef542b776db23b0fe5817810d40c72ca98aabd9afa83, + 0x2eea4ab08aec775f2148479ea36fbb96936da58ba48bd1d2d3acd48173aaabe7, + 0x1e40c0e8257fe4a61005cdcfad148cf7f47d1b5cfddfaa082738695518245f19 + ) + + mstore(0x100, 0x2dcb5cf8896de39f228e157c0c5593f4626fb9bc225206383db20360abf0c925) + + round( + 0x2e4652b044dbfe40e63b6b232fcd5f3f39abfbd2051ee68adc754080d49250a9, + 0x11e7abdb6ecbafc2e7d8cdefe9c7b9c50475eb475db3c2caf7f7d67f485775f2, + 0x199d52350cc30e8c73821f802096f0e547a13551b27bf6b899396f63ac5cf8e7, + 0x0f575d6ee67cbecd98345624e032a37c859a7cbef30b3fddc949cd0978484101, + 0x1c4b6f9a2ae2b418e6265acba9c96b06184d07028e5fb784f3475ae7772ff057 + ) + + mstore(0x100, 0x0be843ae5f9b07e52572178af7dae8ed05d36b12c0607862929355ea74023d9e) + + round( + 0x1340abb9f4e113186bdc26cbdf4bcca50b531a107f863ca544575e3cf870f8e1, + 0x2368e692b72787cb8870ea888e714e006f59d2b4460cfb74c48a8cc73b1d1a5b, + 0x1fab9add9baa4a4f56f23165775c6f2d922a7632a94f96374b7dc852756f54b6, + 0x0c7f7b82300d3c6ce3f8957ba1e4add54c4c015e20d9765d220571c16ab8680f, + 0x15d63e86beacd93c6083688e5d9c8f3c6947929f9f1f99ab578a4c3a922eff03 + ) + + mstore(0x100, 0x253420007083f1aa863ad4760905c1039ed4111c9f053f27710452f83ce36a90) + + round( + 0x1332749c523694cb6935e0963a07e81b05967ce1d950c0b731058ec92a7a0c9a, + 0x25439408810e074c0bdd4598b9815fee892bb95ca51029ecf009bffa5b9b9682, + 0x057e8d19dd999a918da29b0940b383ba9fd15db0b0f64996dff67feb55f9a742, + 0x1e014e37e9b117cf3b4870d999f2b55d3534d0a6be98e9e357fa43f01e70a29d, + 0x1a4ed24e6e03aebcd6bdb100533dc966597afe15c851b4b863f6e889084c6479 + ) + + mstore(0x100, 0x060283d2fe7f23dff513d9110b3dc62448bc48f531ce0c1eab5920bf23290a40) + + round( + 0x2276a1441971709affe6d2a99320001ec45ec72155c575ddeecac0e32759ab06, + 0x28957dd1218ea799fd3411eb19325853adf7ae8ae1281f753302fe7d31dfa7b0, + 0x2fd925726ab794c88bd75796aa3e7f1e6692f2914cf802267ddf01e37902a008, + 0x1cf8a5c9c76a84b147c8238d9253cd55b47c0c43d82966c4636a28674705fd9a, + 0x0373cbbc306e1bab9e7077368715e6230b4b2e2e4a1db9c674b8c359a41e9108 + ) + + mstore(0x100, 0x01b098c91e7b0cbb5c34588077c0ddf95300ddf614935630c0ce3a2627245308) + + round( + 0x0dab465d6d910740f33ef6cc0eadc71bf8119bdfd5a3527dc8bbfadfaa40263c, + 0x0cba7bcbc8224b2a8e4aba17977230a686cd6421dc0ca5346f3446b62439c4c3, + 0x1e4365db0790c9c4f445b0653c466ff21db96c38b4076ba8bd68bcb4dea6911d, + 0x1bb2dba2199a9ab3bc86ef5f9de7f6c5ca13d60eab42ced68de98fc643800a8d, + 0x0ad3c1870c6d6ef40eebad52123cd1a2913d9d62e80bfbacae812e082021f9ca + ) + + mstore(0x100, 0x2e3497e4d35fda596c06afa63bc3a0f2e55d4eeba4aceb60e65081ad63aa8b8a) + + round( + 0x19fd5c0eac14fae7598bd4ceea3b1e2998b0c168493b6d72ae41b576e55b9c3f, + 0x0d4749d79cc163f17110a404a46fe427c6434f3fe67b7e7b4ccfa6ab95bd7e18, + 0x1ebbfe8114a41bb809e0b33399241232eb940ad8728c8a516d40ada440dbfdcf, + 0x2704e5b6133d9764d6d3f17d49d833223e3937f80eb9faeabbfba9baf4b4c1b8, + 0x2165e1c8027305b1ae0e323571635e5d540d13d710c3f9a390b6913f14d035e3 + ) + + mstore(0x100, 0x0e970c19d19748d8c465104d8f02200363f9a41786f02f1827742b20dc0d1727) + + round( + 0x031da4345eecd6db6c0f7b07c7815d7add1fe0546d738f4d79ab5c57aa841edf, + 0x089ece54e47aa5c908e43e5f08737c1436967089006acab1c9cd19eac4a20876, + 0x2f53c15e2aded33c47f55a070483e6cc7f3821fbf8aa40677d0552ed9d10d847, + 0x142aa34f4b2e8ad0df7a21b3e39c00c8b0aa2857094801eaafd72befed077f93, + 0x17aea4da4c7bcf0d7588b014eb8b40979dd2725eda4e6ace331982467c7ff2bf + ) + + mstore(0x100, 0x0816be42745b7dbb4ceffe5b8e24ea60fd8b719deba50037ac7b75948745c6bc) + + round( + 0x04bcad9e553795642f59baf714a6bdb432fc45a0a0b77f1aba3a9823476df9b9, + 0x242c0bfbcdaa76f715dbd4ba825c71fcfed671c1b1901fa484c87f810315d0ce, + 0x25db1343c24104071023fb6ed34d9909078311e1efe85af0a11b19114fa9e790, + 0x2ffe4d9c420a59e9cdc7c31ab2bf35187ca147cb898a3942deb3677786036a80, + 0x125bb03af3e2cf18bbe6f5b590eb3bf8d0d1ba63be696483e98f283bc7cd07a3 + ) + + mstore(0x100, 0x1cdf8710995f5e03412b4a7f699532f9fd01f0ea167a8dfc1ddf37e2805addef) + + round( + 0x111160f9acf6ec360d1b6a712313a0dbcbe23e64420055471d2ee4c5dedb35d4, + 0x1377978e1b1f6a8925fa8e7b7941bdf8fb59ab9542342419283d8203435c9391, + 0x0defc1d8882166ef3ccde53a4f236fba83d384621937cee57e421a513d0d3397, + 0x2f8fa5c78c706e3a5d4a03f2a7a3953046d7e94cb88a7ef350e67b5ba0f0debf, + 0x1a2a957ec0a723da61c2134bab0bf17beb00e6dcd84690c230dcb9e58da94827 + ) + + mstore(0x100, 0x0271a863a280a32641ffa33510b2edd278c98630359532f3e506b275fd5d20ce) + + round( + 0x26fd31471828c36ae36c27b748054b0c0c4fe5239b301699e3765eebecc18946, + 0x0775d996cc2c4456f303a2c1f9007647e11a921d9fea3f7b926143b99d2fa0be, + 0x016fb9337708ca638cdfda91bd0daea6b97224ef7b2062672addd1bd18bb8900, + 0x2c392fbe7d3fde42fca4f9478bb439331258255356f184af6f76f119054117d7, + 0x187a2a3bf79a69fa3e5089ef9f1fd56fdb47c55eece77aa228aa3de1b486bcb1 + ) + + mstore(0x100, 0x2636e0973c865c1bd974dd78daaa8d0a84cdaf6be1ad47ecf2a0d18f117318f2) + + round( + 0x1557459c9c74c94aa00e5af69a1e3112fb69537ce897ec0c718958d96516f2ab, + 0x2a8e26ca8d647d9a6388516ea9dcff89083d539e58168c2a50c6dae30f109f21, + 0x21cb752194cf43f3b51942eb0040eba9de2bcfb1c2a3fae97924b710f26832cd, + 0x2c26daf996be247acd6dd4acad60d38b5a471e6322188d02c137e7cb484377ec, + 0x0240176ee0e7982eebe92a68d3e3a38c26821acc0f5d058cf8c137bca2d26f1b + ) + + mstore(0x100, 0x24d40f462114fe9ee02aafcf74b4fca24e1ae365dc75c3b52bb13cbbb2f21edd) + + round( + 0x19e84f4f25a799496041661dc5d975b681f6e06744cee89b7be5d9fde1744ac0, + 0x0ebf89064a3af247ca1f36f6f3570188e271e0b326c4fb26664e89e1454ca110, + 0x25c7e97b475be00e8b559a38c452364f4c9c531fecb8ac698f7fd73ce22e71ec, + 0x0444c99e592353e5aecaa302add901c14d8c55270a160afed4429ef5598ad74f, + 0x138db8887830565f2693d0e0f02e4e79e144967f0ba53b03519aba764b5c994a + ) + + mstore(0x100, 0x0e1eca5df88ee5f60cfa7e1fe5befbb719fad8211fa9b2d02fcc233190c17f12) + + round( + 0x21e65d6d8ee43760bca40e730b5df4c4cf3a8a732db148f4b2951b4c61d68e8c, + 0x248dd79669ec09dbf0350a15d6c75c6a9bdaacefca14d51300978f13d1ab6d1c, + 0x2b8238c1548f9cbe29fd35cf91e7b48f0ebda7e639edf69fe8d5aba7924d5362, + 0x2439fd239257f38181c7be3cf513f1bf7235eba94f6b8942a94cbddecf6f62f7, + 0x200958235281a61ba2c4be0aa3282a18c74b6d262f5de7c2e33d2bb3e893dfec + ) + + mstore(0x100, 0x03a35aa3123911cdb4535baed3359f5f6a5205b9c93ef31d35323a47807b8bc9) + + round( + 0x26b53427f9b3ea2c769d9c660fc60881a169c12732d001b7158ee4b1b842ca24, + 0x20f3b3f4acafe9f8af3e06661b3a8f778fa2812522b9d70a67402cff8db2b1b4, + 0x211e5d2b39d62520a7a627ece8cacbac9f97506def4ec286928ba6c27d463b17, + 0x0bb743ee34802129c556731aed9d302dcd085313ce572f6242d13832e536b4b4, + 0x23cb2661b488ee71e4c753ff23ae4bd25d8a44094f66b6532977e22140eba5cb + ) + + mstore(0x100, 0x180b11b720622a156849dc6f7f6e7f571659be69682230c5ed9ac339700a7cde) + + round( + 0x27803848a0aed96a93fa943b6635e450217e137f4ade74a62d7917322714b697, + 0x0cb37839c2c9a7ff79884cbec75f41e9be5e47c76d61538231bd8162996d6f67, + 0x1f0026d0bf1f8e1dd5423cc2fec1fb5cdaa1ecdc4c3cb218dbceef77c00d2f93, + 0x02a7d7bb970b8a6ed2ee66fabbba956b6da3b100f5b5fb928eef42f9708273c9, + 0x0cfd7f4215e434c8da17ec3258b0bc605ad1ab2e90aa494351e4ee40bbc491fa + ) + + mstore(0x100, 0x2350bf35477656899151ad7dde96ea7857e15501447008dab6b3d27c8ffa274f) + + round( + 0x04e96a965bce3d3a0a24a4a457c951582c871349ce7eee1aabfe578a94c65011, + 0x15931f782b45f7fb656f2cdbd1f7705c353a23fe1d30a5a46a1522ed160df3ad, + 0x2e296e57c97a5309acd26febf55ac963a5444c1c5f703ad88a0d7b97b9dd38b1, + 0x26157bceb78e846bbb262f9a1e06d4271bde5a5bce8f0419952f97ffd13eaca8, + 0x2194eb89847d6b0f1897f675f19c0c56b61b13248eff3ca36e34fb9d1c79ee43 + ) + + mstore(0x100, 0x0473ddbd52e737e527364e8eb63207975c38d5fd6cc32b272102b082cd1518fb) + + round( + 0x1a486f0ae591cacdaf09c58a49c4d1795405435340819e003f0469d110b7752b, + 0x1b56dcf76fb23cc4a834d455a4065e133571402b7df309d59bc3105d42a8c301, + 0x1a749d7964af0b7202913ef204c653f2b4bfb65ceab7b685233ab59ce3bb6925, + 0x18ae590073f969696af762ffa4e8f0ebbf97f8cc787e37cddd1f321be3beadbb, + 0x21c47b275d82dde6460d5e769a99421144b1c5a9da59294ade9cbb317103f249 + ) + + mstore(0x100, 0x241dcc51ac37808a415dd1e3c281f05aff11789dc0cafdd77a35484e0993f9a4) + + round( + 0x0b12fac95b6d3a881d892657c8424e645ac4e6b00515f902d594574302b26e02, + 0x08ae7616a260cf6657f8f73ac284588d2c5f07ff425d837aa7cdcef63e3e2103, + 0x039daf6876280b80e873bf2a32fd2834a83c69757badd58a888ef819e926ce28, + 0x25e7b1d7470a3c75f13f0b56546c8e09f2d8efeff06ef766f9c783ca869d130d, + 0x1e8fd3634c3ff764184d03435f98584b11b5b15aeb9c75262da3f1ea2c2a9e7a + ) + + mstore(0x100, 0x1fa195f834a69e62372f60eb497da167646eae14153d803b39dc5d11f5d7800b) + + round( + 0x1ffc3153c56ef9755932cea2be0573749bdafe1c4fa0781a4b8b4078ce9d7547, + 0x17630d62d9a3e510c88a4d43c360f92bc0fa00b66031adec29bd9543fd3a17ee, + 0x2980400edd1d74e3d69db5458d2ccd5fabdb236ec16a82a4301a0ab59ea4a6e9, + 0x3034fb24366123ec6dcafcad35726dbfb16194c036dcd648fa69439bfcd00cd4, + 0x1aa7e8f4189ca9dff3db2ab7648be0a2392995ce46041e04680dca8ad7232df0 + ) + + mstore(0x100, 0x1e4a8aace15abc1d5b76a9e848431d2c06a78f72b6bebb1293e6c58e5185696d) + + round( + 0x0f23f1c74d5fbf6195ad5a6aee5e56993c5477e8453f5b93a0d7bafd333036d3, + 0x016556fac9348a735ab50aa089c97151b3caaf0a20a34fb9d9370505a1515729, + 0x23d92b793648110fc5aeef0633f0c77cacb0dbbca1879b8a6f6e5df445e5f70b, + 0x2e4c10ec5e65e2f239bbc43c13031df2686ab40fd79a304b05d611b823f23b73, + 0x12418bbfd77b63ad5e16864ad9c32ffbfc5a3dd9b78ec2b79329fe5e0a8d2953 + ) + + mstore(0x100, 0x188c926255f5b7af3da96355729c2a8670ab4c2c70400481b2ac903740e0c5ab) + + round( + 0x0f3e96107decdbd6872c20ea09acf92cdf17a3ee1d1331488092d96176deb755, + 0x012c3780207f395cc21deb0abd951681eea32498ddba6ce897a8f9f0c2357067, + 0x13eab1b4e672ba1b1c1bb901769301f1e5659d03ea10c61de2477ff0ac221421, + 0x20dc664abb20b7456c06629ce37a1ecb1a27a4e8b24e31b48b9c4635aa30323e, + 0x2c6b1e2cfea78e2c36785e76a8cfb1b057e9471f24f5b391175c3decb01e000f + ) + + mstore(0x100, 0x233031847b476bead0118d3db338e89133ec420d673e504ad647259df655571e) + + round( + 0x2f9913208e09e3d6e9e6fba6384fd076ab89f2662976e3e30e0870bb30eb54f2, + 0x2b33803d90889706e714f720b5628d26fb60b545a1f3e9ce49a6ae912b024086, + 0x26ccabc10eb04327cb5cc3dde2abb36f097086c97e738c133c9f57077e748b09, + 0x1b16ae0d7c54408cb75fd931f246751f2b0c3dc20d79e82a2531b76c22b4d5df, + 0x11d0bb461bd8af2844f49f0f840c94ef9518b2511344742d1f5438fe3d415ae4 + ) + + mstore(0x100, 0x217bef2f4f12c6dcc91c2058a23391cb77de53ca6e44dcdc6ea3d36fea326ea6) + + round( + 0x1f84e97895bee438eb3c92dc9b1846c9ad29c164387b06aeb6ed1841ed8c4dca, + 0x277f7f9b542f0c2bb5f45bed054f09624536010c3cf9452d2273193327f801d6, + 0x1efc9c9069e5068baac13d2e6645641b7d27e80fc23077161535c44682ee57a9, + 0x0d6ec477761e2efbac4f14b3bf3d5257a99e64c3f25fe104faf988b20fe5ff44, + 0x0e0e7d7c5501999b7d16173b59b7cae1f203bef21aebf00251881439ccf93013 + ) + + mstore(0x100, 0x226bac7050166e5f6db78cd0b12d36f305b6e8c9a055114ad7709e6f57245b6b) + + round( + 0x05780c88adf01531b50f817e3fe44447d29b35aa8a389c71e8cf1226acef68ba, + 0x18733887a6b2b3b4c90d8e4990196e23445e47d7ea5939ebfb89a3ee3d67b4bd, + 0x20bace63acfcae0b1c9f2bee24b8e9da85ba597d37b0905720c4f15db231b07a, + 0x166ea595375a6786ac527ee9eced73ed6bf550876abcaf3ac92b42c808b00d8f, + 0x304262a9eff4040acf43e322d6f52676ae2f853ec2e7a80db00c488cf917c74e + ) + + mstore(0x100, 0x1980077457995712c44da7e17713258e3f8eb354bfd80ed9eaf3ecbaf6960105) + + round( + 0x26b2f539c573829f6aca91baa954505bc5c3eb4e1df1d638582717fbdf2388cc, + 0x06a0fbf4cd52e93ba5e4c6c4af65db02ee96297f8ad200f2f1cff252e769b551, + 0x2cb9c24112d35341aceac88360fb528924e58b6ecac321b9fb29e6aa3368ff23, + 0x20e88a4d607526dd07fe08a3552a44669129eb87fcc0b13aac8fe8afd9301521, + 0x1544649a2bd73e3ba72f396df91dd65401dd8faf51de325fbaedb9d536ad94fc + ) + + mstore(0x100, 0x1f93a532917394c7e22fd17abeea6389c66fd7ae2dd9f02f860f6d96947f0edd) + + round( + 0x25d1d22ff13e7705d3c085f97fc4e4f6914b82ffaa5d2091ec64dac423765ef7, + 0x2fec990ef556efe1035a464ff5581e74067445cd54abcaf6b8c0399fe0d24cfc, + 0x1bd9563506d9544ef3e4830e13545012c579379c2dcc1330416c4ae49bc4ec61, + 0x00affcd17ba6003c56dfa85571fc29737b225a80d480e7dd7edec01f14f23010, + 0x23670dbaef966881f07f919a2d883128c7b23cf767a477b2b2e0762bc0dbc18b + ) + + mstore(0x100, 0x08a2c18ba41381348c1acfbf9617716806b462a1691bc2e343b79b8085e376b0) + + round( + 0x2de42e9f537b7d61b0213771c0e74f555512be07b6a50934734e2c5beb40be37, + 0x25c557f45b99781cd37d3bb22931662a67f78b37782c885b456bb96d55e88404, + 0x2074c8b709705c9888538a7f8a3c4aff647731bd16f8e254fa74ea9f2be7662c, + 0x2738355956298138949e442171d6a4e4b74ef2065740db7cfc3a0b60fd573acb, + 0x13d36ad0a4ebeb81969778649659c65cb7d0c41cc519871fdb71a9ea6a0caa56 + ) + + mstore(0x100, 0x277c4de2363d8b5b456cfc5a7ff8e46ff2ec8daa59855f5ad64bc0521f3ac567) + + round( + 0x059092fc395aed285807bbf557ad9a1041f59c079822b1088457882fee7b612c, + 0x161924151b5a5ad2d8cac119522a991a906f15e8531dc70567f6b28371cc24e3, + 0x1c68ca8f7aa17659075405ef6341b8e69a298b9a4d72f3bb854b309e4ba87a1b, + 0x27f5d03bca1c8207f7239a4b2cf73ae559a15aa37e7bdddf3aab05eec5ce5592, + 0x0ecbff4846962a975d347ea9a8fc465fb46861557622f2c2564a7e639833c169 + ) + + mstore(0x100, 0x2667349978401362f6b17939eeb0e64ff55607ebdb35c7071db46bb3e7ba4778) + + round( + 0x1b11862c52acd351b7a464793f4fbb57fec99f832b63226f95d175c8d2fc08b2, + 0x06a719c584c74ffbdd7218eb565cb4c8bd86c92e3dfb3c73e1527201aa51234e, + 0x230e4adeecb799877f7ce9a58c836b99d533584a195c1d77a313abe1c7d126bd, + 0x10b109b864809c4767a133cce6cbad6c88628173b8ea51e8cca85830ca7de522, + 0x0e21117970dcfbd4b1526b253636f377538d3b4faaeb5a8b24bf6200d14cc591 + ) + + mstore(0x100, 0x2bcb0b0db8b9e3e02b7e9c1c9460fdd9c6cd98562332e648d8a3e0ab94597520) + + round( + 0x05000fa5fda505e029a13bfe304c267b0d86c72c039babf6d3ff02ee246be02e, + 0x264d9e094aed5f41a60242220a34a284089087b2436a9bfce8174cc9be8c2e20, + 0x08076f9c4743de6130ff622cf401edd2c92f24bfe114f3c5e724891746315c47, + 0x132370abddbb0b1dd57f2a520c25336bd7cede94b95bbf5c2151d6d88e641b64, + 0x08ff1116b7a227bfdfd4465a67890882b615c8c4c17f28d8d24958edf602ddcb + ) + + mstore(0x100, 0x2683b425e85a508f96852f14b4220fcfe9f7ad8b17bfefc0e348c47ca78bb57f) + + round( + 0x12ea68ce6881becad7f8a6b117b03ab976f7abd597f903b0bf230d20d21a943a, + 0x27439c98a76688067a097b19b6fdd7d78d5f88e274e0d8fea5ea6b7406fdda7f, + 0x02f40d0ad05f5652e31ef9440ad71ebc8419e393493937f05f00499d02a99e36, + 0x2fbf04284327ee4f680f06bd390e309d0d13acc74b9c5b14b63059b8cc7abff5, + 0x1be686d53e2a8ad57a828b0651425cfc6978c7027edbf247f6b6723c21df86e7 + ) + + mstore(0x100, 0x0e2155a545fe5f3cbb6397606589eac19cd92639339c6b017298a4ad3408b4b9) + + round( + 0x16dace9b2e8012e31db1c7ebe672d86bbe61a1aa3e1693e0eddfc0de0a9dd951, + 0x27a321f8c7d3c9022e962f7fef2e3c848b4539dbb75aa139f30430fe545bcedb, + 0x06ccd7210dee1d6b0e22b79e12d19082d8078b788d71007b95e7a774ed86a651, + 0x0a41dd42221653752bef350f6d74a917b6cbb1fd76a3a12166f4d0be978e4026, + 0x220a02881e4d47ac94d950cdf8386274d1782e27cbd0d845978deec91298f165 + ) + + mstore(0x100, 0x2901d946addc94b040fd58004d9a5f8cd1926540c7a8612cec1c58cb60c2b3a5) + + round( + 0x0f0f19c6291e51546a267c60cc774e5fb9d088bac530782d891ec1af4b847073, + 0x0e925bcd1c6ddb4a3a1c67ec8deefbd40c53c0d33e7aeef1b46795aed5943c9d, + 0x2ad000b1748abb812cd6e5411286b9ff3ef0a5bd3d259a36e45ef05b9eb5beeb, + 0x0a65aa232d32ed6e8de63d1cdffebc2f3fa616465c27aaf97e8cd3dcff648652, + 0x0263d8470ab4b1c61d74d8e896242f4f261dcb167a3a06923893d7cb2c93d6a1 + ) + + mstore(0x100, 0x08e2b8273bfa30c1ac850306d91e468a9e8d05092aee4cbc80c687248463ba30) + + round( + 0x1889cfa8209f4952df9022db9dc583b5717a0696da41cee64937d0cd6321e693, + 0x236064d71cb6c64c84747ac25fcf8d881502e5f03bff87561b85a116b1f39aca, + 0x2ff7a174ffcec29862e04f5dbdc73ebf3661570033576290c0c1f6cd8ced27ae, + 0x19e724a1d742cab103455f0040edf745a2696a71084c93e322715450dd4d6f5b, + 0x03eed3892b6f0e6c5da1059c5f3793985835aa283500a8129904a94c87f161bf + ) + + mstore(0x100, 0x29c61184ed9d460f337558a1af639aa7e3c0975e4014ed8ebcad4a25d51eabf3) + + round( + 0x07adcca76d8337728839a1b6ac3b3ed42afb87d72af98f52f416f2ec58b28cec, + 0x171ef37896bae2b1020a0a5839bd51784ce11bb4237d548c171169d32fa19b40, + 0x20ffdfcb86f4d005064edbc296918c332d32fbeff1729de5056a26abbc3a35fa, + 0x08ecd7a6f1735eed86baa094e608f488f38dbb398fcfed4b994383a0ca8e4647, + 0x1c3f5d86e5921fde9890189f1d8c618754288600e6928bc182ac4d5e4c9f0ccb + ) + + mstore(0x100, 0x261db25e7cff5a9fb72f276b1f9260b667300fb7d361b50fd5c0e8b6995b05f9) + + round( + 0x0defd45b28958728228adbb2dbdaef6a5e9b1a64902a734f402b8cefb8ab3b56, + 0x0a74ea22d8a09336060610179ac1d82fffa9492df76deed4ea60e0133b0811a8, + 0x03a37bf12daf1400d297ac4ac13ba24c17dc262db16c8523deee4e0ccde9a680, + 0x11fe1790d5abbf5935ff22318e4f7ffe69966ada2f9136b54f830eacb0a65368, + 0x018165842f406375f2346686915afb14bf1fe0564c8858ee3bde0aba3de5f68f + ) + + mstore(0x100, 0x1ea210f2001a334d3e801f4e53270d42da7aaf317a553b4282aa78eaa2282e6d) + + round( + 0x2a3ac3314b2b66e796fbe36df778c5e46972320cc43ec807048826b6704ba7c4, + 0x23caa4b80ecfa99e9d3fea2bbc1dbbf369d1bfc8937d03d074061c30fd8cd76b, + 0x27db260085e224898df145f23f635f2066d8e4e124e581e8c6261929b1dfe107, + 0x274f6c5fd34a784d6b915ef05d424ee6c0babbf369e79ab138b8167b5618ec7f, + 0x2c3a29e13a84d26a0911c9289daf1aa4cf5840aada0701d57e23dfc796da6da1 + ) + + mstore(0x100, 0x285745a90a7fe3d09af5a808704bc69c6f1701e573912df5cc1e265d596c4141) + + round( + 0x254dbeb52884b699c1ba7fa0d6e80d610903b18a3e509c36351ccc3b024946e3, + 0x059e781d65896ebe0e4ba26dc2f29907f47bcdeda4a2ca2c713d8505ea31fd5d, + 0x0b5b1cec63d42d5e615dc269b885a24cef303ec78c972dd17cdbb3e915cc4ffb, + 0x2a7c015e9c3b2c57ca8b7d26d39a1bcc85d6ffacb7d9fbd66d2a8f1d64ed0c92, + 0x29b736b911d71a79cf63d8a6f786f11bd5abee24161dc567a7c851eae1e43b51 + ) + + mstore(0x100, 0x2cd055ebb7ee4686365dea450f046ff62405fae1b1afc9fb01707cf81da0e3b9) + + round( + 0x2d901b8195c3c96c8c36eb99fec0134ec2b8304ae810bd30da554e3080826715, + 0x1905d3518355eaba7859b591ed7b8c9c253980f0450dbdf54d7a7782ba058392, + 0x23e813026fc0b80064d19b5c5428942fdf7efea80bfa8ec4095272bfdb7b4c9f, + 0x23c0a19a252c87e6b1c1c21b1a79800200c3fbff3e3300e7e5568071de9efb81, + 0x11c4ae607bae492413bf62cdaa2c2868ed1fec6dc0631b067ca60fab125b9e2a + ) + + mstore(0x100, 0x282b37020c0890d751c3fd76950d8068668e1dfeae621dd552d2de887da2ea75) + + round( + 0x053c9fef2e021fa9a20fada22fdea1505b58a3159bbb47337dbf791b215b1452, + 0x0a35bd74e87cbabaabe89ad1319d2c9e863b4c631c21938c9a5395bf97872a9f, + 0x1c115056539ce20cd5a04d1a5c43e2b00fbe83b25901be36f5ddc4666fc383fe, + 0x242954047e5772fd3bded590ec8beb4c542f2e264c8c3e284cdc473505c51a90, + 0x0e2abd315b47c0dc93849c0cdf267e811cbdbdb200a6e7c2b67edf7cb0174214 + ) + + mstore(0x120, 1) + + mstore(0x100, 0x225be36ed0ee85e1f845ada84e5748a56699152113ff61b5056b6d8bde60c19d) + + round( + 0x28933852266b52d9ea6b5bb923d9d94f2e5a5be5c778e75e07942c234b643bd9, + 0x099ab6765505ba1198ef140e77b7954d4fbe79a056ce72bace39c048c00da3cf, + 0x2af211d8e0ac2d8fda7f849b8f229a225c6186b55762c7a7b2ae2d1dd85c57cb, + 0x0cd070f234014a2809ab90c71c1da61e98a96322fedd99b6aaae1ca104f3facf, + 0x26793e2abc8d3c30c60626fbaa158f263587d6bd15833d448b116264b930256a + ) + + mstore(0x100, 0x0ab4773f150c3f8ad3bc9538f43cec395a7e3731ae973fefeb623a09217e64c7) + + round( + 0x02174f49edb02d5154d2beca2dc92b9cc595383da1fde8f09e4b5ee3ea5a065e, + 0x0f64891c2c8b020e46c3594cb758f0bddcdbd09bd0308816fb41734a869872c3, + 0x192a84ca2f99d36991e2d2b1deff3989d1c156c239e10e9f56140e1854576067, + 0x29dfcd7b63f05abf2753a8c341d6b7a60c6243b04c9a1b8b3320bba04a4d4787, + 0x1ee27ad6b9b5a867733afc61a2b3e76a52ba3e4bd5e657ade91fc038819dba5b + ) + + mstore(0x100, 0x2d9e32a7c90556fe108d255ac01e75df338fcd63b2bf84c19280d427298863fc) + + round( + 0x13c352a02f595186202cb0b99fa58c5542ab67f9b6d3a0afd103deeff6d80f41, + 0x2a97cf2c10c4bfbfd299f67c52a169f92c05b7dac56a41c4dd4fe87c8246ce14, + 0x00becbb47042bd7f8c9f6bb422162d1aed089a28482f7fd16ab06a13285fe702, + 0x008e44da21d738691b881757ef37ed29c5bd9f7a4450fcf53290a92cc2ca2176, + 0x2b205a8b6d4b7063d931f3bb5d3464053843fe7fbe4b83c17883f86527882a18 + ) + + { + let state0 := addmod(mload(0x0), 0x29a322a84c25bd2ddf6e2e4200228d95abd6349a02266ac1dbba520738ceca97, F) + let state1 := addmod(mload(0x20), 0x0678c9bfc6f2df012f4fe55e33bb68ac14ced1df0d02152792089d046d828c43, F) + let state2 := addmod(mload(0x80), 0x0faff3a5e7425794fe20a7e0eb615b8b1760394b7f2304286a3ae4009124db23, F) + let state3 := addmod(mload(0xa0), 0x1f8f5b611af9feb9cea86c084058120553e404103aee213f5a41d1d02541c0d3, F) + let state4 := addmod(mload(0xc0), 0x160875d8479602f96f40acc2d042ee52c1588b6a29de4284965a6dc6c930ea07, F) + mstore(0x100, addmod(mload(0xe0), 0x16d87a5183a316a1d70afc951efe2cd667c77328fcfda458cbf5fe3045f46d9e, F)) + + p := mulmod(state0, state0, F) + state0 := mulmod(mulmod(p, p, F), state0, F) + p := mulmod(state1, state1, F) + state1 := mulmod(mulmod(p, p, F), state1, F) + p := mulmod(state2, state2, F) + state2 := mulmod(mulmod(p, p, F), state2, F) + p := mulmod(state3, state3, F) + state3 := mulmod(mulmod(p, p, F), state3, F) + p := mulmod(state4, state4, F) + state4 := mulmod(mulmod(p, p, F), state4, F) + p := mload(0x100) + p := mulmod(p, p, F) + mstore(0x100, mulmod(mulmod(p, p, F), mload(0x100), F)) + + p := addmod(addmod(addmod(mulmod(state0, M00, F), mulmod(state1, M10, F), F), mulmod(state2, M20, F), F), mulmod(state3, M30, F), F) + mstore(0x0, addmod(addmod(mulmod(state4, M40, F), mulmod(mload(0x100), M50, F), F), p, F)) + return(0, 0x20) + } + } + } +} diff --git a/packages/contracts/contracts/recipientRegistry/BaseRecipientRegistry.sol b/packages/contracts/contracts/recipientRegistry/BaseRecipientRegistry.sol index 89f1d2ce..765f9931 100644 --- a/packages/contracts/contracts/recipientRegistry/BaseRecipientRegistry.sol +++ b/packages/contracts/contracts/recipientRegistry/BaseRecipientRegistry.sol @@ -1,14 +1,13 @@ // SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.1; +pragma solidity ^0.8.10; -import './IRecipientRegistry.sol'; +import "./IRecipientRegistry.sol"; /** * @dev Abstract contract containing common methods for recipient registries. */ abstract contract BaseRecipientRegistry is IRecipientRegistry { - // Structs struct Recipient { address addr; @@ -27,19 +26,12 @@ abstract contract BaseRecipientRegistry is IRecipientRegistry { bytes32[][] private slots; /** - * @dev Set maximum number of recipients. - * @param _maxRecipients Maximum number of recipients. - * @return True if operation is successful. - */ - function setMaxRecipients(uint256 _maxRecipients) - override - external - returns (bool) - { - require( - _maxRecipients >= maxRecipients, - 'RecipientRegistry: Max number of recipients can not be decreased' - ); + * @dev Set maximum number of recipients. + * @param _maxRecipients Maximum number of recipients. + * @return True if operation is successful. + */ + function setMaxRecipients(uint256 _maxRecipients) external override returns (bool) { + require(_maxRecipients >= maxRecipients, "RecipientRegistry: Max number of recipients can not be decreased"); if (controller != msg.sender) { // This allows other clrfund instances to use the registry // but only controller can actually increase the limit. @@ -50,17 +42,14 @@ abstract contract BaseRecipientRegistry is IRecipientRegistry { } /** - * @dev Register recipient as eligible for funding allocation. - * @param _recipientId The ID of recipient. - * @param _recipient The address that receives funds. - * @return Recipient index. - */ - function _addRecipient(bytes32 _recipientId, address _recipient) - internal - returns (uint256) - { - require(maxRecipients > 0, 'RecipientRegistry: Recipient limit is not set'); - require(recipients[_recipientId].index == 0, 'RecipientRegistry: Recipient already registered'); + * @dev Register recipient as eligible for funding allocation. + * @param _recipientId The ID of recipient. + * @param _recipient The address that receives funds. + * @return Recipient index. + */ + function _addRecipient(bytes32 _recipientId, address _recipient) internal returns (uint256) { + require(maxRecipients > 0, "RecipientRegistry: Recipient limit is not set"); + require(recipients[_recipientId].index == 0, "RecipientRegistry: Recipient already registered"); uint256 recipientIndex = 0; uint256 nextRecipientIndex = slots.length + 1; if (nextRecipientIndex <= maxRecipients) { @@ -71,7 +60,7 @@ abstract contract BaseRecipientRegistry is IRecipientRegistry { slots.push(history); } else { // Assign one of the vacant recipient indexes - require(removed.length > 0, 'RecipientRegistry: Recipient limit reached'); + require(removed.length > 0, "RecipientRegistry: Recipient limit reached"); bytes32 removedRecipient = removed[removed.length - 1]; removed.pop(); recipientIndex = recipients[removedRecipient].index; @@ -82,35 +71,24 @@ abstract contract BaseRecipientRegistry is IRecipientRegistry { } /** - * @dev Remove recipient from the registry. - * @param _recipientId The ID of recipient. - */ - function _removeRecipient(bytes32 _recipientId) - internal - { - require(recipients[_recipientId].index != 0, 'RecipientRegistry: Recipient is not in the registry'); - require(recipients[_recipientId].removedAt == 0, 'RecipientRegistry: Recipient already removed'); + * @dev Remove recipient from the registry. + * @param _recipientId The ID of recipient. + */ + function _removeRecipient(bytes32 _recipientId) internal { + require(recipients[_recipientId].index != 0, "RecipientRegistry: Recipient is not in the registry"); + require(recipients[_recipientId].removedAt == 0, "RecipientRegistry: Recipient already removed"); recipients[_recipientId].removedAt = block.timestamp; removed.push(_recipientId); } /** - * @dev Get recipient address by index. - * @param _index Recipient index. - * @param _startTime The start time of the funding round. - * @param _endTime The end time of the funding round. - * @return Recipient address. - */ - function getRecipientAddress( - uint256 _index, - uint256 _startTime, - uint256 _endTime - ) - override - external - view - returns (address) - { + * @dev Get recipient address by index. + * @param _index Recipient index. + * @param _startTime The start time of the funding round. + * @param _endTime The end time of the funding round. + * @return Recipient address. + */ + function getRecipientAddress(uint256 _index, uint256 _startTime, uint256 _endTime) external view override returns (address) { if (_index == 0 || _index > slots.length) { return address(0); } @@ -126,8 +104,7 @@ abstract contract BaseRecipientRegistry is IRecipientRegistry { if (recipient.addedAt > _endTime) { // Recipient added after the end of the funding round, skip continue; - } - else if (recipient.removedAt != 0 && recipient.removedAt <= _startTime) { + } else if (recipient.removedAt != 0 && recipient.removedAt <= _startTime) { // Recipient had been already removed when the round started // Stop search because subsequent items were removed even earlier return prevRecipientAddress; @@ -140,10 +117,10 @@ abstract contract BaseRecipientRegistry is IRecipientRegistry { } /** - * @dev Get recipient count. - * @return count of active recipients in the registry. - */ - function getRecipientCount() public view returns(uint256) { - return slots.length - removed.length; + * @dev Get recipient count. + * @return count of active recipients in the registry. + */ + function getRecipientCount() public view returns (uint256) { + return slots.length - removed.length; } } diff --git a/packages/contracts/contracts/recipientRegistry/IRecipientRegistry.sol b/packages/contracts/contracts/recipientRegistry/IRecipientRegistry.sol index bf5413f6..7c987bdf 100644 --- a/packages/contracts/contracts/recipientRegistry/IRecipientRegistry.sol +++ b/packages/contracts/contracts/recipientRegistry/IRecipientRegistry.sol @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.1; +pragma solidity ^0.8.10; /** * @dev Interface of the recipient registry. @@ -16,9 +16,7 @@ pragma solidity ^0.8.1; * - Find address of a recipient by their unique index. */ interface IRecipientRegistry { - function setMaxRecipients(uint256 _maxRecipients) external returns (bool); function getRecipientAddress(uint256 _index, uint256 _startBlock, uint256 _endBlock) external view returns (address); - } diff --git a/packages/contracts/contracts/recipientRegistry/OptimisticRecipientRegistry.sol b/packages/contracts/contracts/recipientRegistry/OptimisticRecipientRegistry.sol index a102ac05..71b5ec65 100644 --- a/packages/contracts/contracts/recipientRegistry/OptimisticRecipientRegistry.sol +++ b/packages/contracts/contracts/recipientRegistry/OptimisticRecipientRegistry.sol @@ -1,16 +1,15 @@ // SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.1; +pragma solidity ^0.8.10; -import '@openzeppelin/contracts/access/Ownable.sol'; +import "@openzeppelin/contracts/access/Ownable.sol"; -import './BaseRecipientRegistry.sol'; +import "./BaseRecipientRegistry.sol"; /** * @dev Recipient registry with optimistic execution of registrations and removals. */ contract OptimisticRecipientRegistry is Ownable, BaseRecipientRegistry { - // Enums enum RequestType { Registration, @@ -33,13 +32,7 @@ contract OptimisticRecipientRegistry is Ownable, BaseRecipientRegistry { mapping(bytes32 => Request) private requests; // Events - event RequestSubmitted( - bytes32 indexed _recipientId, - RequestType indexed _type, - address _recipient, - string _metadata, - uint256 _timestamp - ); + event RequestSubmitted(bytes32 indexed _recipientId, RequestType indexed _type, address _recipient, string _metadata, uint256 _timestamp); event RequestResolved( bytes32 indexed _recipientId, RequestType indexed _type, @@ -49,143 +42,83 @@ contract OptimisticRecipientRegistry is Ownable, BaseRecipientRegistry { ); /** - * @dev Deploy the registry. - * @param _baseDeposit Deposit required to add or remove item. - * @param _challengePeriodDuration The time owner has to challenge a request (seconds). - * @param _controller Controller address. Normally it's a funding round factory contract. - */ - constructor( - uint256 _baseDeposit, - uint256 _challengePeriodDuration, - address _controller - ) - public - { + * @dev Deploy the registry. + * @param _baseDeposit Deposit required to add or remove item. + * @param _challengePeriodDuration The time owner has to challenge a request (seconds). + * @param _controller Controller address. Normally it's a funding round factory contract. + */ + constructor(uint256 _baseDeposit, uint256 _challengePeriodDuration, address _controller) public { baseDeposit = _baseDeposit; challengePeriodDuration = _challengePeriodDuration; controller = _controller; } /** - * @dev Change base deposit. - */ - function setBaseDeposit(uint256 _baseDeposit) - external - onlyOwner - { + * @dev Change base deposit. + */ + function setBaseDeposit(uint256 _baseDeposit) external onlyOwner { baseDeposit = _baseDeposit; } /** - * @dev Change challenge period duration. - */ - function setChallengePeriodDuration(uint256 _challengePeriodDuration) - external - onlyOwner - { + * @dev Change challenge period duration. + */ + function setChallengePeriodDuration(uint256 _challengePeriodDuration) external onlyOwner { challengePeriodDuration = _challengePeriodDuration; } /** - * @dev Submit recipient registration request. - * @param _recipient The address that receives funds. - * @param _metadata The metadata info of the recipient. - */ - function addRecipient(address _recipient, string calldata _metadata) - external - payable - { - require(_recipient != address(0), 'RecipientRegistry: Recipient address is zero'); - require(bytes(_metadata).length != 0, 'RecipientRegistry: Metadata info is empty string'); + * @dev Submit recipient registration request. + * @param _recipient The address that receives funds. + * @param _metadata The metadata info of the recipient. + */ + function addRecipient(address _recipient, string calldata _metadata) external payable { + require(_recipient != address(0), "RecipientRegistry: Recipient address is zero"); + require(bytes(_metadata).length != 0, "RecipientRegistry: Metadata info is empty string"); bytes32 recipientId = keccak256(abi.encodePacked(_recipient, _metadata)); - require(recipients[recipientId].index == 0, 'RecipientRegistry: Recipient already registered'); - require(requests[recipientId].submissionTime == 0, 'RecipientRegistry: Request already submitted'); - require(msg.value == baseDeposit, 'RecipientRegistry: Incorrect deposit amount'); - requests[recipientId] = Request( - RequestType.Registration, - payable(msg.sender), - block.timestamp, - msg.value, - _recipient, - _metadata - ); - emit RequestSubmitted( - recipientId, - RequestType.Registration, - _recipient, - _metadata, - block.timestamp - ); + require(recipients[recipientId].index == 0, "RecipientRegistry: Recipient already registered"); + require(requests[recipientId].submissionTime == 0, "RecipientRegistry: Request already submitted"); + require(msg.value == baseDeposit, "RecipientRegistry: Incorrect deposit amount"); + requests[recipientId] = Request(RequestType.Registration, payable(msg.sender), block.timestamp, msg.value, _recipient, _metadata); + emit RequestSubmitted(recipientId, RequestType.Registration, _recipient, _metadata, block.timestamp); } /** - * @dev Submit recipient removal request. - * @param _recipientId The ID of recipient. - */ - function removeRecipient(bytes32 _recipientId) - external - payable - { - require(recipients[_recipientId].index != 0, 'RecipientRegistry: Recipient is not in the registry'); - require(recipients[_recipientId].removedAt == 0, 'RecipientRegistry: Recipient already removed'); - require(requests[_recipientId].submissionTime == 0, 'RecipientRegistry: Request already submitted'); - require(msg.value == baseDeposit, 'RecipientRegistry: Incorrect deposit amount'); - requests[_recipientId] = Request( - RequestType.Removal, - payable(msg.sender), - block.timestamp, - msg.value, - address(0), - '' - ); - emit RequestSubmitted( - _recipientId, - RequestType.Removal, - address(0), - '', - block.timestamp - ); + * @dev Submit recipient removal request. + * @param _recipientId The ID of recipient. + */ + function removeRecipient(bytes32 _recipientId) external payable { + require(recipients[_recipientId].index != 0, "RecipientRegistry: Recipient is not in the registry"); + require(recipients[_recipientId].removedAt == 0, "RecipientRegistry: Recipient already removed"); + require(requests[_recipientId].submissionTime == 0, "RecipientRegistry: Request already submitted"); + require(msg.value == baseDeposit, "RecipientRegistry: Incorrect deposit amount"); + requests[_recipientId] = Request(RequestType.Removal, payable(msg.sender), block.timestamp, msg.value, address(0), ""); + emit RequestSubmitted(_recipientId, RequestType.Removal, address(0), "", block.timestamp); } /** - * @dev Reject request. - * @param _recipientId The ID of recipient. - * @param _beneficiary Address to which the deposit should be transferred. - */ - function challengeRequest(bytes32 _recipientId, address payable _beneficiary) - external - onlyOwner - returns (bool) - { + * @dev Reject request. + * @param _recipientId The ID of recipient. + * @param _beneficiary Address to which the deposit should be transferred. + */ + function challengeRequest(bytes32 _recipientId, address payable _beneficiary) external onlyOwner returns (bool) { Request memory request = requests[_recipientId]; - require(request.submissionTime != 0, 'RecipientRegistry: Request does not exist'); + require(request.submissionTime != 0, "RecipientRegistry: Request does not exist"); delete requests[_recipientId]; bool isSent = _beneficiary.send(request.deposit); - emit RequestResolved( - _recipientId, - request.requestType, - true, - 0, - block.timestamp - ); + emit RequestResolved(_recipientId, request.requestType, true, 0, block.timestamp); return isSent; } /** - * @dev Execute request. - * @param _recipientId The ID of recipient. - */ - function executeRequest(bytes32 _recipientId) - external - returns (bool) - { + * @dev Execute request. + * @param _recipientId The ID of recipient. + */ + function executeRequest(bytes32 _recipientId) external returns (bool) { Request memory request = requests[_recipientId]; - require(request.submissionTime != 0, 'RecipientRegistry: Request does not exist'); + require(request.submissionTime != 0, "RecipientRegistry: Request does not exist"); if (msg.sender != owner()) { - require( - block.timestamp - request.submissionTime >= challengePeriodDuration, - 'RecipientRegistry: Challenge period is not over' - ); + require(block.timestamp - request.submissionTime >= challengePeriodDuration, "RecipientRegistry: Challenge period is not over"); } uint256 recipientIndex = 0; if (request.requestType == RequestType.Removal) { @@ -196,13 +129,7 @@ contract OptimisticRecipientRegistry is Ownable, BaseRecipientRegistry { } delete requests[_recipientId]; bool isSent = request.requester.send(request.deposit); - emit RequestResolved( - _recipientId, - request.requestType, - false, - recipientIndex, - block.timestamp - ); + emit RequestResolved(_recipientId, request.requestType, false, recipientIndex, block.timestamp); return isSent; } } diff --git a/packages/contracts/contracts/recipientRegistry/SimpleRecipientRegistry.sol b/packages/contracts/contracts/recipientRegistry/SimpleRecipientRegistry.sol index f06e7364..4cb10957 100644 --- a/packages/contracts/contracts/recipientRegistry/SimpleRecipientRegistry.sol +++ b/packages/contracts/contracts/recipientRegistry/SimpleRecipientRegistry.sol @@ -1,65 +1,45 @@ // SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.1; +pragma solidity ^0.8.10; -import '@openzeppelin/contracts/access/Ownable.sol'; +import "@openzeppelin/contracts/access/Ownable.sol"; -import './BaseRecipientRegistry.sol'; +import "./BaseRecipientRegistry.sol"; /** * @dev A simple recipient registry managed by a trusted entity. */ contract SimpleRecipientRegistry is Ownable, BaseRecipientRegistry { - // Events - event RecipientAdded( - bytes32 indexed _recipientId, - address _recipient, - string _metadata, - uint256 _index, - uint256 _timestamp - ); - event RecipientRemoved( - bytes32 indexed _recipientId, - uint256 _timestamp - ); + event RecipientAdded(bytes32 indexed _recipientId, address _recipient, string _metadata, uint256 _index, uint256 _timestamp); + event RecipientRemoved(bytes32 indexed _recipientId, uint256 _timestamp); /** - * @dev Deploy the registry. - * @param _controller Controller address. Normally it's a funding round factory contract. - */ - constructor( - address _controller - ) - public - { + * @dev Deploy the registry. + * @param _controller Controller address. Normally it's a funding round factory contract. + */ + constructor(address _controller) public Ownable() { controller = _controller; } /** - * @dev Register recipient as eligible for funding allocation. - * @param _recipient The address that receives funds. - * @param _metadata The metadata info of the recipient. - */ - function addRecipient(address _recipient, string calldata _metadata) - external - onlyOwner - { - require(_recipient != address(0), 'RecipientRegistry: Recipient address is zero'); - require(bytes(_metadata).length != 0, 'RecipientRegistry: Metadata info is empty string'); + * @dev Register recipient as eligible for funding allocation. + * @param _recipient The address that receives funds. + * @param _metadata The metadata info of the recipient. + */ + function addRecipient(address _recipient, string calldata _metadata) external onlyOwner { + require(_recipient != address(0), "RecipientRegistry: Recipient address is zero"); + require(bytes(_metadata).length != 0, "RecipientRegistry: Metadata info is empty string"); bytes32 recipientId = keccak256(abi.encodePacked(_recipient, _metadata)); uint256 recipientIndex = _addRecipient(recipientId, _recipient); emit RecipientAdded(recipientId, _recipient, _metadata, recipientIndex, block.timestamp); } /** - * @dev Remove recipient from the registry. - * @param _recipientId The ID of recipient. - */ - function removeRecipient(bytes32 _recipientId) - external - onlyOwner - { + * @dev Remove recipient from the registry. + * @param _recipientId The ID of recipient. + */ + function removeRecipient(bytes32 _recipientId) external onlyOwner { _removeRecipient(_recipientId); emit RecipientRemoved(_recipientId, block.timestamp); } diff --git a/packages/contracts/contracts/utils/LibClone.sol b/packages/contracts/contracts/utils/LibClone.sol new file mode 100644 index 00000000..bd7a697f --- /dev/null +++ b/packages/contracts/contracts/utils/LibClone.sol @@ -0,0 +1,153 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.4; + +// src: https://github.com/kalidao/keep/blob/c9529e7bb22ca85c56628104d37c027a697fffc4/src/utils/LibClone.sol + +/// @notice Minimal proxy library with immutable args operations. +/// @author Modified from Solady (https://github.com/Vectorized/solady/blob/main/src/utils/LibClone.sol) +library LibClone { + /// ----------------------------------------------------------------------- + /// Custom Errors + /// ----------------------------------------------------------------------- + + /// @dev Unable to deploy the clone. + error DeploymentFailed(); + + /// ----------------------------------------------------------------------- + /// Clone Operations + /// ----------------------------------------------------------------------- + + /// @dev Deploys a deterministic clone of `implementation`, + /// using immutable arguments encoded in `data`, with `salt`. + function cloneDeterministic( + address implementation, + bytes memory data, + bytes32 salt + ) internal returns (address instance) { + assembly { + // Compute the boundaries of the data and cache the memory slots around it. + let mBefore3 := mload(sub(data, 0x60)) + let mBefore2 := mload(sub(data, 0x40)) + let mBefore1 := mload(sub(data, 0x20)) + let dataLength := mload(data) + let dataEnd := add(add(data, 0x20), dataLength) + let mAfter1 := mload(dataEnd) + + // +2 bytes for telling how much data there is appended to the call. + let extraLength := add(dataLength, 2) + + // Write the bytecode before the data. + mstore(data, 0x5af43d3d93803e606057fd5bf3) + // Write the address of the implementation. + mstore(sub(data, 0x0d), implementation) + // Write the rest of the bytecode. + mstore( + sub(data, 0x21), + or( + shl(0x48, extraLength), + 0x593da1005b363d3d373d3d3d3d610000806062363936013d73 + ) + ) + // `keccak256("ReceiveETH(uint256)")`. + mstore( + sub(data, 0x3a), + 0x9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff + ) + mstore( + sub(data, 0x5a), + or( + shl(0x78, add(extraLength, 0x62)), + 0x6100003d81600a3d39f336602c57343d527f + ) + ) + mstore(dataEnd, shl(0xf0, extraLength)) + + // Create the instance. + instance := create2( + 0, + sub(data, 0x4c), + add(extraLength, 0x6c), + salt + ) + + // If `instance` is zero, revert. + if iszero(instance) { + // Store the function selector of `DeploymentFailed()`. + mstore(0x00, 0x30116425) + // Revert with (offset, size). + revert(0x1c, 0x04) + } + + // Restore the overwritten memory surrounding `data`. + mstore(dataEnd, mAfter1) + mstore(data, dataLength) + mstore(sub(data, 0x20), mBefore1) + mstore(sub(data, 0x40), mBefore2) + mstore(sub(data, 0x60), mBefore3) + } + } + + /// @dev Returns the address of the deterministic clone of + /// `implementation` using immutable arguments encoded in `data`, with `salt`, by `deployer`. + function predictDeterministicAddress( + address implementation, + bytes memory data, + bytes32 salt, + address deployer + ) internal pure returns (address predicted) { + assembly { + // Compute the boundaries of the data and cache the memory slots around it. + let mBefore3 := mload(sub(data, 0x60)) + let mBefore2 := mload(sub(data, 0x40)) + let mBefore1 := mload(sub(data, 0x20)) + let dataLength := mload(data) + let dataEnd := add(add(data, 0x20), dataLength) + let mAfter1 := mload(dataEnd) + + // +2 bytes for telling how much data there is appended to the call. + let extraLength := add(dataLength, 2) + + // Write the bytecode before the data. + mstore(data, 0x5af43d3d93803e606057fd5bf3) + // Write the address of the implementation. + mstore(sub(data, 0x0d), implementation) + // Write the rest of the bytecode. + mstore( + sub(data, 0x21), + or( + shl(0x48, extraLength), + 0x593da1005b363d3d373d3d3d3d610000806062363936013d73 + ) + ) + // `keccak256("ReceiveETH(uint256)")`. + mstore( + sub(data, 0x3a), + 0x9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dff + ) + mstore( + sub(data, 0x5a), + or( + shl(0x78, add(extraLength, 0x62)), + 0x6100003d81600a3d39f336602c57343d527f + ) + ) + mstore(dataEnd, shl(0xf0, extraLength)) + + // Compute and store the bytecode hash. + mstore(0x35, keccak256(sub(data, 0x4c), add(extraLength, 0x6c))) + mstore8(0x00, 0xff) // Write the prefix. + mstore(0x01, shl(96, deployer)) + mstore(0x15, salt) + predicted := keccak256(0x00, 0x55) + // Restore the part of the free memory pointer that has been overwritten. + mstore(0x35, 0) + + // Restore the overwritten memory surrounding `data`. + mstore(dataEnd, mAfter1) + mstore(data, dataLength) + mstore(sub(data, 0x20), mBefore1) + mstore(sub(data, 0x40), mBefore2) + mstore(sub(data, 0x60), mBefore3) + } + } +} \ No newline at end of file diff --git a/packages/contracts/contracts/utils/Multicallable.sol b/packages/contracts/contracts/utils/Multicallable.sol new file mode 100644 index 00000000..a9f2ab33 --- /dev/null +++ b/packages/contracts/contracts/utils/Multicallable.sol @@ -0,0 +1,65 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.4; + +/// @notice Contract that enables a single call to call multiple methods on itself. +/// @author Solbase (https://github.com/Sol-DAO/solbase/blob/main/src/utils/Multicallable.sol) +/// @author Modified from Solady (https://github.com/vectorized/solady/blob/main/src/utils/Multicallable.sol) +/// @dev WARNING! +/// Multicallable is NOT SAFE for use in contracts with checks / requires on `msg.value` +/// (e.g. in NFT minting / auction contracts) without a suitable nonce mechanism. +/// It WILL open up your contract to double-spend vulnerabilities / exploits. +/// See: (https://www.paradigm.xyz/2021/08/two-rights-might-make-a-wrong/) +abstract contract Multicallable { + /// @dev Apply `DELEGATECALL` with the current contract to each calldata in `data`, + /// and store the `abi.encode` formatted results of each `DELEGATECALL` into `results`. + /// If any of the `DELEGATECALL`s reverts, the entire transaction is reverted, + /// and the error is bubbled up. + function multicall(bytes[] calldata data) public payable returns (bytes[] memory results) { + assembly { + if data.length { + results := mload(0x40) // Point `results` to start of free memory. + mstore(results, data.length) // Store `data.length` into `results`. + results := add(results, 0x20) + + // `shl` 5 is equivalent to multiplying by 0x20. + let end := shl(5, data.length) + // Copy the offsets from calldata into memory. + calldatacopy(results, data.offset, end) + // Pointer to the top of the memory (i.e. start of the free memory). + let memPtr := add(results, end) + end := add(results, end) + + // prettier-ignore + for {} 1 {} { + // The offset of the current bytes in the calldata. + let o := add(data.offset, mload(results)) + // Copy the current bytes from calldata to the memory. + calldatacopy( + memPtr, + add(o, 0x20), // The offset of the current bytes' bytes. + calldataload(o) // The length of the current bytes. + ) + if iszero(delegatecall(gas(), address(), memPtr, calldataload(o), 0x00, 0x00)) { + // Bubble up the revert if the delegatecall reverts. + returndatacopy(0x00, 0x00, returndatasize()) + revert(0x00, returndatasize()) + } + // Append the current `memPtr` into `results`. + mstore(results, memPtr) + results := add(results, 0x20) + // Append the `returndatasize()`, and the return data. + mstore(memPtr, returndatasize()) + returndatacopy(add(memPtr, 0x20), 0x00, returndatasize()) + // Advance the `memPtr` by `returndatasize() + 0x20`, + // rounded up to the next multiple of 32. + memPtr := and(add(add(memPtr, returndatasize()), 0x3f), 0xffffffffffffffe0) + // prettier-ignore + if iszero(lt(results, end)) { break } + } + // Restore `results` and allocate memory for it. + results := mload(0x40) + mstore(0x40, memPtr) + } + } + } +} \ No newline at end of file diff --git a/packages/contracts/docs/GrantRound.md b/packages/contracts/docs/GrantRound.md deleted file mode 100644 index 33905ee7..00000000 --- a/packages/contracts/docs/GrantRound.md +++ /dev/null @@ -1,29 +0,0 @@ -# Grant Round Contract -This contract manages contributions, withdrawals, Voting and the distribution of funds for a particular grant round. - -## Functions -### constructor -```solidity - function constructor( - uint256 _duration, - struct Params.MaxValues _maxValues, - struct Params.TreeDepths _treeDepths, - struct Params.BatchSizes _batchSizes, - struct IPubKey.PubKey _coordinatorPubKey, - struct PollDeploymentParams.ExtContracts _extContracts - ) public -``` -Constructor for the GrantRound, special type of poll that implements Quadratic Funding. - -Binds the contracts that will be used to tally the Poll and sets duration ans coordinator. - -#### Parameters: -| Name | Type | Description | -| :--- | :--- | :------------------------------------------------------------------- | -|`_duration` | uint256 | uint256, the duration of the GrantRound -|`_maxValues` | struct Params.MaxValues | MaxValues stored in memory, the maxMessages and maxVoteOptions of the GrantRound as uint256 values -|`_treeDepths` | struct Params.TreeDepths | TreeDepths stored in memory, intStateTreeDepth, messageTreeSubDepth, messageTreeDepth, and voteOptionTreeDepth as uint8 values -|`_batchSizes` | struct Params.BatchSizes | BatchSizes stored in memory, this inlcudes the message batch size and the tally batch size -|`_coordinatorPubKey` | struct IPubKey.PubKey | PubKey stored in memory, MACI pubkey of the coordinator of the GrantRounds -|`_extContracts` | struct PollDeploymentParams.ExtContracts | ExtContracts stored in memory, this includes the maci, and messageAq contracts that will be used to tally the Poll. - diff --git a/packages/contracts/docs/GrantRoundFactory.md b/packages/contracts/docs/GrantRoundFactory.md deleted file mode 100644 index 13a752a1..00000000 --- a/packages/contracts/docs/GrantRoundFactory.md +++ /dev/null @@ -1,46 +0,0 @@ -# Grant Round Factory Contract -Deploys new Quadratic Funding Round Contracts - -## Functions -### setMessageAqFactory -```solidity - function setMessageAqFactory( - contract MessageAqFactory _messageAqFactory - ) public -``` -Sets the MessageAqFactory to use for the grant round - -public function, _messageAqFactory should deploy new AccQueueQuinaryMaci AccQueue(s), need to set before calling deployGrantRound - -#### Parameters: -| Name | Type | Description | -| :--- | :--- | :------------------------------------------------------------------- | -|`_messageAqFactory` | contract MessageAqFactory | MessageAqFactory stored in memory - -### deployGrantRound -```solidity - function deployGrantRound( - uint256 _duration, - struct Params.MaxValues _maxValues, - struct Params.TreeDepths _treeDepths, - struct Params.BatchSizes _batchSizes, - struct IPubKey.PubKey _coordinatorPubKey, - contract VkRegistry _maci, - contract IMACI _grantRoundOwner - ) public returns (contract GrantRound) -``` -Deploys a new GrantRound Contract - -public function - -#### Parameters: -| Name | Type | Description | -| :--- | :--- | :------------------------------------------------------------------- | -|`_duration` | uint256 | uint256 stored in memory, the duration of the GrantRound -|`_maxValues` | struct Params.MaxValues | MaxValues stored in memory, the maxMessages and maxVoteOptions of the GrantRound as uint256 values -|`_treeDepths` | struct Params.TreeDepths | TreeDepths stored in memory, intStateTreeDepth, messageTreeSubDepth, messageTreeDepth, and voteOptionTreeDepth as uint8 values -|`_batchSizes` | struct Params.BatchSizes | BatchSizes stored in memory, messageBatchSize and tallyBatchSize as uint8 values -|`_coordinatorPubKey` | struct IPubKey.PubKey | PubKey stored in memory, MACI pubkey of the coordinator of the GrantRound -|`_maci` | contract VkRegistry | VkRegistry -|`_grantRoundOwner` | contract IMACI | address stored in memory - diff --git a/packages/contracts/docs/QFI.md b/packages/contracts/docs/QFI.md deleted file mode 100644 index 63298e5a..00000000 --- a/packages/contracts/docs/QFI.md +++ /dev/null @@ -1,65 +0,0 @@ -# Quadratic Funding Infrastructure -Top level contract for the Quadratic Funding Infrastructure - -## Functions -### constructor -```solidity - function constructor( - contract GrantRoundFactory _grantRoundFactory, - contract PollFactory _pollFactory, - contract SignUpGatekeeper _signUpGatekeeper, - contract InitialVoiceCreditProxy _initialVoiceCreditProxy - ) public -``` -Constructor for the Quadratic Funding Infrastructure - -Binds the contracts that are needed for the Quadratic Funding Infrastructure - -#### Parameters: -| Name | Type | Description | -| :--- | :--- | :------------------------------------------------------------------- | -|`_grantRoundFactory` | contract GrantRoundFactory | GrantRoundFactory, the contract that will be used to create GrantRounds which are a special type of Poll -|`_pollFactory` | contract PollFactory | PollFactory, the contract that will be used to create Polls -|`_signUpGatekeeper` | contract SignUpGatekeeper | SignUpGatekeeper, the contract that will be used to limit who can sign up to MACI -|`_initialVoiceCreditProxy` | contract InitialVoiceCreditProxy | InitialVoiceCreditProxy, the contract that will be used to set the initial voice credit balance for a user - -### deployGrantRound -```solidity - function deployGrantRound( - uint256 _duration, - struct Params.MaxValues _maxValues, - struct Params.TreeDepths _treeDepths, - struct IPubKey.PubKey _coordinatorPubKey - ) public -``` -Deploys a new grant round. - -Deploys a special kind of Poll called a GrantRound. - -#### Parameters: -| Name | Type | Description | -| :--- | :--- | :------------------------------------------------------------------- | -|`_duration` | uint256 | uint256 stored in memory, the duration of the GrantRound -|`_maxValues` | struct Params.MaxValues | MaxValues stored in memory, the maxMessages and maxVoteOptions of the GrantRound as uint256 values -|`_treeDepths` | struct Params.TreeDepths | TreeDepths stored in memory, intStateTreeDepth, messageTreeSubDepth, messageTreeDepth, and voteOptionTreeDepth as uint8 values -|`_coordinatorPubKey` | struct IPubKey.PubKey | PubKey stored in memory, MACI pubkey of the coordinator of the GrantRounds - -### getGrantRound -```solidity - function getGrantRound( - uint256 _grantRoundId - ) public returns (contract GrantRound) -``` -Retrieves the grant round contract given its ID. - -public view function, returns the Poll address given its grantRoundId. - -#### Parameters: -| Name | Type | Description | -| :--- | :--- | :------------------------------------------------------------------- | -|`_grantRoundId` | uint256 | uint256 grantRoundId of the GrantRound to retrieve - -#### Return Values: -| Name | Type | Description | -| :----------------------------- | :------------ | :--------------------------------------------------------------------------- | -|`returns`| uint256 | the GrantRound contract diff --git a/packages/contracts/docs/README.md b/packages/contracts/docs/README.md deleted file mode 100644 index b5e57c55..00000000 --- a/packages/contracts/docs/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Introduction - -* [Quadratic Funding Infrastructure Docs](QFI.md) -* [Grant Round Factory Docs](GrantRoundFactory.md) -* [Grant Round Docs](GrantRound.md) \ No newline at end of file diff --git a/packages/contracts/docs/SUMMARY.md b/packages/contracts/docs/SUMMARY.md deleted file mode 100644 index bbc6ceef..00000000 --- a/packages/contracts/docs/SUMMARY.md +++ /dev/null @@ -1,5 +0,0 @@ -# Summary - -* [Quadratic Funding Infrastructure Docs](QFI.md) -* [Grant Round Factory Docs](GrantRoundFactory.md) -* [Grant Round Docs](GrantRound.md) \ No newline at end of file diff --git a/packages/contracts/docs/book.json b/packages/contracts/docs/book.json deleted file mode 100644 index c1862af1..00000000 --- a/packages/contracts/docs/book.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "plugins": [ - "github", - "insert-logo", - "back-to-top-button" - - ], - "pluginsConfig": { - "github": { - "url": "https://github.com/quadratic-funding/QFI.git" - }, - - "insert-logo": { - "url": "https://is4-ssl.mzstatic.com/image/thumb/Podcasts125/v4/37/95/c9/3795c92b-4c3f-81d5-3773-7954820be833/mza_1482433603479614239.jpg/100x100bb.jpg", - "style": "background: none;" - } - } -} diff --git a/packages/contracts/docs/package-lock.json b/packages/contracts/docs/package-lock.json deleted file mode 100644 index 499cf8c5..00000000 --- a/packages/contracts/docs/package-lock.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "requires": true, - "lockfileVersion": 1, - "dependencies": { - "gitbook-plugin-back-to-top-button": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/gitbook-plugin-back-to-top-button/-/gitbook-plugin-back-to-top-button-0.1.4.tgz", - "integrity": "sha1-5iGDOLDvGdWOb2YAmUNQt26ANd8=" - }, - "gitbook-plugin-github": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/gitbook-plugin-github/-/gitbook-plugin-github-2.0.0.tgz", - "integrity": "sha1-UWbnY8/MQC1DKIC3pshcHFS1ao0=" - }, - "gitbook-plugin-insert-logo": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/gitbook-plugin-insert-logo/-/gitbook-plugin-insert-logo-0.1.5.tgz", - "integrity": "sha1-2q6N2kGiNtVPE5MeVwsmcpVXiFo=" - } - } -} diff --git a/packages/contracts/docs/recipientRegistry/BaseRecipientRegistry.md b/packages/contracts/docs/recipientRegistry/BaseRecipientRegistry.md deleted file mode 100644 index 94e2a808..00000000 --- a/packages/contracts/docs/recipientRegistry/BaseRecipientRegistry.md +++ /dev/null @@ -1,91 +0,0 @@ - -Abstract contract containing common methods for recipient registries. - -## Functions -### setMaxRecipients -```solidity - function setMaxRecipients( - uint256 _maxRecipients - ) external returns (bool) -``` - -Set maximum number of recipients. - -#### Parameters: -| Name | Type | Description | -| :--- | :--- | :------------------------------------------------------------------- | -|`_maxRecipients` | uint256 | Maximum number of recipients. - -#### Return Values: -| Name | Type | Description | -| :----------------------------- | :------------ | :--------------------------------------------------------------------------- | -|`True`| uint256 | if operation is successful. -### _addRecipient -```solidity - function _addRecipient( - bytes32 _recipientId, - address _recipient - ) internal returns (uint256) -``` - -Register recipient as eligible for funding allocation. - -#### Parameters: -| Name | Type | Description | -| :--- | :--- | :------------------------------------------------------------------- | -|`_recipientId` | bytes32 | The ID of recipient. -|`_recipient` | address | The address that receives funds. - -#### Return Values: -| Name | Type | Description | -| :----------------------------- | :------------ | :--------------------------------------------------------------------------- | -|`Recipient`| bytes32 | index. -### _removeRecipient -```solidity - function _removeRecipient( - bytes32 _recipientId - ) internal -``` - -Remove recipient from the registry. - -#### Parameters: -| Name | Type | Description | -| :--- | :--- | :------------------------------------------------------------------- | -|`_recipientId` | bytes32 | The ID of recipient. - -### getRecipientAddress -```solidity - function getRecipientAddress( - uint256 _index, - uint256 _startTime, - uint256 _endTime - ) external returns (address) -``` - -Get recipient address by index. - -#### Parameters: -| Name | Type | Description | -| :--- | :--- | :------------------------------------------------------------------- | -|`_index` | uint256 | Recipient index. -|`_startTime` | uint256 | The start time of the funding round. -|`_endTime` | uint256 | The end time of the funding round. - -#### Return Values: -| Name | Type | Description | -| :----------------------------- | :------------ | :--------------------------------------------------------------------------- | -|`Recipient`| uint256 | address. -### getRecipientCount -```solidity - function getRecipientCount( - ) public returns (uint256) -``` - -Get recipient count. - - -#### Return Values: -| Name | Type | Description | -| :----------------------------- | :------------ | :--------------------------------------------------------------------------- | -|`count`| | of active recipients in the registry. diff --git a/packages/contracts/docs/recipientRegistry/IRecipientRegistry.md b/packages/contracts/docs/recipientRegistry/IRecipientRegistry.md deleted file mode 100644 index 1c7e7103..00000000 --- a/packages/contracts/docs/recipientRegistry/IRecipientRegistry.md +++ /dev/null @@ -1,32 +0,0 @@ - -Interface of the recipient registry. - -This contract must do the following: - -- Add recipients to the registry. -- Allow only legitimate recipients into the registry. -- Assign an unique index to each recipient. -- Limit the maximum number of entries according to a parameter set by the funding round factory. -- Remove invalid entries. -- Prevent indices from changing during the funding round. -- Find address of a recipient by their unique index. - -## Functions -### setMaxRecipients -```solidity - function setMaxRecipients( - ) external returns (bool) -``` - - - - -### getRecipientAddress -```solidity - function getRecipientAddress( - ) external returns (address) -``` - - - - diff --git a/packages/contracts/docs/recipientRegistry/OptimisticRecipientRegistry.md b/packages/contracts/docs/recipientRegistry/OptimisticRecipientRegistry.md deleted file mode 100644 index 2b7d05f6..00000000 --- a/packages/contracts/docs/recipientRegistry/OptimisticRecipientRegistry.md +++ /dev/null @@ -1,117 +0,0 @@ - -Recipient registry with optimistic execution of registrations and removals. - -## Functions -### constructor -```solidity - function constructor( - uint256 _baseDeposit, - uint256 _challengePeriodDuration, - address _controller - ) public -``` - -Deploy the registry. - -#### Parameters: -| Name | Type | Description | -| :--- | :--- | :------------------------------------------------------------------- | -|`_baseDeposit` | uint256 | Deposit required to add or remove item. -|`_challengePeriodDuration` | uint256 | The time owner has to challenge a request (seconds). -|`_controller` | address | Controller address. Normally it's a funding round factory contract. - -### setBaseDeposit -```solidity - function setBaseDeposit( - ) external -``` - -Change base deposit. - - -### setChallengePeriodDuration -```solidity - function setChallengePeriodDuration( - ) external -``` - -Change challenge period duration. - - -### addRecipient -```solidity - function addRecipient( - address _recipient, - string _metadata - ) external -``` - -Submit recipient registration request. - -#### Parameters: -| Name | Type | Description | -| :--- | :--- | :------------------------------------------------------------------- | -|`_recipient` | address | The address that receives funds. -|`_metadata` | string | The metadata info of the recipient. - -### removeRecipient -```solidity - function removeRecipient( - bytes32 _recipientId - ) external -``` - -Submit recipient removal request. - -#### Parameters: -| Name | Type | Description | -| :--- | :--- | :------------------------------------------------------------------- | -|`_recipientId` | bytes32 | The ID of recipient. - -### challengeRequest -```solidity - function challengeRequest( - bytes32 _recipientId, - address payable _beneficiary - ) external returns (bool) -``` - -Reject request. - -#### Parameters: -| Name | Type | Description | -| :--- | :--- | :------------------------------------------------------------------- | -|`_recipientId` | bytes32 | The ID of recipient. -|`_beneficiary` | address payable | Address to which the deposit should be transferred. - -### executeRequest -```solidity - function executeRequest( - bytes32 _recipientId - ) external returns (bool) -``` - -Execute request. - -#### Parameters: -| Name | Type | Description | -| :--- | :--- | :------------------------------------------------------------------- | -|`_recipientId` | bytes32 | The ID of recipient. - -## Events -### RequestSubmitted -```solidity - event RequestSubmitted( - ) -``` - - - -### RequestResolved -```solidity - event RequestResolved( - ) -``` - - - diff --git a/packages/contracts/docs/recipientRegistry/SimpleRecipientRegistry.md b/packages/contracts/docs/recipientRegistry/SimpleRecipientRegistry.md deleted file mode 100644 index df0cc246..00000000 --- a/packages/contracts/docs/recipientRegistry/SimpleRecipientRegistry.md +++ /dev/null @@ -1,65 +0,0 @@ - -A simple recipient registry managed by a trusted entity. - -## Functions -### constructor -```solidity - function constructor( - address _controller - ) public -``` - -Deploy the registry. - -#### Parameters: -| Name | Type | Description | -| :--- | :--- | :------------------------------------------------------------------- | -|`_controller` | address | Controller address. Normally it's a funding round factory contract. - -### addRecipient -```solidity - function addRecipient( - address _recipient, - string _metadata - ) external -``` - -Register recipient as eligible for funding allocation. - -#### Parameters: -| Name | Type | Description | -| :--- | :--- | :------------------------------------------------------------------- | -|`_recipient` | address | The address that receives funds. -|`_metadata` | string | The metadata info of the recipient. - -### removeRecipient -```solidity - function removeRecipient( - bytes32 _recipientId - ) external -``` - -Remove recipient from the registry. - -#### Parameters: -| Name | Type | Description | -| :--- | :--- | :------------------------------------------------------------------- | -|`_recipientId` | bytes32 | The ID of recipient. - -## Events -### RecipientAdded -```solidity - event RecipientAdded( - ) -``` - - - -### RecipientRemoved -```solidity - event RecipientRemoved( - ) -``` - - - diff --git a/packages/contracts/docs/rtfm.md b/packages/contracts/docs/rtfm.md deleted file mode 100644 index 93b2b3ca..00000000 --- a/packages/contracts/docs/rtfm.md +++ /dev/null @@ -1,7 +0,0 @@ -npx solidity-docgen --solc-module solc-0.8 -t ./docs/templates/ - -cd docs -nvm use v12.18.1 -gitbook install -gitbook build -gitbook serve \ No newline at end of file diff --git a/packages/contracts/docs/templates/contract.hbs b/packages/contracts/docs/templates/contract.hbs deleted file mode 100644 index b573d719..00000000 --- a/packages/contracts/docs/templates/contract.hbs +++ /dev/null @@ -1,51 +0,0 @@ -{{{natspec.userdoc}}} -{{{natspec.devdoc}}} - -{{#if ownFunctions}} -## Functions -{{/if}} -{{#ownFunctions}} -### {{name}} -```solidity - function {{name}}( - {{#natspec.params}} - {{#lookup ../args.types @index}}{{/lookup}} {{param}}{{#if @last}}{{else}},{{/if}} - {{/natspec.params}} - ) {{visibility}}{{#if outputs}} returns ({{outputs}}){{/if}} -``` -{{#if natspec.userdoc}}{{natspec.userdoc}}{{/if}} -{{#if natspec.devdoc}}{{natspec.devdoc}}{{/if}} -{{#if natspec.params}} -#### Parameters: -| Name | Type | Description | -| :--- | :--- | :------------------------------------------------------------------- | -{{#natspec.params}} -|`{{param}}` | {{#lookup ../args.types @index}}{{/lookup}} | {{ description }}{{/natspec.params}}{{/if}} -{{#if natspec.returns}} -#### Return Values: -| Name | Type | Description | -| :----------------------------- | :------------ | :--------------------------------------------------------------------------- | -{{#natspec.returns}} -|`{{param}}`| {{#lookup ../args.types @index}}{{/lookup}} | {{{description}}}{{/natspec.returns}}{{/if}} -{{/ownFunctions}} -{{#if ownEvents}} -## Events -{{/if}} -{{#ownEvents}} -### {{name}} -```solidity - event {{name}}( - {{#natspec.params}} - {{#lookup ../args.types @index}}{{/lookup}} {{param}}{{#if @last}}{{else}},{{/if}} - {{/natspec.params}} - ) -``` -{{#if natspec.userdoc}}{{natspec.userdoc}}{{/if}} -{{#if natspec.devdoc}}{{natspec.devdoc}}{{/if}} -{{#if natspec.params}} -#### Parameters: -| Name | Type | Description | -| :----------------------------- | :------------ | :--------------------------------------------- | -{{#natspec.params}} -|`{{param}}`| {{#lookup ../args.types @index}}{{/lookup}} | {{{description}}}{{/natspec.params}}{{/if}} -{{/ownEvents}} \ No newline at end of file diff --git a/packages/contracts/hardhat.actions.ts b/packages/contracts/hardhat.actions.ts deleted file mode 100644 index d6a36381..00000000 --- a/packages/contracts/hardhat.actions.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { task } from "hardhat/config"; - -import { - PoseidonT3__factory, - PoseidonT4__factory, - PoseidonT5__factory, - PoseidonT6__factory, - GrantRoundFactory__factory, - PollFactory__factory, - MessageAqFactory__factory, - QFI__factory, - VkRegistry__factory, - ConstantInitialVoiceCreditProxy__factory, - FreeForAllGatekeeper__factory, - OptimisticRecipientRegistry__factory, - BaseERC20Token__factory, - PollProcessorAndTallyer__factory, - MockVerifier__factory, -} from "./typechain"; - -task("deploy", "Deploys and initializes QFI smart contracts", async (args, hre) => { - //_baseDeposit: BigNumberish, _challengePeriodDuration: BigNumberish, _balance: BigNumberish - const [deployer] = await hre.ethers.getSigners(); - const deployerAddress = await deployer.getAddress(); - const PoseidonT3Factory = new PoseidonT3__factory(deployer); - const PoseidonT4Factory = new PoseidonT4__factory(deployer); - const PoseidonT5Factory = new PoseidonT5__factory(deployer); - const PoseidonT6Factory = new PoseidonT6__factory(deployer); - const PoseidonT3 = await PoseidonT3Factory.deploy(); - const PoseidonT4 = await PoseidonT4Factory.deploy(); - const PoseidonT5 = await PoseidonT5Factory.deploy(); - const PoseidonT6 = await PoseidonT6Factory.deploy(); - - const linkedLibraryAddresses = { - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT5"]: PoseidonT5.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT3"]: PoseidonT3.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT6"]: PoseidonT6.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT4"]: PoseidonT4.address, - }; - - const GrantRoundFactory = new GrantRoundFactory__factory({ ...linkedLibraryAddresses }, deployer); - const PollFactoryFactory = new PollFactory__factory({ ...linkedLibraryAddresses }, deployer); - const MessageAqFactoryFactory = new MessageAqFactory__factory({ ...linkedLibraryAddresses }, deployer); - const QFIFactory = new QFI__factory({ ...linkedLibraryAddresses }, deployer); - - const VKRegistryFactory = new VkRegistry__factory(deployer); - const ConstantInitialVoiceCreditProxyFactory = new ConstantInitialVoiceCreditProxy__factory(deployer); - const FreeForAllGateKeeperFactory = new FreeForAllGatekeeper__factory(deployer); - const RecipientRegistryFactory = new OptimisticRecipientRegistry__factory(deployer); - const BaseERC20TokenFactory = new BaseERC20Token__factory(deployer); - const PollProcessorAndTallyerFactory = new PollProcessorAndTallyer__factory(deployer); - const MockVerifierFactory = new MockVerifier__factory(deployer); - - const optimisticRecipientRegistry = await RecipientRegistryFactory.deploy(0, 0, deployerAddress); - const grantRoundFactory = await GrantRoundFactory.deploy(); - grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - const pollFactory = await PollFactoryFactory.deploy(); - const messageAqFactory = await MessageAqFactoryFactory.deploy(); - const messageAqFactoryGrants = await MessageAqFactoryFactory.deploy(); - const freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - const constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(0); - const vkRegistry = await VKRegistryFactory.deploy(); - const baseERC20Token = await BaseERC20TokenFactory.deploy(100); - const mockVerifier = await MockVerifierFactory.deploy(); - const pollProcessorAndTallyer = await PollProcessorAndTallyerFactory.deploy(mockVerifier.address); - const qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - console.log(`Deployed QFI at ${qfi.address}`); - console.log(`Deployed FreeForAllGateKeeper at ${freeForAllGateKeeper.address}`); - console.log(`Deployed ConstantInitialVoiceCreditProxy at ${constantInitialVoiceCreditProxy.address}`); - console.log(`Deployed VkRegistry at ${vkRegistry.address}`); - console.log(`Deployed BaseERC20Token at ${baseERC20Token.address}`); - console.log(`Deployed MockVerifier at ${mockVerifier.address}`); - console.log(`Deployed PollProcessorAndTallyer at ${pollProcessorAndTallyer.address}`); - console.log(`Deployed RecipientRegistry at ${optimisticRecipientRegistry.address}`); - console.log(`Deployed GrantRoundFactory at ${grantRoundFactory.address}`); - console.log(`Deployed PollFactory at ${pollFactory.address}`); - console.log(`Deployed MessageAqFactory at ${messageAqFactory.address}`); - console.log(`Deployed MessageAqFactoryGrants at ${messageAqFactoryGrants.address}`); -}); \ No newline at end of file diff --git a/packages/contracts/hardhat.config.ts b/packages/contracts/hardhat.config.ts index 811a5341..8e3af4e7 100644 --- a/packages/contracts/hardhat.config.ts +++ b/packages/contracts/hardhat.config.ts @@ -6,10 +6,10 @@ import dotenv from "dotenv"; import { HardhatUserConfig } from "hardhat/types"; import { NetworkUserConfig } from "hardhat/types"; -import "@typechain/hardhat"; -import "@nomiclabs/hardhat-ethers"; -// import "@nomiclabs/hardhat-waffle"; -// import "@nomiclabs/hardhat-ganache"; + +import '@typechain/hardhat' +import '@nomiclabs/hardhat-ethers' +import '@nomiclabs/hardhat-waffle' import "solidity-coverage"; import "hardhat-gas-reporter"; @@ -19,7 +19,8 @@ import "hardhat-abi-exporter"; dotenv.config(); const WALLET_MNEMONIC = - process.env.WALLET_MNEMONIC || "candy maple cake sugar pudding cream honey rich smooth crumble sweet treat"; + process.env.WALLET_MNEMONIC || + "candy maple cake sugar pudding cream honey rich smooth crumble sweet treat"; const INFURA_API_KEY = process.env.INFURA_API_KEY || ""; const GAS_LIMIT = 30000000; const CHAIN_IDS = { @@ -43,7 +44,9 @@ task("accounts", "Prints the list of accounts", async (args, hre) => { } }); -function createTestnetConfig(network: keyof typeof CHAIN_IDS): NetworkUserConfig { +function createTestnetConfig( + network: keyof typeof CHAIN_IDS +): NetworkUserConfig { const url: string = "https://" + network + ".infura.io/v3/" + INFURA_API_KEY; return { accounts: { @@ -104,30 +107,20 @@ const config: HardhatUserConfig = { coinmarketcap: "603bd12e-d2f3-4a9f-8c82-d5e346d9d482", }, typechain: { - outDir: "typechain/", + outDir: "./typechain-types", target: "ethers-v5", alwaysGenerateOverloads: false, - externalArtifacts: ["precompiled/*.json"], + externalArtifacts: [], }, solidity: { - version: "0.8.1", + version: "0.8.10", settings: { optimizer: { enabled: true, runs: 0, }, }, - overrides: { - "contracts/GrantRound.sol": { - version: "0.8.1", - settings: { - optimizer: { - enabled: true, - runs: 0, - }, - }, - }, - }, + overrides: {}, }, }; diff --git a/packages/contracts/napkin/ClrFund.sol b/packages/contracts/napkin/ClrFund.sol deleted file mode 100644 index 7598c27a..00000000 --- a/packages/contracts/napkin/ClrFund.sol +++ /dev/null @@ -1,346 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma experimental ABIEncoderV2; -pragma solidity ^0.7.2; - -import {Poll, PollFactory, PollProcessorAndTallyer, MessageAqFactory} from "../Poll.sol"; - -import "./FundingRound.sol"; -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/SafeERC20.sol"; -import "@openzeppelin/contracts/utils/EnumerableSet.sol"; - -/* - * Minimum Quadratic Funding Infrastructure - * Version 1 - */ -contract ClrFund is IQuadraticFunding, ClrHelper, MACI { - using EnumerableSet for EnumerableSet.AddressSet; - using SafeERC20 for ERC20; - - // Structs - struct ContributorStatus { - uint256 voiceCredits; - bool isRegistered; - FundingRound lastContribution; - } - - // State - FundingRound[] private rounds; - mapping(address => ContributorStatus) private contributors; - - event SignUp( - uint256 _stateIndex, - PubKey _userPubKey, - uint256 _voiceCreditBalance, - uint256 _timestamp - ); - event RoundStarted(address _round); - event RoundFinalized(address _round); - event DeployPoll(uint256 _pollId, address _pollAddr, PubKey _pubKey); - - /* - * Allows any eligible user sign up. The sign-up gatekeeper should prevent - * double sign-ups or ineligible users from doing so. This function will - * only succeed if the sign-up deadline has not passed. It also enqueues a - * fresh state leaf into the state AccQueue. - * @param _userPubKey The user's desired public key. - * @param _signUpGatekeeperData Data to pass to the sign-up gatekeeper's - * register() function. For instance, the POAPGatekeeper or - * SignUpTokenGatekeeper requires this value to be the ABI-encoded - * token ID. - * @param _initialVoiceCreditProxyData Data to pass to the - * InitialVoiceCreditProxy, which allows it to determine how many voice - * credits this user should have. - */ - function signUp(PubKey memory _pubKey, uint256 _initialVoiceCreditBalance) - internal - afterInit - { - // The circuits only support up to (5 ** 10 - 1) signups - require( - numSignUps < STATE_TREE_ARITY**stateTreeDepth, - "MACI: maximum number of signups reached" - ); - - require( - _pubKey.x < SNARK_SCALAR_FIELD && _pubKey.y < SNARK_SCALAR_FIELD, - "MACI: _pubKey values should be less than the snark scalar field" - ); - - // The limit on voice credits is 2 ^ 32 which is hardcoded into the - // MessageValidator circuit, specifically at check that there are - // sufficient voice credits (using GreaterEqThan(32)). - // TODO: perhaps increase this to 2 ^ 50 = 1125899906842624? - require( - _initialVoiceCreditBalance <= 4294967296, - "MACI: too many voice credits" - ); - uint256 timestamp = block.timestamp; - // Create a state leaf and enqueue it. - uint256 stateLeaf = hashStateLeaf( - StateLeaf(_pubKey, voiceCreditBalance, timestamp) - ); - uint256 stateIndex = stateAq.enqueue(stateLeaf); - - // Increment the number of signups - numSignUps++; - - emit SignUp(stateIndex, _pubKey, voiceCreditBalance, timestamp); - } - - /** - * @dev Register user for voting. - * This function is part of SignUpGatekeeper interface. - * @param _data Encoded address of a contributor. - */ - function register(PubKey memory _pubKey) public override { - address user = msg.sender; - bool verified = userRegistry.isVerifiedUser(user); - require(verified, "FundingRound: User has not been verified"); - require( - !contributors[user].isRegistered, - "FundingRound: User already registered" - ); - contributors[user].isRegistered = true; - } - - /** - * @dev Contribute tokens to this funding round. - * @param pubKey Contributor's public key. - * @param amount Contribution amount. - */ - function contribute( - PubKey calldata _pubKey, - uint256 amount, - FundingRound _fundingRound - ) external { - require(address(maci) != address(0), "FundingRound: MACI not deployed"); - require( - contributors[user].isRegistered == true, - "FundingRound: user not registered" - ); - // require(!_fundingRound.isAfterVotingDeadline(), 'FundingRound: Voting has not been finished'); - // require(!_fundingRound.isFinalized, "FundingRound: Round finalized"); - // require( amount > 0, "FundingRound: Contribution amount must be greater than zero"); - - //NOTE: if they try to contribute not to the current round then throw - if (_fundingRound != getCurrentRound()) { - require( - false, - "FundingRound: can only contribute to current funding round" - ); - } - // NOTE: if they have never contributed then just sign them up with MACI and add to stateAQ - else if (contributors[msg.sender].lastContribution == address(0)) { - uint256 voiceCredits = amount / voiceCreditFactor; - contributors[msg.sender] = ContributorStatus( - voiceCredits, - true, - true - ); - contributorCount += 1; - nativeToken.safeTransferFrom(msg.sender, address(this), amount); - - //NOTE: actually top up the voice credits - signUp(_pubKey, voiceCredits); - emit Contribution(msg.sender, amount); - } else if (_fundingRound == getCurrentRound()) { - //NOTE: if they have contributed before to this round then top up - if ( - contributors[msg.sender].lastContribution == getCurrentRound() - ) { - require(false, "FundingRound: feature not supported"); - //NOTE: implement "topups" - // uint256 voiceCredits = (amount + contributors[msg.sender].voiceCredits) / voiceCreditFactor; - // contributors[msg.sender] = ContributorStatus(voiceCredits, true, true)); - // contributorCount += 1; - // nativeToken.safeTransferFrom(msg.sender, address(this), amount); - - // topUp(_pubKey, voiceCredits); - } - //NOTE: if they have contributed before but not to this round then clear previous balance and top up' - else { - require(false, "FundingRound: feature not supported"); - //NOTE: implement "topups" - // uint256 voiceCredits = (amount / voiceCreditFactor; - // contributors[msg.sender] = ContributorStatus(voiceCredits, true, true)); - // contributorCount += 1; - // nativeToken.safeTransferFrom(msg.sender, address(this), amount); - - // topUp(_pubKey, voiceCredits); - } - } - } - - /** - * @dev Get the amount of voice credits for a given address. - * This function is a part of the InitialVoiceCreditProxy interface. - * @param _data Encoded address of a user. - */ - function getVoiceCredits( - address, /* _caller */ - bytes memory _data - ) public view override returns (uint256) { - address user = abi.decode(_data, (address)); - uint256 initialVoiceCredits = contributors[user].voiceCredits; - require( - initialVoiceCredits > 0, - "FundingRound: User does not have any voice credits" - ); - return initialVoiceCredits; - } - - /** - * @dev Withdraw contributed funds from the pool if the round has been cancelled. - */ - function withdrawContribution() external { - require(isCancelled, "FundingRound: Round not cancelled"); - // Reconstruction of exact contribution amount from VCs may not be possible due to a loss of precision - uint256 amount = contributors[msg.sender].voiceCredits * - voiceCreditFactor; - require(amount > 0, "FundingRound: Nothing to withdraw"); - contributors[msg.sender].voiceCredits = 0; - nativeToken.safeTransfer(msg.sender, amount); - emit ContributionWithdrawn(msg.sender); - } - - /** - * @dev Transfer funds from matching pool to current funding round and finalize it. - * @param _totalSpent Total amount of spent voice credits. - * @param _totalSpentSalt The salt. - */ - function transferMatchingFunds(uint256 _totalSpent, uint256 _totalSpentSalt) - external - onlyOwner - { - FundingRound currentRound = getCurrentRound(); - require( - address(currentRound) != address(0), - "Factory: Funding round has not been deployed" - ); - ERC20 roundToken = currentRound.nativeToken(); - // Factory contract is the default funding source - uint256 matchingPoolSize = roundToken.balanceOf(address(this)); - if (matchingPoolSize > 0) { - roundToken.safeTransfer(address(currentRound), matchingPoolSize); - } - // Pull funds from other funding sources - for (uint256 index = 0; index < fundingSources.length(); index++) { - address fundingSource = fundingSources.at(index); - uint256 allowance = roundToken.allowance( - fundingSource, - address(this) - ); - uint256 balance = roundToken.balanceOf(fundingSource); - uint256 contribution = allowance < balance ? allowance : balance; - if (contribution > 0) { - roundToken.safeTransferFrom( - fundingSource, - address(currentRound), - contribution - ); - } - } - //NOTE: requires poll.verifySpentVoiceCredits(_totalSpent,_totalSpentSalt); - currentRound.finalize(_totalSpent, _totalSpentSalt); - emit RoundFinalized(address(currentRound)); - } - - function getCurrentRound() - public - view - returns (FundingRound _currentRound) - { - if (rounds.length == 0) { - return FundingRound(address(0)); - } - return rounds[rounds.length - 1]; - } - - /* - * Deploy new FundingRound and Poll contracts. - */ - function deployNewRound( - uint256 _duration, - MaxValues memory _maxValues, - TreeDepths memory _treeDepths, - PubKey memory _coordinatorPubKey - ) external afterInit { - uint256 pollId = nextPollId; - - // The message batch size and the tally batch size - BatchSizes memory batchSizes = BatchSizes( - MESSAGE_TREE_ARITY**uint8(_treeDepths.messageTreeSubDepth), - STATE_TREE_ARITY**uint8(_treeDepths.intStateTreeDepth) - ); - - Poll p = pollFactory.deploy( - _duration, - _maxValues, - _treeDepths, - batchSizes, - _coordinatorPubKey, - vkRegistry, - this, - owner() - ); - - polls[pollId] = p; - - // Increment the poll ID for the next poll - nextPollId++; - - emit DeployPoll(pollId, address(p), _coordinatorPubKey); - - require( - p.owner() == address(this), - "Factory: MACI factory is not owned by FR factory" - ); - require( - address(userRegistry) != address(0), - "Factory: User registry is not set" - ); - require( - address(recipientRegistry) != address(0), - "Factory: Recipient registry is not set" - ); - require( - address(nativeToken) != address(0), - "Factory: Native token is not set" - ); - require(coordinator != address(0), "Factory: No coordinator"); - FundingRound currentRound = getCurrentRound(); - require( - address(currentRound) == address(0) || currentRound.isFinalized(), - "Factory: Current round is not finalized" - ); - //Make sure that the max number of recipients is set correctly - //NOTE: Deploy funding round and link to Poll contracts - FundingRound newRound = new FundingRound( - p, - nativeToken, - userRegistry, - recipientRegistry, - coordinator - ); - rounds.push(newRound); - emit DeployFundingRound(address(newRound)); - } - - /** - * @dev Cancel current round. - */ - function cancelCurrentRound() external onlyOwner { - FundingRound currentRound = getCurrentRound(); - require( - address(currentRound) != address(0), - "Factory: Funding round has not been deployed" - ); - require( - !currentRound.isFinalized(), - "Factory: Current round is finalized" - ); - currentRound.cancel(); - emit RoundFinalized(address(currentRound)); - } -} diff --git a/packages/contracts/napkin/ClrHelper.sol b/packages/contracts/napkin/ClrHelper.sol deleted file mode 100644 index 32d4726b..00000000 --- a/packages/contracts/napkin/ClrHelper.sol +++ /dev/null @@ -1,114 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma experimental ABIEncoderV2; -pragma solidity ^0.7.2; - -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/SafeERC20.sol"; -import "@openzeppelin/contracts/utils/EnumerableSet.sol"; - -/* - * Minimum Quadratic Funding Infrastructure - * Version 1 - */ -contract ClrHelper { - using EnumerableSet for EnumerableSet.AddressSet; - using SafeERC20 for ERC20; - - // Events - event FundingSourceAdded(address _source); - event FundingSourceRemoved(address _source); - event TokenChanged(address _token); - event CoordinatorChanged(address _coordinator); - - // State - address public coordinator; - - ERC20 public nativeToken; - IUserRegistry public userRegistry; - IRecipientRegistry public recipientRegistry; - PubKey public coordinatorPubKey; - - EnumerableSet.AddressSet private fundingSources; - - /** - * @dev Set registry of verified users. - * @param _userRegistry Address of a user registry. - */ - function setUserRegistry(IUserRegistry _userRegistry) external onlyOwner { - userRegistry = _userRegistry; - } - - /** - * @dev Set recipient registry. - * @param _recipientRegistry Address of a recipient registry. - */ - function setRecipientRegistry(IRecipientRegistry _recipientRegistry) - external - onlyOwner - { - recipientRegistry = _recipientRegistry; - (, , uint256 maxVoteOptions) = maciFactory.maxValues(); - recipientRegistry.setMaxRecipients(maxVoteOptions); - } - - /** - * @dev Set token in which contributions are accepted. - * @param _token Address of the token contract. - */ - function setToken(address _token) external onlyOwner { - nativeToken = ERC20(_token); - emit TokenChanged(_token); - } - - /** - * @dev Set coordinator's address and public key. - * @param _coordinator Coordinator's address. - * @param _coordinatorPubKey Coordinator's public key. - */ - function setCoordinator( - address _coordinator, - PubKey memory _coordinatorPubKey - ) external onlyOwner { - coordinator = _coordinator; - coordinatorPubKey = _coordinatorPubKey; - emit CoordinatorChanged(_coordinator); - } - - /** - * @dev Add matching funds source. - * @param _source Address of a funding source. - */ - function addFundingSource(address _source) external onlyOwner { - bool result = fundingSources.add(_source); - require(result, "Factory: Funding source already added"); - emit FundingSourceAdded(_source); - } - - /** - * @dev Remove matching funds source. - * @param _source Address of the funding source. - */ - function removeFundingSource(address _source) external onlyOwner { - bool result = fundingSources.remove(_source); - require(result, "Factory: Funding source not found"); - emit FundingSourceRemoved(_source); - } - - /** - * @dev Get total amount of matching funds. - */ - function getMatchingFunds(ERC20 token) external view returns (uint256) { - uint256 matchingPoolSize = token.balanceOf(address(this)); - for (uint256 index = 0; index < fundingSources.length(); index++) { - address fundingSource = fundingSources.at(index); - uint256 allowance = token.allowance(fundingSource, address(this)); - uint256 balance = token.balanceOf(fundingSource); - uint256 contribution = allowance < balance ? allowance : balance; - matchingPoolSize += contribution; - } - return matchingPoolSize; - } - - - -} diff --git a/packages/contracts/napkin/FundingRound.sol b/packages/contracts/napkin/FundingRound.sol deleted file mode 100644 index f02a51e6..00000000 --- a/packages/contracts/napkin/FundingRound.sol +++ /dev/null @@ -1,269 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma experimental ABIEncoderV2; -pragma solidity ^0.7.2; - - -import "@openzeppelin/contracts/access/Ownable.sol"; -import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; -import "@openzeppelin/contracts/token/ERC20/SafeERC20.sol"; - -import "qaci-contracts/sol/MACI.sol"; -import "qaci-contracts/sol/MACISharedObjs.sol"; -import "qaci-contracts/sol/gatekeepers/SignUpGatekeeper.sol"; -import "qaci-contracts/sol/initialVoiceCreditProxy/InitialVoiceCreditProxy.sol"; - -import "./userRegistry/IUserRegistry.sol"; -import "./recipientRegistry/IRecipientRegistry.sol"; - -contract FundingRound is - Ownable, - MACISharedObjs, - SignUpGatekeeper, - InitialVoiceCreditProxy -{ - using SafeERC20 for ERC20; - - // Constants - uint256 private constant MAX_VOICE_CREDITS = 10**9; // MACI allows 2 ** 32 voice credits max - uint256 private constant MAX_CONTRIBUTION_AMOUNT = 10**4; // In tokens - - // State - uint256 public voiceCreditFactor; - uint256 public contributorCount; - uint256 public matchingPoolSize; - uint256 public totalSpent; - uint256 public totalVotes; - bool public isFinalized = false; - bool public isCancelled = false; - - address public coordinator; - MACI public maci; - Poll public poll; - ERC20 public nativeToken; - IUserRegistry public userRegistry; - IRecipientRegistry public recipientRegistry; - string public tallyHash; - - mapping(uint256 => bool) private recipients; - - // Events - event Contribution(address indexed _sender, uint256 _amount); - event ContributionWithdrawn(address indexed _contributor); - event FundsClaimed( - uint256 indexed _voteOptionIndex, - address indexed _recipient, - uint256 _amount - ); - event TallyPublished(string _tallyHash); - event Voted(address indexed _contributor); - - /** - * @dev Set round parameters. - * @param _nativeToken Address of a token which will be accepted for contributions. - * @param _userRegistry Address of the registry of verified users. - * @param _recipientRegistry Address of the recipient registry. - * @param _coordinator Address of the coordinator. - */ - constructor( - Poll _poll, - ERC20 _nativeToken, - IUserRegistry _userRegistry, - IRecipientRegistry _recipientRegistry, - address _coordinator - ) public { - //NOTE: initiate funding round with poll - poll = _poll; - nativeToken = _nativeToken; - voiceCreditFactor = - (MAX_CONTRIBUTION_AMOUNT * uint256(10)**nativeToken.decimals()) / - MAX_VOICE_CREDITS; - voiceCreditFactor = voiceCreditFactor > 0 ? voiceCreditFactor : 1; - userRegistry = _userRegistry; - recipientRegistry = _recipientRegistry; - coordinator = _coordinator; - } - - /** - * @dev Link MACI instance to this funding round. - */ - function setPoll(Poll _poll) external onlyOwner { - require( - address(poll) == address(0), - "FundingRound: Already linked to Poll instance" - ); - // require( - // //TODO: feature request - // !_poll.isAfterVotingDeadline(), - // 'FundingRound: Signup deadline must be in the future' - // ); - poll = _poll; - } - - /** - * @dev Submit a batch of messages along with corresponding ephemeral public keys. - */ - function vote(Message memory _message, PubKey memory _encPubKey) external { - poll.publishMessage(_message, _encPubKey); - - emit Voted(msg.sender); - } - - /** - * @dev Publish the IPFS hash of the vote tally. Only coordinator can publish. - * @param _tallyHash IPFS hash of the vote tally. - */ - function publishTallyHash(string calldata _tallyHash) external { - require( - msg.sender == coordinator, - "FundingRound: Sender is not the coordinator" - ); - require(!isFinalized, "FundingRound: Round finalized"); - require( - bytes(_tallyHash).length != 0, - "FundingRound: Tally hash is empty string" - ); - tallyHash = _tallyHash; - emit TallyPublished(_tallyHash); - } - - /** - * @dev Get the total amount of votes from MACI, - * verify the total amount of spent voice credits across all recipients, - * and allow recipients to claim funds. - * @param _totalSpent Total amount of spent voice credits. - * @param _totalSpentSalt The salt. - */ - function finalize(uint256 _totalSpent, uint256 _totalSpentSalt) - external - onlyOwner - { - require(!isFinalized, "FundingRound: Already finalized"); - require(address(poll) != address(0), "FundingRound: MACI not deployed"); - //NOTE: stub out or add extra functions to poll ABI - // require(!poll.isAfterVotingDeadline(), 'FundingRound: Voting has not been finished'); - // require(!poll.hasUntalliedStateLeaves(), 'FundingRound: Votes has not been tallied'); - // require(bytes(tallyHash).length != 0, 'FundingRound: Tally hash has not been published'); - //NOTE: stubout or add extra functions to poll ABI ist his in PollProcessorAndTallyer? - totalVotes = poll.totalVotes(); - // If nobody voted, the round should be cancelled to avoid locking of matching funds - require(totalVotes > 0, "FundingRound: No votes"); - //NOTE: stubout or add extra functions to poll ABI is this in PollProcessorAndTallyer? - // bool verified = poll.verifySpentVoiceCredits( - // _totalSpent, - // _totalSpentSalt - // ); - require( - verified, - "FundingRound: Incorrect total amount of spent voice credits" - ); - totalSpent = _totalSpent; - // Total amount of spent voice credits is the size of the pool of direct rewards. - // Everything else, including unspent voice credits and downscaling error, - // is considered a part of the matching pool - matchingPoolSize = - nativeToken.balanceOf(address(this)) - - totalSpent * - voiceCreditFactor; - isFinalized = true; - } - - /** - * @dev Cancel funding round. - */ - function cancel() external onlyOwner { - require(!isFinalized, "FundingRound: Already finalized"); - isFinalized = true; - isCancelled = true; - } - - /** - * @dev Get allocated token amount (without verification). - * @param _tallyResult The result of vote tally for the recipient. - * @param _spent The amount of voice credits spent on the recipient. - */ - function getAllocatedAmount(uint256 _tallyResult, uint256 _spent) - public - view - returns (uint256) - { - return - (matchingPoolSize * _tallyResult) / - totalVotes + - _spent * - voiceCreditFactor; - } - - /** - * @dev Claim allocated tokens. - * @param _voteOptionIndex Vote option index. - * @param _tallyResult The result of vote tally for the recipient. - * @param _tallyResultProof Proof of correctness of the vote tally. - * @param _tallyResultSalt Salt. - * @param _spent The amount of voice credits spent on the recipient. - * @param _spentProof Proof of correctness for the amount of spent credits. - * @param _spentSalt Salt. - */ - function claimFunds( - uint256 _voteOptionIndex, - uint256 _tallyResult, - uint256[][] calldata _tallyResultProof, - uint256 _tallyResultSalt, - uint256 _spent, - uint256[][] calldata _spentProof, - uint256 _newTallyCommitment - ) external { - require(isFinalized, "FundingRound: Round not finalized"); - require(!isCancelled, "FundingRound: Round has been cancelled"); - require( - !recipients[_voteOptionIndex], - "FundingRound: Funds already claimed" - ); - - // create scope to avoid 'stack too deep' error - { - //NOTE: Verify Tally Proof - (uint256 numSignUps, ) = poll.numSignUpsAndMessages(); - (, uint256 tallyBatchSize) = poll.batchSizes(); - bool isValid = poll.verifyTallyProof( - poll, - _tallyResultProof, - numSignUps, - batchStartIndex, - tallyBatchSize, - _newTallyCommitment - ); - //NOTE: Verify voice credits spent on the recipient trying to claim - require(resultVerified, "FundingRound: Incorrect tally result"); - //NOTE: stubout or add extra functions to poll ABI - // bool spentVerified = poll.verifyPerVOSpentVoiceCredits( - // voteOptionTreeDepth, - // _voteOptionIndex, - // _spent, - // _spentProof, - // _spentSalt - // ); - // require( - // spentVerified, - // "FundingRound: Incorrect amount of spent voice credits" - // ); - } - recipients[_voteOptionIndex] = true; - - (uint256 deployTime, uint256 duration) = poll.getDeployTimeAndDuration(); - uint256 startTime = deployTime; - address recipient = recipientRegistry.getRecipientAddress( - _voteOptionIndex, - startTime, - startTime + - duration - ); - if (recipient == address(0)) { - // Send funds back to the matching pool - recipient = owner(); - } - //NOTE: need to implement verifyPerVOSpentVoiceCredits - uint256 allocatedAmount = getAllocatedAmount(_tallyResult, _spent); - nativeToken.safeTransfer(recipient, allocatedAmount); - emit FundsClaimed(_voteOptionIndex, recipient, allocatedAmount); - } -} diff --git a/packages/contracts/napkin/IFundingRound.sol b/packages/contracts/napkin/IFundingRound.sol deleted file mode 100644 index 8921c2f9..00000000 --- a/packages/contracts/napkin/IFundingRound.sol +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.7.2; - -interface IFundingRound { - function setPoll(Poll _poll) external; - - function vote(Message memory _message, PubKey memory _encPubKey) external; - - function publishTallyHash(string calldata _tallyHash) external; - - function finalize(uint256 _totalSpent, uint256 _totalSpentSalt) external; - - function cancel() external; - - function getAllocatedAmount(uint256 _tallyResult, uint256 _spent) external; - - function claimFunds( - uint256 _voteOptionIndex, - uint256 _tallyResult, - uint256[][] calldata _tallyResultProof, - uint256 _tallyResultSalt, - uint256 _spent, - uint256[][] calldata _spentProof, - uint256 _newTallyCommitment - ) external; -} diff --git a/packages/contracts/napkin/IMACI.sol b/packages/contracts/napkin/IMACI.sol deleted file mode 100644 index 698530ab..00000000 --- a/packages/contracts/napkin/IMACI.sol +++ /dev/null @@ -1,15 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.7.2; -import { VkRegistry } from "./VkRegistry.sol"; -import { AccQueue } from "./trees/AccQueue.sol"; - -interface IMACI { - - function stateTreeDepth() external view returns (uint8); - function vkRegistry() external view returns (VkRegistry); - function getStateAqRoot() external view returns (uint256); - function mergeStateAqSubRoots(uint256 _numSrQueueOps, uint256 _pollId) external; - function mergeStateAq(uint256 _pollId) external returns (uint256); - function numSignUps() external view returns (uint256); - function stateAq() external view returns (AccQueue); -} diff --git a/packages/contracts/napkin/IPoll.sol b/packages/contracts/napkin/IPoll.sol deleted file mode 100644 index 904e5e88..00000000 --- a/packages/contracts/napkin/IPoll.sol +++ /dev/null @@ -1,45 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.7.2; - -interface IPoll { - function numSignUpsAndMessages() external returns (uint256, uint256); - - function batchSizes() external returns (uint256, uint256); - - function publishMessage(Message memory _message, PubKey memory _encPubKey); - - function isAfterVotingDeadline() external view returns (bool); - - function hasUntalliedStateLeaves() external view returns (bool); - - function verifyPerVOSpentVoiceCredits( - uint256 voteOptionTreeDepth, - uint256_voteOptionIndex, - uint256 _spent, - uint256 _spentProof, - uint256 spentSalt - ) external returns (bool); - - function verifyTallyResult( - uint256 voteOptionTreeDepth, - uint256 voteOptionIndex, - uint256 tallyResult, - uint256 tallyResultProof, - uint256 tallyResultSalt - ) external returns (bool); - - function verifySpentVoiceCredits( - uint256 _totalSpent, - uint256 _totalSpentSalt - ) external returns (bool); - - function verifyTallyProof( - Poll _poll, - uint256[8] memory _proof, - uint256 _numSignUps, - uint256 _batchStartIndex, - uint256 _tallyBatchSize, - uint256 _newTallyCommitment - ) external view returns (bool); - -} diff --git a/packages/contracts/napkin/IQuadraticFunding.sol b/packages/contracts/napkin/IQuadraticFunding.sol deleted file mode 100644 index c8f3e0ff..00000000 --- a/packages/contracts/napkin/IQuadraticFunding.sol +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.7.2; -import './FundingRound.sol'; -import '../DomainObjs.sol'; - -interface IQuadraticFunding { - function setUserRegistry(IUserRegistry _userRegistry) external; - function setRecipientRegistry(IRecipientRegistry _recipientRegistry) external; - function setToken(address _token) external; - function setCoordinator( address _coordinator, PubKey memory _coordinatorPubKey) external; - - function addFundingSource(address _source) external; - function removeFundingSource(address _source) external; - function getMatchingFunds(ERC20 token) external view; - function transferMatchingFunds( uint256 _totalSpent, uint256 _totalSpentSalt )external; - - function signUp( PubKey memory _pubKey, uint256 _initialVoiceCreditBalance) internal; - function register(PubKey memory _pubKey) external; - function contribute( PubKey memory _pubKey, uint256 amount, address _fundingRound) external; - function withdrawContribution() external; - - function getCurrentRound() public view returns (FundingRound); - function deployNewRound() external; - function cancelCurrentRound() external; - -} diff --git a/packages/contracts/package.json b/packages/contracts/package.json index a0d994e6..3f69e6a0 100644 --- a/packages/contracts/package.json +++ b/packages/contracts/package.json @@ -1,8 +1,9 @@ { - "name": "@quadratic-funding/contracts", - "version": "0.0.1", + "name": "@qfi/contracts", + "version": "3.0.0", "description": "quadratic-funding Contracts", "main": "index.js", + "private": true, "scripts": { "build": "hardhat compile", "clean": "shx rm -rf ./build ./cache ./coverage ./typechain ./coverage.json ./abi", @@ -30,19 +31,20 @@ "docs:generate": "npx solidity-docgen --solc-module solc-0.8.1 -t ./docs/templates/ -i ./contracts -o ./docs" }, "dependencies": { - "@openzeppelin/contracts": ">=4.5.0-solc-0.8.1", + "@openzeppelin/contracts": ">=4.5.0-solc-0.8.10", + "@openzeppelin/contracts-upgradeable": "^4.8.2", "argparse": "^1.0.10", "circomlib": "0.5.1", - "qaci-contracts": "^1.1.8", "mustache": "^4.2.0" }, "devDependencies": { + "@qfi/macisdk":"*", "@nomiclabs/hardhat-ethers": "^2.0.2", "@nomiclabs/hardhat-etherscan": "^2.1.1", "@nomiclabs/hardhat-ganache": "^2.0.0", "@nomiclabs/hardhat-waffle": "^2.0.1", - "@typechain/ethers-v5": "^8.0.1", - "@typechain/hardhat": "^3.0.0", + "@typechain/ethers-v5": "^10.2.0", + "@typechain/hardhat": "^6.1.5", "@types/chai": "^4.3.0", "@types/chai-as-promised": "^7.1.3", "@types/mocha": "^9.1.0", @@ -54,36 +56,34 @@ "dotenv": "^10.0.0", "eslint": "^8.2.0", "ethereum-waffle": "^3.4.0", - "ethers": "^5.5.1", + "ethers": "5.5.1", "hardhat": "^2.8.2", "hardhat-abi-exporter": "^2.2.1", "hardhat-contract-sizer": "^2.0.3", "hardhat-gas-reporter": "^1.0.4", - "qaci-circuits": "^1.1.8", - "qaci-cli": "^1.1.8", - "qaci-core": "^1.1.8", - "qaci-crypto": "^1.1.0", - "qaci-domainobjs": "^1.1.0", "mocha": "^9.2.0", "shelljs": "^0.8.4", "shx": "^0.3.3", "snarkjs": "0.4.10", - "solc-0.8.1": "npm:solc@^0.8.1", + "solc-0.8.10": "npm:solc@^0.8.10", "solhint": "^3.3.6", "solidity-coverage": "^0.7.17", "ts-node": "^10.4.0", - "typechain": "^6.0.2", - "typescript": "^4.5.5", + "typechain": "^8.1.1", + "typescript": "4.9.5", "zkey-manager": "^0.1.2" }, "resolutions": { - "zkey-manager": "^0.1.2", - "qaci-contracts/@openzeppelin/contracts": ">=4.5.0-solc-0.8.1" + "zkey-manager": "^0.1.2" }, "nohoist": [ + "**/ethers", "**/snarkjs", "**/zkey-manager/**", - "zkey-manager/**" + "zkey-manager/**", + "**/typechain", + "**/@typechain/*", + "**/@nomiclabs/**" ], "author": "", "license": "GPL-3.0" diff --git a/packages/contracts/precompiled/PoseidonT3.json b/packages/contracts/precompiled/PoseidonT3.json deleted file mode 100644 index 48819b09..00000000 --- a/packages/contracts/precompiled/PoseidonT3.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PoseidonT3", - "sourceName": "contracts/crypto/Hasher.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "uint256[2]", - "name": "input", - "type": "uint256[2]" - } - ], - "name": "poseidon", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - } - ], - "bytecode": "0x38600c60003961260f6000f37c010000000000000000000000000000000000000000000000000000000060003504806329a5f2f6149063299e566014176200003757fe5b7f109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b6020527f16ed41e13bb9c0c66ae119424fddbcbc9314dc9fdbdeea55d6c64543dc4903e06040527f2b90bba00fca0589f617e7dcbfe82e0df706ab640ceb247b791a93b74e36736d6060527f2969f27eed31a480b9c36c764379dbca2cc8fdd1415c3dded62940bcde0bd7716080527f2e2419f9ec02ec394c9871c832963dc1b89d743c8c7b964029b2311687b1fe2360a0527f101071f0032379b697315876690f053d148d4e109f5fb065c8aacc55a0f89bfa60c0527f143021ec686a3f330d5f9e654638065ce6cd79e28c5b3753326244ee65a1b1a760e0527f176cc029695ad02582a70eff08a6fd99d057e12e58e7d7b6b16cdfabc8ee2911610100527f19a3fc0a56702bf417ba7fee3802593fa644470307043f7773279cd71d25d5e0610120527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016024356004356000837f0ee9a592ba9a9518d05986d656f40c2114c4993c11bb29938d21d47304cd8e6e82089050837f00f1445235f2148c5986587169fc1bcd887b08d4d00868df5696fff40956e86483089150837f08dff3487e8ac99e1f29a058d0fa80b930c728730b7ab36ce879f3890ecf73f58408925083818180828009800909905083828180828009800909915083838180828009800909925062000249600052620025ba565b837f2f27be690fdaee46c3ce28f7532b13c856c35342c84bda6e20966310fadc01d082089050837f2b2ae1acf68b7b8d2416bebf3d4f6234b763fe04b8043ee48b8327bebca16cf283089150837f0319d062072bef7ecca5eac06f97d4d55952c175ab6b03eae64b44c7dbf11cfa84089250838181808280098009099050838281808280098009099150838381808280098009099250620002ec600052620025ba565b837f28813dcaebaeaa828a376df87af4a63bc8b7bf27ad49c6298ef7b387bf28526d82089050837f2727673b2ccbc903f181bf38e1c1d40d2033865200c352bc150928adddf9cb7883089150837f234ec45ca27727c2e74abd2b2a1494cd6efbd43e340587d6b8fb9e31e65cc632840892508381818082800980090990508382818082800980090991508383818082800980090992506200038f600052620025ba565b837f15b52534031ae18f7f862cb2cf7cf760ab10a8150a337b1ccd99ff6e8797d42882089050837f0dc8fad6d9e4b35f5ed9a3d186b79ce38e0e8a8d1b58b132d701d4eecf68d1f683089150837f1bcd95ffc211fbca600f705fad3fb567ea4eb378f62e1fec97805518a47e4d9c8408925083818180828009800909905083828180828009800909915083838180828009800909925062000432600052620025ba565b837f10520b0ab721cadfe9eff81b016fc34dc76da36c2578937817cb978d069de55982089050837f1f6d48149b8e7f7d9b257d8ed5fbbaf42932498075fed0ace88a9eb81f5627f683089150837f1d9655f652309014d29e00ef35a2089bfff8dc1c816f0dc9ca34bdb5460c870584089250838181808280098009099050620004bd600052620025ba565b837f04df5a56ff95bcafb051f7b1cd43a99ba731ff67e47032058fe3d4185697cc7d82089050837f0672d995f8fff640151b3d290cedaf148690a10a8c8424a7f6ec282b6e4be82883089150837f099952b414884454b21200d7ffafdd5f0c9a9dcc06f2708e9fc1d8209b5c75b98408925083818180828009800909905062000548600052620025ba565b837f052cba2255dfd00c7c483143ba8d469448e43586a9b4cd9183fd0e843a6b9fa682089050837f0b8badee690adb8eb0bd74712b7999af82de55707251ad7716077cb93c464ddc83089150837f119b1590f13307af5a1ee651020c07c749c15d60683a8050b963d0a8e4b2bdd184089250838181808280098009099050620005d3600052620025ba565b837f03150b7cd6d5d17b2529d36be0f67b832c4acfc884ef4ee5ce15be0bfb4a8d0982089050837f2cc6182c5e14546e3cf1951f173912355374efb83d80898abe69cb317c9ea56583089150837f005032551e6378c450cfe129a404b3764218cadedac14e2b92d2cd73111bf0f9840892508381818082800980090990506200065e600052620025ba565b837f233237e3289baa34bb147e972ebcb9516469c399fcc069fb88f9da2cc28276b582089050837f05c8f4f4ebd4a6e3c980d31674bfbe6323037f21b34ae5a4e80c2d4c24d6028083089150837f0a7b1db13042d396ba05d818a319f25252bcf35ef3aeed91ee1f09b2590fc65b84089250838181808280098009099050620006e9600052620025ba565b837f2a73b71f9b210cf5b14296572c9d32dbf156e2b086ff47dc5df542365a404ec082089050837f1ac9b0417abcc9a1935107e9ffc91dc3ec18f2c4dbe7f22976a760bb5c50c46083089150837f12c0339ae08374823fabb076707ef479269f3e4d6cb104349015ee046dc93fc08408925083818180828009800909905062000774600052620025ba565b837f0b7475b102a165ad7f5b18db4e1e704f52900aa3253baac68246682e56e9a28e82089050837f037c2849e191ca3edb1c5e49f6e8b8917c843e379366f2ea32ab3aa88d7f844883089150837f05a6811f8556f014e92674661e217e9bd5206c5c93a07dc145fdb176a716346f84089250838181808280098009099050620007ff600052620025ba565b837f29a795e7d98028946e947b75d54e9f044076e87a7b2883b47b675ef5f38bd66e82089050837f20439a0c84b322eb45a3857afc18f5826e8c7382c8a1585c507be199981fd22f83089150837f2e0ba8d94d9ecf4a94ec2050c7371ff1bb50f27799a84b6d4a2a6f2a0982c887840892508381818082800980090990506200088a600052620025ba565b837f143fd115ce08fb27ca38eb7cce822b4517822cd2109048d2e6d0ddcca17d71c882089050837f0c64cbecb1c734b857968dbbdcf813cdf8611659323dbcbfc84323623be9caf183089150837f028a305847c683f646fca925c163ff5ae74f348d62c2b670f1426cef9403da538408925083818180828009800909905062000915600052620025ba565b837f2e4ef510ff0b6fda5fa940ab4c4380f26a6bcb64d89427b824d6755b5db9e30c82089050837f0081c95bc43384e663d79270c956ce3b8925b4f6d033b078b96384f50579400e83089150837f2ed5f0c91cbd9749187e2fade687e05ee2491b349c039a0bba8a9f4023a0bb3884089250838181808280098009099050620009a0600052620025ba565b837f30509991f88da3504bbf374ed5aae2f03448a22c76234c8c990f01f33a73520682089050837f1c3f20fd55409a53221b7c4d49a356b9f0a1119fb2067b41a7529094424ec6ad83089150837f10b4e7f3ab5df003049514459b6e18eec46bb2213e8e131e170887b47ddcb96c8408925083818180828009800909905062000a2b600052620025ba565b837f2a1982979c3ff7f43ddd543d891c2abddd80f804c077d775039aa3502e43adef82089050837f1c74ee64f15e1db6feddbead56d6d55dba431ebc396c9af95cad0f1315bd5c9183089150837f07533ec850ba7f98eab9303cace01b4b9e4f2e8b82708cfa9c2fe45a0ae146a08408925083818180828009800909905062000ab6600052620025ba565b837f21576b438e500449a151e4eeaf17b154285c68f42d42c1808a11abf3764c075082089050837f2f17c0559b8fe79608ad5ca193d62f10bce8384c815f0906743d6930836d4a9e83089150837f2d477e3862d07708a79e8aae946170bc9775a4201318474ae665b0b1b7e2730e8408925083818180828009800909905062000b41600052620025ba565b837f162f5243967064c390e095577984f291afba2266c38f5abcd89be0f5b2747eab82089050837f2b4cb233ede9ba48264ecd2c8ae50d1ad7a8596a87f29f8a7777a7009239331183089150837f2c8fbcb2dd8573dc1dbaf8f4622854776db2eece6d85c4cf4254e7c35e03b07a8408925083818180828009800909905062000bcc600052620025ba565b837f1d6f347725e4816af2ff453f0cd56b199e1b61e9f601e9ade5e88db870949da982089050837f204b0c397f4ebe71ebc2d8b3df5b913df9e6ac02b68d31324cd49af5c456552983089150837f0c4cb9dc3c4fd8174f1149b3c63c3c2f9ecb827cd7dc25534ff8fb75bc79c5028408925083818180828009800909905062000c57600052620025ba565b837f174ad61a1448c899a25416474f4930301e5c49475279e0639a616ddc45bc7b5482089050837f1a96177bcf4d8d89f759df4ec2f3cde2eaaa28c177cc0fa13a9816d49a38d2ef83089150837f066d04b24331d71cd0ef8054bc60c4ff05202c126a233c1a8242ace360b8a30a8408925083818180828009800909905062000ce2600052620025ba565b837f2a4c4fc6ec0b0cf52195782871c6dd3b381cc65f72e02ad527037a62aa1bd80482089050837f13ab2d136ccf37d447e9f2e14a7cedc95e727f8446f6d9d7e55afc01219fd64983089150837f1121552fca26061619d24d843dc82769c1b04fcec26f55194c2e3e869acc6a9a8408925083818180828009800909905062000d6d600052620025ba565b837f00ef653322b13d6c889bc81715c37d77a6cd267d595c4a8909a5546c7c97cff182089050837f0e25483e45a665208b261d8ba74051e6400c776d652595d9845aca35d8a397d383089150837f29f536dcb9dd7682245264659e15d88e395ac3d4dde92d8c46448db979eeba898408925083818180828009800909905062000df8600052620025ba565b837f2a56ef9f2c53febadfda33575dbdbd885a124e2780bbea170e456baace0fa5be82089050837f1c8361c78eb5cf5decfb7a2d17b5c409f2ae2999a46762e8ee416240a8cb9af183089150837f151aff5f38b20a0fc0473089aaf0206b83e8e68a764507bfd3d0ab4be74319c58408925083818180828009800909905062000e83600052620025ba565b837f04c6187e41ed881dc1b239c88f7f9d43a9f52fc8c8b6cdd1e76e47615b51f10082089050837f13b37bd80f4d27fb10d84331f6fb6d534b81c61ed15776449e801b7ddc9c296783089150837f01a5c536273c2d9df578bfbd32c17b7a2ce3664c2a52032c9321ceb1c4e8a8e48408925083818180828009800909905062000f0e600052620025ba565b837f2ab3561834ca73835ad05f5d7acb950b4a9a2c666b9726da832239065b7c3b0282089050837f1d4d8ec291e720db200fe6d686c0d613acaf6af4e95d3bf69f7ed516a597b64683089150837f041294d2cc484d228f5784fe7919fd2bb925351240a04b711514c9c80b65af1d8408925083818180828009800909905062000f99600052620025ba565b837f154ac98e01708c611c4fa715991f004898f57939d126e392042971dd90e81fc682089050837f0b339d8acca7d4f83eedd84093aef51050b3684c88f8b0b04524563bc6ea4da483089150837f0955e49e6610c94254a4f84cfbab344598f0e71eaff4a7dd81ed95b50839c82e8408925083818180828009800909905062001024600052620025ba565b837f06746a6156eba54426b9e22206f15abca9a6f41e6f535c6f3525401ea065462682089050837f0f18f5a0ecd1423c496f3820c549c27838e5790e2bd0a196ac917c7ff32077fb83089150837f04f6eeca1751f7308ac59eff5beb261e4bb563583ede7bc92a738223d6f76e1384089250838181808280098009099050620010af600052620025ba565b837f2b56973364c4c4f5c1a3ec4da3cdce038811eb116fb3e45bc1768d26fc0b375882089050837f123769dd49d5b054dcd76b89804b1bcb8e1392b385716a5d83feb65d437f29ef83089150837f2147b424fc48c80a88ee52b91169aacea989f6446471150994257b2fb01c63e9840892508381818082800980090990506200113a600052620025ba565b837f0fdc1f58548b85701a6c5505ea332a29647e6f34ad4243c2ea54ad897cebe54d82089050837f12373a8251fea004df68abcf0f7786d4bceff28c5dbbe0c3944f685cc0a0b1f283089150837f21e4f4ea5f35f85bad7ea52ff742c9e8a642756b6af44203dd8a1f35c1a9003584089250838181808280098009099050620011c5600052620025ba565b837f16243916d69d2ca3dfb4722224d4c462b57366492f45e90d8a81934f1bc3b14782089050837f1efbe46dd7a578b4f66f9adbc88b4378abc21566e1a0453ca13a4159cac04ac283089150837f07ea5e8537cf5dd08886020e23a7f387d468d5525be66f853b672cc96a88969a8408925083818180828009800909905062001250600052620025ba565b837f05a8c4f9968b8aa3b7b478a30f9a5b63650f19a75e7ce11ca9fe16c0b76c00bc82089050837f20f057712cc21654fbfe59bd345e8dac3f7818c701b9c7882d9d57b72a32e83f83089150837f04a12ededa9dfd689672f8c67fee31636dcd8e88d01d49019bd90b33eb33db6984089250838181808280098009099050620012db600052620025ba565b837f27e88d8c15f37dcee44f1e5425a51decbd136ce5091a6767e49ec9544ccd101a82089050837f2feed17b84285ed9b8a5c8c5e95a41f66e096619a7703223176c41ee433de4d183089150837f1ed7cc76edf45c7c404241420f729cf394e5942911312a0d6972b8bd53aff2b88408925083818180828009800909905062001366600052620025ba565b837f15742e99b9bfa323157ff8c586f5660eac6783476144cdcadf2874be45466b1a82089050837f1aac285387f65e82c895fc6887ddf40577107454c6ec0317284f033f27d0c78583089150837f25851c3c845d4790f9ddadbdb6057357832e2e7a49775f71ec75a96554d67c7784089250838181808280098009099050620013f1600052620025ba565b837f15a5821565cc2ec2ce78457db197edf353b7ebba2c5523370ddccc3d9f146a6782089050837f2411d57a4813b9980efa7e31a1db5966dcf64f36044277502f15485f28c7172783089150837f002e6f8d6520cd4713e335b8c0b6d2e647e9a98e12f4cd2558828b5ef6cb4c9b840892508381818082800980090990506200147c600052620025ba565b837f2ff7bc8f4380cde997da00b616b0fcd1af8f0e91e2fe1ed7398834609e0315d282089050837f00b9831b948525595ee02724471bcd182e9521f6b7bb68f1e93be4febb0d3cbe83089150837f0a2f53768b8ebf6a86913b0e57c04e011ca408648a4743a87d77adbf0c9c35128408925083818180828009800909905062001507600052620025ba565b837f00248156142fd0373a479f91ff239e960f599ff7e94be69b7f2a290305e1198d82089050837f171d5620b87bfb1328cf8c02ab3f0c9a397196aa6a542c2350eb512a2b2bcda983089150837f170a4f55536f7dc970087c7c10d6fad760c952172dd54dd99d1045e4ec34a8088408925083818180828009800909905062001592600052620025ba565b837f29aba33f799fe66c2ef3134aea04336ecc37e38c1cd211ba482eca17e2dbfae182089050837f1e9bc179a4fdd758fdd1bb1945088d47e70d114a03f6a0e8b5ba650369e6497383089150837f1dd269799b660fad58f7f4892dfb0b5afeaad869a9c4b44f9c9e1c43bdaf8f09840892508381818082800980090990506200161d600052620025ba565b837f22cdbc8b70117ad1401181d02e15459e7ccd426fe869c7c95d1dd2cb0f24af3882089050837f0ef042e454771c533a9f57a55c503fcefd3150f52ed94a7cd5ba93b9c7dacefd83089150837f11609e06ad6c8fe2f287f3036037e8851318e8b08a0359a03b304ffca62e828484089250838181808280098009099050620016a8600052620025ba565b837f1166d9e554616dba9e753eea427c17b7fecd58c076dfe42708b08f5b783aa9af82089050837f2de52989431a859593413026354413db177fbf4cd2ac0b56f855a888357ee46683089150837f3006eb4ffc7a85819a6da492f3a8ac1df51aee5b17b8e89d74bf01cf5f71e9ad8408925083818180828009800909905062001733600052620025ba565b837f2af41fbb61ba8a80fdcf6fff9e3f6f422993fe8f0a4639f962344c822514508682089050837f119e684de476155fe5a6b41a8ebc85db8718ab27889e85e781b214bace4827c383089150837f1835b786e2e8925e188bea59ae363537b51248c23828f047cff784b97b3fd80084089250838181808280098009099050620017be600052620025ba565b837f28201a34c594dfa34d794996c6433a20d152bac2a7905c926c40e285ab32eeb682089050837f083efd7a27d1751094e80fefaf78b000864c82eb571187724a761f88c22cc4e783089150837f0b6f88a3577199526158e61ceea27be811c16df7774dd8519e079564f61fd13b8408925083818180828009800909905062001849600052620025ba565b837f0ec868e6d15e51d9644f66e1d6471a94589511ca00d29e1014390e6ee4254f5b82089050837f2af33e3f866771271ac0c9b3ed2e1142ecd3e74b939cd40d00d937ab84c9859183089150837f0b520211f904b5e7d09b5d961c6ace7734568c547dd6858b364ce5e47951f17884089250838181808280098009099050620018d4600052620025ba565b837f0b2d722d0919a1aad8db58f10062a92ea0c56ac4270e822cca228620188a1d4082089050837f1f790d4d7f8cf094d980ceb37c2453e957b54a9991ca38bbe0061d1ed6e562d483089150837f0171eb95dfbf7d1eaea97cd385f780150885c16235a2a6a8da92ceb01e504233840892508381818082800980090990506200195f600052620025ba565b837f0c2d0e3b5fd57549329bf6885da66b9b790b40defd2c8650762305381b16887382089050837f1162fb28689c27154e5a8228b4e72b377cbcafa589e283c35d3803054407a18d83089150837f2f1459b65dee441b64ad386a91e8310f282c5a92a89e19921623ef8249711bc084089250838181808280098009099050620019ea600052620025ba565b837f1e6ff3216b688c3d996d74367d5cd4c1bc489d46754eb712c243f70d1b53cfbb82089050837f01ca8be73832b8d0681487d27d157802d741a6f36cdc2a0576881f932647887583089150837f1f7735706ffe9fc586f976d5bdf223dc680286080b10cea00b9b5de315f9650e8408925083818180828009800909905062001a75600052620025ba565b837f2522b60f4ea3307640a0c2dce041fba921ac10a3d5f096ef4745ca838285f01982089050837f23f0bee001b1029d5255075ddc957f833418cad4f52b6c3f8ce16c235572575b83089150837f2bc1ae8b8ddbb81fcaac2d44555ed5685d142633e9df905f66d9401093082d598408925083818180828009800909905062001b00600052620025ba565b837f0f9406b8296564a37304507b8dba3ed162371273a07b1fc98011fcd6ad72205f82089050837f2360a8eb0cc7defa67b72998de90714e17e75b174a52ee4acb126c8cd995f0a883089150837f15871a5cddead976804c803cbaef255eb4815a5e96df8b006dcbbc2767f889488408925083818180828009800909905062001b8b600052620025ba565b837f193a56766998ee9e0a8652dd2f3b1da0362f4f54f72379544f957ccdeefb420f82089050837f2a394a43934f86982f9be56ff4fab1703b2e63c8ad334834e4309805e777ae0f83089150837f1859954cfeb8695f3e8b635dcb345192892cd11223443ba7b4166e8876c0d1428408925083818180828009800909905062001c16600052620025ba565b837f04e1181763050e58013444dbcb99f1902b11bc25d90bbdca408d3819f4fed32b82089050837f0fdb253dee83869d40c335ea64de8c5bb10eb82db08b5e8b1f5e5552bfd05f2383089150837f058cbe8a9a5027bdaa4efb623adead6275f08686f1c08984a9d7c5bae9b4f1c08408925083818180828009800909905062001ca1600052620025ba565b837f1382edce9971e186497eadb1aeb1f52b23b4b83bef023ab0d15228b4cceca59a82089050837f03464990f045c6ee0819ca51fd11b0be7f61b8eb99f14b77e1e6634601d9e8b583089150837f23f7bfc8720dc296fff33b41f98ff83c6fcab4605db2eb5aaa5bc137aeb70a588408925083818180828009800909905062001d2c600052620025ba565b837f0a59a158e3eec2117e6e94e7f0e9decf18c3ffd5e1531a9219636158bbaf62f282089050837f06ec54c80381c052b58bf23b312ffd3ce2c4eba065420af8f4c23ed0075fd07b83089150837f118872dc832e0eb5476b56648e867ec8b09340f7a7bcb1b4962f0ff9ed1f9d018408925083818180828009800909905062001db7600052620025ba565b837f13d69fa127d834165ad5c7cba7ad59ed52e0b0f0e42d7fea95e1906b520921b182089050837f169a177f63ea681270b1c6877a73d21bde143942fb71dc55fd8a49f19f10c77b83089150837f04ef51591c6ead97ef42f287adce40d93abeb032b922f66ffb7e9a5a7450544d8408925083818180828009800909905062001e42600052620025ba565b837f256e175a1dc079390ecd7ca703fb2e3b19ec61805d4f03ced5f45ee6dd0f69ec82089050837f30102d28636abd5fe5f2af412ff6004f75cc360d3205dd2da002813d3e2ceeb283089150837f10998e42dfcd3bbf1c0714bc73eb1bf40443a3fa99bef4a31fd31be182fcc7928408925083818180828009800909905062001ecd600052620025ba565b837f193edd8e9fcf3d7625fa7d24b598a1d89f3362eaf4d582efecad76f879e3686082089050837f18168afd34f2d915d0368ce80b7b3347d1c7a561ce611425f2664d7aa51f0b5d83089150837f29383c01ebd3b6ab0c017656ebe658b6a328ec77bc33626e29e2e95b33ea61118408925083818180828009800909905062001f58600052620025ba565b837f10646d2f2603de39a1f4ae5e7771a64a702db6e86fb76ab600bf573f9010c71182089050837f0beb5e07d1b27145f575f1395a55bf132f90c25b40da7b3864d0242dcb1117fb83089150837f16d685252078c133dc0d3ecad62b5c8830f95bb2e54b59abdffbf018d96fa3368408925083818180828009800909905062001fe3600052620025ba565b837f0a6abd1d833938f33c74154e0404b4b40a555bbbec21ddfafd672dd62047f01a82089050837f1a679f5d36eb7b5c8ea12a4c2dedc8feb12dffeec450317270a6f19b34cf186083089150837f0980fb233bd456c23974d50e0ebfde4726a423eada4e8f6ffbc7592e3f1b93d6840892508381818082800980090990506200206e600052620025ba565b837f161b42232e61b84cbf1810af93a38fc0cece3d5628c9282003ebacb5c312c72b82089050837f0ada10a90c7f0520950f7d47a60d5e6a493f09787f1564e5d09203db47de1a0b83089150837f1a730d372310ba82320345a29ac4238ed3f07a8a2b4e121bb50ddb9af407f45184089250838181808280098009099050620020f9600052620025ba565b837f2c8120f268ef054f817064c369dda7ea908377feaba5c4dffbda10ef58e8c55682089050837f1c7c8824f758753fa57c00789c684217b930e95313bcb73e6e7b8649a4968f7083089150837f2cd9ed31f5f8691c8e39e4077a74faa0f400ad8b491eb3f7b47b27fa3fd1cf778408925083818180828009800909905062002184600052620025ba565b837f23ff4f9d46813457cf60d92f57618399a5e022ac321ca550854ae23918a22eea82089050837f09945a5d147a4f66ceece6405dddd9d0af5a2c5103529407dff1ea58f180426d83089150837f188d9c528025d4c2b67660c6b771b90f7c7da6eaa29d3f268a6dd223ec6fc630840892508381818082800980090990506200220f600052620025ba565b837f3050e37996596b7f81f68311431d8734dba7d926d3633595e0c0d8ddf4f0f47f82089050837f15af1169396830a91600ca8102c35c426ceae5461e3f95d89d829518d30afd7883089150837f1da6d09885432ea9a06d9f37f873d985dae933e351466b2904284da3320d8acc840892508381818082800980090990506200229a600052620025ba565b837f2796ea90d269af29f5f8acf33921124e4e4fad3dbe658945e546ee411ddaa9cb82089050837f202d7dd1da0f6b4b0325c8b3307742f01e15612ec8e9304a7cb0319e01d32d6083089150837f096d6790d05bb759156a952ba263d672a2d7f9c788f4c831a29dace4c0f8be5f8408925083818180828009800909905062002325600052620025ba565b837f054efa1f65b0fce283808965275d877b438da23ce5b13e1963798cb1447d25a482089050837f1b162f83d917e93edb3308c29802deb9d8aa690113b2e14864ccf6e18e4165f183089150837f21e5241e12564dd6fd9f1cdd2a0de39eedfefc1466cc568ec5ceb745a0506edc84089250838181808280098009099050838281808280098009099150838381808280098009099250620023c8600052620025ba565b837f1cfb5662e8cf5ac9226a80ee17b36abecb73ab5f87e161927b4349e10e4bdf0882089050837f0f21177e302a771bbae6d8d1ecb373b62c99af346220ac0129c53f666eb2410083089150837f1671522374606992affb0dd7f71b12bec4236aede6290546bcef7e1f515c2320840892508381818082800980090990508382818082800980090991508383818082800980090992506200246b600052620025ba565b837f0fa3ec5b9488259c2eb4cf24501bfad9be2ec9e42c5cc8ccd419d2a692cad87082089050837f193c0e04e0bd298357cb266c1506080ed36edce85c648cc085e8c57b1ab54bba83089150837f102adf8ef74735a27e9128306dcbc3c99f6f7291cd406578ce14ea2adaba68f8840892508381818082800980090990508382818082800980090991508383818082800980090992506200250e600052620025ba565b837f0fe0af7858e49859e2a54d6f1ad945b1316aa24bfbdd23ae40a6d0cb70c3eab182089050837f216f6717bbc7dedb08536a2220843f4e2da5f1daa9ebdefde8a5ea7344798d2283089150837f1da55cc900f0d21f4a3e694391918a1b3c23b2ac773c6b3ef88e2e422832516184089250838181808280098009099050838281808280098009099150838381808280098009099250620025b1600052620025ba565b60005260206000f35b8360205182098460405184098591088460605185098591088460805183098560a05185098691088560c05186098691088560e0518409866101005186098791088661012051870987910894509250905060005156", - "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806329a5f2f6146038575b600080fd5b609860048036036040811015604c57600080fd5b8101908080604001906002806020026040519081016040528092919082600260200280828437600081840152601f19601f820116905080830192505050505050919291929050505060ae565b6040518082815260200191505060405180910390f35b600091905056fea2646970667358221220e968015640c935900b5bf1aa9a3aab624015657efda2e5609de7c427f5f26c7f64736f6c63430007020033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/contracts/precompiled/PoseidonT4.json b/packages/contracts/precompiled/PoseidonT4.json deleted file mode 100644 index 1fd89df9..00000000 --- a/packages/contracts/precompiled/PoseidonT4.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PoseidonT4", - "sourceName": "contracts/crypto/Hasher.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "uint256[3]", - "name": "input", - "type": "uint256[3]" - } - ], - "name": "poseidon", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - } - ], - "bytecode": "0x38600c6000396130af6000f37c010000000000000000000000000000000000000000000000000000000060003504806325cc70e81490635a53025d14176200003757fe5b7f236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad6020527f277686494f7644bbc4a9b194e10724eb967f1dc58718e59e3cedc821b2a7ae196040527f023db68784e3f0cc0b85618826a9b3505129c16479973b0a84a4529e66b09c626060527f1d359d245f286c12d50d663bae733f978af08cdbd63017c57b3a75646ff382c16080527f2a75a171563b807db525be259699ab28fe9bc7fb1f70943ff049bc970e841a0c60a0527f083abff5e10051f078e2827d092e1ae808b4dd3e15ccc3706f38ce4157b6770e60c0527f1a5ad71bbbecd8a97dc49cfdbae303ad24d5c4741eab8b7568a9ff8253a1eb6f60e0527f0d745fd00dd167fb86772133640f02ce945004a7bc2c59e8790f725c5d84f0af610100527f2070679e798782ef592a52ca9cef820d497ad2eecbaa7e42f366b3e521c4ed42610120527f2e18c8570d20bf5df800739a53da75d906ece318cd224ab6b3a2be979e2d7eab610140527f0fa86f0f27e4d3dd7f3367ce86f684f1f2e4386d3e5b9f38fa283c6aa723b608610160527f03f3e6fab791f16628168e4b14dbaeb657035ee3da6b2ca83f0c2491e0b403eb610180527f2f545e578202c9732488540e41f783b68ff0613fd79375f8ba8b3d30958e76776101a0527f23810bf82877fc19bff7eefeae3faf4bb8104c32ba4cd701596a15623d01476e6101c0527f014fcd5eb0be6d5beeafc4944034cf321c068ef930f10be2207ed58d2a34cdd66101e0527f00c15fc3a1d5733dd835eae0823e377f8ba4a8b627627cc2bb661c25d20fb52a610200527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016044356024356004356000847f19b849f69450b06848da1d39bd5e4a4302bb86744edc26238b0878e269ed23e582089050847f265ddfe127dd51bd7239347b758f0a1320eb2cc7450acc1dad47f80c8dcf34d683089150847f199750ec472f1809e0f66a545e1e51624108ac845015c2aa3dfc36bab497d8aa84089250847f157ff3fe65ac7208110f06a5f74302b14d743ea25067f0ffd032f787c7f1cdf8850893508481818082800980090990508482818082800980090991508483818082800980090992508484818082800980090993506200038160005262003015565b847f2e49c43c4569dd9c5fd35ac45fca33f10b15c590692f8beefe18f4896ac9490282089050847f0e35fb89981890520d4aef2b6d6506c3cb2f0b6973c24fa82731345ffa2d1f1e83089150847f251ad47cb15c4f1105f109ae5e944f1ba9d9e7806d667ffec6fe723002e0b99684089250847f13da07dc64d428369873e97160234641f8beb56fdd05e5f3563fa39d9c22df4e850893508481818082800980090990508482818082800980090991508483818082800980090992508484818082800980090993506200045660005262003015565b847f0c009b84e650e6d23dc00c7dccef7483a553939689d350cd46e7b89055fd473882089050847f011f16b1c63a854f01992e3956f42d8b04eb650c6d535eb0203dec74befdca0683089150847f0ed69e5e383a688f209d9a561daa79612f3f78d0467ad45485df07093f36754984089250847f04dba94a7b0ce9e221acad41472b6bbe3aec507f5eb3d33f463672264c9f789b850893508481818082800980090990508482818082800980090991508483818082800980090992508484818082800980090993506200052b60005262003015565b847f0a3f2637d840f3a16eb094271c9d237b6036757d4bb50bf7ce732ff1d4fa28e882089050847f259a666f129eea198f8a1c502fdb38fa39b1f075569564b6e54a485d1182323f83089150847f28bf7459c9b2f4c6d8e7d06a4ee3a47f7745d4271038e5157a32fdf7ede0d6a184089250847f0a1ca941f057037526ea200f489be8d4c37c85bbcce6a2aeec91bd6941432447850893508481818082800980090990508482818082800980090991508483818082800980090992508484818082800980090993506200060060005262003015565b847f0c6f8f958be0e93053d7fd4fc54512855535ed1539f051dcb43a26fd926361cf82089050847f123106a93cd17578d426e8128ac9d90aa9e8a00708e296e084dd57e69caaf81183089150847f26e1ba52ad9285d97dd3ab52f8e840085e8fa83ff1e8f1877b074867cd2dee7584089250847f1cb55cad7bd133de18a64c5c47b9c97cbe4d8b7bf9e095864471537e6a4ae2c585089350848181808280098009099050620006b160005262003015565b847f1dcd73e46acd8f8e0e2c7ce04bde7f6d2a53043d5060a41c7143f08e6e9055d082089050847f011003e32f6d9c66f5852f05474a4def0cda294a0eb4e9b9b12b9bb4512e557483089150847f2b1e809ac1d10ab29ad5f20d03a57dfebadfe5903f58bafed7c508dd2287ae8c84089250847f2539de1785b735999fb4dac35ee17ed0ef995d05ab2fc5faeaa69ae87bcec0a5850893508481818082800980090990506200076260005262003015565b847f0c246c5a2ef8ee0126497f222b3e0a0ef4e1c3d41c86d46e43982cb11d77951d82089050847f192089c4974f68e95408148f7c0632edbb09e6a6ad1a1c2f3f0305f5d03b527b83089150847f1eae0ad8ab68b2f06a0ee36eeb0d0c058529097d91096b756d8fdc2fb5a60d8584089250847f179190e5d0e22179e46f8282872abc88db6e2fdc0dee99e69768bd98c5d06bfb850893508481818082800980090990506200081360005262003015565b847f29bb9e2c9076732576e9a81c7ac4b83214528f7db00f31bf6cafe794a9b3cd1c82089050847f225d394e42207599403efd0c2464a90d52652645882aac35b10e590e6e691e0883089150847f064760623c25c8cf753d238055b444532be13557451c087de09efd454b23fd5984089250847f10ba3a0e01df92e87f301c4b716d8a394d67f4bf42a75c10922910a78f6b5b8785089350848181808280098009099050620008c460005262003015565b847f0e070bf53f8451b24f9c6e96b0c2a801cb511bc0c242eb9d361b77693f21471c82089050847f1b94cd61b051b04dd39755ff93821a73ccd6cb11d2491d8aa7f921014de252fb83089150847f1d7cb39bafb8c744e148787a2e70230f9d4e917d5713bb050487b5aa7d74070b84089250847f2ec93189bd1ab4f69117d0fe980c80ff8785c2961829f701bb74ac1f303b17db850893508481818082800980090990506200097560005262003015565b847f2db366bfdd36d277a692bb825b86275beac404a19ae07a9082ea46bd8351792682089050847f062100eb485db06269655cf186a68532985275428450359adc99cec6960711b883089150847f0761d33c66614aaa570e7f1e8244ca1120243f92fa59e4f900c567bf41f5a59b84089250847f20fc411a114d13992c2705aa034e3f315d78608a0f7de4ccf7a72e494855ad0d8508935084818180828009800909905062000a2660005262003015565b847f25b5c004a4bdfcb5add9ec4e9ab219ba102c67e8b3effb5fc3a30f317250bc5a82089050847f23b1822d278ed632a494e58f6df6f5ed038b186d8474155ad87e7dff62b37f4b83089150847f22734b4c5c3f9493606c4ba9012499bf0f14d13bfcfcccaa16102a29cc2f69e084089250847f26c0c8fe09eb30b7e27a74dc33492347e5bdff409aa3610254413d3fad795ce58508935084818180828009800909905062000ad760005262003015565b847f070dd0ccb6bd7bbae88eac03fa1fbb26196be3083a809829bbd626df348ccad982089050847f12b6595bdb329b6fb043ba78bb28c3bec2c0a6de46d8c5ad6067c4ebfd4250da83089150847f248d97d7f76283d63bec30e7a5876c11c06fca9b275c671c5e33d95bb7e8d72984089250847f1a306d439d463b0816fc6fd64cc939318b45eb759ddde4aa106d15d9bd9baaaa8508935084818180828009800909905062000b8860005262003015565b847f28a8f8372e3c38daced7c00421cb4621f4f1b54ddc27821b0d62d3d6ec7c56cf82089050847f0094975717f9a8a8bb35152f24d43294071ce320c829f388bc852183e1e2ce7e83089150847f04d5ee4c3aa78f7d80fde60d716480d3593f74d4f653ae83f4103246db2e8d6584089250847f2a6cf5e9aa03d4336349ad6fb8ed2269c7bef54b8822cc76d08495c12efde1878508935084818180828009800909905062000c3960005262003015565b847f2304d31eaab960ba9274da43e19ddeb7f792180808fd6e43baae48d7efcba3f382089050847f03fd9ac865a4b2a6d5e7009785817249bff08a7e0726fcb4e1c11d39d199f0b083089150847f00b7258ded52bbda2248404d55ee5044798afc3a209193073f7954d4d63b0b6484089250847f159f81ada0771799ec38fca2d4bf65ebb13d3a74f3298db36272c5ca65e92d9a8508935084818180828009800909905062000cea60005262003015565b847f1ef90e67437fbc8550237a75bc28e3bb9000130ea25f0c5471e144cf4264431f82089050847f1e65f838515e5ff0196b49aa41a2d2568df739bc176b08ec95a79ed82932e30d83089150847f2b1b045def3a166cec6ce768d079ba74b18c844e570e1f826575c1068c94c33f84089250847f0832e5753ceb0ff6402543b1109229c165dc2d73bef715e3f1c6e07c168bb1738508935084818180828009800909905062000d9b60005262003015565b847f02f614e9cedfb3dc6b762ae0a37d41bab1b841c2e8b6451bc5a8e3c390b6ad1682089050847f0e2427d38bd46a60dd640b8e362cad967370ebb777bedff40f6a0be27e7ed70583089150847f0493630b7c670b6deb7c84d414e7ce79049f0ec098c3c7c50768bbe29214a53a84089250847f22ead100e8e482674decdab17066c5a26bb1515355d5461a3dc06cc85327cea98508935084818180828009800909905062000e4c60005262003015565b847f25b3e56e655b42cdaae2626ed2554d48583f1ae35626d04de5084e0b6d2a6f1682089050847f1e32752ada8836ef5837a6cde8ff13dbb599c336349e4c584b4fdc0a0cf6f9d083089150847f2fa2a871c15a387cc50f68f6f3c3455b23c00995f05078f672a9864074d412e584089250847f2f569b8a9a4424c9278e1db7311e889f54ccbf10661bab7fcd18e7c7a7d835058508935084818180828009800909905062000efd60005262003015565b847f044cb455110a8fdd531ade530234c518a7df93f7332ffd2144165374b246b43d82089050847f227808de93906d5d420246157f2e42b191fe8c90adfe118178ddc723a531902583089150847f02fcca2934e046bc623adead873579865d03781ae090ad4a8579d2e7a680035584089250847f0ef915f0ac120b876abccceb344a1d36bad3f3c5ab91a8ddcbec2e060d8befac8508935084818180828009800909905062000fae60005262003015565b847f1797130f4b7a3e1777eb757bc6f287f6ab0fb85f6be63b09f3b16ef2b1405d3882089050847f0a76225dc04170ae3306c85abab59e608c7f497c20156d4d36c668555decc6e583089150847f1fffb9ec1992d66ba1e77a7b93209af6f8fa76d48acb664796174b5326a31a5c84089250847f25721c4fc15a3f2853b57c338fa538d85f8fbba6c6b9c6090611889b797b9c5f850893508481818082800980090990506200105f60005262003015565b847f0c817fd42d5f7a41215e3d07ba197216adb4c3790705da95eb63b982bfcaf75a82089050847f13abe3f5239915d39f7e13c2c24970b6df8cf86ce00a22002bc15866e52b5a9683089150847f2106feea546224ea12ef7f39987a46c85c1bc3dc29bdbd7a92cd60acb4d391ce84089250847f21ca859468a746b6aaa79474a37dab49f1ca5a28c748bc7157e1b3345bb0f959850893508481818082800980090990506200111060005262003015565b847f05ccd6255c1e6f0c5cf1f0df934194c62911d14d0321662a8f1a48999e34185b82089050847f0f0e34a64b70a626e464d846674c4c8816c4fb267fe44fe6ea28678cb09490a483089150847f0558531a4e25470c6157794ca36d0e9647dbfcfe350d64838f5b1a8a2de0d4bf84089250847f09d3dca9173ed2faceea125157683d18924cadad3f655a60b72f5864961f145585089350848181808280098009099050620011c160005262003015565b847f0328cbd54e8c0913493f866ed03d218bf23f92d68aaec48617d4c722e5bd433582089050847f2bf07216e2aff0a223a487b1a7094e07e79e7bcc9798c648ee3347dd5329d34b83089150847f1daf345a58006b736499c583cb76c316d6f78ed6a6dffc82111e11a63fe412df84089250847f176563472456aaa746b694c60e1823611ef39039b2edc7ff391e6f2293d2c404850893508481818082800980090990506200127260005262003015565b847f2ef1e0fad9f08e87a3bb5e47d7e33538ca964d2b7d1083d4fb0225035bd3f8db82089050847f226c9b1af95babcf17b2b1f57c7310179c1803dec5ae8f0a1779ed36c817ae2a83089150847f14bce3549cc3db7428126b4c3a15ae0ff8148c89f13fb35d35734eb5d4ad0def84089250847f2debff156e276bb5742c3373f2635b48b8e923d301f372f8e550cfd4034212c7850893508481818082800980090990506200132360005262003015565b847f2d4083cf5a87f5b6fc2395b22e356b6441afe1b6b29c47add7d0432d1d4760c782089050847f0c225b7bcd04bf9c34b911262fdc9c1b91bf79a10c0184d89c317c53d7161c2983089150847f03152169d4f3d06ec33a79bfac91a02c99aa0200db66d5aa7b835265f9c9c8f384089250847f0b61811a9210be78b05974587486d58bddc8f51bfdfebbb87afe8b7aa7d3199c85089350848181808280098009099050620013d460005262003015565b847f203e000cad298daaf7eba6a5c5921878b8ae48acf7048f16046d637a533b6f7882089050847f1a44bf0937c722d1376672b69f6c9655ba7ee386fda1112c0757143d1bfa914683089150847f0376b4fae08cb03d3500afec1a1f56acb8e0fde75a2106d7002f59c5611d4daa84089250847f00780af2ca1cad6465a2171250fdfc32d6fc241d3214177f3d553ef363182185850893508481818082800980090990506200148560005262003015565b847f10774d9ab80c25bdeb808bedfd72a8d9b75dbe18d5221c87e9d857079bdc31d582089050847f10dc6e9c006ea38b04b1e03b4bd9490c0d03f98929ca1d7fb56821fd19d3b6e883089150847f00544b8338791518b2c7645a50392798b21f75bb60e3596170067d00141cac1684089250847f222c01175718386f2e2e82eb122789e352e105a3b8fa852613bc534433ee428c850893508481818082800980090990506200153660005262003015565b847f2840d045e9bc22b259cfb8811b1e0f45b77f7bdb7f7e2b46151a1430f608e3c582089050847f062752f86eebe11a009c937e468c335b04554574c2990196508e01fa5860186b83089150847f06041bdac48205ac87adb87c20a478a71c9950c12a80bc0a55a8e83eaaf0474684089250847f04a533f236c422d1ff900a368949b0022c7a2ae092f308d82b1dcbbf51f5000d85089350848181808280098009099050620015e760005262003015565b847f13e31d7a67232fd811d6a955b3d4f25dfe066d1e7dc33df04bde50a2b2d05b2a82089050847f011c2683ae91eb4dfbc13d6357e8599a9279d1648ff2c95d2f79905bb13920f183089150847f0b0d219346b8574525b1a270e0b4cba5d56c928e3e2c2bd0a1ecaed015aaf6ae84089250847f14abdec8db9c6dc970291ee638690209b65080781ef9fd13d84c7a726b5f1364850893508481818082800980090990506200169860005262003015565b847f1a0b70b4b26fdc28fcd32aa3d266478801eb12202ef47ced988d0376610be10682089050847f278543721f96d1307b6943f9804e7fe56401deb2ef99c4d12704882e7278b60783089150847f16eb59494a9776cf57866214dbd1473f3f0738a325638d8ba36535e011d5825984089250847f2567a658a81ffb444f240088fa5524c69a9e53eeab6b7f8c41c3479dcf8c644a850893508481818082800980090990506200174960005262003015565b847f29aa1d7c151e9ad0a7ab39f1abd9cf77ab78e0215a5715a6b882ade840bb13d882089050847f15c091233e60efe0d4bbfce2b36415006a4f017f9a85388ce206b91f99f2c98483089150847f16bd7d22ff858e5e0882c2c999558d77e7673ad5f1915f9feb679a8115f014cf84089250847f02db50480a07be0eb2c2e13ed6ef4074c0182d9b668b8e08ffe676925004202585089350848181808280098009099050620017fa60005262003015565b847f05e4a220e6a3bc9f7b6806ec9d6cdba186330ef2bf7adb4c13ba866343b7311982089050847f1dda05ebc30170bc98cbf2a5ee3b50e8b5f70bc424d39fa4104d37f1cbcf7a4283089150847f0184bef721888187f645b6fee3667f3c91da214414d89ba5cd301f22b0de899084089250847f1498a307e68900065f5e8276f62aef1c37414b84494e1577ad1a6d64341b78ec85089350848181808280098009099050620018ab60005262003015565b847f25f40f82b31dacc4f4939800b9d2c3eacef737b8fab1f864fe33548ad46bd49d82089050847f09d317cc670251943f6f5862a30d2ea9e83056ce4907bfbbcb1ff31ce5bb965083089150847f2f77d77786d979b23ba4ce4a4c1b3bd0a41132cd467a86ab29b913b6cf3149d084089250847f0f53dafd535a9f4473dc266b6fccc6841bbd336963f254c152f89e785f729bbf850893508481818082800980090990506200195c60005262003015565b847f25c1fd72e223045265c3a099e17526fa0e6976e1c00baf16de96de85deef2fa282089050847f2a902c8980c17faae368d385d52d16be41af95c84eaea3cf893e65d6ce4a8f6283089150847f1ce1580a3452ecf302878c8976b82be96676dd114d1dc8d25527405762f8352984089250847f24a6073f91addc33a49a1fa306df008801c5ec569609034d2fc50f7f0f4d00568508935084818180828009800909905062001a0d60005262003015565b847f25e52dbd6124530d9fc27fe306d71d4583e07ca554b5d1577f256c68b0be2b7482089050847f23dffae3c423fa7a93468dbccfb029855974be4d0a7b29946796e5b6cd70f15d83089150847f06342da370cc0d8c49b77594f6b027c480615d50be36243a99591bc9924ed6f584089250847f2754114281286546b75f09f115fc751b4778303d0405c1b4cc7df0d8e9f639258508935084818180828009800909905062001abe60005262003015565b847f15c19e8534c5c1a8862c2bc1d119eddeabf214153833d7bdb59ee197f8187cf582089050847f265fe062766d08fab4c78d0d9ef3cabe366f3be0a821061679b4b3d2d77d5f3e83089150847f13ccf689d67a3ec9f22cb7cd0ac3a327d377ac5cd0146f048debfd098d3ec7be84089250847f17662f7456789739f81cd3974827a887d92a5e05bdf3fe6b9fbccca4524aaebd8508935084818180828009800909905062001b6f60005262003015565b847f21b29c76329b31c8ef18631e515f7f2f82ca6a5cca70cee4e809fd624be7ad5d82089050847f18137478382aadba441eb97fe27901989c06738165215319939eb17b01fa975c83089150847f2bc07ea2bfad68e8dc724f5fef2b37c2d34f761935ffd3b739ceec4668f37e8884089250847f2ddb2e376f54d64a563840480df993feb4173203c2bd94ad0e602077aef9a03e8508935084818180828009800909905062001c2060005262003015565b847f277eb50f2baa706106b41cb24c602609e8a20f8d72f613708adb25373596c3f782089050847f0d4de47e1aba34269d0c620904f01a56b33fc4b450c0db50bb7f87734c9a1fe583089150847f0b8442bfe9e4a1b4428673b6bd3eea6f9f445697058f134aae908d0279a29f0c84089250847f11fe5b18fbbea1a86e06930cb89f7d4a26e186a65945e96574247fddb720f8f58508935084818180828009800909905062001cd160005262003015565b847f224026f6dfaf71e24d25d8f6d9f90021df5b774dcad4d883170e4ad89c33a0d682089050847f0b2ca6a999fe6887e0704dad58d03465a96bc9e37d1091f61bc9f9c62bbeb82483089150847f221b63d66f0b45f9d40c54053a28a06b1d0a4ce41d364797a1a7e0c96529f42184089250847f30185c48b7b2f1d53d4120801b047d087493bce64d4d24aedce2f4836bb84ad48508935084818180828009800909905062001d8260005262003015565b847f23f5d372a3f0e3cba989e223056227d3533356f0faa48f27f8267318632a61f082089050847f2716683b32c755fd1bf8235ea162b1f388e1e0090d06162e8e6dfbe4328f3e3b83089150847f0977545836866fa204ca1d853ec0909e3d140770c80ac67dc930c69748d5d4bc84089250847f1444e8f592bdbfd8025d91ab4982dd425f51682d31472b05e81c43c0f9434b318508935084818180828009800909905062001e3360005262003015565b847f26e04b65e9ca8270beb74a1c5cb8fee8be3ffbfe583f7012a00f874e7718fbe382089050847f22a5c2fa860d11fe34ee47a5cd9f869800f48f4febe29ad6df69816fb1a914d283089150847f174b54d9907d8f5c6afd672a738f42737ec338f3a0964c629f7474dd44c5c8d784089250847f1db1db8aa45283f31168fa66694cf2808d2189b87c8c8143d56c871907b39b878508935084818180828009800909905062001ee460005262003015565b847f1530bf0f46527e889030b8c7b7dfde126f65faf8cce0ab66387341d813d1bfd182089050847f0b73f613993229f59f01c1cec8760e9936ead9edc8f2814889330a2f2bade45783089150847f29c25a22fe2164604552aaea377f448d587ab977fc8227787bd2dc0f36bcf41e84089250847f2b30d53ed1759bfb8503da66c92cf4077abe82795dc272b377df57d77c8755268508935084818180828009800909905062001f9560005262003015565b847f12f6d703b5702aab7b7b7e69359d53a2756c08c85ede7227cf5f0a2916787cd282089050847f2520e18300afda3f61a40a0b8837293a55ad01071028d4841ffa9ac70636411383089150847f1ec9daea860971ecdda8ed4f346fa967ac9bc59278277393c68f09fa03b8b95f84089250847f0a99b3e178db2e2e432f5cd5bef8fe4483bf5cbf70ed407c08aae24b830ad725850893508481818082800980090990506200204660005262003015565b847f07cda9e63db6e39f086b89b601c2bbe407ee0abac3c817a1317abad7c577849282089050847f08c9c65a4f955e8952d571b191bb0adb49bd8290963203b35d48aab38f8fc3a383089150847f2737f8ce1d5a67b349590ddbfbd709ed9af54a2a3f2719d33801c9c17bdd9c9e84089250847f1049a6c65ff019f0d28770072798e8b7909432bd0c129813a9f179ba627f7d6a85089350848181808280098009099050620020f760005262003015565b847f18b4fe968732c462c0ea5a9beb27cecbde8868944fdf64ee60a5122361daeddb82089050847f2ff2b6fd22df49d2440b2eaeeefa8c02a6f478cfcf11f1b2a4f7473483885d1983089150847f2ec5f2f1928fe932e56c789b8f6bbcb3e8be4057cbd8dbd18a1b352f5cef42ff84089250847f265a5eccd8b92975e33ad9f75bf3426d424a4c6a7794ee3f08c1d100378e545e85089350848181808280098009099050620021a860005262003015565b847f2405eaa4c0bde1129d6242bb5ada0e68778e656cfcb366bf20517da1dfd4279c82089050847f094c97d8c194c42e88018004cbbf2bc5fdb51955d8b2d66b76dd98a2dbf6041783089150847f2c30d5f33bb32c5c22b9979a605bf64d508b705221e6a686330c9625c2afe0b884089250847f01a75666f6241f6825d01cc6dcb1622d4886ea583e87299e6aa2fc716fdb6cf5850893508481818082800980090990506200225960005262003015565b847f0a3290e8398113ea4d12ac091e87be7c6d359ab9a66979fcf47bf2e87d382fcb82089050847f154ade9ca36e268dfeb38461425bb0d8c31219d8fa0dfc75ecd21bf69aa0cc7483089150847f27aa8d3e25380c0b1b172d79c6f22eee99231ef5dc69d8dc13a4b5095d02877284089250847f2cf4051e6cab48301a8b2e3bca6099d756bbdf485afa1f549d395bbcbd806461850893508481818082800980090990506200230a60005262003015565b847f301e70f729f3c94b1d3f517ddff9f2015131feab8afa5eebb0843d7f84b23e7182089050847f298beb64f812d25d8b4d9620347ab02332dc4cef113ae60d17a8d7a4c91f83bc83089150847f1b362e72a5f847f84d03fd291c3c471ed1c14a15b221680acf11a3f02e46aa9584089250847f0dc8a2146110c0b375432902999223d5aa1ef6e78e1e5ebcbc1d9ba41dc1c73785089350848181808280098009099050620023bb60005262003015565b847f0a48663b34ce5e1c05dc93092cb69778cb21729a72ddc03a08afa1eb922ff27982089050847f0a87391fb1cd8cdf6096b64a82f9e95f0fe46f143b702d74545bb314881098ee83089150847f1b5b2946f7c28975f0512ff8e6ca362f8826edd7ea9c29f382ba8a2a0892fd5d84089250847f01001cf512ac241d47ebe2239219bc6a173a8bbcb8a5b987b4eac1f533315b6b850893508481818082800980090990506200246c60005262003015565b847f2fd977c70f645db4f704fa7d7693da727ac093d3fb5f5febc72beb17d8358a3282089050847f23c0039a3fab4ad3c2d7cc688164f39e761d5355c05444d99be763a97793a9c483089150847f19d43ee0c6081c052c9c0df6161eaac1aec356cf435888e79f27f22ff03fa25d84089250847f2d9b10c2f2e7ac1afddccffd94a563028bf29b646d020830919f9d5ca1cefe59850893508481818082800980090990506200251d60005262003015565b847f2457ca6c2f2aa30ec47e4aff5a66f5ce2799283e166fc81cdae2f2b9f83e426782089050847f0abc392fe85eda855820592445094022811ee8676ed6f0c3044dfb54a7c10b3583089150847f19d2cc5ca549d1d40cebcd37f3ea54f31161ac3993acf3101d2c2bc30eac1eb084089250847f0f97ae3033ffa01608aafb26ae13cd393ee0e4ec041ba644a3d3ab546e98c9c885089350848181808280098009099050620025ce60005262003015565b847f16dbc78fd28b7fb8260e404cf1d427a7fa15537ea4e168e88a166496e88cfeca82089050847f240faf28f11499b916f085f73bc4f22eef8344e576f8ad3d1827820366d5e07b83089150847f0a1bb075aa37ff0cfe6c8531e55e1770eaba808c8fdb6dbf46f8cab58d9ef1af84089250847f2e47e15ea4a47ff1a6a853aaf3a644ca38d5b085ac1042fdc4a705a7ce089f4d850893508481818082800980090990506200267f60005262003015565b847f166e5bf073378348860ca4a9c09d39e1673ab059935f4df35fb14528375772b682089050847f18b42d7ffdd2ea4faf235902f057a2740cacccd027233001ed10f96538f0916f83089150847f089cb1b032238f5e4914788e3e3c7ead4fc368020b3ed38221deab1051c3770284089250847f242acd3eb3a2f72baf7c7076dd165adf89f9339c7b971921d9e70863451dd8d1850893508481818082800980090990506200273060005262003015565b847f174fbb104a4ee302bf47f2bd82fce896eac9a068283f326474af860457245c3b82089050847f17340e71d96f466d61f3058ce092c67d2891fb2bb318613f780c275fe1116c6b83089150847f1e8e40ac853b7d42f00f2e383982d024f098b9f8fd455953a2fd380c4df7f6b284089250847f0529898dc0649907e1d4d5e284b8d1075198c55cad66e8a9bf40f92938e2e96185089350848181808280098009099050620027e160005262003015565b847f2162754db0baa030bf7de5bb797364dce8c77aa017ee1d7bf65f21c4d4e5df8f82089050847f12c7553698c4bf6f3ceb250ae00c58c2a9f9291efbde4c8421bef44741752ec683089150847f292643e3ba2026affcb8c5279313bd51a733c93353e9d9c79cb723136526508e84089250847f00ccf13e0cb6f9d81d52951bea990bd5b6c07c5d98e66ff71db6e74d5b87d158850893508481818082800980090990506200289260005262003015565b847f185d1e20e23b0917dd654128cf2f3aaab6723873cb30fc22b0f86c15ab645b4b82089050847f14c61c836d55d3df742bdf11c60efa186778e3de0f024c0f13fe53f8d8764e1f83089150847f0f356841b3f556fce5dbe4680457691c2919e2af53008184d03ee1195d72449e84089250847f1b8fd9ff39714e075df124f887bf40b383143374fd2080ba0c0a6b6e8fa5b3e8850893508481818082800980090990506200294360005262003015565b847f0e86a8c2009c140ca3f873924e2aaa14fc3c8ae04e9df0b3e9103418796f602482089050847f2e6c5e898f5547770e5462ad932fcdd2373fc43820ca2b16b0861421e79155c883089150847f05d797f1ab3647237c14f9d1df032bc9ff9fe1a0ecd377972ce5fd5a0c01460484089250847f29a3110463a5aae76c3d152875981d0c1daf2dcd65519ef5ca8929851da8c00885089350848181808280098009099050620029f460005262003015565b847f2974da7bc074322273c3a4b91c05354cdc71640a8bbd1f864b732f816388331482089050847f1ed0fb06699ba249b2a30621c05eb12ca29cb91aa082c8bfcce9c522889b47dc83089150847f1c793ef0dcc51123654ff26d8d863feeae29e8c572eca912d80c8ae36e40fe9b84089250847f1e6aac1c6d3dd3157956257d3d234ef18c91e82589a78169fbb4a8770977dc2f8508935084818180828009800909905062002aa560005262003015565b847f1a20ada7576234eee6273dd6fa98b25ed037748080a47d948fcda33256fb6bf582089050847f191033d6d85ceaa6fc7a9a23a6fd9996642d772045ece51335d49306728af96c83089150847f006e5979da7e7ef53a825aa6fddc3abfc76f200b3740b8b232ef481f5d06297b84089250847f0b0d7e69c651910bbef3e68d417e9fa0fbd57f596c8f29831eff8c0174cdb06d8508935084818180828009800909905062002b5660005262003015565b847f25caf5b0c1b93bc516435ec084e2ecd44ac46dbbb033c5112c4b20a25c9cdf9d82089050847f12c1ea892cc31e0d9af8b796d9645872f7f77442d62fd4c8085b2f150f72472a83089150847f16af29695157aba9b8bbe3afeb245feee5a929d9f928b9b81de6dadc78c32aae84089250847f0136df457c80588dd687fb2f3be18691705b87ec5a4cfdc168d31084256b67dc8508935084818180828009800909905062002c0760005262003015565b847f1639a28c5b4c81166aea984fba6e71479e07b1efbc74434db95a285060e7b08982089050847f03d62fbf82fd1d4313f8e650f587ec06816c28b700bdc50f7e232bd9b5ca9b7683089150847f11aeeb527dc8ce44b4d14aaddca3cfe2f77a1e40fc6da97c249830de1edfde5484089250847f13f9b9a41274129479c5e6138c6c8ee36a670e6bc68c7a49642b645807bfc8248508935084818180828009800909905062002cb860005262003015565b847f0e4772fa3d75179dc8484cd26c7c1f635ddeeed7a939440c506cae8b7ebcd15b82089050847f1b39a00cbc81e427de4bdec58febe8d8b5971752067a612b39fc46a68c5d4db483089150847f2bedb66e1ad5a1d571e16e2953f48731f66463c2eb54a245444d1c0a3a25707e84089250847f2cf0a09a55ca93af8abd068f06a7287fb08b193b608582a27379ce35da915dec8508935084818180828009800909905084828180828009800909915084838180828009800909925084848180828009800909935062002d8d60005262003015565b847f2d1bd78fa90e77aa88830cabfef2f8d27d1a512050ba7db0753c8fb863efb38782089050847f065610c6f4f92491f423d3071eb83539f7c0d49c1387062e630d7fd283dc339483089150847f2d933ff19217a5545013b12873452bebcc5f9969033f15ec642fb464bd60736884089250847f1aa9d3fe4c644910f76b92b3e13b30d500dae5354e79508c3c49c8aa99e0258b8508935084818180828009800909905084828180828009800909915084838180828009800909925084848180828009800909935062002e6260005262003015565b847f027ef04869e482b1c748638c59111c6b27095fa773e1aca078cea1f1c8450bdd82089050847f2b7d524c5172cbbb15db4e00668a8c449f67a2605d9ec03802e3fa136ad0b8fb83089150847f0c7c382443c6aa787c8718d86747c7f74693ae25b1e55df13f7c3c1dd735db0f84089250847f00b4567186bc3f7c62a7b56acf4f76207a1f43c2d30d0fe4a627dcdd9bd790788508935084818180828009800909905084828180828009800909915084838180828009800909925084848180828009800909935062002f3760005262003015565b847f1e41fc29b825454fe6d61737fe08b47fb07fe739e4c1e61d0337490883db4fd582089050847f12507cd556b7bbcc72ee6dafc616584421e1af872d8c0e89002ae8d3ba0653b683089150847f13d437083553006bcef312e5e6f52a5d97eb36617ef36fe4d77d3e97f71cb5db84089250847f163ec73251f85443687222487dda9a65467d90b22f0b38664686077c6a4486d5850893508481818082800980090990508482818082800980090991508483818082800980090992508484818082800980090993506200300c60005262003015565b60005260206000f35b8460205182098560405184098691088560605185098691088560805186098691088560a05183098660c05185098791088660e05186098791088661010051870987910886610120518409876101405186098891088761016051870988910887610180518809889108876101a0518509886101c0518709899108886101e051880989910888610200518909899108965094509250905060005156", - "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c806325cc70e8146038575b600080fd5b609860048036036060811015604c57600080fd5b8101908080606001906003806020026040519081016040528092919082600360200280828437600081840152601f19601f820116905080830192505050505050919291929050505060ae565b6040518082815260200191505060405180910390f35b600091905056fea2646970667358221220dd147f59d0f05d1b0e6c4fc40a72cdafbe31383caafac83eeeb193beaaeb40f764736f6c63430007020033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/contracts/precompiled/PoseidonT5.json b/packages/contracts/precompiled/PoseidonT5.json deleted file mode 100644 index 0f5cd3ea..00000000 --- a/packages/contracts/precompiled/PoseidonT5.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PoseidonT5", - "sourceName": "contracts/crypto/Hasher.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "uint256[4]", - "name": "input", - "type": "uint256[4]" - } - ], - "name": "poseidon", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - } - ], - "bytecode": "0x38600c600039613f946000f37c0100000000000000000000000000000000000000000000000000000000600035048063248f66771490631e86251914176200003757fe5b7f251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da16020527f25fb50b65acf4fb047cbd3b1c17d97c7fe26ea9ca238d6e348550486e91c77656040527f293d617d7da72102355f39ebf62f91b06deb5325f367a4556ea1e31ed57678336060527f104d0295ab00c85e960111ac25da474366599e575a9b7edf6145f14ba6d3c1c46080527f0aaa35e2c84baf117dea3e336cd96a39792b3813954fe9bf3ed5b90f2f69c97760a0527f2a70b9f1d4bbccdbc03e17c1d1dcdb02052903dc6609ea6969f661b2eb74c83960c0527f281154651c921e746315a9934f1b8a1bba9f92ad8ef4b979115b8e2e991ccd7a60e0527f28c2be2f8264f95f0b53c732134efa338ccd8fdb9ee2b45fb86a894f7db36c37610100527f21888041e6febd546d427c890b1883bb9b626d8cb4dc18dcc4ec8fa75e530a13610120527f14ddb5fada0171db80195b9592d8cf2be810930e3ea4574a350d65e2cbff4941610140527f2f69a7198e1fbcc7dea43265306a37ed55b91bff652ad69aa4fa8478970d401d610160527f001c1edd62645b73ad931ab80e37bbb267ba312b34140e716d6a3747594d3052610180527f15b98ce93e47bc64ce2f2c96c69663c439c40c603049466fa7f9a4b228bfc32b6101a0527f12c7e2adfa524e5958f65be2fbac809fcba8458b28e44d9265051de33163cf9c6101c0527f2efc2b90d688134849018222e7b8922eaf67ce79816ef468531ec2de53bbd1676101e0527f0c3f050a6bf5af151981e55e3e1a29a13c3ffa4550bd2514f1afd6c5f721f830610200527f0dec54e6dbf75205fa75ba7992bd34f08b2efe2ecd424a73eda7784320a1a36e610220527f1c482a25a729f5df20225815034b196098364a11f4d988fb7cc75cf32d8136fa610240527f2625ce48a7b39a4252732624e4ab94360812ac2fc9a14a5fb8b607ae9fd8514a610260527f07f017a7ebd56dd086f7cd4fd710c509ed7ef8e300b9a8bb9fb9f28af710251f610280527f2a20e3a4a0e57d92f97c9d6186c6c3ea7c5e55c20146259be2f78c2ccc2e35956102a0527f1049f8210566b51faafb1e9a5d63c0ee701673aed820d9c4403b01feb727a5496102c0527f02ecac687ef5b4b568002bd9d1b96b4bef357a69e3e86b5561b9299b82d69c8e6102e0527f2d3a1aea2e6d44466808f88c9ba903d3bdcb6b58ba40441ed4ebcf11bbe1e37b610300527f14074bb14c982c81c9ad171e4f35fe49b39c4a7a72dbb6d9c98d803bfed65e64610320527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016064356044356024356004356000857f0eb544fee2815dda7f53e29ccac98ed7d889bb4ebd47c3864f3c2bd81a6da89182089050857f0554d736315b8662f02fdba7dd737fbca197aeb12ea64713ba733f28475128cb83089150857f2f83b9df259b2b68bcd748056307c37754907df0c0fb0035f5087c58d5e8c2d484089250857f2ca70e2e8d7f39a12447ac83052451b461f15f8b41a75ef31915208f5aba968385089350857f1cb5f9319be6a45e91b04d7222271c94994196f12ed22c5d4ec719cb83ecfea9860894508581818082800980090990508582818082800980090991508583818082800980090992508584818082800980090993508585818082800980090994506200050360005262003ea1565b857f2eb4f99c69f966ebf8a42192de7ff61621c7bb47b93750c2b9ea08d18446c12282089050857f224a28e5a35385a7c5198169e405d9ea0fc7da8b93ee13b6d5f7d099e299520e83089150857f0f7411b465e600eed8afdd6afca49c3036f33ecbd9a0f97823796b993bbd82f784089250857f0f9d0d5aad2c9555a2be7150392d8d9819b208ae3370f99a0626f9ff5d90e4e385089350857f1e9a96dc8292bb596f52a59538d329229732b25259cf744b6a12d30702d6fba0860894508581818082800980090990508582818082800980090991508583818082800980090992508584818082800980090993508585818082800980090994506200060a60005262003ea1565b857f08780514ccd90380887d578c45555e593cfe52eab4b945c6c2cd4d528fb3fe3c82089050857f272498fced686c7ac8149fa3f73ef8c2ced64717e3556d5a59f119d629ccb5fc83089150857f01ef8f9dd7c93aac4b7cb80930bd06eb45bd350aff585f10e3d0ef8a782ef7df84089250857f045b9f59b6595e614dc08f222b469b138e886e64bf3c40aa97ea0ae754934d3085089350857f0ac1e91c57d9da919fd6f59d2a40ff8ea3e41e24e247a387adf2584295d61c66860894508581818082800980090990508582818082800980090991508583818082800980090992508584818082800980090993508585818082800980090994506200071160005262003ea1565b857f028a1621a94054b0c7f9a421353cd89d0fd67061aee99979d12e68f04e62d13482089050857f26b41802c071ea4c9632647ed059236e50c19c3fb3c96d09d02aae2a0dcd9dbc83089150857f2fb5dda8072bb72cbaac2f63e468215e05c9de06758db6a94af34384aedb462b84089250857f2212d3a0f5fccaf244ff3547fd823249ad8ab8ba2a18d383dd05c56ee894d85085089350857f1b041ad5b2f0684258e4dfaeea09be56a3276fdb19f44c015cd0c7eed465e2e3860894508581818082800980090990508582818082800980090991508583818082800980090992508584818082800980090993508585818082800980090994506200081860005262003ea1565b857f0a01776bb22f4b6b8eccff33e76fded3144fb7e3ac14e846a91e64afb1500eff82089050857f2b7b5674aaecc3cbf34d3f275066d549a4f33ae8c15cf827f7936440810ace4383089150857f29d299b80cd4489e4cf75779ed54b48c60b042257b78fc004c1b803381a3bdfd84089250857f1c46831d9a74529357641c219d721a74a427110032b5e1dd19dde30424be401e85089350857f06d7626c953ccb72f37141dc34d578e036296c0657674f80739ae1d883e9126986089450858181808280098009099050620008ef60005262003ea1565b857f28ffddc86f18c136c54002748e0c410edc5c440a3022cd960f108c71cda2930c82089050857f2e67f7ee5e4aa295f85deed09e400b17be67f1b7ed2ab6adb8ec0619f6fbc5e983089150857f26ce38fa636c90630e97f25114a79a2dca56859ef759e53ce7abf22c24e80f2784089250857f2e6e07c3c95bf7c34dd7a01d00a7ffec42cb3d16a1f72721afacb4c4cfd35db185089350857f2aa74f7597f0c9f45f91d7961c3a54fb8890d276612e1246384b1470da24d8cc86089450858181808280098009099050620009c660005262003ea1565b857f287d681a46a2faae2c7c090f668ab45b8a71313c1509183e2ec0ca639b7f73fe82089050857f212bd19df812eaaef4a40600528f3d7da5d3106ff565aa3b11e29f3305e73c0483089150857f1154f7cf519186bf1aafb14b350eb860f97fd9740926dab93809c2840471350484089250857f1dff6385cb31f1c24637810a4bd1b16fbf5152905be36583da747e79661fc20785089350857f0e444582d22b4e76c081d34c44c18e424011a34d5476252863ea3c606b551e5c8608945085818180828009800909905062000a9d60005262003ea1565b857f0323c9e433ba66c4abab6638328f02f1815773e9c2846323ff72d3aab7e4eff882089050857f12746bbd71791059193bba79cdec448f25b8cf002740112db70f2c6876a9c29d83089150857f1173b7d112c2a798fd9b9d3751842c75d466c837cf50d73efd049eb4438a224084089250857f13d51c1090a1ad4876d1e555d7fed13da8e5713b25026ebe5fdb4808703243da85089350857f00874c1344a4ad51ff8dcb7cbd2d9743cb72743f0394efe7f4a58ebeb956baa18608945085818180828009800909905062000b7460005262003ea1565b857f22df22131aaab85865ce236b07f244fa0eea48d3546e97d6a32a562074fef08f82089050857f0bf964d2dbd25b908708b437a445fc3e984524a59101e6c18bf5eb05a919f15583089150857f09b18d9b917a55bca302be1f7f181e0e640b9d73a9ab298c69b435b5fc502f3284089250857f094f5534444fae36a4bfc1d5bf3dc05bfbbbc70a6365366dd6745a5067289e4385089350857f2999bab1a5f25210519fa6622af53a15a3e240c0da5701cb784fddc0dc23f01f8608945085818180828009800909905062000c4b60005262003ea1565b857f2f6898c07581f6371ca94db73710e88084301bce8a93d13669575a11b03a3d2382089050857f07268eaaba08bc19ec16d7e1318a4740565deb1e8e5742f862174b1a6866fccb83089150857f186279b003454db01339ff77113bc9eb62603e078e1c6689a6c9582c41a0529f84089250857f18a3f736509197d6e4915bdd04d3e5ddb67e2cc5de9a22750768e5524737172c85089350857f0a21fa1988cf38d877cc1e2ed24c808c725e2d4bcb2d3a007b5987b87085671d8608945085818180828009800909905062000d2260005262003ea1565b857f15b285cbe26c467f1faf5ef6a64625228328c184a2c43bc00b36a135e785fba282089050857f164b7062c4671cf08c08b8c3f9806d560b7775b7c902f5788cd28de3e779f16183089150857f0890ba0819ac0a6f86d9865fe7e50ef361c61d3d43b6e65d7a24f651249baa7084089250857f2fbea4d65d7ed425a42712e5a721e4eaa627ac5cb0eb878ccc2ee0aed543e92285089350857f0492bf383c36fa55540303a3b536f85e7b70a58e854ab9b9103d7f5f379abaaa8608945085818180828009800909905062000df960005262003ea1565b857f05e91fe944e944104e20251c565142d61d6185a9ce85675f6a969d56292dc24e82089050857f12fe5c2029e4b33893d463cb041acad0995b9621e6e49c3b7e380a76e36e6c1c83089150857f024154adf0255d47958f7723921474131f2629fadc89496906cd01dc6fa0784e84089250857f18824a09e6afaf4a36ed2462a86bd0bad798815644f2bbde8813c13457a4555085089350857f0c8b482dba0ad51be9f255de0c3dbddddf84a630af68d50bbb06983e3d5d58a58608945085818180828009800909905062000ed060005262003ea1565b857f17325fd0ab635871363e0a1667d3b67c5a4fa67fcd6aaf86441392878fdb05e682089050857f050ae95f6d2f1519122f5af67b690f31e550773fa8d18bf71cc6d0e911fa402e83089150857f0f0d139a0e81e943038cb288d62636764bbb6295f07569885771ec84edc50c4084089250857f1c0f8697795689cdf70fd2f2c0f93d1a79b39ebc7a1b1c549dbbca7b8e747cd685089350857f2bd0f940ad936b796d2bc2e048bc979e49be23a4b13598f9fe536a16dc1d81e68608945085818180828009800909905062000fa760005262003ea1565b857f27eb1be27c9c4e934778c09a0053337fa06ebb275e096d167ce54d1e96ee62cb82089050857f2e4889d830a67e5a8f96bdd3155a7ca3284fbd307d1f71b0f151be62548e2aea83089150857f193fe3db0ab47d3c5d2ec5e9c5bd9983c9891f2cadc165db6064bbe6fcc1e30584089250857f2bf3086e96c36c7bce415907ad0c40ed6e9661c009679e4e37cb13027c83e52585089350857f12f16e2de6d4ad46a98cdb697c6cad5dd5e7e413f741ccf29ff2ea486e59bb28860894508581818082800980090990506200107e60005262003ea1565b857f2a72147d230119f3a0262e3653ddd19f33f3d5d6ec6c4bf0ad919b0343b92d2f82089050857f21be0e2c4bfd64e56dc47f957806dc5f0a2d9bcc26412e2977df79acc10ba97483089150857f0e2d7e1dc946d70b2749a3b54367b25a71b84fb911aa57ae137fd4b6c21b444a84089250857f2667f7fb5a4fa1246170a745d8a4188cc31adb0eae3325dc9f3f07d4b92b3e2e85089350857f2ccc6f431fb7400730a783b66064697a1550c12b08dfeb72830e107da78e3405860894508581818082800980090990506200115560005262003ea1565b857f08888a94fc5a2ca34f0201462420001fae6dbee9e8ca0c242ec50621e38e6e5d82089050857f02977b34eeaa3cb6ad40dd42c9b6fdd7a0d2fbe753af88b36acfcd3ccbc53f2a83089150857f120ccce13d28b75cfd6fb6c9ea13a648bfcfe0d7e6ff8e9610b5e9f971e16b9a84089250857f09fad2269c4a8e93c81e1b9770ea098c92787a4575b2bd73a0bf2af32f86ff3c85089350857f026091fd3d4c44d50a4b310e4ac6f0fa0debdb70775eeb8af630cffb60092d6f860894508581818082800980090990506200122c60005262003ea1565b857f29404aa2ba565b77bb7fba9dfb6fc3212543cc56afad6afcb904fd2bca89399482089050857f2749475c399aaf39d4e87c2548695b4ef1ffd86590e0827de7201351b7c883f983089150857f098c842322479f7239912b50424685cba2ebe2dc2e4da70ac7557dab65ffa22284089250857f18cef581222b647e31238e57fead7d5c758ace14c93c4da40191d0c053b5193685089350857f13177839c68a5080d4e746745e43711d3cbc0ca4a108f98d63b2aa681698de60860894508581818082800980090990506200130360005262003ea1565b857f020ca696f531e43ec088f56f4b74325626cc4df712c0e5f0a907d88e5f0deffd82089050857f27230eede9cccfc9fa805a30fc548db693d13708c646841d16e028387c7ac02283089150857f01645911c1198b01d64fde34a342a1786497c05969a015439057d2fe75bb281c84089250857f2c323fe16481bf496e439c88341ce25f198971e14487056cfdca4a451a5d864385089350857f0fc082dfe70728e8450bd2074c3e22e1b022c124d3bffe8b5af88ae6db5085c886089450858181808280098009099050620013da60005262003ea1565b857f2052c174800db209d8cdca568dcc25b3be9642116ac4c77efe8a488b423521ee82089050857f28e420e10df2fbb5af96d621d55423190be351ce8129065a8dd9fd05b3ece9c083089150857f25698ca5e24a1b799f783c4462a24db655d6ae1bdacd1cb549d6e0bc3ae5069a84089250857f160a9981a5c89a57cf8ffbfa57d51049a297b61074422ac134d9b857d6984d3585089350857f21c91a39e145c3bc34d9b694b843f3bf8b7cebf59ddbb0a064642b069997f3d486089450858181808280098009099050620014b160005262003ea1565b857f1ac8d80dcd5ee876d2b09345ef112345d6eaa029d93f03b6d10975461e41734c82089050857f0ab3e6ad0ecf8b8e7c1662a4174c52225d822895e2755544b8dbcea5657ce02c83089150857f1c675182512620ae27e3b0b917b3a21ca52ef3ef5909b4e1c5b2237cbdab337784089250857f2cdbc998dfd7affd3d948d0c85bad2e2e37a4a3e07a7d75d0c8a9092ac2bed4585089350857f23b584a56e2117b0774bf67cc0dee33324337350309dff833e491a133bb63b2e860894508581818082800980090990506200158860005262003ea1565b857f1e9e2b310f60ba9f8cb73030a3c9d2a10d133bc6ba4ec1152f3d20de1465e9a582089050857f0e01e365ba5b3031abc3e720140ae746c9ab5dab987520c460bcd4f1fa5b22db83089150857f040884cdcfc64bfc7b7127340498d5c443382011b61c9a4b1387d85bc1264e6884089250857f190b1ee1205eb9500c74a3998f2bea36353f1724d6067ed0a0a17de311ef966885089350857f1647c72aec6c4388d04f52fc23cd9c08c1dfcf65ce61e165fc28d1f832bd3b2c860894508581818082800980090990506200165f60005262003ea1565b857f2430006346a0145f799880cc4c8736269f5494d89fb48b02842e595b71e4541d82089050857f177b9a08343917e1365107a3da3ae7f69d853902bb16bacb3221850252b757af83089150857f04a420e642b11ae94e58862a68f5e32609cd53d0ae29423439b11d04666df4f884089250857f25d0e0f739fb39fc105a88fab0afd810de2461858e956ccccdfabeddb6a25c8f85089350857f04476d91b7eff2fd85905cbf58651edc320cb15610eaed452c4d4ffa0c740a27860894508581818082800980090990506200173660005262003ea1565b857f1090c0b68b3d7d7b8bc9ca2419eb8dea1c28f6d5e1250cb5e9780fd9ca286fae82089050857f25393ce3b9256d50448a725c5c7cd5ad376f2d435855c10ebf2899cb5c6617be83089150857f25931c0c7371f4f1fc862f306e6e5830ed824388d6b9342697d144f0fab4663084089250857f2396cb501700bbe6c82aad51b0fb79cf8a4d353185d5808203f73f22afbf62f685089350857f26a363483348b58954ea748a7129a7b0a3dc9068c3cca7b5b3f0ce03b8724884860894508581818082800980090990506200180d60005262003ea1565b857f27ca107ca204f2a18d6f1535b92c5478c99b893334215f6ba7a0e5b45fcd689782089050857f26da28fc097ed77ce4662bde326b2cceac15f7301178581d8d2d02b3b2d9105683089150857f056ab351691d8bb3703e3055070ac9cc655774c1bb35d57572971ba56ee0cb8984089250857f2638b57f23b754aec76d109a2f481aa3c22547a11ffc50152d729af632376a9085089350857f304754bb8c57d60732f492c2605184fdc33e46a532bdec80ea7bc5519ede7cef86089450858181808280098009099050620018e460005262003ea1565b857f00d1727f8457ee03514f155b5806cbf748ec6857fc554010752ac93a9b7619ac82089050857f00ee1f3c66fbc05c43ba295a303c72fab5bca86805ec9419c588e50947761fa383089150857f0afafadcf5b4dd4a4a76b5a1d82415fd10a19fbcfc59078c61f9297eb675d97284089250857f0b2449f39746085e86ce45e8eed108ee65a234835a0a6a5ea8996d124dd04d0a85089350857f206b0ce2f1b2c5b7c9f37b0045227095f6c6f071ec3bdda76a7ddf4823dd5dd686089450858181808280098009099050620019bb60005262003ea1565b857f0feba4fb87834c7cb696e67433628cd6caffc3a4ef20fea852c7e1029459409c82089050857f254dbfac74c49b0b8926752e084e02513b06f1315e6d70e18173e972336e55d383089150857f0addb1372cee4e164655168c367559e19606c5bd17910aeb37719edfa0ca876284089250857f26b25b7e257f3e97c799024fb019f65c6ca4d8d81b1ae16221a589d68831d75985089350857f090995b79acec240413b8d4c658787e5a4657b9ab00bdb5b1960b1059e113ba38608945085818180828009800909905062001a9260005262003ea1565b857f08dbdc2e21ef11f2c57299687843cea3eb0d8e40e99131f42974178d44f73b7b82089050857f09e8aba671481197679faf752a0f78e342fe9c491596ab6758f170939785179f83089150857f1deb05180e833e45659052a7ebaf816c7efd12a7f9eec94b7bc7c683f1363d5c84089250857f19a70ec6bdfc9098a926efbcc04aa9ee248997e8b2c24af335fd6523e525087985089350857f21d773660adafb8a879986f9aab4890566353a3777d8a3f1eb93abe10bbf1f648608945085818180828009800909905062001b6960005262003ea1565b857f09f1890f72e9dc713e20ba637b89d5d397a6b01fcd667347f6f46617841c390182089050857f05af459361eb454d2a300c61e446998d48fa1f897bf219d608c2145c33b111c383089150857f0fa1a1d6829f0345664a66dc75a657335f336f15f340756cfa12fc850cc8b51384089250857f02e47a35bcc0c3a0bda0b1c0307ad543f4280fcf87f636f853655cf97a628bb085089350857f14f773e9834c6bdeb8f90e78bf4c24b7203411460112491036621895204d0f128608945085818180828009800909905062001c4060005262003ea1565b857f102d98cf502ed843255cf19d29bc7d8e642abe7cfd639992ffb091962fc8f7cc82089050857f043dd5f4aa5a76dd4c47f6c65da7ca2320d4c73ad3294738cba686a7e91373c283089150857f21833819c3337194a6c0d29a48d4f2676f0e7c79743a306f4cfdb2b26bd11efa84089250857f0f281925cf5ee649b474a6819d116ca3eb4eca246c311ecadc53262a3cff2b5385089350857f0d3e2477a7b10beb44709c7746d6824edf625dd60504d5dc93ce662f15c238d68608945085818180828009800909905062001d1760005262003ea1565b857f2cd7f641bedbf66956ff8a01be9cde35d80f80ab51e73b49acbfc3eff5aefc4482089050857f29e95b492bf2f95f4d09380f98b74e389149d24045811d7a86dd861310463cf883089150857f22da66bc62e8f011266efca86a6c810f9ae4c51af6ffeb57f8b3c50df83cc13e84089250857f0fe6d30de7a82d163023491794f4aca3220db79e8129df3643072d841925554a85089350857f0050e842a1299909123c46eff185c23ad312d03fef1adfecc7e07ecb298fd67f8608945085818180828009800909905062001dee60005262003ea1565b857f2130a3a7b3221222be34cc53a42d7733666f9ddf714ed7c5885cbbdb63108c2182089050857f2df9ee294edf99e3d8d5883fe0566c24aa66731f34a93280e1d328e67b33c9fa83089150857f1bf7d6e489ad8c0cf26eb68cc21ff54158132396dc250aeba4b6fc5fc337276284089250857f0c602fa155be958761eaf739617ab136cf7b807728bf7fe35d4778d311780e5485089350857f2e50e2c5b36aa20532407d86b8d22d7d5154080a24972faeb63faf0121ed7f218608945085818180828009800909905062001ec560005262003ea1565b857f17c2510982a7b5825710d6290ec4f782f674995ee8409b42b459123b180332e182089050857f0b0d52f03c8af7276803ecf2465b885b21337b538eabd2f6b2ab255f376b42a883089150857f0f5633df1972b9455953d88a63f80647a9ac77c6c0f85d4561972dd8fab8bd1484089250857f0ebf7ad29ca13804e1422e939681155124780ff43e76e929035498130a7f157285089350857f1aff13c81bda47e80b02962173bba343e18f94bee27c8a57661b1103a720ffe28608945085818180828009800909905062001f9c60005262003ea1565b857f210449dbf5cf3061da2465be85505862d3f31de1a3b58ff35713be57efac6c0782089050857f088230c2794e50c57d75cd6d3c7b9dbe19d1e2f1d3001044b93ad1c3ee62981783089150857f1c408c256490b0a1da08dc464138dfc78cce9a9e16c7705617a4d6dbb20e7e3a84089250857f074517e081eb4c1f22d1771200fb07658f7c77654d58440490dd6f557e9e390385089350857f02d04e9c21df1dbd88524bdb203691b4cee5530559d6cf0fa05adf61e12fdcbf860894508581818082800980090990506200207360005262003ea1565b857f2eb7a011b8bce91082e13ebd75de3b58eb9b4650dae9f11aa81db32cf1b67b1382089050857f2efda77ed35f4af0299f75d6e8a849b54d2ac6bf95368304e6030c18f0cf17b583089150857f09199dcafd50ce642eddbeda65206d4f61a73d10852b8114c51b2440192ae06484089250857f268c5cfc446d399c4dd319db666a75b5cb655d8c1797e9fa76181cb4216e156285089350857f2303a652c949071826b0e9a36c80578697b44e912cce6687012854eda11a18dc860894508581818082800980090990506200214a60005262003ea1565b857f27c53563b12a6ee2c3f041f31dc45922bc5353eb110868d237073f4efb35fbdf82089050857f1201a87eaf4ae618f02bd82d0a5109049969b5248cfe90f42c278f22615d2b0e83089150857f2c43169439fcd69ead8214997bb069becafcb1ba2c51e5706cb4b43dab2a443d84089250857f0683597315359040ea03c45d6984c6894f46cbb36d702e3c4fb9847e6304d94485089350857f03545706706eab36afb93b128febd16fb0425e158314197b77795ad3a798d183860894508581818082800980090990506200222160005262003ea1565b857f1a33c254ec117619d35f1fc051b31728740bed23a6a37870edb393b71a0c0e6b82089050857f1ffe6968a4470cd567b0c002281caf996e88f71e759b87e6f338e517f1690c7883089150857f0fd66e03ba8808ffecb059c899fd80f4140ddd5d2a5c4483107f4e02e355b39384089250857f263ab69f13b966f8197394552906b17e6c8617a7bdd5d74a7be3396b7fe013ab85089350857f16a425e47d1110625054d5a165de413e3bd87d5aa3958fdd6eb7e03e39ba404686089450858181808280098009099050620022f860005262003ea1565b857f2dc510a4719ec10cad752f03c673f0e253cc31d13e39e909fcc5f73af9138d9a82089050857f24df8e8d856c5b5e1bd1cad23d07dda3423c5179329b7a82cb4aa709a94576e583089150857f2bcc94ff4fc3c76f3cd5c68915a042e87628249a01b09561bdf24a6cdce5620f84089250857f076c1e88dc540c8d8de54e343df7c429d3295f52c38cffe6b48be86852da97df85089350857f09b5f209a451ac431c051fb12d9a5e4fe40ee1601120947da990fb8e12cb46e186089450858181808280098009099050620023cf60005262003ea1565b857f205f17b0d8729e2eaa88d6a44135a6ab64e9424f55b0f1ea0683af75eb677c0782089050857f281c5c688836f6cf912638c38be046cd091681f0a41761720cdd1edf9f23702983089150857f1a053e6878e900f45f4d67448c471cf3009a44e7a02ea50e4afa44f2592621f584089250857f100dc7d426debe3007fb7ceac84e4f5468efcb897e7bbee981742839d59e064c85089350857f17022672a016a957bb87e2cfadc8b75fb28905bdb62c82c80b1cb31b411e49c886089450858181808280098009099050620024a660005262003ea1565b857f1086db7e2760fc8b71053a87ebe151239fb8b547182b170de0c27203f954f4d282089050857f15384fe39d73b63302460ae4c2942fac2b41fb65a185536fb85dd24fd758406483089150857f2ebb599fe9136d424bf4abc5342c6c7447b1a853205fcfb5519e55135770900884089250857f1b4b5e87cfb9262cfec3c0f0542e4c5a4cf278292b4ce3eed996fac6f4d3728885089350857f2465053ae50b6885801f3f82e302cafbbb4a7581bb4fba60b637febe659e5057860894508581818082800980090990506200257d60005262003ea1565b857f114f32edcdea09cd095c5bb5d38f1b97da9f05e18b3708bf6e0ab9d3d54859ef82089050857f2bc70dfeb2baab2f6b387cd77be779ac2e5e5519f3d18123ee28d8c2543c714883089150857f01c9bf7a203ce22b775e3a61ad7e77b6a78348b9f6ec68a412e49bfe32c0541584089250857f0514b0fe5909ea887bedb0295fbbcec355cfb575ff6a97cd9f4ad00ccb57ee9b85089350857f267c76ec81934cc81a132a8b058910a12092520b12a201af03e3202d7b6c1b7e860894508581818082800980090990506200265460005262003ea1565b857f29170e3322b3d8d5c78c84babbb470adf1622493ce83e95cfb151cf757bde5d682089050857f019f6a8124b19e33af33e5d3873f9c335c6f09a45486cab536dd596ca41d951983089150857f1904aa4d6908544a8b348e9db1981c27009ed8ea171518ae5405d036242b60e984089250857f26f17873949bc679f7f043956694e422b3cee1de9dd6f6473b932a476455ff1a85089350857f1ac668f612b8243c193b33720b8aa54040c476031197131ebdcac9b18bc48f75860894508581818082800980090990506200272b60005262003ea1565b857f0996d961a75c0d07196dae45bf624766ccfbf8555be9796da52f81568ef0663d82089050857f030c97e1b8cad1d4fd50d1b4383fbe6674d171f99c63febb5425b395c24fc81983089150857f06e3ad6a46900e2d3953370255b68f89b3e523f1fe502642ee226f2d8bd0848f84089250857f1d6b3755331cd0216b6880e42f9880f565cb94b0e0455153a329890588cc916e85089350857f28e4dcba4b96f12a59b041535e730ac8c35189dc0b85ac033dd38c08bae531f2860894508581818082800980090990506200280260005262003ea1565b857f08b6086046a835508ccf484f2974b6a6b0712a476260376c7a3b3e4bc4a47a1482089050857f162cd2ca7fe3b5f1444bcec97812019bb6fd85fba6a0536a89643e15b9bb3b5283089150857f28f1e03baaea9bbc05af5b11937e4f5cb5c9a9c1192063d1998c01c64d483a7684089250857f1bdb062778d7c15da395af2734c25faa0127d2aab4aa71366031a0bb6791ce1085089350857f2375839502e09890cb2914e829627e0e0fc98870b2324a8b50329ebdd24749cb86089450858181808280098009099050620028d960005262003ea1565b857f1fa8662fbcb61fb3ad7c55668dc9423a332dc87cfb2df456e92d33611ed7bb5082089050857f1e4fad2dd6b0a6f1f8707f721716c8a446e2fb2c47a5138f3f7f9736079d769483089150857f211256d16c7269fd6df6f5fcdd1fa788ba3bd050059f53d261b0f5f13731ffe784089250857f2e49084b336eceaa4f8e2a2e6af08318f42060e574dda341f4a1079b12bcc5a585089350857f0ce19f54cdc39f7f3bf35192ac6808211aecea08dfe14cab758d25891fb00bb986089450858181808280098009099050620029b060005262003ea1565b857f0011c5d56c390e893cc394221261d8748dc60451e4ae4e1c84a8468bab2c14cb82089050857f17d79ff06b63ac2a8a9e05ee6af3dbb7ca60e17bfa39b47514a8cd8051579b4c83089150857f19a7d3a446cb5393dc74560093592b06b1a8b35cd6416a2ecab00173639015fa84089250857f030c00a0933dcdba2a808b2e1b9282f331f04596d8928da7aa6c3c97237037a685089350857f16bcb447ce2d50f3ae25ad080695382e935d2d00184c4acc9370be8aab64139c8608945085818180828009800909905062002a8760005262003ea1565b857f12341b46b0150aa25ea4ec8715312997e62124f37cab7b6d39255b7cd66feb1d82089050857f0e86d13917f44050b72a97b2bf610c84002fc28e296d1044dc89212db6a49ff483089150857f08e6eb4089d37d66d357e00b53d7f30d1052a181f8f2eb14d059025b110c726284089250857f2ea123856245f6c84738d15dd1481a0c0415ccb351a1e0cee10c48ce97ca7b1885089350857f2dca72b2ebcab8c23446e00330b163104195789025413abf664db0f9c84dfa6f8608945085818180828009800909905062002b5e60005262003ea1565b857f06ff9ed50d327e8463329f585ec924b3f2f6b4235f036fa4c64a26cbd42b6a6b82089050857f246a10b7e3e0089947f7c9bda3d54df8e2a60e0cca84ea2ac630a4535afbf73083089150857f22a63501c5f04b9018719ed99d700ee52f846a715ae67ad75c96b39d688b669184089250857f2f4c50477f7fd9c671799ac5d2e224cdb9164f58351d8aa140ec07e514fae93785089350857f10ffb7aad1f51c7d13b17f4d876d9a1e38f0ba8a4a23d4b50cda32cad851567e8608945085818180828009800909905062002c3560005262003ea1565b857f0e9cefddc3c2d3bea4d39722532d5420784027352187e7af1a056935c35803ae82089050857f07af84a4d3141e7ac23352e6dc6ea4afa1656f96a33c8978a3e83bdd4ba62b4183089150857f2d9e31a10aebc761f8de00d14b1e566d1a39323d6e89b638e940f3ec8a22c3c584089250857f27f19a6532e66b5333db1afd592f66f1d36034b314dad8447656747be27e64c785089350857f0058fa3c8454d63354b2024c3b4a577a180ed99f8f3155cd7e4d617d47d07ffd8608945085818180828009800909905062002d0c60005262003ea1565b857f041627b6715b780967957c080699343eb0414a205d3a175d708964956816a5d582089050857f006ac49dd9253edc7f632e57b958ccecd98201471cf1f66589888f12b727c52d83089150857f0131adffd8bd7254b1d8c3616bbe3386ec0c9c0d6d25a9a4ec46a6bf1830139884089250857f1c4a6f52c9fccf7a4138e413ef62a28377977ad7e25e49a3cf030e1cd8f9f5b685089350857f03f2a6be51ec677f946551b3860ea479fee048ae2078aeb7d1f7958d2c2645f68608945085818180828009800909905062002de360005262003ea1565b857f2da770aad2c2eb09391a0cb78ef3a9648a1372d8543119564d7376396b8ddc6282089050857f15278463665f74cddc1802febfab02cec9d45fe866c359c738062afb75d64a0383089150857f12fe278aa36544eac9731027090518d434e38ea966a08a6f8d580638ac54c77384089250857f149b9c802182558a4c45d119d3f4cc7fd8587604ca4f0d6e21b06ff30b6a23b685089350857f0812e7b4d847bc8517d19319772f3c9855e044fd60dbac9a0adc4959b691dfe48608945085818180828009800909905062002eba60005262003ea1565b857f02ed8d8ddeafe3d9d8df7f28a0bfaa7f555813c7e7503aea2a66973703a0c61b82089050857f0ebd073ba0537b514deb6029f921029e55e5e4d9a03d6b6ba1304038662d4db883089150857f15c754d5b14b2c4205c6ba8d2ccd028255b3e792c6afa08b44ee75b62eff9f5984089250857f169515c89ac5479db0ed8fa6fa311b391cc1235270f4cbc5c29e7cbc30e8732a85089350857f25479fbfb3a68f982388f2621001101608bdc29f6ff037696d9161f5cd9a4fef8608945085818180828009800909905062002f9160005262003ea1565b857f14475c4bd520451f3c852cb0311a578ca7f8e6e972182196ce09486e94be607182089050857f045a691066cc66bec9baf2798833a1dfd3a847502aec8d5f5c4e73363d09779983089150857f26029c0c267c799fb833ac8a11e3a3f0147a8ca037221b90013b8bcb37eba68384089250857f163facb34ff572fbf7c946969c1c260873ce12a6a94a3e45b8101d5b948d164185089350857f2c714e96e1913b351d969320cc69d5ec13e06a6275e58688af8ee00c4240ee28860894508581818082800980090990506200306860005262003ea1565b857f1c1661e2a7ce74b75aba84665ecd2bf9ddd6268f06debfe2d52b804eff1d5fa682089050857f06a69ae795ee9bfe5e5af3e6619a47d26635b34c2a0889fea8c3c068b7dc2c7183089150857f113d58535d892115c5d28b4c19a3609374dbdbadf54195c731416c85d731d46a84089250857f2ab89102e2b8d5e638ff97d761da6042e534f1ff47f7917a2ca1a74063b4610185089350857f03c11ca79e41fdfe962730c45e699546349031893da2b4fd39804fd6a15ad1b3860894508581818082800980090990506200313f60005262003ea1565b857f27096c672621403888014ddbbbfc9da1f7f67b4d4cfe846c6adf040faaf2669c82089050857f2de32ad15497aef4d504d4deeb53b13c66db790ce486130caa9dc2b57ef5be0d83089150857f0dc108f2b0a280d2fd5d341310722a2d28c738dddaec9f3d255754448eefd00184089250857f1869f3b763fe8164c96858a1bb9efad5bcdc3eebc409be7c7d34ca50365d832f85089350857f022ed3a2d9ff31cbf82559fe6a911843b616945e16a568d48c6d33767129682d860894508581818082800980090990506200321660005262003ea1565b857f2155d6005210169e3944ed1365bd0e7292fca1f27c19c26610c6aec077d026bc82089050857f0de1ba7a562a8f7acae93263f5f1b4bbec0c0556c91af3db3ea5928c8caeae8583089150857f05dbb4406024beabcfce5bf46ec7da38126f740bce8d637b6351dfa7da90256384089250857f05d4149baac413bed4d8dc8ad778d32c00e789e3fcd72dccc97e5427a368fd5e85089350857f01cdf8b452d97c2b9be5046e7397e76ff0b6802fa941c7879212e22172c27b2e86089450858181808280098009099050620032ed60005262003ea1565b857f1fc6a71867027f56af8085ff81adce33c4d7c5015eced8c71b0a22279d46c07c82089050857f1040bef4c642d0345d4d59a5a7a3a42ba9e185b75306d9c3568e0fda96aaafc283089150857f16b79c3a6bf316e0ff2c91b289334a4d2b21e95676431918a8081475ab8fad0d84089250857f20dff1bc30f6db6b434b3a1387e3c8c6a34070e52b601fc13cbe1cdcd59f474e85089350857f0212ac2ab7a6eaaec254955030a970f8062dd4171a726a8bdfb7fd8512ae060d86089450858181808280098009099050620033c460005262003ea1565b857f2f29377491474442869a109c9215637cb02dc03134f0044213c8119f6996ae0982089050857f0984ca6a5f9185d525ec93c33fea603273be9f3866aa284c5837d9f32d814bfa83089150857f0d080a6b6b3b60700d299bd6fa81220de491361c8a6bd19ceb0ee9294b24f02884089250857f0e65cd99e84b052f6789530638cb0ad821acc85b6400264dce929ed7c85a454485089350857f2e208875bc7ac1224808f72c716cd05ee30e3d20380ff6a655975da12736920b860894508581818082800980090990506200349b60005262003ea1565b857f2989f3ae477c2fd376a0b0ff3d7dfac1ae2e3b894afd29f64a60d1aa8592bad582089050857f11361ce544e941379222d101e6fac0ce918106a463290a3e3a74c3cea718945983089150857f1e8d014b86cb5a7da539e10c173f6a75d122a822b8fb366c34c8bd05a206143884089250857f173f65adec8deee27ba812ad29558e23a0c2324167ef6c91212ee2c28ee9873385089350857f01c36daaf9f01f1bafee8bd0c779ac3e5da5df7ad45499d0991bd695310eddd9860894508581818082800980090990506200357260005262003ea1565b857f1353acb08c05adb4aa9ab1c485bb85fff277d1a3f2fc89944a6f5741f381e56282089050857f2e5abd2537207cad1860e71ea1188ee4009d33deb4f93aeb20f1c87a3b064d3483089150857f191d5c5edaef42d3d02eedbb7ab8562513deb4eb34913a13421726ba8f69455c84089250857f11d7f8d1f269264282a263fea6d7599d82a04c74c127de9dee7939dd2dcd089e85089350857f04218fde366829ed90f79ad5e67997973445cb4cd6bc6f951bad085286cac971860894508581818082800980090990506200364960005262003ea1565b857f0070772f7cf52453048397ca5f47a202027b73b489301c3227b71c730d76d6dd82089050857f038a389baef5d9a7c865b065687a1d9b67681a98cd051634c1dc04dbe3d2b86183089150857f09a5eefab8b36a80cda446b2b4b59ccd0f39d00966a50beaf19860789015a6e584089250857f01b588848b8b47c8b969c145109b4b583d9ec99edfacb7489d16212c7584cd8c85089350857f0b846e4a390e560f6e1af6dfc3341419545e5abfa323d817fed91e30d42954a6860894508581818082800980090990506200372060005262003ea1565b857f23a6679c7d9adb660d43a02ddb900040eb1513bc394fc4f985cabfe85ce72fe382089050857f2e0374a699197e343e5caa35f1351e9f4c3402fb7c85ecccf72f31d6fe08925483089150857f0752cd899e52dc4d7f7a08af4cde3ff64b8cc0b1176bb9ec37d41913a7a27b4884089250857f068f8813127299dac349a2b6d57397a50275142b664b802c99e2873dd7ae55a785089350857f2ba70a102355d549677574167434b3f986872d04a295b5b8b374330f2da202b586089450858181808280098009099050620037f760005262003ea1565b857f2c467af88748abf6a334d1df03b5521309f9099b825dd289b8609e70a0b5082882089050857f05c5f20bef1bd82701009a2b448ae881e3a52c2d1a31957296d29e5763e8f49783089150857f0dc6385fdc567be5842a381f6006e2c60cd083a2c649d9f23ac8c9fe61b7387184089250857f142d3983f3dc7f7e19d49911b8670fa70378d5b84150d25ed255baa8114b369c85089350857f29a01efb2f6aa894fd7e6d98c96a0fa0f36f86a7a99aa35c00fa18c1b2df67bf86089450858181808280098009099050620038ce60005262003ea1565b857f0525ffee737d605138c4a5066644ec630ab9e8afc64555b7d2a1af04eb613a7682089050857f1e807dca81d79581f076677ca0e822767e164f614910264ef177cf4238301dc883089150857f0385fb3f89c74dc993510816472474d34c0223e0f733a52fdba56082dbd8757c84089250857f037640dc1afc0143e1a6298e53cae59fcfabd7016fd6ef1af558f337bab0ea0185089350857f1341999a1ed86919f12a6c5260829eee5fd56cf031da8050b7e4c0de896074b486089450858181808280098009099050620039a560005262003ea1565b857f069eb075866b0af356906d4bafb10ad773afd642efdcc5657b244f65bed8ece782089050857f171c0b81e62136e395b38e8e08b3e646d2726101d3afaa02ea1909a61903369683089150857f2c81814c9453f51cb6eb55c311753e84cbbdcb39bfe696f95575107502acced884089250857f29d843c0415d35d9e3b33fadcf274b2ab04b39032adca92ce39b8a86a7c3a60485089350857f085d6a1070f3513d8436bccdabb78750d8e15ea5947f2cdaa7669cf3fae7728b8608945085818180828009800909905062003a7c60005262003ea1565b857f11820363ed541daa10a44ba665bf302cdbf1dd4e6706b02c9e2a5cda412fc39482089050857f201935a58f5c57fc02b60d61a83785bddfd3150e05f1df5d105840b751a1631783089150857f0a8c2820c56971aae27a952abd33a03d46794eedd686cd8ecfed610e87c02e9a84089250857f180638ff301a64ca04abd6d0bd7500b6650b65ff33e6be1fd50dbc163a28187785089350857f095c716266f1de59044f97114a4158a3f85ca8a937cfbec63e9b321a812dd36b8608945085818180828009800909905085828180828009800909915085838180828009800909925085848180828009800909935085858180828009800909945062003b8360005262003ea1565b857f17c31ea02fbc378320d86ffed6c7ca1583b618c5c1a687818d4087a497d7349082089050857f05b86c4bb8ef318b6a7227e4192d149d3c17a9764ccd660de4d50a77f192a91b83089150857f265bc95df4a4c4876ff70d7ea2fde2c7ab15f4a6ae0d237cd6ce74ba986c7a7b84089250857f24752b47bc6c6bc8d9bbe48f5fef2f6908701739c5f5b4b3d6c886d4715c792985089350857f14814a1e0f492a4ea0d86e527a96482178d624b98da96ee5e583b9324d974efe8608945085818180828009800909905085828180828009800909915085838180828009800909925085848180828009800909935085858180828009800909945062003c8a60005262003ea1565b857f10def931073b6479bd60577378f29381997c8e041d3cfb3dc7523bca906f00bd82089050857f14f7ae770bf7e95f7f706c0d8ab4ed03fa0b880d28c69d031b4592c98610175f83089150857f1aef50a0cee751b59f926af40e8035d19decc9d428ebe4e775c5cc9dce1ce58984089250857f041935607172f68eba65ca60068dfe3b086c2a2d57d09602951214b57e73cf5a85089350857f26863e9dd24255d1573bd083959b856c0493fbefe83c819837a151d3bf452cb88608945085818180828009800909905085828180828009800909915085838180828009800909925085848180828009800909935085858180828009800909945062003d9160005262003ea1565b857f2036efb6f9830965eb3d7a068bd087c9f5adf251ba62052c652738e63ff8b3af82089050857f0c712a975b74dc9d766b639a029969ca30be4f75a753f854b00fa4f1b4f4ee9b83089150857f08014dab3cd1667e27afc99bfac1e6807afdff6456492ca3375731d38753969984089250857f198d07192db4fac2a82a4a79839d6a2b97c4dd4d37b4e8f3b53009f79b34e6a485089350857f29eb1de42a3ad381b23b4131426897a32709b29d53bb946dfd15784d1f63e5728608945085818180828009800909905085828180828009800909915085838180828009800909925085848180828009800909935085858180828009800909945062003e9860005262003ea1565b60005260206000f35b8560205182098660405184098791088660605185098791088660805186098791088660a05187098791088660c05183098760e05185098891088761010051860988910887610120518709889108876101405188098891088761016051840988610180518609899108886101a0518709899108886101c0518809899108886101e051890989910888610200518509896102205187098a9108896102405188098a9108896102605189098a910889610280518a098a9108896102a05186098a6102c05188098b91088a6102e05189098b91088a610300518a098b91088a610320518b098b91089850965094509250905060005156", - "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063248f6677146038575b600080fd5b609860048036036080811015604c57600080fd5b8101908080608001906004806020026040519081016040528092919082600460200280828437600081840152601f19601f820116905080830192505050505050919291929050505060ae565b6040518082815260200191505060405180910390f35b600091905056fea264697066735822122076693f2c6657888a6fe5d339358f924257dd58be913f6cf3a0f8a0284f32c22c64736f6c63430007020033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/contracts/precompiled/PoseidonT6.json b/packages/contracts/precompiled/PoseidonT6.json deleted file mode 100644 index c4074054..00000000 --- a/packages/contracts/precompiled/PoseidonT6.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "PoseidonT6", - "sourceName": "contracts/crypto/Hasher.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "uint256[5]", - "name": "input", - "type": "uint256[5]" - } - ], - "name": "poseidon", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - } - ], - "bytecode": "0x38600c600039614c136000f37c01000000000000000000000000000000000000000000000000000000006000350480634937a2581490636d2228d614176200003757fe5b7f124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d186020527f11924f02fd19b09255aaa1cf46ea0518e3d7bfeef47421609491011db0bd0b026040527f247fa7f022304a1994ff505456c2201ef9b717369498d3ffce446601ed9df8456060527f03fd7b19ef2c861f22f77ff810f54e277bc94eb76c02d79d986be3dcdf051c3f6080527f18bd41239c3e71579a677443ecffbd555a81eeeea69352a68b67c8563c0c2a0660a0527f2d78c3a5d28de9ff35bf0a257635196e5730ca7f40493277078cd75da8b4ebdc60c0527f0a514a5c227f4cec95dfa029e8dd124c34895aa46bb27c0911f3780d5015540a60e0527f192e16d17d956b257b85a652eefdf2ee09589eac5be80915775723d2cb1da06d610100527f298ce0c1e3113bb935c7058e7772b533b1aa9db0c0926bdc8917e5605ca3ac10610120527f094cb4e83621afd271e41bc71727f0158ebd612239ac9d698b17fe4be05b7fc8610140527f03d880395be93c27d649af5fd142e76b33918cb8841d5a28173bd5cf7d328791610160527f28eeae6b5866ad68e443bbaf91680db7d7e2b3037e38fef61b42cbccffceca81610180527f278bb49a7b4e44aea46eb0f882cb692801a6e60fdd5b5c23c63cd65ccce4fe0a6101a0527f063edec1bed831f506af8db648d6fdea145345887e8bdcff109035a1d9b674d76101c0527f1baef1cb5509b526a42061fb53657f99b3232500e855192cbe8c940e068c475f6101e0527f1324564ac7bdf9e22164e9858d7fa8e368b165eaea3daf4eb67ee59c0df2e5d4610200527f005761b8c6aecb1a8ca4ea4dfc2c8376064a4a8004ceeda210a55240562ddc13610220527f10c9e283159d58cb4cb2e35fde83a3ba1fdc28002ed9963d2a99f186178a148d610240527f0c399e9f67aa40707a203feefb0b958bbdadcec5ca34901d253d026a2419f6a2610260527f083f0df3f1a0351d0330ec3ff602ca8cc353b7f6e762c7107184cd7b423449f6610280527f1a6764d5943fc4a720b4c0a19fdb8c711984307287a58b9b5f9f5d58212cb2636102a0527f011a63a26feabf87fa66bde66cc25a922c96382d76c6a7ff48f1537beaed683a6102c0527f08ca7b64657c3548f32bef5b63ad24288a41c0b251099ad27f9434307e3e64d46102e0527f01998270471e9361955446b0cdb8bea915ec0675f1cd648ddcb04303507a4489610300527f1d6b3d5f6ea369c26f825d2362933eaa31ea35ec0a77c1fbd9e01ca1523e4432610320527f119ef188bb3dd0d32306976c19941e8664be687e7a69692da27da215a6f06d40610340527f2d9e0ab5c06893dfdfd03481381ba86b6e6292df5609d71f2c64b2d9a79f809e610360527f25f16631bf77060f7ea34087c025bf135784319ef08cda2e31419ee0a529e658610380527f144c7a11da5a7c5dabae3f33fbd03cad86d18bc594c79a497ecb9894edb554f16103a0527f0f971162627723f3feadacb28b0c104cb8f74de508752fa8d7c0db2af13de8ee6103c0527f24be510095436206dd0abd0b0cbb95c883ab304aa52598b1a69306ec981a688d6103e0527f211610e2ad4a377426fadf7068b0c1a6c299a164c1c1a603eaed944870d0b9b9610400527f15a67d981041b1f6f09f3f9ebefd864e779d3af08157786ac077505e50ec79fc610420527f049327fa79d28c12a2c82406947f77f06775b0287468b3136877701dbe7c9598610440527f230940dcc5232658ff9c29697a3fd416d170e8c998f1aa85dea0c42d79f951aa610460527f1b121c049cd1159e289007e0c9da9995cc4bab4c26fb888ec3972a8a2e656964610480527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016084356064356044356024356004356000867f1448614598e00f98e7ae7dea45fbd83bd968653ef8390cde2e86b706ad40c65182089050867f0ab7b291388e5c9e43c0dc1f591fb83ecdb65022e1b70af43b8a7b40c1dff7c383089150867f2b7cbb217896f52c9a8c088e654af21e84cde754a3cef5b15c4d5466612d6adf84089250867f2bc6b0ddbe1d701b6570428bdc1ca1bf0da59ff3bbbb95fc2bc71c0c6e67a65c85089350867f123a55a31980384f3d20b2cecbc44ed60c38c11f7d20e9271efab9a905eefd3c86089450867f037501cc8c9dc819309a769f4df098e588b01858bc8eb7e279e2883be9fb8c5387089550868181808280098009099050868281808280098009099150868381808280098009099250868481808280098009099350868581808280098009099450868681808280098009099550620006cf60005262004ab3565b867f1c2116e47e03a86bb11695b0a5f6dab6b9a460b1eb951ab01c259eca3fd47d5182089050867f2c18213489032e85a9c8cb8e9a65839bfaed13e57bc0fae49dbdaebf54f56f9383089150867f2ee8fed3d4d2c71a0429eafd8e5db1718f29e2227985fdf2ad8703c835b9e03184089250867f28c64d8f5ed7aac004c92029d9e9bf91ba9436d1cce94b9316d111c70a0c171485089350867f18a01d9ffb747ae0de3e83c707f8b24f682c84f15abf571b34254a03478665e086089450867f1c21d92bef197e73b234e4777b60db14e642a56cee71515d54e1ac71cde72bd3870895508681818082800980090990508682818082800980090991508683818082800980090992508684818082800980090993508685818082800980090994508686818082800980090995506200080860005262004ab3565b867f0ad404ccbcb1e195897cb60c80981ebb9d66a6677dbbedad8b6455fe62d807b182089050867f0a9b6de833064f93b6adb99af6c005945cb654cb7bd14c8b97af8b60cc1fb38783089150867f13129e3f930aed6d47690331ff09dc5160efa58ddce2c3e6180d45bec3aa3a6f84089250867f0d7a614c8991508ab1ce4895813bb1c82f18bf7bfc9e280ccca18079839387f185089350867f0532f7ec36e30041b0486986875c913a49bddf2f5af5febe8c31f2f4094ffea586089450867f06bbcb8e8e180201293e712f4950f1b0bbee808c9d64263c84d9d8ae155cb892870895508681818082800980090990508682818082800980090991508683818082800980090992508684818082800980090993508685818082800980090994508686818082800980090995506200094160005262004ab3565b867f0f558a4db1a3ac07f61e2e6bee947f73586bf40f211ceb4f687ca5678a9dcb3382089050867f2be140a60b5b5f2f8edd78a818a969b20c643e419bcf0b577c24a0d0e7acfe9883089150867f1c49c4b9a9f09f7b9ad5f74ebacc710512b8e867bace27cb0dea06e89b96f63184089250867f170c1a732721b12cde7f33e476a39a1aa77a81c06e2eac503847b00d597652db85089350867f19c27d0e52f65ca34f4e31a068e49331c6bfc39d9241f9d4c302041615cf27f186089450867f2f1bdc5254f9220c1a731fc5276964dab26b385fa40b6b04bed9960e2543ba088708955086818180828009800909905086828180828009800909915086838180828009800909925086848180828009800909935086858180828009800909945086868180828009800909955062000a7a60005262004ab3565b867f05b42d2fbccbf4d39d2be9339cabe9d0dc6d921e855cd91154b639d28d4a1cf082089050867f1220040715a41ad59f4f410e0c05a42c5fd32ac52fe9d06f88188d71f61e093583089150867f25f9526526155b83946609f7bb9507dd4925ef871dee916d9144ebb4ece1343c84089250867f017bfe4284299ae7740b6d0e204951e314a8a5d0452419147978a95b3474244485089350867f2a5d4764021ca71d78a9674cb6708f1588d2ceaf3578c4111cf8b359eef089cf86089450867f17f02dab745fbe3c081321fe5cef845e7b8d070b2514d29b2a7b7d89cc0815da8708955086818180828009800909905062000b7760005262004ab3565b867f19da62626db7199b65f4adcf57fa4a3dbaa1764a7bd155708ee6f378c89ef01382089050867f0f88e295fa2ed81b426c91fa69366a73edf75f39bf18634cd266ec4038829e0583089150867f1fe31c5548546c7948fe4ee1bd7412e3280eff7d20cb09aa85f49f276614801784089250867f10fdc1613bdbf67f38bdde561b2f91e4cc48b59f98d643638fdc0afadbfe126e85089350867f1f2618c2ebe9574508b9c52f0000e33ebfddad1a03fdd6bca6ef7f0093127bef86089450867f129fe7fc3efac6a8ab23dba6d886f394da11f5953cf98e28269a0dba2a745dd38708955086818180828009800909905062000c7460005262004ab3565b867f15afd4cdf1e4f820c1631d4ab85ca4ba3bafcfee72beade9fae60523102448e382089050867f1f2c74ba5c367e370d728e71e15b268851a7bb8b45528cb734956079ac99b01283089150867f1130e1872d76f2f9369cf59b95edf9ce19f01fa89c9c36b26e09def6786dad3c84089250867f13523d173f7e6badb73b63fc1c9bbdbee242c61bc68656493327533a5c1b1dca85089350867f14da40d0af427a65f1841b5adc96538653368f7254cb5667ddadbbad7a574cd486089450867f0091f96400e4297ea85bb186c17b304e82638e57fd631ff6315976e1a5dd8b868708955086818180828009800909905062000d7160005262004ab3565b867f303329bf9031c5515b9a34d49a64bb6a0267bc7b54a0deca5c450277a002cdcb82089050867f14ed47e55c1da1c2f05d3c1a1b2e6c18509fc8336ecfe9db737916e283fa821b83089150867f1161f10b357775d810ad53bcc4a20d5add2b03251c747deb04ee94c565e58d6b84089250867f17a8a50ae72ce707f22bc070eb992851ca914eb94cc68eafbb8a96a714eb822185089350867f1a6c61d795dbaf62f99250b37ec5df88645a1c153791db6312b932dc250e4f6286089450867f1f8bd2ab8aa840664c4eee198c4684dc4b05772bb2a0869da6722b15f447a1338708955086818180828009800909905062000e6e60005262004ab3565b867f1ffcb852a4f0027a9799f131cd74b98ccfb8cbc06349d8fefcc62f10c8fb3e2f82089050867f035e742ec52f19b36d489c720f467ffad77cd53bc2db5dddb246b23021f79f1883089150867f1dfaaee41bdf94d783aa29fc62b7ec7b55673aa818d305fd42d175a05f2e3d8684089250867f2821378477a02e995005a5635088540945bd333f2d1455f038a219b8c4796b3a85089350867f1db4a4d0f238a570b1061c6eec81c02f31ffdd4a7c19e763174f238d0489742186089450867f14bf7889457b20b7a1367b34a3a538217d693b52426aff40a4bb72893b1784ca8708955086818180828009800909905062000f6b60005262004ab3565b867f2ced52c2bf296f87e57410c3ec9a9483a796d164f6049127109ff0d3a9c0846582089050867f1ddeac5805a7f4ada4d0441ed108e3149d4ce6584f49ae5bdfd46d6766eea33483089150867f2e36b4e5e9c97b462304e8e2b5f9dc88e1c9f2161ba040673f911123f042ae7084089250867f0c6840d1cb0666dc59e89b1865275d8a164b447c5ed64347caee63502c238d5e85089350867f137e2e3e89e71d461f4c9bc3e8f12183262a4d1db55c589b2caeaac01238f58c86089450867f250932e7b0adcf2c84ed4bfb60a36b6b82e55aa94751157b1d45794b081c8aad870895508681818082800980090990506200106860005262004ab3565b867f170a7292f5634c06dd3bf09ab5c9c4ecd4b00d5ce2f35f972b4555391f16b42d82089050867f0d68cbbe77289e78d5cbf51d70f1b75ba215df4e7bd0149d10b2c50f2a4f3b8183089150867f0caf74563b90525f645a6d2036ecd1306fa1dc680b49d9ce4ed24c974997317884089250867f20a7d1c0a27fcce78ffe372f4c58306b166f9456ed46cdeb255e395b7d30d42a85089350867f0623f3226b5470b2789b8a53040e44443385e96b9cfa0be4d35015158a46846586089450867f1632308688c25e790f57d68a5350241242a56305347de4a5009ce46b8cdcb91f870895508681818082800980090990506200116560005262004ab3565b867f2de4793a6f99cd14e3f6642211f4d0b7bcfa361597c544ffcb5a567e9076f47f82089050867f1d4d06d19ea1b09cad79086d51bde11725a554fa99559ca2f09f3bb73d728c6683089150867f0480e7479a66a7cd9ea61c8b28974389908350abc4aafc18cd75e33dd130c14484089250867f30430b03368ebcaa91246960490bcf917d78681463e2e7d744bfb44335dac24d85089350867f0b57b37320127d4c50f269124b0dbdcb2b1f1352241a5d12103283e089c0c74286089450867f2cf4890650d27240e195f60a4f698eda249b8dd614b23376b50178d2df6d2b8f870895508681818082800980090990506200126260005262004ab3565b867f1e221c5526898bfd12de86851a0d9703751a2f239008ab5f9b7d3b6911c6418482089050867f28e07485ad7d992ed1a58f329ca12adce4ec693ebddbb2952e54d339f2eebda583089150867f2f44d64f84de16dc67bd5ead51efb1dc8381c84520c12854dd5ef3a079acd4e084089250867f050a76bc32ebd1dfe2be330f304edc7ace7167ab7ba1516f4021c62cf0d4fac285089350867f2f58c45e5d659a67d781367241f6c35d8cb46361d97b28947d29421c270594a986089450867f25e8da9ae0e42e840e04b230370e782bdb67534844325ba36fc7e5e160c66a74870895508681818082800980090990506200135f60005262004ab3565b867f2fec734da20fe32003ea04f127f844724f38a368ba10c29544252be796040f7f82089050867f288a6778f3a83988a8ed1727f15e93b4cb14f4e3a3bbb91dd6d1facafffd5eef83089150867f20dcc6c75fd89259be7f406750b3db679a25a8cd2715d245b9175390ac922c8484089250867f17f42ba10942df25cb8a541782a18b6fd31cf965d11178c7b04ac45b4dea5dd385089350867f028eeb85d115a904020e0c6148eec6603e9cedabc664abee764aafd455986ba586089450867f0b1d7cecf3a79b2ad3fa298f6cea7ae95d80c0299ecc918e9f8c9c3d38d59d40870895508681818082800980090990506200145c60005262004ab3565b867f0440339c9764cec79c16efdb834a26261db8e3f12ce1cf722d23c0e11ff4cf0782089050867f06ca647c29727c1962a002177da2d504f4b07a5f7eb57c79b88e6b7abbbdad5c83089150867f2ea120a864f5c4093dd1a962e8f013c7b8ef778b04d2ba5bfc3cab28619ba9e384089250867f2bb737546c4aee7c0cc2ba87c1157e2a77c479ebfb5dc76adbb39cf8697633fd85089350867f0e30da6490625d33e79cd50176f568f9a2c28c2f449a2bd51a25d15686803a9386089450867f0df7ca7278a13650b919d85497b2ebb0f71035a7c20430d4131d903ab7f57521870895508681818082800980090990506200155960005262004ab3565b867f27cc589f5bf585794abace589fb8a74a2f784c0990b80fcaa6944097f870e2d582089050867f2255c36a38c8735de45cedf452afa842332d33042f78e60c43c7455421b325bf83089150867f133d9602bd3378d69f681c27b05bdffc98b7d86cca63d73a60caed485784d08784089250867f0e1548e942ae9d3e26860699b93727c817a9948616c93ef4accd981b1dc3d78a85089350867f0f20f0e55d93689fe09ec312f6af47627482e4bde0a1602a8e2c8d6e84e8a6ae86089450867f2e52328483cb5b7ff2eb4e45b12e51b26232c9bc17b7292954c0a9f6bfa51bb9870895508681818082800980090990506200165660005262004ab3565b867f02b2162d533e059a6eda2abb74712edb3a7860beea95dd8a4abfc957660804f482089050867f19e0927715d1cc6d389429947fb3737dad733974c6b2e13e5b3d432519516c7483089150867f0d3a800457d77785636303b8b94f17dcffcb46048872ac9f74ef7f27ee57370584089250867f2c974d1952557a1aac5f7bae4996616da619b73f441c4e504dc8fe9cfb559e3285089350867f0766bfeeede2ccf3708e1b4ff30714c22c1d434cdbe8f55514babc2dd5d97bef86089450867f23dac8ea54082fc131e173ae55e4630cd4ca7c871b2a0a479c1e74e7f191e62c870895508681818082800980090990506200175360005262004ab3565b867f17d5fb6c2cb37010e3e358ab2d575376870ed33186b8eae49ad3b47e340a8d7f82089050867f175dcac76d8a8126139b583ae38853290246e43e783fa6903ec8007f178c002383089150867f0c4fd08fede5d221adb7abf549898c91e5be7e85bf1fd2a611bf182cc2e7165584089250867f277934b909e72d3a3475bb1ec766ab7a38ad59b128303fc5002f02a65bdfe72985089350867f0e88349998dfe703f1b184524f9c394d6004ccacf9cb952896e8cfdb0b078b6886089450867f1f1b2078b60b0fce07824e2a2bc8cae8ee673514b0070a8b45710cc78cbb9942870895508681818082800980090990506200185060005262004ab3565b867f2eb1559566c536ddbc316f6482d51fa340557657700f5b8a846e812a0ed334d182089050867f1c4dbdc335cf6764355208b4c9d243d34541d623c669dec2c3ba066bbeaf677383089150867f2374a6b2da6f8cab8e5cfe8d805dd3a2dfca1e8b7eba5dc8574021fd1241e3b484089250867f19dd342533ccc603a99738e3fb5a569b94ef71b3e49f90fb874f6161733072f485089350867f217d66db6c7fb3effa508800587d2eb3c6d03d8385132f2fcce7f35f2705cccf86089450867f0815fb8591fe01038cd3a3b38b236f9efca77c618d3bfc6c2a7fa89296c7e64f870895508681818082800980090990506200194d60005262004ab3565b867f2bb943b40c2bd456a6c17853b1ca88eb0ff36f5974b2ff9a5f5093e9bf63a16f82089050867f11a5153fce659513ee7cb9974ae6cba581e3b4cd14570c5709fec3d8d3fc82e983089150867f1b72bfd07635d8501b2eff8785a2495bae74c7653cf90e6d5c9f144426836df484089250867f14902c0700eec897ae178ba8caf850d793f1d87512bea0ecea39cf6b1fee233d85089350867f09c138c6e0a616a49ff90d43a6b043f3b745b78865856dc4c1a45e2fd84cb3f486089450867f05b58a3dce57b281a271d69895052d887458a715783e8317e024a61a35ec10bc8708955086818180828009800909905062001a4a60005262004ab3565b867f2be8d29525c0cfdd5e6b3125e3bde3bf558e55fbe867f024457a96765474d03782089050867f061d72f78f1ba9dc6b4d7f7784225d6a81bdfc1b5ad6c24369f9c0560523d9ad83089150867f0bf18aefcacffabdf4112eddadca6145738b4803b36145bb9516db501a0692e984089250867f2e73dd105fa8b2ec931d8cdf29ec679e3a9801a93071a7d5ea30659255f03bc685089350867f0f8440ef667c9ae81337ba5d8c927a5347de7296860b211cad1ecbfb5d3598ef86089450867f004d303b2dea627b2731be83f93ac34e7d14d178a13800558ca7396395eb118f8708955086818180828009800909905062001b4760005262004ab3565b867f234541ad72040a70da2996a35269230c94699eef313a4d480508008cbc3d37c182089050867f0d123f1e72d26b92bdd8fd73d14286c312ad4c23acb46b2e08c157104409e17483089150867f2fb360776f0de79d7098ee7aa4123c05ee6b05a8be460a774f3a048e138545bb84089250867f03685c079434e167276c57d3cc79703b7dfdc41c156ea1e8b7f99b6956a5532685089350867f260af0e0fffcc9772c1631b179344566b47aaada3681eb9034c6f75c3705c1c786089450867f2862b41374f89b695274b33b773f2554916e2bff9ff672545fc2f49563f627678708955086818180828009800909905062001c4460005262004ab3565b867f02a9912fe170310227189ea1e691d0362f18b38b400b0eff192ca59513eba8d582089050867f08e513ade694a0d8ac1f3ebf1a96440d32c713d5058e1224e070348c281f4a6f83089150867f140a4a431e2ee79400ed7465978d84773213c628264ff80f21ac7a6b673d09ab84089250867f296af4d019cb5df7d959b29d549c3f071202b4eba8b53dc5ee979ed14337792785089350867f01832e284a7f4c81614882b6939fc0f185573bd2023e3e505765470bb812b34986089450867f1a84d56a67bfdd3d965abdcd329aa78d4fe93434496f2d103861fd19d66d72608708955086818180828009800909905062001d4160005262004ab3565b867f040cb82847773927d2aefdc07489037a9d1f7631eca75c9fb0dda0cb9dbde14382089050867f010dcf084cc29cb7caecf26aa633bce4ed2b019f2887cee7b1a78f89d3fabe2f83089150867f07edc22a0911ea214425ef542b776db23b0fe5817810d40c72ca98aabd9afa8384089250867f2eea4ab08aec775f2148479ea36fbb96936da58ba48bd1d2d3acd48173aaabe785089350867f1e40c0e8257fe4a61005cdcfad148cf7f47d1b5cfddfaa082738695518245f1986089450867f23a27809583bd1ea51f436de5443e108f69d44cdf51dc1f03e21948b4980b8768708955086818180828009800909905062001e3e60005262004ab3565b867f2e4652b044dbfe40e63b6b232fcd5f3f39abfbd2051ee68adc754080d49250a982089050867f11e7abdb6ecbafc2e7d8cdefe9c7b9c50475eb475db3c2caf7f7d67f485775f283089150867f199d52350cc30e8c73821f802096f0e547a13551b27bf6b899396f63ac5cf8e784089250867f0f575d6ee67cbecd98345624e032a37c859a7cbef30b3fddc949cd097848410185089350867f1c4b6f9a2ae2b418e6265acba9c96b06184d07028e5fb784f3475ae7772ff05786089450867f2dcb5cf8896de39f228e157c0c5593f4626fb9bc225206383db20360abf0c9258708955086818180828009800909905062001f3b60005262004ab3565b867f1340abb9f4e113186bdc26cbdf4bcca50b531a107f863ca544575e3cf870f8e182089050867f2368e692b72787cb8870ea888e714e006f59d2b4460cfb74c48a8cc73b1d1a5b83089150867f1fab9add9baa4a4f56f23165775c6f2d922a7632a94f96374b7dc852756f54b684089250867f0c7f7b82300d3c6ce3f8957ba1e4add54c4c015e20d9765d220571c16ab8680f85089350867f15d63e86beacd93c6083688e5d9c8f3c6947929f9f1f99ab578a4c3a922eff0386089450867f0be843ae5f9b07e52572178af7dae8ed05d36b12c0607862929355ea74023d9e870895508681818082800980090990506200203860005262004ab3565b867f1332749c523694cb6935e0963a07e81b05967ce1d950c0b731058ec92a7a0c9a82089050867f25439408810e074c0bdd4598b9815fee892bb95ca51029ecf009bffa5b9b968283089150867f057e8d19dd999a918da29b0940b383ba9fd15db0b0f64996dff67feb55f9a74284089250867f1e014e37e9b117cf3b4870d999f2b55d3534d0a6be98e9e357fa43f01e70a29d85089350867f1a4ed24e6e03aebcd6bdb100533dc966597afe15c851b4b863f6e889084c647986089450867f253420007083f1aa863ad4760905c1039ed4111c9f053f27710452f83ce36a90870895508681818082800980090990506200213560005262004ab3565b867f2276a1441971709affe6d2a99320001ec45ec72155c575ddeecac0e32759ab0682089050867f28957dd1218ea799fd3411eb19325853adf7ae8ae1281f753302fe7d31dfa7b083089150867f2fd925726ab794c88bd75796aa3e7f1e6692f2914cf802267ddf01e37902a00884089250867f1cf8a5c9c76a84b147c8238d9253cd55b47c0c43d82966c4636a28674705fd9a85089350867f0373cbbc306e1bab9e7077368715e6230b4b2e2e4a1db9c674b8c359a41e910886089450867f060283d2fe7f23dff513d9110b3dc62448bc48f531ce0c1eab5920bf23290a40870895508681818082800980090990506200223260005262004ab3565b867f0dab465d6d910740f33ef6cc0eadc71bf8119bdfd5a3527dc8bbfadfaa40263c82089050867f0cba7bcbc8224b2a8e4aba17977230a686cd6421dc0ca5346f3446b62439c4c383089150867f1e4365db0790c9c4f445b0653c466ff21db96c38b4076ba8bd68bcb4dea6911d84089250867f1bb2dba2199a9ab3bc86ef5f9de7f6c5ca13d60eab42ced68de98fc643800a8d85089350867f0ad3c1870c6d6ef40eebad52123cd1a2913d9d62e80bfbacae812e082021f9ca86089450867f01b098c91e7b0cbb5c34588077c0ddf95300ddf614935630c0ce3a2627245308870895508681818082800980090990506200232f60005262004ab3565b867f19fd5c0eac14fae7598bd4ceea3b1e2998b0c168493b6d72ae41b576e55b9c3f82089050867f0d4749d79cc163f17110a404a46fe427c6434f3fe67b7e7b4ccfa6ab95bd7e1883089150867f1ebbfe8114a41bb809e0b33399241232eb940ad8728c8a516d40ada440dbfdcf84089250867f2704e5b6133d9764d6d3f17d49d833223e3937f80eb9faeabbfba9baf4b4c1b885089350867f2165e1c8027305b1ae0e323571635e5d540d13d710c3f9a390b6913f14d035e386089450867f2e3497e4d35fda596c06afa63bc3a0f2e55d4eeba4aceb60e65081ad63aa8b8a870895508681818082800980090990506200242c60005262004ab3565b867f031da4345eecd6db6c0f7b07c7815d7add1fe0546d738f4d79ab5c57aa841edf82089050867f089ece54e47aa5c908e43e5f08737c1436967089006acab1c9cd19eac4a2087683089150867f2f53c15e2aded33c47f55a070483e6cc7f3821fbf8aa40677d0552ed9d10d84784089250867f142aa34f4b2e8ad0df7a21b3e39c00c8b0aa2857094801eaafd72befed077f9385089350867f17aea4da4c7bcf0d7588b014eb8b40979dd2725eda4e6ace331982467c7ff2bf86089450867f0e970c19d19748d8c465104d8f02200363f9a41786f02f1827742b20dc0d1727870895508681818082800980090990506200252960005262004ab3565b867f04bcad9e553795642f59baf714a6bdb432fc45a0a0b77f1aba3a9823476df9b982089050867f242c0bfbcdaa76f715dbd4ba825c71fcfed671c1b1901fa484c87f810315d0ce83089150867f25db1343c24104071023fb6ed34d9909078311e1efe85af0a11b19114fa9e79084089250867f2ffe4d9c420a59e9cdc7c31ab2bf35187ca147cb898a3942deb3677786036a8085089350867f125bb03af3e2cf18bbe6f5b590eb3bf8d0d1ba63be696483e98f283bc7cd07a386089450867f0816be42745b7dbb4ceffe5b8e24ea60fd8b719deba50037ac7b75948745c6bc870895508681818082800980090990506200262660005262004ab3565b867f111160f9acf6ec360d1b6a712313a0dbcbe23e64420055471d2ee4c5dedb35d482089050867f1377978e1b1f6a8925fa8e7b7941bdf8fb59ab9542342419283d8203435c939183089150867f0defc1d8882166ef3ccde53a4f236fba83d384621937cee57e421a513d0d339784089250867f2f8fa5c78c706e3a5d4a03f2a7a3953046d7e94cb88a7ef350e67b5ba0f0debf85089350867f1a2a957ec0a723da61c2134bab0bf17beb00e6dcd84690c230dcb9e58da9482786089450867f1cdf8710995f5e03412b4a7f699532f9fd01f0ea167a8dfc1ddf37e2805addef870895508681818082800980090990506200272360005262004ab3565b867f26fd31471828c36ae36c27b748054b0c0c4fe5239b301699e3765eebecc1894682089050867f0775d996cc2c4456f303a2c1f9007647e11a921d9fea3f7b926143b99d2fa0be83089150867f016fb9337708ca638cdfda91bd0daea6b97224ef7b2062672addd1bd18bb890084089250867f2c392fbe7d3fde42fca4f9478bb439331258255356f184af6f76f119054117d785089350867f187a2a3bf79a69fa3e5089ef9f1fd56fdb47c55eece77aa228aa3de1b486bcb186089450867f0271a863a280a32641ffa33510b2edd278c98630359532f3e506b275fd5d20ce870895508681818082800980090990506200282060005262004ab3565b867f1557459c9c74c94aa00e5af69a1e3112fb69537ce897ec0c718958d96516f2ab82089050867f2a8e26ca8d647d9a6388516ea9dcff89083d539e58168c2a50c6dae30f109f2183089150867f21cb752194cf43f3b51942eb0040eba9de2bcfb1c2a3fae97924b710f26832cd84089250867f2c26daf996be247acd6dd4acad60d38b5a471e6322188d02c137e7cb484377ec85089350867f0240176ee0e7982eebe92a68d3e3a38c26821acc0f5d058cf8c137bca2d26f1b86089450867f2636e0973c865c1bd974dd78daaa8d0a84cdaf6be1ad47ecf2a0d18f117318f2870895508681818082800980090990506200291d60005262004ab3565b867f19e84f4f25a799496041661dc5d975b681f6e06744cee89b7be5d9fde1744ac082089050867f0ebf89064a3af247ca1f36f6f3570188e271e0b326c4fb26664e89e1454ca11083089150867f25c7e97b475be00e8b559a38c452364f4c9c531fecb8ac698f7fd73ce22e71ec84089250867f0444c99e592353e5aecaa302add901c14d8c55270a160afed4429ef5598ad74f85089350867f138db8887830565f2693d0e0f02e4e79e144967f0ba53b03519aba764b5c994a86089450867f24d40f462114fe9ee02aafcf74b4fca24e1ae365dc75c3b52bb13cbbb2f21edd8708955086818180828009800909905062002a1a60005262004ab3565b867f21e65d6d8ee43760bca40e730b5df4c4cf3a8a732db148f4b2951b4c61d68e8c82089050867f248dd79669ec09dbf0350a15d6c75c6a9bdaacefca14d51300978f13d1ab6d1c83089150867f2b8238c1548f9cbe29fd35cf91e7b48f0ebda7e639edf69fe8d5aba7924d536284089250867f2439fd239257f38181c7be3cf513f1bf7235eba94f6b8942a94cbddecf6f62f785089350867f200958235281a61ba2c4be0aa3282a18c74b6d262f5de7c2e33d2bb3e893dfec86089450867f0e1eca5df88ee5f60cfa7e1fe5befbb719fad8211fa9b2d02fcc233190c17f128708955086818180828009800909905062002b1760005262004ab3565b867f26b53427f9b3ea2c769d9c660fc60881a169c12732d001b7158ee4b1b842ca2482089050867f20f3b3f4acafe9f8af3e06661b3a8f778fa2812522b9d70a67402cff8db2b1b483089150867f211e5d2b39d62520a7a627ece8cacbac9f97506def4ec286928ba6c27d463b1784089250867f0bb743ee34802129c556731aed9d302dcd085313ce572f6242d13832e536b4b485089350867f23cb2661b488ee71e4c753ff23ae4bd25d8a44094f66b6532977e22140eba5cb86089450867f03a35aa3123911cdb4535baed3359f5f6a5205b9c93ef31d35323a47807b8bc98708955086818180828009800909905062002c1460005262004ab3565b867f27803848a0aed96a93fa943b6635e450217e137f4ade74a62d7917322714b69782089050867f0cb37839c2c9a7ff79884cbec75f41e9be5e47c76d61538231bd8162996d6f6783089150867f1f0026d0bf1f8e1dd5423cc2fec1fb5cdaa1ecdc4c3cb218dbceef77c00d2f9384089250867f02a7d7bb970b8a6ed2ee66fabbba956b6da3b100f5b5fb928eef42f9708273c985089350867f0cfd7f4215e434c8da17ec3258b0bc605ad1ab2e90aa494351e4ee40bbc491fa86089450867f180b11b720622a156849dc6f7f6e7f571659be69682230c5ed9ac339700a7cde8708955086818180828009800909905062002d1160005262004ab3565b867f04e96a965bce3d3a0a24a4a457c951582c871349ce7eee1aabfe578a94c6501182089050867f15931f782b45f7fb656f2cdbd1f7705c353a23fe1d30a5a46a1522ed160df3ad83089150867f2e296e57c97a5309acd26febf55ac963a5444c1c5f703ad88a0d7b97b9dd38b184089250867f26157bceb78e846bbb262f9a1e06d4271bde5a5bce8f0419952f97ffd13eaca885089350867f2194eb89847d6b0f1897f675f19c0c56b61b13248eff3ca36e34fb9d1c79ee4386089450867f2350bf35477656899151ad7dde96ea7857e15501447008dab6b3d27c8ffa274f8708955086818180828009800909905062002e0e60005262004ab3565b867f1a486f0ae591cacdaf09c58a49c4d1795405435340819e003f0469d110b7752b82089050867f1b56dcf76fb23cc4a834d455a4065e133571402b7df309d59bc3105d42a8c30183089150867f1a749d7964af0b7202913ef204c653f2b4bfb65ceab7b685233ab59ce3bb692584089250867f18ae590073f969696af762ffa4e8f0ebbf97f8cc787e37cddd1f321be3beadbb85089350867f21c47b275d82dde6460d5e769a99421144b1c5a9da59294ade9cbb317103f24986089450867f0473ddbd52e737e527364e8eb63207975c38d5fd6cc32b272102b082cd1518fb8708955086818180828009800909905062002f0b60005262004ab3565b867f0b12fac95b6d3a881d892657c8424e645ac4e6b00515f902d594574302b26e0282089050867f08ae7616a260cf6657f8f73ac284588d2c5f07ff425d837aa7cdcef63e3e210383089150867f039daf6876280b80e873bf2a32fd2834a83c69757badd58a888ef819e926ce2884089250867f25e7b1d7470a3c75f13f0b56546c8e09f2d8efeff06ef766f9c783ca869d130d85089350867f1e8fd3634c3ff764184d03435f98584b11b5b15aeb9c75262da3f1ea2c2a9e7a86089450867f241dcc51ac37808a415dd1e3c281f05aff11789dc0cafdd77a35484e0993f9a4870895508681818082800980090990506200300860005262004ab3565b867f1ffc3153c56ef9755932cea2be0573749bdafe1c4fa0781a4b8b4078ce9d754782089050867f17630d62d9a3e510c88a4d43c360f92bc0fa00b66031adec29bd9543fd3a17ee83089150867f2980400edd1d74e3d69db5458d2ccd5fabdb236ec16a82a4301a0ab59ea4a6e984089250867f3034fb24366123ec6dcafcad35726dbfb16194c036dcd648fa69439bfcd00cd485089350867f1aa7e8f4189ca9dff3db2ab7648be0a2392995ce46041e04680dca8ad7232df086089450867f1fa195f834a69e62372f60eb497da167646eae14153d803b39dc5d11f5d7800b870895508681818082800980090990506200310560005262004ab3565b867f0f23f1c74d5fbf6195ad5a6aee5e56993c5477e8453f5b93a0d7bafd333036d382089050867f016556fac9348a735ab50aa089c97151b3caaf0a20a34fb9d9370505a151572983089150867f23d92b793648110fc5aeef0633f0c77cacb0dbbca1879b8a6f6e5df445e5f70b84089250867f2e4c10ec5e65e2f239bbc43c13031df2686ab40fd79a304b05d611b823f23b7385089350867f12418bbfd77b63ad5e16864ad9c32ffbfc5a3dd9b78ec2b79329fe5e0a8d295386089450867f1e4a8aace15abc1d5b76a9e848431d2c06a78f72b6bebb1293e6c58e5185696d870895508681818082800980090990506200320260005262004ab3565b867f0f3e96107decdbd6872c20ea09acf92cdf17a3ee1d1331488092d96176deb75582089050867f012c3780207f395cc21deb0abd951681eea32498ddba6ce897a8f9f0c235706783089150867f13eab1b4e672ba1b1c1bb901769301f1e5659d03ea10c61de2477ff0ac22142184089250867f20dc664abb20b7456c06629ce37a1ecb1a27a4e8b24e31b48b9c4635aa30323e85089350867f2c6b1e2cfea78e2c36785e76a8cfb1b057e9471f24f5b391175c3decb01e000f86089450867f188c926255f5b7af3da96355729c2a8670ab4c2c70400481b2ac903740e0c5ab87089550868181808280098009099050620032ff60005262004ab3565b867f2f9913208e09e3d6e9e6fba6384fd076ab89f2662976e3e30e0870bb30eb54f282089050867f2b33803d90889706e714f720b5628d26fb60b545a1f3e9ce49a6ae912b02408683089150867f26ccabc10eb04327cb5cc3dde2abb36f097086c97e738c133c9f57077e748b0984089250867f1b16ae0d7c54408cb75fd931f246751f2b0c3dc20d79e82a2531b76c22b4d5df85089350867f11d0bb461bd8af2844f49f0f840c94ef9518b2511344742d1f5438fe3d415ae486089450867f233031847b476bead0118d3db338e89133ec420d673e504ad647259df655571e87089550868181808280098009099050620033fc60005262004ab3565b867f1f84e97895bee438eb3c92dc9b1846c9ad29c164387b06aeb6ed1841ed8c4dca82089050867f277f7f9b542f0c2bb5f45bed054f09624536010c3cf9452d2273193327f801d683089150867f1efc9c9069e5068baac13d2e6645641b7d27e80fc23077161535c44682ee57a984089250867f0d6ec477761e2efbac4f14b3bf3d5257a99e64c3f25fe104faf988b20fe5ff4485089350867f0e0e7d7c5501999b7d16173b59b7cae1f203bef21aebf00251881439ccf9301386089450867f217bef2f4f12c6dcc91c2058a23391cb77de53ca6e44dcdc6ea3d36fea326ea687089550868181808280098009099050620034f960005262004ab3565b867f05780c88adf01531b50f817e3fe44447d29b35aa8a389c71e8cf1226acef68ba82089050867f18733887a6b2b3b4c90d8e4990196e23445e47d7ea5939ebfb89a3ee3d67b4bd83089150867f20bace63acfcae0b1c9f2bee24b8e9da85ba597d37b0905720c4f15db231b07a84089250867f166ea595375a6786ac527ee9eced73ed6bf550876abcaf3ac92b42c808b00d8f85089350867f304262a9eff4040acf43e322d6f52676ae2f853ec2e7a80db00c488cf917c74e86089450867f226bac7050166e5f6db78cd0b12d36f305b6e8c9a055114ad7709e6f57245b6b87089550868181808280098009099050620035f660005262004ab3565b867f26b2f539c573829f6aca91baa954505bc5c3eb4e1df1d638582717fbdf2388cc82089050867f06a0fbf4cd52e93ba5e4c6c4af65db02ee96297f8ad200f2f1cff252e769b55183089150867f2cb9c24112d35341aceac88360fb528924e58b6ecac321b9fb29e6aa3368ff2384089250867f20e88a4d607526dd07fe08a3552a44669129eb87fcc0b13aac8fe8afd930152185089350867f1544649a2bd73e3ba72f396df91dd65401dd8faf51de325fbaedb9d536ad94fc86089450867f1980077457995712c44da7e17713258e3f8eb354bfd80ed9eaf3ecbaf696010587089550868181808280098009099050620036f360005262004ab3565b867f25d1d22ff13e7705d3c085f97fc4e4f6914b82ffaa5d2091ec64dac423765ef782089050867f2fec990ef556efe1035a464ff5581e74067445cd54abcaf6b8c0399fe0d24cfc83089150867f1bd9563506d9544ef3e4830e13545012c579379c2dcc1330416c4ae49bc4ec6184089250867f00affcd17ba6003c56dfa85571fc29737b225a80d480e7dd7edec01f14f2301085089350867f23670dbaef966881f07f919a2d883128c7b23cf767a477b2b2e0762bc0dbc18b86089450867f1f93a532917394c7e22fd17abeea6389c66fd7ae2dd9f02f860f6d96947f0edd87089550868181808280098009099050620037f060005262004ab3565b867f2de42e9f537b7d61b0213771c0e74f555512be07b6a50934734e2c5beb40be3782089050867f25c557f45b99781cd37d3bb22931662a67f78b37782c885b456bb96d55e8840483089150867f2074c8b709705c9888538a7f8a3c4aff647731bd16f8e254fa74ea9f2be7662c84089250867f2738355956298138949e442171d6a4e4b74ef2065740db7cfc3a0b60fd573acb85089350867f13d36ad0a4ebeb81969778649659c65cb7d0c41cc519871fdb71a9ea6a0caa5686089450867f08a2c18ba41381348c1acfbf9617716806b462a1691bc2e343b79b8085e376b087089550868181808280098009099050620038ed60005262004ab3565b867f059092fc395aed285807bbf557ad9a1041f59c079822b1088457882fee7b612c82089050867f161924151b5a5ad2d8cac119522a991a906f15e8531dc70567f6b28371cc24e383089150867f1c68ca8f7aa17659075405ef6341b8e69a298b9a4d72f3bb854b309e4ba87a1b84089250867f27f5d03bca1c8207f7239a4b2cf73ae559a15aa37e7bdddf3aab05eec5ce559285089350867f0ecbff4846962a975d347ea9a8fc465fb46861557622f2c2564a7e639833c16986089450867f277c4de2363d8b5b456cfc5a7ff8e46ff2ec8daa59855f5ad64bc0521f3ac56787089550868181808280098009099050620039ea60005262004ab3565b867f1b11862c52acd351b7a464793f4fbb57fec99f832b63226f95d175c8d2fc08b282089050867f06a719c584c74ffbdd7218eb565cb4c8bd86c92e3dfb3c73e1527201aa51234e83089150867f230e4adeecb799877f7ce9a58c836b99d533584a195c1d77a313abe1c7d126bd84089250867f10b109b864809c4767a133cce6cbad6c88628173b8ea51e8cca85830ca7de52285089350867f0e21117970dcfbd4b1526b253636f377538d3b4faaeb5a8b24bf6200d14cc59186089450867f2667349978401362f6b17939eeb0e64ff55607ebdb35c7071db46bb3e7ba47788708955086818180828009800909905062003ae760005262004ab3565b867f05000fa5fda505e029a13bfe304c267b0d86c72c039babf6d3ff02ee246be02e82089050867f264d9e094aed5f41a60242220a34a284089087b2436a9bfce8174cc9be8c2e2083089150867f08076f9c4743de6130ff622cf401edd2c92f24bfe114f3c5e724891746315c4784089250867f132370abddbb0b1dd57f2a520c25336bd7cede94b95bbf5c2151d6d88e641b6485089350867f08ff1116b7a227bfdfd4465a67890882b615c8c4c17f28d8d24958edf602ddcb86089450867f2bcb0b0db8b9e3e02b7e9c1c9460fdd9c6cd98562332e648d8a3e0ab945975208708955086818180828009800909905062003be460005262004ab3565b867f12ea68ce6881becad7f8a6b117b03ab976f7abd597f903b0bf230d20d21a943a82089050867f27439c98a76688067a097b19b6fdd7d78d5f88e274e0d8fea5ea6b7406fdda7f83089150867f02f40d0ad05f5652e31ef9440ad71ebc8419e393493937f05f00499d02a99e3684089250867f2fbf04284327ee4f680f06bd390e309d0d13acc74b9c5b14b63059b8cc7abff585089350867f1be686d53e2a8ad57a828b0651425cfc6978c7027edbf247f6b6723c21df86e786089450867f2683b425e85a508f96852f14b4220fcfe9f7ad8b17bfefc0e348c47ca78bb57f8708955086818180828009800909905062003ce160005262004ab3565b867f16dace9b2e8012e31db1c7ebe672d86bbe61a1aa3e1693e0eddfc0de0a9dd95182089050867f27a321f8c7d3c9022e962f7fef2e3c848b4539dbb75aa139f30430fe545bcedb83089150867f06ccd7210dee1d6b0e22b79e12d19082d8078b788d71007b95e7a774ed86a65184089250867f0a41dd42221653752bef350f6d74a917b6cbb1fd76a3a12166f4d0be978e402685089350867f220a02881e4d47ac94d950cdf8386274d1782e27cbd0d845978deec91298f16586089450867f0e2155a545fe5f3cbb6397606589eac19cd92639339c6b017298a4ad3408b4b98708955086818180828009800909905062003dde60005262004ab3565b867f0f0f19c6291e51546a267c60cc774e5fb9d088bac530782d891ec1af4b84707382089050867f0e925bcd1c6ddb4a3a1c67ec8deefbd40c53c0d33e7aeef1b46795aed5943c9d83089150867f2ad000b1748abb812cd6e5411286b9ff3ef0a5bd3d259a36e45ef05b9eb5beeb84089250867f0a65aa232d32ed6e8de63d1cdffebc2f3fa616465c27aaf97e8cd3dcff64865285089350867f0263d8470ab4b1c61d74d8e896242f4f261dcb167a3a06923893d7cb2c93d6a186089450867f2901d946addc94b040fd58004d9a5f8cd1926540c7a8612cec1c58cb60c2b3a58708955086818180828009800909905062003edb60005262004ab3565b867f1889cfa8209f4952df9022db9dc583b5717a0696da41cee64937d0cd6321e69382089050867f236064d71cb6c64c84747ac25fcf8d881502e5f03bff87561b85a116b1f39aca83089150867f2ff7a174ffcec29862e04f5dbdc73ebf3661570033576290c0c1f6cd8ced27ae84089250867f19e724a1d742cab103455f0040edf745a2696a71084c93e322715450dd4d6f5b85089350867f03eed3892b6f0e6c5da1059c5f3793985835aa283500a8129904a94c87f161bf86089450867f08e2b8273bfa30c1ac850306d91e468a9e8d05092aee4cbc80c687248463ba308708955086818180828009800909905062003fd860005262004ab3565b867f07adcca76d8337728839a1b6ac3b3ed42afb87d72af98f52f416f2ec58b28cec82089050867f171ef37896bae2b1020a0a5839bd51784ce11bb4237d548c171169d32fa19b4083089150867f20ffdfcb86f4d005064edbc296918c332d32fbeff1729de5056a26abbc3a35fa84089250867f08ecd7a6f1735eed86baa094e608f488f38dbb398fcfed4b994383a0ca8e464785089350867f1c3f5d86e5921fde9890189f1d8c618754288600e6928bc182ac4d5e4c9f0ccb86089450867f29c61184ed9d460f337558a1af639aa7e3c0975e4014ed8ebcad4a25d51eabf387089550868181808280098009099050620040d560005262004ab3565b867f0defd45b28958728228adbb2dbdaef6a5e9b1a64902a734f402b8cefb8ab3b5682089050867f0a74ea22d8a09336060610179ac1d82fffa9492df76deed4ea60e0133b0811a883089150867f03a37bf12daf1400d297ac4ac13ba24c17dc262db16c8523deee4e0ccde9a68084089250867f11fe1790d5abbf5935ff22318e4f7ffe69966ada2f9136b54f830eacb0a6536885089350867f018165842f406375f2346686915afb14bf1fe0564c8858ee3bde0aba3de5f68f86089450867f261db25e7cff5a9fb72f276b1f9260b667300fb7d361b50fd5c0e8b6995b05f987089550868181808280098009099050620041d260005262004ab3565b867f2a3ac3314b2b66e796fbe36df778c5e46972320cc43ec807048826b6704ba7c482089050867f23caa4b80ecfa99e9d3fea2bbc1dbbf369d1bfc8937d03d074061c30fd8cd76b83089150867f27db260085e224898df145f23f635f2066d8e4e124e581e8c6261929b1dfe10784089250867f274f6c5fd34a784d6b915ef05d424ee6c0babbf369e79ab138b8167b5618ec7f85089350867f2c3a29e13a84d26a0911c9289daf1aa4cf5840aada0701d57e23dfc796da6da186089450867f1ea210f2001a334d3e801f4e53270d42da7aaf317a553b4282aa78eaa2282e6d87089550868181808280098009099050620042cf60005262004ab3565b867f254dbeb52884b699c1ba7fa0d6e80d610903b18a3e509c36351ccc3b024946e382089050867f059e781d65896ebe0e4ba26dc2f29907f47bcdeda4a2ca2c713d8505ea31fd5d83089150867f0b5b1cec63d42d5e615dc269b885a24cef303ec78c972dd17cdbb3e915cc4ffb84089250867f2a7c015e9c3b2c57ca8b7d26d39a1bcc85d6ffacb7d9fbd66d2a8f1d64ed0c9285089350867f29b736b911d71a79cf63d8a6f786f11bd5abee24161dc567a7c851eae1e43b5186089450867f285745a90a7fe3d09af5a808704bc69c6f1701e573912df5cc1e265d596c414187089550868181808280098009099050620043cc60005262004ab3565b867f2d901b8195c3c96c8c36eb99fec0134ec2b8304ae810bd30da554e308082671582089050867f1905d3518355eaba7859b591ed7b8c9c253980f0450dbdf54d7a7782ba05839283089150867f23e813026fc0b80064d19b5c5428942fdf7efea80bfa8ec4095272bfdb7b4c9f84089250867f23c0a19a252c87e6b1c1c21b1a79800200c3fbff3e3300e7e5568071de9efb8185089350867f11c4ae607bae492413bf62cdaa2c2868ed1fec6dc0631b067ca60fab125b9e2a86089450867f2cd055ebb7ee4686365dea450f046ff62405fae1b1afc9fb01707cf81da0e3b987089550868181808280098009099050620044c960005262004ab3565b867f053c9fef2e021fa9a20fada22fdea1505b58a3159bbb47337dbf791b215b145282089050867f0a35bd74e87cbabaabe89ad1319d2c9e863b4c631c21938c9a5395bf97872a9f83089150867f1c115056539ce20cd5a04d1a5c43e2b00fbe83b25901be36f5ddc4666fc383fe84089250867f242954047e5772fd3bded590ec8beb4c542f2e264c8c3e284cdc473505c51a9085089350867f0e2abd315b47c0dc93849c0cdf267e811cbdbdb200a6e7c2b67edf7cb017421486089450867f282b37020c0890d751c3fd76950d8068668e1dfeae621dd552d2de887da2ea7587089550868181808280098009099050620045c660005262004ab3565b867f28933852266b52d9ea6b5bb923d9d94f2e5a5be5c778e75e07942c234b643bd982089050867f099ab6765505ba1198ef140e77b7954d4fbe79a056ce72bace39c048c00da3cf83089150867f2af211d8e0ac2d8fda7f849b8f229a225c6186b55762c7a7b2ae2d1dd85c57cb84089250867f0cd070f234014a2809ab90c71c1da61e98a96322fedd99b6aaae1ca104f3facf85089350867f26793e2abc8d3c30c60626fbaa158f263587d6bd15833d448b116264b930256a86089450867f225be36ed0ee85e1f845ada84e5748a56699152113ff61b5056b6d8bde60c19d87089550868181808280098009099050868281808280098009099150868381808280098009099250868481808280098009099350868581808280098009099450868681808280098009099550620046ff60005262004ab3565b867f02174f49edb02d5154d2beca2dc92b9cc595383da1fde8f09e4b5ee3ea5a065e82089050867f0f64891c2c8b020e46c3594cb758f0bddcdbd09bd0308816fb41734a869872c383089150867f192a84ca2f99d36991e2d2b1deff3989d1c156c239e10e9f56140e185457606784089250867f29dfcd7b63f05abf2753a8c341d6b7a60c6243b04c9a1b8b3320bba04a4d478785089350867f1ee27ad6b9b5a867733afc61a2b3e76a52ba3e4bd5e657ade91fc038819dba5b86089450867f0ab4773f150c3f8ad3bc9538f43cec395a7e3731ae973fefeb623a09217e64c7870895508681818082800980090990508682818082800980090991508683818082800980090992508684818082800980090993508685818082800980090994508686818082800980090995506200483860005262004ab3565b867f13c352a02f595186202cb0b99fa58c5542ab67f9b6d3a0afd103deeff6d80f4182089050867f2a97cf2c10c4bfbfd299f67c52a169f92c05b7dac56a41c4dd4fe87c8246ce1483089150867f00becbb47042bd7f8c9f6bb422162d1aed089a28482f7fd16ab06a13285fe70284089250867f008e44da21d738691b881757ef37ed29c5bd9f7a4450fcf53290a92cc2ca217685089350867f2b205a8b6d4b7063d931f3bb5d3464053843fe7fbe4b83c17883f86527882a1886089450867f2d9e32a7c90556fe108d255ac01e75df338fcd63b2bf84c19280d427298863fc870895508681818082800980090990508682818082800980090991508683818082800980090992508684818082800980090993508685818082800980090994508686818082800980090995506200497160005262004ab3565b867f29a322a84c25bd2ddf6e2e4200228d95abd6349a02266ac1dbba520738ceca9782089050867f0678c9bfc6f2df012f4fe55e33bb68ac14ced1df0d02152792089d046d828c4383089150867f0faff3a5e7425794fe20a7e0eb615b8b1760394b7f2304286a3ae4009124db2384089250867f1f8f5b611af9feb9cea86c084058120553e404103aee213f5a41d1d02541c0d385089350867f160875d8479602f96f40acc2d042ee52c1588b6a29de4284965a6dc6c930ea0786089450867f16d87a5183a316a1d70afc951efe2cd667c77328fcfda458cbf5fe3045f46d9e8708955086818180828009800909905086828180828009800909915086838180828009800909925086848180828009800909935086858180828009800909945086868180828009800909955062004aaa60005262004ab3565b60005260206000f35b8660205182098760405184098891088760605185098891088760805186098891088760a05187098891088760c05188098891088760e05183098861010051850989910888610120518609899108886101405187098991088861016051880989910888610180518909899108886101a0518409896101c05186098a9108896101e05187098a9108896102005188098a9108896102205189098a910889610240518a098a9108896102605185098a6102805187098b91088a6102a05188098b91088a6102c05189098b91088a6102e0518a098b91088a610300518b098b91088a6103205186098b6103405188098c91088b6103605189098c91088b610380518a098c91088b6103a0518b098c91088b6103c0518c098c91088b6103e05187098c6104005189098d91088c610420518a098d91088c610440518b098d91088c610460518c098d91088c610480518d098d91089a509850965094509250905060005156", - "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c80634937a258146038575b600080fd5b6098600480360360a0811015604c57600080fd5b810190808060a001906005806020026040519081016040528092919082600560200280828437600081840152601f19601f820116905080830192505050505050919291929050505060ae565b6040518082815260200191505060405180910390f35b600091905056fea26469706673582212208b286e78a1c3a31ca4245fa446c7d2dd2fa5beb24b0e69e7753425d3692b843464736f6c63430007020033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/packages/contracts/tests/QF/00-deploy.ts b/packages/contracts/tests/QF/00-deploy.ts deleted file mode 100644 index 826a8107..00000000 --- a/packages/contracts/tests/QF/00-deploy.ts +++ /dev/null @@ -1,309 +0,0 @@ -import { ethers } from "hardhat"; -import { BigNumber, Signer } from "ethers"; -import chai from "chai"; -import { solidity } from "ethereum-waffle"; -import { PoseidonT3 } from "../../typechain/PoseidonT3"; -import { PoseidonT3__factory } from "../../typechain/factories/PoseidonT3__factory"; -import { PoseidonT4 } from "../../typechain/PoseidonT4"; -import { PoseidonT4__factory } from "../../typechain/factories/PoseidonT4__factory"; -import { PoseidonT5 } from "../../typechain/PoseidonT5"; -import { PoseidonT5__factory } from "../../typechain/factories/PoseidonT5__factory"; -import { PoseidonT6 } from "../../typechain/PoseidonT6"; -import { PoseidonT6__factory } from "../../typechain/factories/PoseidonT6__factory"; - -import { MACI } from "../../typechain/MACI"; -import { MACI__factory } from "../../typechain/factories/MACI__factory"; - -import { - GrantRoundFactoryLibraryAddresses, - GrantRoundFactory__factory, -} from "../../typechain/factories/GrantRoundFactory__factory"; -import { PollFactory__factory, PollFactoryLibraryAddresses } from "../../typechain/factories/PollFactory__factory"; -import { - MessageAqFactory__factory, - MessageAqFactoryLibraryAddresses, -} from "../../typechain/factories/MessageAqFactory__factory"; -import { QFI__factory, QFILibraryAddresses } from "../../typechain/factories/QFI__factory"; - -import { GrantRoundFactory } from "../../typechain/GrantRoundFactory"; -import { PollFactory } from "../../typechain/PollFactory"; -import { MessageAqFactory } from "../../typechain/MessageAqFactory"; -import { QFI } from "../../typechain/QFI"; - -import { VkRegistry__factory } from "../../typechain/factories/VkRegistry__factory"; -import { FreeForAllGatekeeper__factory } from "../../typechain/factories/FreeForAllGatekeeper__factory"; -import { ConstantInitialVoiceCreditProxy__factory } from "../../typechain/factories/ConstantInitialVoiceCreditProxy__factory"; - -import { VkRegistry } from "../../typechain/VkRegistry"; -import { FreeForAllGatekeeper } from "../../typechain/FreeForAllGatekeeper"; -import { ConstantInitialVoiceCreditProxy } from "../../typechain/ConstantInitialVoiceCreditProxy"; - -import { OptimisticRecipientRegistry } from "../../typechain/OptimisticRecipientRegistry"; -import { OptimisticRecipientRegistry__factory } from "../../typechain/factories/OptimisticRecipientRegistry__factory"; - -import { BaseERC20Token } from "../../typechain/BaseERC20Token"; -import { BaseERC20Token__factory } from "../../typechain/factories/BaseERC20Token__factory"; - -import { PollProcessorAndTallyer } from "../../typechain/PollProcessorAndTallyer"; -import { PollProcessorAndTallyer__factory } from "../../typechain/factories/PollProcessorAndTallyer__factory"; - -chai.use(solidity); -const { expect } = chai; - -describe("Deploy - QV Infrastructure Smart Contracts", () => { - let deployer: Signer; - let deployerAddress: string; - let PoseidonT3Factory: PoseidonT3__factory; - let PoseidonT4Factory: PoseidonT4__factory; - let PoseidonT5Factory: PoseidonT5__factory; - let PoseidonT6Factory: PoseidonT6__factory; - - let linkedLibraryAddresses: - | QFILibraryAddresses - | PollFactoryLibraryAddresses - | MessageAqFactoryLibraryAddresses - | GrantRoundFactoryLibraryAddresses; - let GrantRoundFactory: GrantRoundFactory__factory; - let PollFactoryFactory: PollFactory__factory; - let MessageAqFactoryFactory: MessageAqFactory__factory; - - let FreeForAllGateKeeperFactory: FreeForAllGatekeeper__factory; - let ConstantInitialVoiceCreditProxyFactory: ConstantInitialVoiceCreditProxy__factory; - let VKRegistryFactory: VkRegistry__factory; - - let RecipientRegistryFactory: OptimisticRecipientRegistry__factory; - let BaseERC20TokenFactory: BaseERC20Token__factory; - let PollProcessorAndTallyerFactory: PollProcessorAndTallyer__factory; - - let QFIFactory: QFI__factory; - let MACIFactory: MACI__factory; - - let poseidonT3: PoseidonT3; - let poseidonT4: PoseidonT4; - let poseidonT5: PoseidonT5; - let poseidonT6: PoseidonT6; - let grantRoundFactory: GrantRoundFactory; - let pollFactory: PollFactory; - let messageAqFactory: MessageAqFactory; - let messageAqFactoryGrants: MessageAqFactory; - let vkRegistry: VkRegistry; - let constantInitialVoiceCreditProxy: ConstantInitialVoiceCreditProxy; - let freeForAllGateKeeper: FreeForAllGatekeeper; - let optimisticRecipientRegistry: OptimisticRecipientRegistry; - let baseERC20Token: BaseERC20Token; - let pollProcessorAndTallyer: PollProcessorAndTallyer; - let qfi: QFI; - let maci: MACI; - - beforeEach(async () => { - [deployer] = await ethers.getSigners(); - deployerAddress = await deployer.getAddress(); - PoseidonT3Factory = new PoseidonT3__factory(deployer); - PoseidonT4Factory = new PoseidonT4__factory(deployer); - PoseidonT5Factory = new PoseidonT5__factory(deployer); - PoseidonT6Factory = new PoseidonT6__factory(deployer); - poseidonT3 = await PoseidonT3Factory.deploy(); - poseidonT4 = await PoseidonT4Factory.deploy(); - poseidonT5 = await PoseidonT5Factory.deploy(); - poseidonT6 = await PoseidonT6Factory.deploy(); - - linkedLibraryAddresses = { - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT5"]: poseidonT5.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT3"]: poseidonT3.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT6"]: poseidonT6.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT4"]: poseidonT4.address, - }; - GrantRoundFactory = new GrantRoundFactory__factory({ ...linkedLibraryAddresses }, deployer); - PollFactoryFactory = new PollFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAqFactoryFactory = new MessageAqFactory__factory({ ...linkedLibraryAddresses }, deployer); - QFIFactory = new QFI__factory({ ...linkedLibraryAddresses }, deployer); - MACIFactory = new MACI__factory({ ...linkedLibraryAddresses }, deployer); - - VKRegistryFactory = new VkRegistry__factory(deployer); - ConstantInitialVoiceCreditProxyFactory = new ConstantInitialVoiceCreditProxy__factory(deployer); - FreeForAllGateKeeperFactory = new FreeForAllGatekeeper__factory(deployer); - RecipientRegistryFactory = new OptimisticRecipientRegistry__factory(deployer); - BaseERC20TokenFactory = new BaseERC20Token__factory(deployer); - PollProcessorAndTallyerFactory = new PollProcessorAndTallyer__factory(deployer); - }); - - it("deploys Poseidon Contracts", async () => { - expect(poseidonT3.address).to.not.equal(ethers.constants.AddressZero); - expect(poseidonT4.address).to.not.equal(ethers.constants.AddressZero); - expect(poseidonT5.address).to.not.equal(ethers.constants.AddressZero); - expect(poseidonT6.address).to.not.equal(ethers.constants.AddressZero); - //NOTE: These should be correct as they are from precompiled contracts - expect(await poseidonT3.poseidon([BigNumber.from(0), BigNumber.from(0)])).to.be.equal( - BigNumber.from("0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864") - ); - expect(await poseidonT4.poseidon([BigNumber.from(0), BigNumber.from(0), BigNumber.from(0)])).to.be.equal( - BigNumber.from("0x0bc188d27dcceadc1dcfb6af0a7af08fe2864eecec96c5ae7cee6db31ba599aa") - ); - expect( - await poseidonT5.poseidon([BigNumber.from(0), BigNumber.from(0), BigNumber.from(0), BigNumber.from(0)]) - ).to.be.equal(BigNumber.from("0x0532fd436e19c70e51209694d9c215250937921b8b79060488c1206db73e9946")); - expect( - await poseidonT6.poseidon([ - BigNumber.from(0), - BigNumber.from(0), - BigNumber.from(0), - BigNumber.from(0), - BigNumber.from(0), - ]) - ).to.be.equal(BigNumber.from("0x2066be41bebe6caf7e079360abe14fbf9118c62eabc42e2fe75e342b160a95bc")); - - }); - - it("deploys GrantRoundFactory Contracts", async () => { - grantRoundFactory = await GrantRoundFactory.deploy(); - await expect((await grantRoundFactory.deployTransaction.wait()).status).to.not.equal(0); - }); - - it("deploys PollFactory Contracts", async () => { - pollFactory = await PollFactoryFactory.deploy(); - await expect((await pollFactory.deployTransaction.wait()).status).to.not.equal(0); - }); - - it("deploys MessageAqFactory Contract", async () => { - messageAqFactory = await MessageAqFactoryFactory.deploy(); - await expect((await messageAqFactory.deployTransaction.wait()).status).to.not.equal(0); - }); - - it("deploys VKRegistry Contracts", async () => { - vkRegistry = await VKRegistryFactory.deploy(); - await expect((await vkRegistry.deployTransaction.wait()).status).to.not.equal(0); - }); - - it("deploys constantInitialVoiceCreditProxy Contract", async () => { - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(0); - await expect((await constantInitialVoiceCreditProxy.deployTransaction.wait()).status).to.not.equal(0); - }); - - it("deploys freeForAllGateKeeper Contract", async () => { - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - await expect((await freeForAllGateKeeper.deployTransaction.wait()).status).to.not.equal(0); - }); - - it("deploys Recipient Registry Contract", async () => { - optimisticRecipientRegistry = await RecipientRegistryFactory.deploy(0, 0, deployerAddress); - await expect((await optimisticRecipientRegistry.deployTransaction.wait()).status).to.not.equal(0); - }); - - it("deploys ERC20 token Contract", async () => { - baseERC20Token = await BaseERC20TokenFactory.deploy(100); - await expect((await baseERC20Token.deployTransaction.wait()).status).to.not.equal(0); - }); - - it("deploys QFI Contracts", async () => { - optimisticRecipientRegistry = await RecipientRegistryFactory.deploy(0, 0, deployerAddress); - grantRoundFactory = await GrantRoundFactory.deploy(); - grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - pollFactory = await PollFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(0); - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - await expect((await qfi.deployTransaction.wait()).status).to.not.equal(0); - }); - - it("deploys MACI Contracts", async () => { - optimisticRecipientRegistry = await RecipientRegistryFactory.deploy(0, 0, deployerAddress); - pollFactory = await PollFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(0); - maci = await MACIFactory.deploy( - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - - await expect((await maci.deployTransaction.wait()).status).to.not.equal(0); - }); - - it("transfers PollFactory ownership to Quadratic Funding Infrastructure Contract", async () => { - grantRoundFactory = await GrantRoundFactory.deploy(); - const tx = await grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - - pollFactory = await PollFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(0); - - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - - await expect(pollFactory.transferOwnership(qfi.address)) - .to.emit(pollFactory, "OwnershipTransferred") - .withArgs(deployerAddress, qfi.address); - }); - - it("transfers messageAqFactory ownership to Poll Factory Contract", async () => { - grantRoundFactory = await GrantRoundFactory.deploy(); - grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - - pollFactory = await PollFactoryFactory.deploy(); - messageAqFactory = await MessageAqFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(0); - - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - - await expect(messageAqFactory.transferOwnership(pollFactory.address)) - .to.emit(messageAqFactory, "OwnershipTransferred") - .withArgs(deployerAddress, pollFactory.address); - }); - - it("initializes Quadratic Funding Infrastructure", async () => { - grantRoundFactory = await GrantRoundFactory.deploy(); - grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - - pollFactory = await PollFactoryFactory.deploy(); - messageAqFactory = await MessageAqFactoryFactory.deploy(); - messageAqFactoryGrants = await MessageAqFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(0); - vkRegistry = await VKRegistryFactory.deploy(); - - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - await expect(pollFactory.transferOwnership(qfi.address)) - .to.emit(pollFactory, "OwnershipTransferred") - .withArgs(deployerAddress, qfi.address); - - await expect(grantRoundFactory.transferOwnership(qfi.address)) - .to.emit(grantRoundFactory, "OwnershipTransferred") - .withArgs(deployerAddress, qfi.address); - - await expect(messageAqFactory.transferOwnership(pollFactory.address)) - .to.emit(messageAqFactory, "OwnershipTransferred") - .withArgs(deployerAddress, pollFactory.address); - - await expect(messageAqFactoryGrants.transferOwnership(grantRoundFactory.address)) - .to.emit(messageAqFactoryGrants, "OwnershipTransferred") - .withArgs(deployerAddress, grantRoundFactory.address); - - await expect(qfi.initialize(vkRegistry.address, messageAqFactory.address, messageAqFactoryGrants.address)) - .to.emit(qfi, "Init") - .withArgs(vkRegistry.address, messageAqFactory.address); - }); -}); diff --git a/packages/contracts/tests/QF/01-configure.ts b/packages/contracts/tests/QF/01-configure.ts deleted file mode 100644 index 736e5ed7..00000000 --- a/packages/contracts/tests/QF/01-configure.ts +++ /dev/null @@ -1,259 +0,0 @@ -import { ethers } from "hardhat"; -import { BigNumberish, Signer } from "ethers"; -import chai from "chai"; -import { solidity } from "ethereum-waffle"; -import { Keypair, VerifyingKey } from "qaci-domainobjs"; -import { G1Point, G2Point } from "qaci-crypto"; - -import { PoseidonT3 } from "../../typechain/PoseidonT3"; -import { PoseidonT3__factory } from "../../typechain/factories/PoseidonT3__factory"; - -import { PoseidonT4 } from "../../typechain/PoseidonT4"; -import { PoseidonT4__factory } from "../../typechain/factories/PoseidonT4__factory"; - -import { PoseidonT5 } from "../../typechain/PoseidonT5"; -import { PoseidonT5__factory } from "../../typechain/factories/PoseidonT5__factory"; - -import { PoseidonT6 } from "../../typechain/PoseidonT6"; -import { PoseidonT6__factory } from "../../typechain/factories/PoseidonT6__factory"; - -import { - GrantRoundFactoryLibraryAddresses, - GrantRoundFactory__factory, -} from "../../typechain/factories/GrantRoundFactory__factory"; -import { PollFactory__factory, PollFactoryLibraryAddresses } from "../../typechain/factories/PollFactory__factory"; - -import { - MessageAqFactory__factory, - MessageAqFactoryLibraryAddresses, -} from "../../typechain/factories/MessageAqFactory__factory"; -import { QFI__factory, QFILibraryAddresses } from "../../typechain/factories/QFI__factory"; - -import { GrantRoundFactory } from "../../typechain/GrantRoundFactory"; -import { PollFactory } from "../../typechain/PollFactory"; -import { MessageAqFactory } from "../../typechain/MessageAqFactory"; -import { QFI } from "../../typechain/QFI"; - -import { VkRegistry__factory } from "../../typechain/factories/VkRegistry__factory"; -import { FreeForAllGatekeeper__factory } from "../../typechain/factories/FreeForAllGatekeeper__factory"; -import { ConstantInitialVoiceCreditProxy__factory } from "../../typechain/factories/ConstantInitialVoiceCreditProxy__factory"; - -import { VerifyingKeyStruct, VkRegistry } from "../../typechain/VkRegistry"; -import { FreeForAllGatekeeper } from "../../typechain/FreeForAllGatekeeper"; -import { ConstantInitialVoiceCreditProxy } from "../../typechain/ConstantInitialVoiceCreditProxy"; - -import { OptimisticRecipientRegistry } from "../../typechain/OptimisticRecipientRegistry"; -import { OptimisticRecipientRegistry__factory } from "../../typechain/factories/OptimisticRecipientRegistry__factory"; - -import { BaseERC20Token } from "../../typechain/BaseERC20Token"; -import { BaseERC20Token__factory } from "../../typechain/factories/BaseERC20Token__factory"; - -import { PollProcessorAndTallyer } from "../../typechain/PollProcessorAndTallyer"; -import { PollProcessorAndTallyer__factory } from "../../typechain/factories/PollProcessorAndTallyer__factory"; - -import { MockVerifier } from "../../typechain/MockVerifier"; -import { MockVerifier__factory } from "../../typechain/factories/MockVerifier__factory"; - -chai.use(solidity); -const { expect } = chai; -const testProcessVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -const testTallyVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -describe("Configure - QV Infrastructure and vkRegistry", () => { - let deployer: Signer; - let deployerAddress: string; - let PoseidonT3Factory: PoseidonT3__factory; - let PoseidonT4Factory: PoseidonT4__factory; - let PoseidonT5Factory: PoseidonT5__factory; - let PoseidonT6Factory: PoseidonT6__factory; - - let linkedLibraryAddresses: - | QFILibraryAddresses - | PollFactoryLibraryAddresses - | MessageAqFactoryLibraryAddresses - | GrantRoundFactoryLibraryAddresses; - let GrantRoundFactory: GrantRoundFactory__factory; - let PollFactoryFactory: PollFactory__factory; - let MessageAqFactoryFactory: MessageAqFactory__factory; - - let FreeForAllGateKeeperFactory: FreeForAllGatekeeper__factory; - let ConstantInitialVoiceCreditProxyFactory: ConstantInitialVoiceCreditProxy__factory; - let VKRegistryFactory: VkRegistry__factory; - - let RecipientRegistryFactory: OptimisticRecipientRegistry__factory; - let BaseERC20TokenFactory: BaseERC20Token__factory; - let PollProcessorAndTallyerFactory: PollProcessorAndTallyer__factory; - let MockVerifierFactory: MockVerifier__factory; - - let QFIFactory: QFI__factory; - - let PoseidonT3: PoseidonT3; - let PoseidonT4: PoseidonT4; - let PoseidonT5: PoseidonT5; - let PoseidonT6: PoseidonT6; - let grantRoundFactory: GrantRoundFactory; - let pollFactory: PollFactory; - let messageAqFactory: MessageAqFactory; - let messageAqFactoryGrants: MessageAqFactory; - let vkRegistry: VkRegistry; - let constantInitialVoiceCreditProxy: ConstantInitialVoiceCreditProxy; - let freeForAllGateKeeper: FreeForAllGatekeeper; - let optimisticRecipientRegistry: OptimisticRecipientRegistry; - let baseERC20Token: BaseERC20Token; - let pollProcessorAndTallyer: PollProcessorAndTallyer; - let mockVerifier: MockVerifier; - let qfi: QFI; - let coordinator: Keypair; - - beforeEach(async () => { - [deployer] = await ethers.getSigners(); - deployerAddress = await deployer.getAddress(); - PoseidonT3Factory = new PoseidonT3__factory(deployer); - PoseidonT4Factory = new PoseidonT4__factory(deployer); - PoseidonT5Factory = new PoseidonT5__factory(deployer); - PoseidonT6Factory = new PoseidonT6__factory(deployer); - PoseidonT3 = await PoseidonT3Factory.deploy(); - PoseidonT4 = await PoseidonT4Factory.deploy(); - PoseidonT5 = await PoseidonT5Factory.deploy(); - PoseidonT6 = await PoseidonT6Factory.deploy(); - - linkedLibraryAddresses = { - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT5"]: PoseidonT5.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT3"]: PoseidonT3.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT6"]: PoseidonT6.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT4"]: PoseidonT4.address, - }; - - GrantRoundFactory = new GrantRoundFactory__factory({ ...linkedLibraryAddresses }, deployer); - PollFactoryFactory = new PollFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAqFactoryFactory = new MessageAqFactory__factory({ ...linkedLibraryAddresses }, deployer); - QFIFactory = new QFI__factory({ ...linkedLibraryAddresses }, deployer); - - VKRegistryFactory = new VkRegistry__factory(deployer); - ConstantInitialVoiceCreditProxyFactory = new ConstantInitialVoiceCreditProxy__factory(deployer); - FreeForAllGateKeeperFactory = new FreeForAllGatekeeper__factory(deployer); - RecipientRegistryFactory = new OptimisticRecipientRegistry__factory(deployer); - BaseERC20TokenFactory = new BaseERC20Token__factory(deployer); - PollProcessorAndTallyerFactory = new PollProcessorAndTallyer__factory(deployer); - MockVerifierFactory = new MockVerifier__factory(deployer); - - optimisticRecipientRegistry = await RecipientRegistryFactory.deploy(0, 0, deployerAddress); - grantRoundFactory = await GrantRoundFactory.deploy(); - grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - pollFactory = await PollFactoryFactory.deploy(); - messageAqFactory = await MessageAqFactoryFactory.deploy(); - messageAqFactoryGrants = await MessageAqFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(0); - vkRegistry = await VKRegistryFactory.deploy(); - baseERC20Token = await BaseERC20TokenFactory.deploy(100); - mockVerifier = await MockVerifierFactory.deploy(); - pollProcessorAndTallyer = await PollProcessorAndTallyerFactory.deploy(mockVerifier.address); - coordinator = new Keypair() - }); - - describe("Configure Infrastructure", () => { - it("verify - initialises Quadratic Funding Infrastructure", async () => { - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - await expect(pollFactory.transferOwnership(qfi.address)) - .to.emit(pollFactory, "OwnershipTransferred") - .withArgs(deployerAddress, qfi.address); - - await expect(grantRoundFactory.transferOwnership(qfi.address)) - .to.emit(grantRoundFactory, "OwnershipTransferred") - .withArgs(deployerAddress, qfi.address); - - await expect(messageAqFactory.transferOwnership(pollFactory.address)) - .to.emit(messageAqFactory, "OwnershipTransferred") - .withArgs(deployerAddress, pollFactory.address); - - await expect(messageAqFactoryGrants.transferOwnership(grantRoundFactory.address)) - .to.emit(messageAqFactoryGrants, "OwnershipTransferred") - .withArgs(deployerAddress, grantRoundFactory.address); - - await expect(qfi.initialize(vkRegistry.address, messageAqFactory.address, messageAqFactoryGrants.address)) - .to.emit(qfi, "Init") - .withArgs(vkRegistry.address, messageAqFactory.address); - }); - it("verify - set verifying keys in vkRegistry contract", async () => { - const stateTreeDepth = await qfi.stateTreeDepth(); - const _stateTreeDepth = stateTreeDepth.toString(); - const _intStateTreeDepth = 1; - const _messageTreeDepth = 4; - const _voteOptionTreeDepth = 2; - const _messageBatchSize = 25; - const _processVk = testProcessVk.asContractParam(); - const _tallyVk = testTallyVk.asContractParam(); - - const { status } = await vkRegistry - .setVerifyingKeys( - _stateTreeDepth, - _intStateTreeDepth, - _messageTreeDepth, - _voteOptionTreeDepth, - _messageBatchSize, - _processVk, - _tallyVk - ) - .then((tx) => tx.wait()); - - expect(status).to.equal(1); - - const pSig = await vkRegistry.genProcessVkSig( - _stateTreeDepth, - _messageTreeDepth, - _voteOptionTreeDepth, - _messageBatchSize - ); - - const isPSigSet = await vkRegistry.isProcessVkSet(pSig); - expect(isPSigSet).to.be.true; - - const tSig = await vkRegistry.genTallyVkSig(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); - const isTSigSet = await vkRegistry.isTallyVkSet(tSig); - expect(isTSigSet).to.be.true; - - // Check that the VKs are set - const processVkOnChain = await vkRegistry.getProcessVk( - _stateTreeDepth, - _messageTreeDepth, - _voteOptionTreeDepth, - _messageBatchSize - ); - expect(processVkOnChain).to.have.own.property("alpha1"); - - const tallyVkOnChain = await vkRegistry.getTallyVk(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); - expect(tallyVkOnChain).to.have.own.property("alpha1"); - expect(tallyVkOnChain.alpha1.x).to.not.be.empty; - }); - it("verify - sets Poll Processor And Tallyer", async () => { - const { status } = await qfi.setPollProcessorAndTallyer(pollProcessorAndTallyer.address) - .then((tx) => tx.wait()); - - expect(status).to.equal(1); - expect(await qfi.pollProcessorAndTallyer()).to.not.equal(ethers.constants.AddressZero); - - }) - }); - - -}); diff --git a/packages/contracts/tests/QF/02-grantRound.ts b/packages/contracts/tests/QF/02-grantRound.ts deleted file mode 100644 index 9a3018dc..00000000 --- a/packages/contracts/tests/QF/02-grantRound.ts +++ /dev/null @@ -1,460 +0,0 @@ -import { ethers } from "hardhat"; -import { BigNumber, BigNumberish, Signer } from "ethers"; -import chai from "chai"; -import { solidity } from "ethereum-waffle"; -import { Keypair, VerifyingKey } from "qaci-domainobjs"; -import { G1Point, G2Point } from "qaci-crypto"; - -import { PoseidonT3 } from "../../typechain/PoseidonT3"; -import { PoseidonT3__factory } from "../../typechain/factories/PoseidonT3__factory"; - -import { PoseidonT4 } from "../../typechain/PoseidonT4"; -import { PoseidonT4__factory } from "../../typechain/factories/PoseidonT4__factory"; - -import { PoseidonT5 } from "../../typechain/PoseidonT5"; -import { PoseidonT5__factory } from "../../typechain/factories/PoseidonT5__factory"; - -import { PoseidonT6 } from "../../typechain/PoseidonT6"; -import { PoseidonT6__factory } from "../../typechain/factories/PoseidonT6__factory"; - -import { - GrantRoundFactoryLibraryAddresses, - GrantRoundFactory__factory, -} from "../../typechain/factories/GrantRoundFactory__factory"; -import { PollFactory__factory, PollFactoryLibraryAddresses } from "../../typechain/factories/PollFactory__factory"; - -import { - MessageAqFactory__factory, - MessageAqFactoryLibraryAddresses, -} from "../../typechain/factories/MessageAqFactory__factory"; -import { QFI__factory, QFILibraryAddresses } from "../../typechain/factories/QFI__factory"; - -import { GrantRoundFactory } from "../../typechain/GrantRoundFactory"; -import { PollFactory } from "../../typechain/PollFactory"; -import { MessageAqFactory } from "../../typechain/MessageAqFactory"; -import { QFI } from "../../typechain/QFI"; -import { Poll__factory } from "../../typechain/factories/Poll__factory"; -import { Poll } from "../../typechain/Poll"; - -import { VkRegistry__factory } from "../../typechain/factories/VkRegistry__factory"; -import { FreeForAllGatekeeper__factory } from "../../typechain/factories/FreeForAllGatekeeper__factory"; -import { ConstantInitialVoiceCreditProxy__factory } from "../../typechain/factories/ConstantInitialVoiceCreditProxy__factory"; - -import { VerifyingKeyStruct, VkRegistry } from "../../typechain/VkRegistry"; -import { FreeForAllGatekeeper } from "../../typechain/FreeForAllGatekeeper"; -import { ConstantInitialVoiceCreditProxy } from "../../typechain/ConstantInitialVoiceCreditProxy"; - -import { OptimisticRecipientRegistry } from "../../typechain/OptimisticRecipientRegistry"; -import { OptimisticRecipientRegistry__factory } from "../../typechain/factories/OptimisticRecipientRegistry__factory"; - -import { BaseERC20Token } from "../../typechain/BaseERC20Token"; -import { BaseERC20Token__factory } from "../../typechain/factories/BaseERC20Token__factory"; - -import { PollProcessorAndTallyer } from "../../typechain/PollProcessorAndTallyer"; -import { PollProcessorAndTallyer__factory } from "../../typechain/factories/PollProcessorAndTallyer__factory"; - -import { MockVerifier } from "../../typechain/MockVerifier"; -import { MockVerifier__factory } from "../../typechain/factories/MockVerifier__factory"; - -chai.use(solidity); -const { expect } = chai; -const testProcessVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -const testTallyVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -type IVerifyingKey = { - alpha1: { - x: string; - y: string; - }; - beta2: { - x: [BigNumberish, BigNumberish]; - y: string[]; - }; - gamma2: { - x: string[]; - y: string[]; - }; - delta2: { - x: string[]; - y: string[]; - }; - ic: { - x: BigNumberish; - y: BigNumberish; - }[]; -}; - -describe("Poll - New QV Voting Round", () => { - let deployer: Signer; - let user1: Signer; - let user2: Signer; - let user3: Signer; - let user4: Signer; - let user5: Signer; - let user6: Signer; - let user7: Signer; - let user8: Signer; - let user9: Signer; - let user10: Signer; - let user11: Signer; - let user12: Signer; - let user13: Signer; - let user14: Signer; - let user15: Signer; - let user16: Signer; - let user17: Signer; - let user18: Signer; - let user19: Signer; - let user20: Signer; - let user21: Signer; - let user22: Signer; - let user23: Signer; - let user24: Signer; - let user25: Signer; - let user26: Signer; - let project1: Signer; - let project2: Signer; - let project3: Signer; - let deployerAddress: string; - let PoseidonT3Factory: PoseidonT3__factory; - let PoseidonT4Factory: PoseidonT4__factory; - let PoseidonT5Factory: PoseidonT5__factory; - let PoseidonT6Factory: PoseidonT6__factory; - - let linkedLibraryAddresses: - | QFILibraryAddresses - | PollFactoryLibraryAddresses - | MessageAqFactoryLibraryAddresses - | GrantRoundFactoryLibraryAddresses; - let GrantRoundFactory: GrantRoundFactory__factory; - let PollFactoryFactory: PollFactory__factory; - let MessageAqFactoryFactory: MessageAqFactory__factory; - - let FreeForAllGateKeeperFactory: FreeForAllGatekeeper__factory; - let ConstantInitialVoiceCreditProxyFactory: ConstantInitialVoiceCreditProxy__factory; - let VKRegistryFactory: VkRegistry__factory; - - let RecipientRegistryFactory: OptimisticRecipientRegistry__factory; - let BaseERC20TokenFactory: BaseERC20Token__factory; - let PollProcessorAndTallyerFactory: PollProcessorAndTallyer__factory; - let MockVerifierFactory: MockVerifier__factory; - - let QFIFactory: QFI__factory; - - let PoseidonT3: PoseidonT3; - let PoseidonT4: PoseidonT4; - let PoseidonT5: PoseidonT5; - let PoseidonT6: PoseidonT6; - let grantRoundFactory: GrantRoundFactory; - let pollFactory: PollFactory; - let messageAqFactory: MessageAqFactory; - let messageAqFactoryGrants: MessageAqFactory; - let vkRegistry: VkRegistry; - let constantInitialVoiceCreditProxy: ConstantInitialVoiceCreditProxy; - let freeForAllGateKeeper: FreeForAllGatekeeper; - let optimisticRecipientRegistry: OptimisticRecipientRegistry; - let baseERC20Token: BaseERC20Token; - let pollProcessorAndTallyer: PollProcessorAndTallyer; - let mockVerifier: MockVerifier; - let qfi: QFI; - let coordinator: Keypair; - let poll: Poll; - - beforeEach(async () => { - [ - deployer, - user1, - user2, - user3, - user4, - user5, - user6, - user7, - user8, - user9, - user10, - user11, - user12, - user13, - user14, - user15, - user16, - user17, - user18, - user19, - user20, - user21, - user22, - user23, - user24, - user25, - user26, - ] = await ethers.getSigners(); - - ethers.Wallet.createRandom(); - deployerAddress = await deployer.getAddress(); - PoseidonT3Factory = new PoseidonT3__factory(deployer); - PoseidonT4Factory = new PoseidonT4__factory(deployer); - PoseidonT5Factory = new PoseidonT5__factory(deployer); - PoseidonT6Factory = new PoseidonT6__factory(deployer); - PoseidonT3 = await PoseidonT3Factory.deploy(); - PoseidonT4 = await PoseidonT4Factory.deploy(); - PoseidonT5 = await PoseidonT5Factory.deploy(); - PoseidonT6 = await PoseidonT6Factory.deploy(); - - linkedLibraryAddresses = { - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT5"]: PoseidonT5.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT3"]: PoseidonT3.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT6"]: PoseidonT6.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT4"]: PoseidonT4.address, - }; - - GrantRoundFactory = new GrantRoundFactory__factory({ ...linkedLibraryAddresses }, deployer); - PollFactoryFactory = new PollFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAqFactoryFactory = new MessageAqFactory__factory({ ...linkedLibraryAddresses }, deployer); - QFIFactory = new QFI__factory({ ...linkedLibraryAddresses }, deployer); - - VKRegistryFactory = new VkRegistry__factory(deployer); - ConstantInitialVoiceCreditProxyFactory = new ConstantInitialVoiceCreditProxy__factory(deployer); - FreeForAllGateKeeperFactory = new FreeForAllGatekeeper__factory(deployer); - RecipientRegistryFactory = new OptimisticRecipientRegistry__factory(deployer); - BaseERC20TokenFactory = new BaseERC20Token__factory(deployer); - PollProcessorAndTallyerFactory = new PollProcessorAndTallyer__factory(deployer); - MockVerifierFactory = new MockVerifier__factory(deployer); - - optimisticRecipientRegistry = await RecipientRegistryFactory.deploy(0, 0, deployerAddress); - grantRoundFactory = await GrantRoundFactory.deploy(); - grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - pollFactory = await PollFactoryFactory.deploy(); - messageAqFactory = await MessageAqFactoryFactory.deploy(); - messageAqFactoryGrants = await MessageAqFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - //NOTE: each user recieves 100 voice credits by default - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(100); - vkRegistry = await VKRegistryFactory.deploy(); - baseERC20Token = await BaseERC20TokenFactory.deploy(100); - mockVerifier = await MockVerifierFactory.deploy(); - pollProcessorAndTallyer = await PollProcessorAndTallyerFactory.deploy(mockVerifier.address); - - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - await pollFactory.transferOwnership(qfi.address); - await grantRoundFactory.transferOwnership(qfi.address); - await messageAqFactory.transferOwnership(pollFactory.address); - await messageAqFactoryGrants.transferOwnership(grantRoundFactory.address); - await qfi.initialize(vkRegistry.address, messageAqFactory.address, messageAqFactoryGrants.address); - - const stateTreeDepth = await qfi.stateTreeDepth(); - const _stateTreeDepth = stateTreeDepth.toString(); - const _intStateTreeDepth = 1; - const _messageTreeDepth = 4; - const _voteOptionTreeDepth = 2; - const _messageBatchSize = 25; - const _processVk = testProcessVk.asContractParam(); - const _tallyVk = testTallyVk.asContractParam(); - - const { status } = await vkRegistry - .setVerifyingKeys( - _stateTreeDepth, - _intStateTreeDepth, - _messageTreeDepth, - _voteOptionTreeDepth, - _messageBatchSize, - _processVk, - _tallyVk - ) - .then((tx) => tx.wait()); - const pSig = await vkRegistry.genProcessVkSig( - _stateTreeDepth, - _messageTreeDepth, - _voteOptionTreeDepth, - _messageBatchSize - ); - const tSig = await vkRegistry.genTallyVkSig(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); - coordinator = new Keypair(); - }); - - describe("User Sign Ups", () => { - it("verify - allows one user to sign up to maci with correct parameters", async () => { - const provider = user1.provider ?? ethers.getDefaultProvider(); - const maciKey = new Keypair(); - - const _pubKey = maciKey.pubKey.asContractParam(); - - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - - const expectedStateIndex = "1"; - const expectedIntialVoiceCredits = 100; - const expectedPubKey = Object.values(_pubKey); - const expectedTimeStamp = (await provider.getBlock("latest")).timestamp + 1; - - await expect(qfi.connect(user1).signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData)) - .to.emit(qfi, "SignUp") - .withArgs(expectedStateIndex, expectedPubKey, expectedIntialVoiceCredits, expectedTimeStamp); - }); - - it("verify - allows two users to sign up to maci with correct parameters", async () => { - const provider = user1.provider ?? ethers.getDefaultProvider(); - const timeStamp = (await provider.getBlock("latest")).timestamp; - - const signups = await [user2, user3].map(async (user, index) => { - const maciKey = new Keypair(); - const _pubKey = maciKey.pubKey.asContractParam(); - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - const expectedPubKey = Object.values(_pubKey); - const expectedStateIndex = index + 1 + ""; - const expectedIntialVoiceCredits = 100; - //NOTE: each transaction will tick 1 🤷 - const expectedTimeStamp = timeStamp + index + 1; - - return expect(qfi.connect(user).signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData)) - .to.emit(qfi, "SignUp") - .withArgs(expectedStateIndex, expectedPubKey, expectedIntialVoiceCredits, expectedTimeStamp); - }); - await Promise.all(signups); - }); - - it("verify - allows many users to sign up to maci with correct parameters", async () => { - const userSigners = [ - user1, - user2, - user3, - user4, - user5, - user6, - user7, - user8, - user9, - user10, - user11, - user12, - user13, - user14, - user15, - user16, - user17, - user18, - user19, - user20, - user21, - user22, - user23, - user24, - user25, - ]; - for (const user of userSigners) { - const maciKey = new Keypair(); - const _pubKey = maciKey.pubKey.asContractParam(); - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - await expect(qfi.connect(user).signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData)).to.emit( - qfi, - "SignUp" - ); - } - }); - - it("require fail - sign up fails with invalid keys", async () => { - const _badPubKey = { - x: "21888242871839275222246405745257275088548364400416034343698204186575808495617", - y: "0", - }; - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - - await expect( - qfi.connect(user4).signUp(_badPubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData) - ).to.be.revertedWith("MACI: _pubKey values should be less than the snark scalar field"); - }); - }); - describe("Create a new Poll", () => { - const _duration = 15; - const _maxValues = { - maxUsers: 25, - maxMessages: 25, - maxVoteOptions: 25, - }; - const _treeDepths = { - intStateTreeDepth: 1, - messageTreeDepth: 4, - messageTreeSubDepth: 2, - voteOptionTreeDepth: 2, - }; - const _intStateTreeDepth = 1; - const _messageBatchSize = 25; - const _tallyBatchSize = 5 ** _intStateTreeDepth; - coordinator = new Keypair(); - const _coordinatorPubkey = coordinator.pubKey.asContractParam(); - - const expectedPollId = "0"; - //const expectedPollAddress = "0x4aAa546748B9b4DBaa3A1C58f0DD1b2d3C6E97Ef"; // NOTE: nonce hack to get the poll address. Use this for Integration test - const expectedPollAddress = "0xb22F17625EC8fD0173098Ae0C04485FD3F11BD19"; // NOTE: nonce hack to get the poll address. Use this for Unit test - - const expectedCoordinatorPublicKey = Object.values(_coordinatorPubkey); - - it("verify - deploys a new poll correctly", async () => { - const provider = deployer.provider ?? ethers.getDefaultProvider(); - - await expect(qfi.deployPoll(_duration, _maxValues, _treeDepths, _coordinatorPubkey)) - .to.emit(qfi, "DeployPoll") - // .withArgs(expectedPollId, expectedPollAddress, expectedCoordinatorPublicKey); - - const expectedTimeStamp = BigNumber.from((await provider.getBlock("latest")).timestamp); - const expectedDuration = BigNumber.from(_duration); - const pollContractAddress = await qfi.getPoll(0); - poll = new Poll__factory({ ...linkedLibraryAddresses }, deployer).attach(pollContractAddress); - const deployTimeandDuration = await poll.getDeployTimeAndDuration(); - - expect([...deployTimeandDuration]).to.deep.equal([expectedTimeStamp, expectedDuration]); - - expect(await poll.stateAqMerged()).to.be.false; - expect((await poll.currentSbCommitment()).toString()).to.equal("0"); - expect(Number((await poll.numSignUpsAndMessages())[0])).to.equal(0); - expect(Number((await poll.numSignUpsAndMessages())[1])).to.equal(0); - - const onChainMaxValues = await poll.maxValues(); - expect([onChainMaxValues.maxMessages, onChainMaxValues.maxVoteOptions]).to.deep.equal([ - BigNumber.from(_maxValues.maxMessages), - BigNumber.from(_maxValues.maxVoteOptions), - ]); - - const onChainTreeDepths = await poll.treeDepths(); - expect([ - onChainTreeDepths.intStateTreeDepth, - onChainTreeDepths.messageTreeSubDepth, - onChainTreeDepths.messageTreeDepth, - onChainTreeDepths.voteOptionTreeDepth, - ]).to.deep.equal([ - _treeDepths.intStateTreeDepth, - _treeDepths.messageTreeSubDepth, - _treeDepths.messageTreeDepth, - _treeDepths.voteOptionTreeDepth, - ]); - const onChainBatchSizes = await poll.batchSizes(); - expect([onChainBatchSizes.messageBatchSize, onChainBatchSizes.tallyBatchSize]).to.deep.equal([ - _messageBatchSize, - _tallyBatchSize, - ]); - }); - }); -}); diff --git a/packages/contracts/tests/QF/03-voting.ts b/packages/contracts/tests/QF/03-voting.ts deleted file mode 100644 index b94e8390..00000000 --- a/packages/contracts/tests/QF/03-voting.ts +++ /dev/null @@ -1,384 +0,0 @@ -import { ethers } from "hardhat"; -import { BigNumber, BigNumberish, Signer } from "ethers"; -import chai from "chai"; -import { solidity } from "ethereum-waffle"; -import { Command, Keypair, Message, VerifyingKey } from "qaci-domainobjs"; -import { G1Point, G2Point } from "qaci-crypto"; - -import { PoseidonT3 } from "../../typechain/PoseidonT3"; -import { PoseidonT3__factory } from "../../typechain/factories/PoseidonT3__factory"; - -import { PoseidonT4 } from "../../typechain/PoseidonT4"; -import { PoseidonT4__factory } from "../../typechain/factories/PoseidonT4__factory"; - -import { PoseidonT5 } from "../../typechain/PoseidonT5"; -import { PoseidonT5__factory } from "../../typechain/factories/PoseidonT5__factory"; - -import { PoseidonT6 } from "../../typechain/PoseidonT6"; -import { PoseidonT6__factory } from "../../typechain/factories/PoseidonT6__factory"; - -import { - GrantRoundFactoryLibraryAddresses, - GrantRoundFactory__factory, -} from "../../typechain/factories/GrantRoundFactory__factory"; -import { PollFactory__factory, PollFactoryLibraryAddresses } from "../../typechain/factories/PollFactory__factory"; - -import { - MessageAqFactory__factory, - MessageAqFactoryLibraryAddresses, -} from "../../typechain/factories/MessageAqFactory__factory"; -import { QFI__factory, QFILibraryAddresses } from "../../typechain/factories/QFI__factory"; - -import { GrantRoundFactory } from "../../typechain/GrantRoundFactory"; -import { PollFactory } from "../../typechain/PollFactory"; -import { MessageAqFactory } from "../../typechain/MessageAqFactory"; -import { QFI } from "../../typechain/QFI"; -import { Poll__factory } from "../../typechain/factories/Poll__factory"; -import { MessageStruct, Poll } from "../../typechain/Poll"; - -import { VkRegistry__factory } from "../../typechain/factories/VkRegistry__factory"; -import { FreeForAllGatekeeper__factory } from "../../typechain/factories/FreeForAllGatekeeper__factory"; -import { ConstantInitialVoiceCreditProxy__factory } from "../../typechain/factories/ConstantInitialVoiceCreditProxy__factory"; - -import { VerifyingKeyStruct, VkRegistry } from "../../typechain/VkRegistry"; -import { FreeForAllGatekeeper } from "../../typechain/FreeForAllGatekeeper"; -import { ConstantInitialVoiceCreditProxy } from "../../typechain/ConstantInitialVoiceCreditProxy"; - -import { OptimisticRecipientRegistry } from "../../typechain/OptimisticRecipientRegistry"; -import { OptimisticRecipientRegistry__factory } from "../../typechain/factories/OptimisticRecipientRegistry__factory"; - -import { BaseERC20Token } from "../../typechain/BaseERC20Token"; -import { BaseERC20Token__factory } from "../../typechain/factories/BaseERC20Token__factory"; - -import { PollProcessorAndTallyer } from "../../typechain/PollProcessorAndTallyer"; -import { PollProcessorAndTallyer__factory } from "../../typechain/factories/PollProcessorAndTallyer__factory"; - -import { MockVerifier } from "../../typechain/MockVerifier"; -import { MockVerifier__factory } from "../../typechain/factories/MockVerifier__factory"; - -chai.use(solidity); -const { expect } = chai; -const testProcessVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -const testTallyVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -describe("Voting - Cast QV votes", () => { - let deployer: Signer; - let user1: Signer; - let user2: Signer; - let user3: Signer; - let user4: Signer; - let user5: Signer; - let user6: Signer; - let user7: Signer; - let user8: Signer; - let user9: Signer; - let user10: Signer; - - let project1: Signer; - let project2: Signer; - let project3: Signer; - let deployerAddress: string; - let PoseidonT3Factory: PoseidonT3__factory; - let PoseidonT4Factory: PoseidonT4__factory; - let PoseidonT5Factory: PoseidonT5__factory; - let PoseidonT6Factory: PoseidonT6__factory; - - let linkedLibraryAddresses: - | QFILibraryAddresses - | PollFactoryLibraryAddresses - | MessageAqFactoryLibraryAddresses - | GrantRoundFactoryLibraryAddresses; - let GrantRoundFactory: GrantRoundFactory__factory; - let PollFactoryFactory: PollFactory__factory; - let MessageAqFactoryFactory: MessageAqFactory__factory; - - let FreeForAllGateKeeperFactory: FreeForAllGatekeeper__factory; - let ConstantInitialVoiceCreditProxyFactory: ConstantInitialVoiceCreditProxy__factory; - let VKRegistryFactory: VkRegistry__factory; - - let RecipientRegistryFactory: OptimisticRecipientRegistry__factory; - let BaseERC20TokenFactory: BaseERC20Token__factory; - let PollProcessorAndTallyerFactory: PollProcessorAndTallyer__factory; - let MockVerifierFactory: MockVerifier__factory; - - let QFIFactory: QFI__factory; - - let PoseidonT3: PoseidonT3; - let PoseidonT4: PoseidonT4; - let PoseidonT5: PoseidonT5; - let PoseidonT6: PoseidonT6; - let grantRoundFactory: GrantRoundFactory; - let pollFactory: PollFactory; - let messageAqFactory: MessageAqFactory; - let messageAqFactoryGrants: MessageAqFactory; - let vkRegistry: VkRegistry; - let constantInitialVoiceCreditProxy: ConstantInitialVoiceCreditProxy; - let freeForAllGateKeeper: FreeForAllGatekeeper; - let optimisticRecipientRegistry: OptimisticRecipientRegistry; - let baseERC20Token: BaseERC20Token; - let pollProcessorAndTallyer: PollProcessorAndTallyer; - let mockVerifier: MockVerifier; - let qfi: QFI; - let coordinator: Keypair; - let poll: Poll; - let users: { - maciKey: Keypair; - signer: Signer; - }[] = []; - const duration = 30; - const maxValues = { - maxUsers: 25, - maxMessages: 25, - maxVoteOptions: 25, - }; - const treeDepths = { - intStateTreeDepth: 1, - messageTreeDepth: 4, - messageTreeSubDepth: 2, - voteOptionTreeDepth: 2, - }; - const intStateTreeDepth = 1; - const messageBatchSize = 25; - const tallyBatchSize = 5 ** intStateTreeDepth; - - beforeEach(async () => { - [deployer, user1, user2, user3, user4, user5, user6, user7, user8, user9, user10] = await ethers.getSigners(); - deployerAddress = await deployer.getAddress(); - PoseidonT3Factory = new PoseidonT3__factory(deployer); - PoseidonT4Factory = new PoseidonT4__factory(deployer); - PoseidonT5Factory = new PoseidonT5__factory(deployer); - PoseidonT6Factory = new PoseidonT6__factory(deployer); - PoseidonT3 = await PoseidonT3Factory.deploy(); - PoseidonT4 = await PoseidonT4Factory.deploy(); - PoseidonT5 = await PoseidonT5Factory.deploy(); - PoseidonT6 = await PoseidonT6Factory.deploy(); - - linkedLibraryAddresses = { - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT5"]: PoseidonT5.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT3"]: PoseidonT3.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT6"]: PoseidonT6.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT4"]: PoseidonT4.address, - }; - - GrantRoundFactory = new GrantRoundFactory__factory({ ...linkedLibraryAddresses }, deployer); - PollFactoryFactory = new PollFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAqFactoryFactory = new MessageAqFactory__factory({ ...linkedLibraryAddresses }, deployer); - QFIFactory = new QFI__factory({ ...linkedLibraryAddresses }, deployer); - - VKRegistryFactory = new VkRegistry__factory(deployer); - ConstantInitialVoiceCreditProxyFactory = new ConstantInitialVoiceCreditProxy__factory(deployer); - FreeForAllGateKeeperFactory = new FreeForAllGatekeeper__factory(deployer); - RecipientRegistryFactory = new OptimisticRecipientRegistry__factory(deployer); - BaseERC20TokenFactory = new BaseERC20Token__factory(deployer); - PollProcessorAndTallyerFactory = new PollProcessorAndTallyer__factory(deployer); - MockVerifierFactory = new MockVerifier__factory(deployer); - - optimisticRecipientRegistry = await RecipientRegistryFactory.deploy(0, 0, deployerAddress); - grantRoundFactory = await GrantRoundFactory.deploy(); - grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - pollFactory = await PollFactoryFactory.deploy(); - messageAqFactory = await MessageAqFactoryFactory.deploy(); - messageAqFactoryGrants = await MessageAqFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - //NOTE: each user recieves 100 voice credits by default - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(100); - vkRegistry = await VKRegistryFactory.deploy(); - baseERC20Token = await BaseERC20TokenFactory.deploy(100); - mockVerifier = await MockVerifierFactory.deploy(); - pollProcessorAndTallyer = await PollProcessorAndTallyerFactory.deploy(mockVerifier.address); - - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - await pollFactory.transferOwnership(qfi.address); - await grantRoundFactory.transferOwnership(qfi.address); - await messageAqFactory.transferOwnership(pollFactory.address); - await messageAqFactoryGrants.transferOwnership(grantRoundFactory.address); - await qfi.initialize(vkRegistry.address, messageAqFactory.address, messageAqFactoryGrants.address); - - const stateTreeDepth = await qfi.stateTreeDepth(); - const _stateTreeDepth = stateTreeDepth.toString(); - const _intStateTreeDepth = 1; - const _messageTreeDepth = 4; - const _voteOptionTreeDepth = 2; - const _messageBatchSize = 25; - const _processVk = testProcessVk.asContractParam(); - const _tallyVk = testTallyVk.asContractParam(); - - await vkRegistry.setVerifyingKeys( - _stateTreeDepth, - _intStateTreeDepth, - _messageTreeDepth, - _voteOptionTreeDepth, - _messageBatchSize, - _processVk, - _tallyVk - ); - - await vkRegistry.genProcessVkSig(_stateTreeDepth, _messageTreeDepth, _voteOptionTreeDepth, _messageBatchSize); - await vkRegistry.genTallyVkSig(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); - coordinator = new Keypair(); - const coordinatorPubkey = coordinator.pubKey.asContractParam(); - - const userSigners = [user1, user2, user3, user4, user5]; - users = []; - for (const user of userSigners) { - const maciKey = new Keypair(); - const _pubKey = maciKey.pubKey.asContractParam(); - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - - await qfi.connect(user).signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData); - users.push({ maciKey: maciKey, signer: user }); - } - - await qfi.connect(deployer).deployPoll(duration, maxValues, treeDepths, coordinatorPubkey, { gasLimit: 30000000 }); - const pollContractAddress = await qfi.getPoll(0); - poll = new Poll__factory({ ...linkedLibraryAddresses }, deployer).attach(pollContractAddress); - - }); - - it("verify - users signed up successfully before poll deployed", async () => { - expect(Number((await poll.numSignUpsAndMessages())[0])).to.equal(5); - expect(Number((await poll.numSignUpsAndMessages())[1])).to.equal(0); - }); - - it("verify - user signed up successfully after poll deployed", async () => { - const userSigners = [user6]; - for (const user of userSigners) { - const maciKey = new Keypair(); - const _pubKey = maciKey.pubKey.asContractParam(); - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - - await qfi.connect(user).signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData); - users.push({ maciKey: maciKey, signer: user }); - } - expect(Number((await poll.numSignUpsAndMessages())[0])).to.equal(6); - expect(Number((await poll.numSignUpsAndMessages())[1])).to.equal(0); - }); - - it("verify - many users signed up successfully after poll deployed", async () => { - const userSigners = [user6, user7, user8, user9, user10]; - for (const user of userSigners) { - const maciKey = new Keypair(); - const _pubKey = maciKey.pubKey.asContractParam(); - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - - await qfi.connect(user).signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData); - users.push({ maciKey: maciKey, signer: user }); - } - expect(Number((await poll.numSignUpsAndMessages())[0])).to.equal(10); - expect(Number((await poll.numSignUpsAndMessages())[1])).to.equal(0); - }); - - it("verify - vote triggers event with encrypted message", async () => { - const keypair = users[0].maciKey; - - const _stateIndex = BigInt(1); - const _newPubKey = keypair.pubKey; - const _voteOptionIndex = BigInt(0); - const _newVoteWeight = BigInt(9); - const _nonce = BigInt(1); - const _pollId = BigInt(0); - const _salt = BigInt(0); - - const sharedKey = Keypair.genEcdhSharedKey(keypair.privKey, coordinator.pubKey); - const command = new Command(_stateIndex, _newPubKey, _voteOptionIndex, _newVoteWeight, _nonce, _pollId, _salt); - const signature = command.sign(keypair.privKey); - const message = command.encrypt(signature, sharedKey); - - const { status, logs } = await poll - .publishMessage(message.asContractParam(), keypair.pubKey.asContractParam()) - .then((tx) => tx.wait()); - const iface = poll.interface; - const event = iface.parseLog(logs[logs.length - 1]); - - const expectOkStatus = 1; - const expectedMessage = message.data.map((data) => { - return BigNumber.from(data); - }); - expect(status).to.equal(expectOkStatus); - expect(event.args[0][0]).to.deep.equal(expectedMessage); - }); - - it("verify - one user can vote", async () => { - const keypair = users[0].maciKey; - - const command = new Command(BigInt(1), keypair.pubKey, BigInt(0), BigInt(9), BigInt(1), BigInt(0), BigInt(0)); - - const signature = command.sign(keypair.privKey); - const sharedKey = Keypair.genEcdhSharedKey(keypair.privKey, coordinator.pubKey); - const message = command.encrypt(signature, sharedKey); - - const _message = message.asContractParam(); - const _encPubKey = keypair.pubKey.asContractParam(); - - await expect(poll.publishMessage(_message, _encPubKey)).to.emit(poll, "PublishMessage"); - }); - - it("verify - many users can vote", async () => { - for (const user of users) { - const { maciKey, signer } = user; - const _stateIndex = BigInt(1); - const _newPubKey = maciKey.pubKey; - const _voteOptionIndex = BigInt(0); - const _newVoteWeight = BigInt(9); - const _nonce = BigInt(1); - const _pollId = BigInt(0); - const _salt = BigInt(0); - const command = new Command(_stateIndex, _newPubKey, _voteOptionIndex, _newVoteWeight, _nonce, _pollId, _salt); - - const signature = command.sign(maciKey.privKey); - const sharedKey = Keypair.genEcdhSharedKey(maciKey.privKey, coordinator.pubKey); - const message = command.encrypt(signature, sharedKey); - const _message = message.asContractParam(); - const _encPubKey = maciKey.pubKey.asContractParam(); - await expect(poll.connect(signer).publishMessage(_message, _encPubKey)).to.emit(poll, "PublishMessage"); - } - }); - - it("expect revert - user cant vote after voting period", async () => { - const dd = await poll.getDeployTimeAndDuration(); - const provider = ethers.provider; - - const expectedTime = dd[1].add(dd[0]).toNumber(); - - expect((await provider.getBlock("latest")).timestamp).to.be.lt(expectedTime); - - await provider.send("evm_increaseTime", [Number(dd[1]) + 1]); - await provider.send("evm_mine", []); - - expect((await provider.getBlock("latest")).timestamp).to.be.gt(expectedTime); - const keypair = users[0].maciKey; - - const command = new Command(BigInt(1), keypair.pubKey, BigInt(0), BigInt(9), BigInt(1), BigInt(0), BigInt(0)); - - const signature = command.sign(keypair.privKey); - const sharedKey = Keypair.genEcdhSharedKey(keypair.privKey, coordinator.pubKey); - const message = command.encrypt(signature, sharedKey); - - const _message = message.asContractParam(); - const _encPubKey = keypair.pubKey.asContractParam(); - - await expect(poll.publishMessage(_message, _encPubKey)).to.be.revertedWith("PollE03"); - }); -}); diff --git a/packages/contracts/tests/QF/04-merge.ts b/packages/contracts/tests/QF/04-merge.ts deleted file mode 100644 index c21612ea..00000000 --- a/packages/contracts/tests/QF/04-merge.ts +++ /dev/null @@ -1,400 +0,0 @@ -import { ethers } from "hardhat"; -import { BigNumber, BigNumberish, Signer } from "ethers"; -import chai from "chai"; -import { solidity } from "ethereum-waffle"; -import { Command, Keypair, Message, VerifyingKey } from "qaci-domainobjs"; -import { G1Point, G2Point } from "qaci-crypto"; -import { MaciState, genProcessVkSig, genTallyVkSig } from "qaci-core"; -import { PoseidonT3 } from "../../typechain/PoseidonT3"; -import { PoseidonT3__factory } from "../../typechain/factories/PoseidonT3__factory"; - -import { PoseidonT4 } from "../../typechain/PoseidonT4"; -import { PoseidonT4__factory } from "../../typechain/factories/PoseidonT4__factory"; - -import { PoseidonT5 } from "../../typechain/PoseidonT5"; -import { PoseidonT5__factory } from "../../typechain/factories/PoseidonT5__factory"; - -import { PoseidonT6 } from "../../typechain/PoseidonT6"; -import { PoseidonT6__factory } from "../../typechain/factories/PoseidonT6__factory"; - -import { - GrantRoundFactoryLibraryAddresses, - GrantRoundFactory__factory, -} from "../../typechain/factories/GrantRoundFactory__factory"; -import { PollFactory__factory, PollFactoryLibraryAddresses } from "../../typechain/factories/PollFactory__factory"; - -import { - MessageAqFactory__factory, - MessageAqFactoryLibraryAddresses, -} from "../../typechain/factories/MessageAqFactory__factory"; -import { QFI__factory, QFILibraryAddresses } from "../../typechain/factories/QFI__factory"; - -import { GrantRoundFactory } from "../../typechain/GrantRoundFactory"; -import { PollFactory } from "../../typechain/PollFactory"; -import { MessageAqFactory } from "../../typechain/MessageAqFactory"; -import { QFI } from "../../typechain/QFI"; -import { Poll__factory } from "../../typechain/factories/Poll__factory"; -import { MessageStruct, Poll } from "../../typechain/Poll"; - -import { VkRegistry__factory } from "../../typechain/factories/VkRegistry__factory"; -import { FreeForAllGatekeeper__factory } from "../../typechain/factories/FreeForAllGatekeeper__factory"; -import { ConstantInitialVoiceCreditProxy__factory } from "../../typechain/factories/ConstantInitialVoiceCreditProxy__factory"; - -import { VerifyingKeyStruct, VkRegistry } from "../../typechain/VkRegistry"; -import { FreeForAllGatekeeper } from "../../typechain/FreeForAllGatekeeper"; -import { ConstantInitialVoiceCreditProxy } from "../../typechain/ConstantInitialVoiceCreditProxy"; - -import { OptimisticRecipientRegistry } from "../../typechain/OptimisticRecipientRegistry"; -import { OptimisticRecipientRegistry__factory } from "../../typechain/factories/OptimisticRecipientRegistry__factory"; - -import { BaseERC20Token } from "../../typechain/BaseERC20Token"; -import { BaseERC20Token__factory } from "../../typechain/factories/BaseERC20Token__factory"; - -import { PollProcessorAndTallyer } from "../../typechain/PollProcessorAndTallyer"; -import { PollProcessorAndTallyer__factory } from "../../typechain/factories/PollProcessorAndTallyer__factory"; - -import { MockVerifier } from "../../typechain/MockVerifier"; -import { MockVerifier__factory } from "../../typechain/factories/MockVerifier__factory"; -import { AccQueueQuinaryMaci } from "../../typechain/AccQueueQuinaryMaci"; -import { AccQueueQuinaryMaci__factory } from "../../typechain"; - -chai.use(solidity); -const { expect } = chai; -const testProcessVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -const testTallyVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -describe("Merge - Merge Signup and Message leaves", () => { - let deployer: Signer; - let user1: Signer; - let user2: Signer; - let user3: Signer; - let user4: Signer; - let user5: Signer; - let user6: Signer; - let user7: Signer; - let user8: Signer; - let user9: Signer; - let user10: Signer; - - let project1: Signer; - let project2: Signer; - let project3: Signer; - let deployerAddress: string; - let PoseidonT3Factory: PoseidonT3__factory; - let PoseidonT4Factory: PoseidonT4__factory; - let PoseidonT5Factory: PoseidonT5__factory; - let PoseidonT6Factory: PoseidonT6__factory; - - let linkedLibraryAddresses: - | QFILibraryAddresses - | PollFactoryLibraryAddresses - | MessageAqFactoryLibraryAddresses - | GrantRoundFactoryLibraryAddresses; - let GrantRoundFactory: GrantRoundFactory__factory; - let PollFactoryFactory: PollFactory__factory; - let MessageAqFactoryFactory: MessageAqFactory__factory; - let MessageAq_Factory: AccQueueQuinaryMaci__factory; - let FreeForAllGateKeeperFactory: FreeForAllGatekeeper__factory; - let ConstantInitialVoiceCreditProxyFactory: ConstantInitialVoiceCreditProxy__factory; - let VKRegistryFactory: VkRegistry__factory; - - let RecipientRegistryFactory: OptimisticRecipientRegistry__factory; - let BaseERC20TokenFactory: BaseERC20Token__factory; - let PollProcessorAndTallyerFactory: PollProcessorAndTallyer__factory; - let MockVerifierFactory: MockVerifier__factory; - - let QFIFactory: QFI__factory; - - let PoseidonT3: PoseidonT3; - let PoseidonT4: PoseidonT4; - let PoseidonT5: PoseidonT5; - let PoseidonT6: PoseidonT6; - let grantRoundFactory: GrantRoundFactory; - let pollFactory: PollFactory; - let messageAqFactory: MessageAqFactory; - let messageAqFactoryGrants: MessageAqFactory; - let messageAq: AccQueueQuinaryMaci; - - let vkRegistry: VkRegistry; - let constantInitialVoiceCreditProxy: ConstantInitialVoiceCreditProxy; - let freeForAllGateKeeper: FreeForAllGatekeeper; - let optimisticRecipientRegistry: OptimisticRecipientRegistry; - let baseERC20Token: BaseERC20Token; - let pollProcessorAndTallyer: PollProcessorAndTallyer; - let mockVerifier: MockVerifier; - let qfi: QFI; - let coordinator: Keypair; - let poll: Poll; - let users: { - maciKey: Keypair; - signer: Signer; - }[] = []; - const duration = 15; - const maxValues = { - maxUsers: 25, - maxMessages: 25, - maxVoteOptions: 25, - }; - const treeDepths = { - intStateTreeDepth: 1, - messageTreeDepth: 4, - messageTreeSubDepth: 2, - voteOptionTreeDepth: 2, - }; - const stateTreeDepth = 10; - const intStateTreeDepth = 1; - const messageBatchSize = 25; - const tallyBatchSize = 5 ** intStateTreeDepth; - let maciState: MaciState; - - beforeEach(async () => { - [deployer, user1, user2, user3, user4, user5, user6, user7, user8, user9, user10] = await ethers.getSigners(); - deployerAddress = await deployer.getAddress(); - PoseidonT3Factory = new PoseidonT3__factory(deployer); - PoseidonT4Factory = new PoseidonT4__factory(deployer); - PoseidonT5Factory = new PoseidonT5__factory(deployer); - PoseidonT6Factory = new PoseidonT6__factory(deployer); - PoseidonT3 = await PoseidonT3Factory.deploy(); - PoseidonT4 = await PoseidonT4Factory.deploy(); - PoseidonT5 = await PoseidonT5Factory.deploy(); - PoseidonT6 = await PoseidonT6Factory.deploy(); - - linkedLibraryAddresses = { - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT5"]: PoseidonT5.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT3"]: PoseidonT3.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT6"]: PoseidonT6.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT4"]: PoseidonT4.address, - }; - - GrantRoundFactory = new GrantRoundFactory__factory({ ...linkedLibraryAddresses }, deployer); - PollFactoryFactory = new PollFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAqFactoryFactory = new MessageAqFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAq_Factory = new AccQueueQuinaryMaci__factory({ ...linkedLibraryAddresses }, deployer); - QFIFactory = new QFI__factory({ ...linkedLibraryAddresses }, deployer); - VKRegistryFactory = new VkRegistry__factory(deployer); - ConstantInitialVoiceCreditProxyFactory = new ConstantInitialVoiceCreditProxy__factory(deployer); - FreeForAllGateKeeperFactory = new FreeForAllGatekeeper__factory(deployer); - RecipientRegistryFactory = new OptimisticRecipientRegistry__factory(deployer); - BaseERC20TokenFactory = new BaseERC20Token__factory(deployer); - PollProcessorAndTallyerFactory = new PollProcessorAndTallyer__factory(deployer); - MockVerifierFactory = new MockVerifier__factory(deployer); - - optimisticRecipientRegistry = await RecipientRegistryFactory.deploy(0, 0, deployerAddress); - grantRoundFactory = await GrantRoundFactory.deploy(); - grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - pollFactory = await PollFactoryFactory.deploy(); - messageAqFactory = await MessageAqFactoryFactory.deploy(); - messageAqFactoryGrants = await MessageAqFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - //NOTE: each user recieves 100 voice credits by default - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(100); - vkRegistry = await VKRegistryFactory.deploy(); - baseERC20Token = await BaseERC20TokenFactory.deploy(100); - mockVerifier = await MockVerifierFactory.deploy(); - pollProcessorAndTallyer = await PollProcessorAndTallyerFactory.deploy(mockVerifier.address); - - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - await pollFactory.transferOwnership(qfi.address); - await grantRoundFactory.transferOwnership(qfi.address); - await messageAqFactory.transferOwnership(pollFactory.address); - await messageAqFactoryGrants.transferOwnership(grantRoundFactory.address); - await qfi.initialize(vkRegistry.address, messageAqFactory.address, messageAqFactoryGrants.address); - - const stateTreeDepth = await qfi.stateTreeDepth(); - const _stateTreeDepth = stateTreeDepth.toString(); - const _intStateTreeDepth = 1; - const _messageTreeDepth = 4; - const _voteOptionTreeDepth = 2; - const _messageBatchSize = 25; - const _processVk = testProcessVk.asContractParam(); - const _tallyVk = testTallyVk.asContractParam(); - - await vkRegistry.setVerifyingKeys( - _stateTreeDepth, - _intStateTreeDepth, - _messageTreeDepth, - _voteOptionTreeDepth, - _messageBatchSize, - _processVk, - _tallyVk - ); - - await vkRegistry.genProcessVkSig(_stateTreeDepth, _messageTreeDepth, _voteOptionTreeDepth, _messageBatchSize); - await vkRegistry.genTallyVkSig(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); - coordinator = new Keypair(); - const coordinatorPubkey = coordinator.pubKey.asContractParam(); - - // NOTE: Create new local maci data structure - maciState = new MaciState(); - const provider = deployer.provider ?? ethers.getDefaultProvider(); - - const userSigners = [user1, user2, user3]; - users = []; - for (const user of userSigners) { - const maciKey = new Keypair(); - const _pubKey = maciKey.pubKey.asContractParam(); - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - - const { logs } = await qfi - .connect(user) - .signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData) - .then((tx) => tx.wait()); - - const iface = qfi.interface; - const signUpEvent = iface.parseLog(logs[logs.length - 1]); - - users.push({ maciKey: maciKey, signer: user }); - // NOTE: Signup users on local maci data structure - maciState.signUp( - maciKey.pubKey, - BigInt(signUpEvent.args._voiceCreditBalance.toString()), - BigInt(signUpEvent.args._timestamp.toString()) - ); - } - - const { blockHash } = await qfi - .connect(deployer) - .deployPoll(duration, maxValues, treeDepths, coordinatorPubkey, { gasLimit: 30000000 }) - .then((tx) => tx.wait()); - - // NOTE: Deploy the poll on local maci data structure - const deployTime = (await provider.getBlock(blockHash)).timestamp; - const p = maciState.deployPoll( - duration, - BigInt(deployTime + duration), - maxValues, - treeDepths, - messageBatchSize, - coordinator - ); - const pollContractAddress = await qfi.getPoll(0); - poll = new Poll__factory({ ...linkedLibraryAddresses }, deployer).attach(pollContractAddress); - - for (const user of users) { - const { maciKey, signer } = user; - const _stateIndex = BigInt(1); - const _newPubKey = maciKey.pubKey; - const _voteOptionIndex = BigInt(0); - const _newVoteWeight = BigInt(9); - const _nonce = BigInt(1); - const _pollId = BigInt(0); - const _salt = BigInt(0); - const command = new Command(_stateIndex, _newPubKey, _voteOptionIndex, _newVoteWeight, _nonce, _pollId, _salt); - - const signature = command.sign(maciKey.privKey); - const sharedKey = Keypair.genEcdhSharedKey(maciKey.privKey, coordinator.pubKey); - const message = command.encrypt(signature, sharedKey); - const _message = message.asContractParam(); - const _encPubKey = maciKey.pubKey.asContractParam(); - const { logs } = await poll - .connect(signer) - .publishMessage(_message, _encPubKey) - .then((tx) => tx.wait()); - - // NOTE: Publish the message on local maci data structure - maciState.polls[_pollId].publishMessage(message, maciKey.pubKey); - } - - const dd = await poll.getDeployTimeAndDuration(); - const hardHatProvider = ethers.provider; - await hardHatProvider.send("evm_increaseTime", [Number(dd[1]) + 1]); - await hardHatProvider.send("evm_mine", []); - - const extContracts = await poll.extContracts(); - - const messageAqAddress = extContracts.messageAq; - messageAq = MessageAq_Factory.attach(messageAqAddress); - }); - - it("expect revert - voting period is over", async () => { - const keypair = users[0].maciKey; - - const command = new Command(BigInt(1), keypair.pubKey, BigInt(0), BigInt(9), BigInt(1), BigInt(0), BigInt(0)); - - const signature = command.sign(keypair.privKey); - const sharedKey = Keypair.genEcdhSharedKey(keypair.privKey, coordinator.pubKey); - const message = command.encrypt(signature, sharedKey); - - const _message = message.asContractParam(); - const _encPubKey = keypair.pubKey.asContractParam(); - - await expect(poll.publishMessage(_message, _encPubKey)).to.be.revertedWith("PollE03"); - }); - - describe("Merge and calculate tree roots", () => { - // event MergeMaciStateAqSubRoots(uint256 _numSrQueueOps); - // event MergeMaciStateAq(uint256 _stateRoot); - // event MergeMessageAqSubRoots(uint256 _numSrQueueOps); - // event MergeMessageAq(uint256 _messageRoot); - it("verify - merge the message AccQueue", async () => { - await expect(poll.mergeMessageAqSubRoots(0)).to.emit(poll, "MergeMessageAqSubRoots").withArgs(0); - await expect(poll.mergeMessageAq()).to.emit(poll, "MergeMessageAq"); - }); - it("verify - merge the MaciStateAq ", async () => { - await expect(poll.mergeMaciStateAqSubRoots(0, 0)).to.emit(poll, "MergeMaciStateAqSubRoots").withArgs(0); - await expect(poll.mergeMaciStateAq(0)).to.emit(poll, "MergeMaciStateAq"); - }); - it("require fail - cannot merge messages twice", async () => { - await expect(poll.mergeMessageAqSubRoots(0)).to.emit(poll, "MergeMessageAqSubRoots"); - await expect(poll.mergeMessageAq()).to.emit(poll, "MergeMessageAq"); - await expect(poll.mergeMessageAqSubRoots(0)).to.be.revertedWith("AccQueue: subtrees already merged"); - }); - it("require fail - cannot merge state twice", async () => { - await expect(poll.mergeMaciStateAqSubRoots(0, 0)).to.emit(poll, "MergeMaciStateAqSubRoots"); - await expect(poll.mergeMaciStateAq(0)).to.emit(poll, "MergeMaciStateAq"); - await expect(poll.mergeMaciStateAqSubRoots(0, 0)).to.be.revertedWith("PollE07"); - await expect(poll.mergeMaciStateAq(0)).to.be.revertedWith("PollE07"); - }); - it("verify - correctly merges messageAq", async () => { - const maciPoll = maciState.polls[0]; - maciPoll.messageAq.mergeSubRoots(0); //NOTE: 0 as input attempts to merge all subroots - maciPoll.messageAq.merge(treeDepths.messageTreeDepth); - const expectedMessageRoot = maciState.polls[0].messageAq.mainRoots[treeDepths.messageTreeDepth].toString(); - - await expect(poll.mergeMessageAqSubRoots(0)).to.emit(poll, "MergeMessageAqSubRoots").withArgs(0); - await expect(poll.mergeMessageAq()).to.emit(poll, "MergeMessageAq").withArgs(expectedMessageRoot); - }); - - it("verify - correctly merges stateAq", async () => { - const maciPoll = maciState.polls[0]; - maciPoll.messageAq.mergeSubRoots(0); //NOTE: 0 as input attempts to merge all subroots - maciPoll.messageAq.merge(treeDepths.messageTreeDepth); - const expectedMessageRoot = maciState.polls[0].messageAq.mainRoots[treeDepths.messageTreeDepth].toString(); - - await expect(poll.mergeMessageAqSubRoots(0)).to.emit(poll, "MergeMessageAqSubRoots").withArgs(0); - await expect(poll.mergeMessageAq()).to.emit(poll, "MergeMessageAq").withArgs(expectedMessageRoot); - - const maciStateAq = maciState.stateAq; - maciStateAq.mergeSubRoots(0); // 0 as input attempts to merge all subroots - maciStateAq.merge(stateTreeDepth); - const expectedStateRoot = maciState.stateAq.mainRoots[stateTreeDepth].toString(); - - await expect(poll.mergeMaciStateAqSubRoots(0, 0)).to.emit(poll, "MergeMaciStateAqSubRoots").withArgs(0); - await expect(poll.mergeMaciStateAq(0)) - .to.emit(poll, "MergeMaciStateAq") - .withArgs(expectedStateRoot); - }); - }); - - -}); diff --git a/packages/contracts/tests/QF/05-process.ts b/packages/contracts/tests/QF/05-process.ts deleted file mode 100644 index 3290877b..00000000 --- a/packages/contracts/tests/QF/05-process.ts +++ /dev/null @@ -1,580 +0,0 @@ -import { ethers } from "hardhat"; -import { BigNumber, BigNumberish, Signer } from "ethers"; -import chai from "chai"; -import { solidity } from "ethereum-waffle"; -import { Command, Keypair, Message, VerifyingKey } from "qaci-domainobjs"; -import { G1Point, G2Point } from "qaci-crypto"; -import { MaciState, genProcessVkSig, genTallyVkSig } from "qaci-core"; -import { PoseidonT3 } from "../../typechain/PoseidonT3"; -import { PoseidonT3__factory } from "../../typechain/factories/PoseidonT3__factory"; - -import { PoseidonT4 } from "../../typechain/PoseidonT4"; -import { PoseidonT4__factory } from "../../typechain/factories/PoseidonT4__factory"; - -import { PoseidonT5 } from "../../typechain/PoseidonT5"; -import { PoseidonT5__factory } from "../../typechain/factories/PoseidonT5__factory"; - -import { PoseidonT6 } from "../../typechain/PoseidonT6"; -import { PoseidonT6__factory } from "../../typechain/factories/PoseidonT6__factory"; - -import { - GrantRoundFactoryLibraryAddresses, - GrantRoundFactory__factory, -} from "../../typechain/factories/GrantRoundFactory__factory"; -import { PollFactory__factory, PollFactoryLibraryAddresses } from "../../typechain/factories/PollFactory__factory"; - -import { - MessageAqFactory__factory, - MessageAqFactoryLibraryAddresses, -} from "../../typechain/factories/MessageAqFactory__factory"; -import { QFI__factory, QFILibraryAddresses } from "../../typechain/factories/QFI__factory"; - -import { GrantRoundFactory } from "../../typechain/GrantRoundFactory"; -import { PollFactory } from "../../typechain/PollFactory"; -import { MessageAqFactory } from "../../typechain/MessageAqFactory"; -import { QFI } from "../../typechain/QFI"; -import { Poll__factory } from "../../typechain/factories/Poll__factory"; -import { MessageStruct, Poll } from "../../typechain/Poll"; - -import { VkRegistry__factory } from "../../typechain/factories/VkRegistry__factory"; -import { FreeForAllGatekeeper__factory } from "../../typechain/factories/FreeForAllGatekeeper__factory"; -import { ConstantInitialVoiceCreditProxy__factory } from "../../typechain/factories/ConstantInitialVoiceCreditProxy__factory"; - -import { VerifyingKeyStruct, VkRegistry } from "../../typechain/VkRegistry"; -import { FreeForAllGatekeeper } from "../../typechain/FreeForAllGatekeeper"; -import { ConstantInitialVoiceCreditProxy } from "../../typechain/ConstantInitialVoiceCreditProxy"; - -import { OptimisticRecipientRegistry } from "../../typechain/OptimisticRecipientRegistry"; -import { OptimisticRecipientRegistry__factory } from "../../typechain/factories/OptimisticRecipientRegistry__factory"; - -import { BaseERC20Token } from "../../typechain/BaseERC20Token"; -import { BaseERC20Token__factory } from "../../typechain/factories/BaseERC20Token__factory"; - -import { PollProcessorAndTallyer } from "../../typechain/PollProcessorAndTallyer"; -import { PollProcessorAndTallyer__factory } from "../../typechain/factories/PollProcessorAndTallyer__factory"; - -import { MockVerifier } from "../../typechain/MockVerifier"; -import { MockVerifier__factory } from "../../typechain/factories/MockVerifier__factory"; -import { AccQueueQuinaryMaci } from "../../typechain/AccQueueQuinaryMaci"; -import { AccQueueQuinaryMaci__factory } from "../../typechain"; - -chai.use(solidity); -const { expect } = chai; -const testProcessVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -const testTallyVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -describe("Process - Tally QV poll votes", () => { - let deployer: Signer; - let user1: Signer; - let user2: Signer; - let user3: Signer; - let user4: Signer; - let user5: Signer; - let user6: Signer; - let user7: Signer; - let user8: Signer; - let user9: Signer; - let user10: Signer; - - let project1: Signer; - let project2: Signer; - let project3: Signer; - let deployerAddress: string; - let PoseidonT3Factory: PoseidonT3__factory; - let PoseidonT4Factory: PoseidonT4__factory; - let PoseidonT5Factory: PoseidonT5__factory; - let PoseidonT6Factory: PoseidonT6__factory; - - let linkedLibraryAddresses: - | QFILibraryAddresses - | PollFactoryLibraryAddresses - | MessageAqFactoryLibraryAddresses - | GrantRoundFactoryLibraryAddresses; - let GrantRoundFactory: GrantRoundFactory__factory; - let PollFactoryFactory: PollFactory__factory; - let MessageAqFactoryFactory: MessageAqFactory__factory; - let MessageAq_Factory: AccQueueQuinaryMaci__factory; - let FreeForAllGateKeeperFactory: FreeForAllGatekeeper__factory; - let ConstantInitialVoiceCreditProxyFactory: ConstantInitialVoiceCreditProxy__factory; - let VKRegistryFactory: VkRegistry__factory; - - let RecipientRegistryFactory: OptimisticRecipientRegistry__factory; - let BaseERC20TokenFactory: BaseERC20Token__factory; - let PollProcessorAndTallyerFactory: PollProcessorAndTallyer__factory; - let MockVerifierFactory: MockVerifier__factory; - - let QFIFactory: QFI__factory; - - let PoseidonT3: PoseidonT3; - let PoseidonT4: PoseidonT4; - let PoseidonT5: PoseidonT5; - let PoseidonT6: PoseidonT6; - let grantRoundFactory: GrantRoundFactory; - let pollFactory: PollFactory; - let messageAqFactory: MessageAqFactory; - let messageAqFactoryGrants: MessageAqFactory; - let messageAq: AccQueueQuinaryMaci; - - let vkRegistry: VkRegistry; - let constantInitialVoiceCreditProxy: ConstantInitialVoiceCreditProxy; - let freeForAllGateKeeper: FreeForAllGatekeeper; - let optimisticRecipientRegistry: OptimisticRecipientRegistry; - let baseERC20Token: BaseERC20Token; - let pollProcessorAndTallyer: PollProcessorAndTallyer; - let mockVerifier: MockVerifier; - let qfi: QFI; - let coordinator: Keypair; - let poll: Poll; - let users: { - maciKey: Keypair; - signer: Signer; - stateIndex: number; - }[] = []; - const duration = 15; - const maxValues = { - maxUsers: 25, - maxMessages: 25, - maxVoteOptions: 25, - }; - const treeDepths = { - intStateTreeDepth: 1, - messageTreeDepth: 4, - messageTreeSubDepth: 2, - voteOptionTreeDepth: 2, - }; - const stateTreeDepth = 10; - const intStateTreeDepth = 1; - const messageBatchSize = 25; - const tallyBatchSize = 5 ** intStateTreeDepth; - let maciState: MaciState; - let tallyFileData: { - maci: any; - pollId: number; - newTallyCommitment: any; - results: { - tally: any; - salt: any; - }; - totalSpentVoiceCredits: { - spent: any; - salt: any; - }; - perVOSpentVoiceCredits: { - tally: any; - salt: any; - }; - }; - - beforeEach(async function () { - this?.timeout(40000); - [deployer, user1, user2, user3, user4, user5, user6, user7, user8, user9, user10] = await ethers.getSigners(); - deployerAddress = await deployer.getAddress(); - PoseidonT3Factory = new PoseidonT3__factory(deployer); - PoseidonT4Factory = new PoseidonT4__factory(deployer); - PoseidonT5Factory = new PoseidonT5__factory(deployer); - PoseidonT6Factory = new PoseidonT6__factory(deployer); - PoseidonT3 = await PoseidonT3Factory.deploy(); - PoseidonT4 = await PoseidonT4Factory.deploy(); - PoseidonT5 = await PoseidonT5Factory.deploy(); - PoseidonT6 = await PoseidonT6Factory.deploy(); - - linkedLibraryAddresses = { - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT5"]: PoseidonT5.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT3"]: PoseidonT3.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT6"]: PoseidonT6.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT4"]: PoseidonT4.address, - }; - - GrantRoundFactory = new GrantRoundFactory__factory({ ...linkedLibraryAddresses }, deployer); - PollFactoryFactory = new PollFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAqFactoryFactory = new MessageAqFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAq_Factory = new AccQueueQuinaryMaci__factory({ ...linkedLibraryAddresses }, deployer); - QFIFactory = new QFI__factory({ ...linkedLibraryAddresses }, deployer); - VKRegistryFactory = new VkRegistry__factory(deployer); - ConstantInitialVoiceCreditProxyFactory = new ConstantInitialVoiceCreditProxy__factory(deployer); - FreeForAllGateKeeperFactory = new FreeForAllGatekeeper__factory(deployer); - RecipientRegistryFactory = new OptimisticRecipientRegistry__factory(deployer); - BaseERC20TokenFactory = new BaseERC20Token__factory(deployer); - PollProcessorAndTallyerFactory = new PollProcessorAndTallyer__factory(deployer); - MockVerifierFactory = new MockVerifier__factory(deployer); - - optimisticRecipientRegistry = await RecipientRegistryFactory.deploy(0, 0, deployerAddress); - grantRoundFactory = await GrantRoundFactory.deploy(); - grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - pollFactory = await PollFactoryFactory.deploy(); - messageAqFactory = await MessageAqFactoryFactory.deploy(); - messageAqFactoryGrants = await MessageAqFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - //NOTE: each user recieves 100 voice credits by default - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(100); - vkRegistry = await VKRegistryFactory.deploy(); - baseERC20Token = await BaseERC20TokenFactory.deploy(100); - mockVerifier = await MockVerifierFactory.deploy(); - pollProcessorAndTallyer = await PollProcessorAndTallyerFactory.deploy(mockVerifier.address); - - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - await pollFactory.transferOwnership(qfi.address); - await grantRoundFactory.transferOwnership(qfi.address); - await messageAqFactory.transferOwnership(pollFactory.address); - await messageAqFactoryGrants.transferOwnership(grantRoundFactory.address); - await qfi.initialize(vkRegistry.address, messageAqFactory.address, messageAqFactoryGrants.address); - - const stateTreeDepth = await qfi.stateTreeDepth(); - const _stateTreeDepth = stateTreeDepth.toString(); - const _intStateTreeDepth = 1; - const _messageTreeDepth = 4; - const _voteOptionTreeDepth = 2; - const _messageBatchSize = 25; - const _processVk = testProcessVk.asContractParam(); - const _tallyVk = testTallyVk.asContractParam(); - - await vkRegistry.setVerifyingKeys( - _stateTreeDepth, - _intStateTreeDepth, - _messageTreeDepth, - _voteOptionTreeDepth, - _messageBatchSize, - _processVk, - _tallyVk - ); - - await vkRegistry.genProcessVkSig(_stateTreeDepth, _messageTreeDepth, _voteOptionTreeDepth, _messageBatchSize); - await vkRegistry.genTallyVkSig(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); - coordinator = new Keypair(); - const coordinatorPubkey = coordinator.pubKey.asContractParam(); - - // NOTE: Create new local maci data structure - maciState = new MaciState(); - const provider = deployer.provider ?? ethers.getDefaultProvider(); - - const userSigners = [user1, user2, user3]; - users = []; - for (const user of userSigners) { - const maciKey = new Keypair(); - const _pubKey = maciKey.pubKey.asContractParam(); - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - - const { logs } = await qfi - .connect(user) - .signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData) - .then((tx) => tx.wait()); - - const iface = qfi.interface; - const signUpEvent = iface.parseLog(logs[logs.length - 1]); - const stateIndex = signUpEvent.args._stateIndex.toString(); - users.push({ maciKey: maciKey, signer: user, stateIndex: stateIndex }); - // NOTE: Signup users on local maci data structure - maciState.signUp( - maciKey.pubKey, - BigInt(signUpEvent.args._voiceCreditBalance.toString()), - BigInt(signUpEvent.args._timestamp.toString()) - ); - } - - const { blockHash } = await qfi - .connect(deployer) - .deployPoll(duration, maxValues, treeDepths, coordinatorPubkey, { gasLimit: 30000000 }) - .then((tx) => tx.wait()); - - // NOTE: Deploy the poll on local maci data structure - const deployTime = (await provider.getBlock(blockHash)).timestamp; - //NOTE: this is where the coordinator key is set on the local maci data structure - const p = maciState.deployPoll( - duration, - BigInt(deployTime + duration), - maxValues, - treeDepths, - messageBatchSize, - coordinator - ); - const pollContractAddress = await qfi.getPoll(0); - poll = new Poll__factory({ ...linkedLibraryAddresses }, deployer).attach(pollContractAddress); - let index = 1; - for (const user of users) { - const { maciKey, signer, stateIndex } = user; - const _stateIndex = BigInt(stateIndex); - const _newPubKey = maciKey.pubKey; - const _voteOptionIndex = BigInt(1); - const _newVoteWeight = BigInt(1); - const _nonce = BigInt(1); - const _pollId = BigInt(0); - const _salt = BigInt(1); - const command = new Command(_stateIndex, _newPubKey, _voteOptionIndex, _newVoteWeight, _nonce, _pollId, _salt); - - const signature = command.sign(maciKey.privKey); - const sharedKey = Keypair.genEcdhSharedKey(maciKey.privKey, coordinator.pubKey); - const message = command.encrypt(signature, sharedKey); - const _message = message.asContractParam(); - const _encPubKey = maciKey.pubKey.asContractParam(); - // NOTE: Publish the message on local maci data structure - maciState.polls[0].publishMessage(message, maciKey.pubKey); - const { logs } = await poll - .connect(signer) - .publishMessage(_message, _encPubKey) - .then((tx) => tx.wait()); - } - const overwrite = [...users]; - for (const user of overwrite) { - const { maciKey, signer, stateIndex } = user; - const _stateIndex = BigInt(stateIndex); - const _newPubKey = maciKey.pubKey; - const _voteOptionIndex = BigInt(index); - const _newVoteWeight = BigInt(index); - const _nonce = BigInt(1); - const _pollId = BigInt(0); - const _salt = BigInt(2); - const command = new Command(_stateIndex, _newPubKey, _voteOptionIndex, _newVoteWeight, _nonce, _pollId, _salt); - index++; - - const signature = command.sign(maciKey.privKey); - const sharedKey = Keypair.genEcdhSharedKey(maciKey.privKey, coordinator.pubKey); - const message = command.encrypt(signature, sharedKey); - const _message = message.asContractParam(); - const _encPubKey = maciKey.pubKey.asContractParam(); - // NOTE: Publish the message on local maci data structure - maciState.polls[0].publishMessage(message, maciKey.pubKey); - const { logs } = await poll - .connect(signer) - .publishMessage(_message, _encPubKey) - .then((tx) => tx.wait()); - } - - const dd = await poll.getDeployTimeAndDuration(); - const hardHatProvider = ethers.provider; - await hardHatProvider.send("evm_increaseTime", [Number(dd[1]) + 1]); - await hardHatProvider.send("evm_mine", []); - - const extContracts = await poll.extContracts(); - - const messageAqAddress = extContracts.messageAq; - messageAq = MessageAq_Factory.attach(messageAqAddress); - - const maciPoll = maciState.polls[0]; - maciPoll.messageAq.mergeSubRoots(0); //NOTE: 0 as input attempts to merge all subroots - maciPoll.messageAq.merge(treeDepths.messageTreeDepth); - - await poll.mergeMessageAqSubRoots(0); - await poll.mergeMessageAq(); - - const maciStateAq = maciState.stateAq; - maciStateAq.mergeSubRoots(0); // 0 as input attempts to merge all subroots - maciStateAq.merge(stateTreeDepth); - - await poll.mergeMaciStateAqSubRoots(0, 0); - await poll.mergeMaciStateAq(0); - }); - - describe("Maci state calculations", () => { - it("verify - correctly packs maximumVoteOptions, numsignups, currentMessageBatchIndex, indexOfCurrentBatch into a 250-bit value", async () => { - const pollId = 0; - const maciPoll = maciState.polls[pollId]; - - //TODO: do we need large vals? - const expectedPackedVals = MaciState.packProcessMessageSmallVals( - maxValues.maxVoteOptions, - users.length, - 0, - maciPoll.messages.length - ); - const onChainPackedVals = await pollProcessorAndTallyer.genProcessMessagesPackedVals( - poll.address, - BigNumber.from(0), - users.length - ); - expect(expectedPackedVals.toString()).to.equal(onChainPackedVals.toString()); - }); - it("verify - correctly packs the batch start index and number of signups into a 100-bit value", async () => { - const maciExpectedPackedVals = MaciState.packTallyVotesSmallVals(0, tallyBatchSize, users.length); - const onChainPackedVals = await pollProcessorAndTallyer.genTallyVotesPackedVals(users.length, 0, tallyBatchSize); - expect(onChainPackedVals.toString()).to.equal(maciExpectedPackedVals.toString()); - }); - }); - - describe("Process and Tally Vote messages", () => { - it("verify - process messages and proof", async () => { - const pollId = 0; - const maciPoll = maciState.polls[pollId]; - //NOTE: new state root and ballot root commitment calculated off chain - const { newSbCommitment: maciNewSbCommitment } = maciPoll.processMessages(pollId); - //TODO: why does this work? - const dummyProof: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] = [0, 0, 0, 0, 0, 0, 0, 0]; - const { status } = await pollProcessorAndTallyer - .processMessages(poll.address, maciNewSbCommitment, dummyProof) - .then((tx) => tx.wait()); - expect(status).to.equal(1); - expect(await pollProcessorAndTallyer.processingComplete()).to.be.true; - - const onChainNewSbCommitment = await pollProcessorAndTallyer.sbCommitment(); - expect(maciNewSbCommitment).to.equal(onChainNewSbCommitment.toString()); - }); - - it("verify - tally proof is valid and updates tally commitment on chain", async () => { - const pollId = 0; - const maciPoll = maciState.polls[pollId]; - //NOTE: new state root and ballot root commitment calculated off chain - const { newSbCommitment: maciNewSbCommitment } = maciPoll.processMessages(pollId); - //TODO: why does this work? - const dummyProof: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] = [0, 0, 0, 0, 0, 0, 0, 0]; - const { status: processMessagesStatus } = await pollProcessorAndTallyer - .processMessages(poll.address, maciNewSbCommitment, dummyProof) - .then((tx) => tx.wait()); - expect(processMessagesStatus).to.equal(1); - expect(await pollProcessorAndTallyer.processingComplete()).to.be.true; - - const maciGeneratedInputs = maciPoll.tallyVotes(pollId); - const { status: tallyVotesStatus } = await pollProcessorAndTallyer - .tallyVotes(poll.address, maciGeneratedInputs.newTallyCommitment, dummyProof) - .then((tx) => tx.wait()); - expect(tallyVotesStatus).to.equal(1); - - const onChainNewTallyCommitment = await pollProcessorAndTallyer.tallyCommitment(); - expect(maciGeneratedInputs.newTallyCommitment).to.equal(onChainNewTallyCommitment); - }); - - it("require fail - Fails if there are no untallied ballots left", async () => { - const pollId = 0; - const maciPoll = maciState.polls[pollId]; - //NOTE: new state root and ballot root commitment calculated off chain - const { newSbCommitment: maciNewSbCommitment } = maciPoll.processMessages(pollId); - //TODO: why does this work? - const dummyProof: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] = [0, 0, 0, 0, 0, 0, 0, 0]; - const { status: processMessagesStatus } = await pollProcessorAndTallyer - .processMessages(poll.address, maciNewSbCommitment, dummyProof) - .then((tx) => tx.wait()); - expect(processMessagesStatus).to.equal(1); - expect(await pollProcessorAndTallyer.processingComplete()).to.be.true; - - const maciGeneratedInputs = maciPoll.tallyVotes(pollId); - const { status: tallyVotesStatus } = await pollProcessorAndTallyer - .tallyVotes(poll.address, maciGeneratedInputs.newTallyCommitment, dummyProof) - .then((tx) => tx.wait()); - expect(tallyVotesStatus).to.equal(1); - const onChainNewTallyCommitment = await pollProcessorAndTallyer.tallyCommitment(); - - expect(maciGeneratedInputs.newTallyCommitment).to.equal(onChainNewTallyCommitment); - - await expect( - pollProcessorAndTallyer.tallyVotes(poll.address, maciGeneratedInputs.newTallyCommitment, dummyProof) - ).to.be.revertedWith("PptE08"); - }); - - it("verify - generates tally file data", async () => { - const pollId = 0; - const maciPoll = maciState.polls[pollId]; - //NOTE: new state root and ballot root commitment calculated off chain - const { newSbCommitment: maciNewSbCommitment } = maciPoll.processMessages(pollId); - //TODO: why does this work? - const dummyProof: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] = [0, 0, 0, 0, 0, 0, 0, 0]; - - const { status: processMessagesStatus } = await pollProcessorAndTallyer - .processMessages(poll.address, maciNewSbCommitment, dummyProof) - .then((tx) => tx.wait()); - expect(processMessagesStatus).to.equal(1); - expect(await pollProcessorAndTallyer.processingComplete()).to.be.true; - - const maciTallyCircuitInputs = maciPoll.tallyVotes(pollId); - const { status: tallyVotesStatus } = await pollProcessorAndTallyer - .tallyVotes(poll.address, maciTallyCircuitInputs.newTallyCommitment, dummyProof) - .then((tx) => tx.wait()); - expect(tallyVotesStatus).to.equal(1); - - const onChainNewTallyCommitment = await pollProcessorAndTallyer.tallyCommitment(); - expect(maciTallyCircuitInputs.newTallyCommitment).to.equal(onChainNewTallyCommitment); - - await expect( - pollProcessorAndTallyer.tallyVotes(poll.address, maciTallyCircuitInputs.newTallyCommitment, dummyProof) - ).to.be.revertedWith("PptE08"); //NOTE: should not be any votes left to tally - - const newTallyCommitment = maciTallyCircuitInputs.newTallyCommitment; - const tallyResults = maciPoll.results.map((x: any) => x.toString()); - const tallySalt = maciTallyCircuitInputs.newResultsRootSalt; - const voiceCreditsSpent = maciPoll.totalSpentVoiceCredits.toString(); - const voiceCreditsSalt = maciTallyCircuitInputs.newSpentVoiceCreditSubtotalSalt; - const perVOSpentTally = maciPoll.perVOSpentVoiceCredits.map((x: any) => x.toString()); - const perVOSpentSalt = maciTallyCircuitInputs.newPerVOSpentVoiceCreditsRootSalt; - tallyFileData = { - maci: qfi.address, - pollId: pollId, - newTallyCommitment: newTallyCommitment, - results: { - tally: tallyResults, - salt: tallySalt, - }, - totalSpentVoiceCredits: { - spent: voiceCreditsSpent, - salt: voiceCreditsSalt, - }, - perVOSpentVoiceCredits: { - tally: perVOSpentTally, - salt: perVOSpentSalt, - }, - }; - Object.values(tallyFileData).forEach((value) => { - expect(value).to.not.be.undefined; - }); - Object.values(tallyFileData).forEach((value) => { - expect(value).to.not.be.undefined; - }); - expect(maciPoll.hasUntalliedBallots()).to.equal(false); - expect(maciPoll.hasUnprocessedMessages()).to.equal(false); - expect(maciPoll.messages.length).to.be.equal(users.length * 2); //every user sends an overide message - }); - - }); -}); diff --git a/packages/contracts/tests/QF/06-finalize.ts b/packages/contracts/tests/QF/06-finalize.ts deleted file mode 100644 index 222d15ee..00000000 --- a/packages/contracts/tests/QF/06-finalize.ts +++ /dev/null @@ -1,614 +0,0 @@ -import { ethers } from "hardhat"; -import { BigNumber, BigNumberish, Signer } from "ethers"; -import chai from "chai"; -import { solidity } from "ethereum-waffle"; -import { Command, Keypair, Message, VerifyingKey } from "qaci-domainobjs"; -import { G1Point, G2Point, hash5, hashLeftRight, IncrementalQuinTree } from "qaci-crypto"; -import { MaciState, genProcessVkSig, genTallyVkSig } from "qaci-core"; -import { PoseidonT3 } from "../../typechain/PoseidonT3"; -import { PoseidonT3__factory } from "../../typechain/factories/PoseidonT3__factory"; - -import { PoseidonT4 } from "../../typechain/PoseidonT4"; -import { PoseidonT4__factory } from "../../typechain/factories/PoseidonT4__factory"; - -import { PoseidonT5 } from "../../typechain/PoseidonT5"; -import { PoseidonT5__factory } from "../../typechain/factories/PoseidonT5__factory"; - -import { PoseidonT6 } from "../../typechain/PoseidonT6"; -import { PoseidonT6__factory } from "../../typechain/factories/PoseidonT6__factory"; - -import { - GrantRoundFactoryLibraryAddresses, - GrantRoundFactory__factory, -} from "../../typechain/factories/GrantRoundFactory__factory"; -import { PollFactory__factory, PollFactoryLibraryAddresses } from "../../typechain/factories/PollFactory__factory"; - -import { - MessageAqFactory__factory, - MessageAqFactoryLibraryAddresses, -} from "../../typechain/factories/MessageAqFactory__factory"; -import { QFI__factory, QFILibraryAddresses } from "../../typechain/factories/QFI__factory"; - -import { GrantRoundFactory } from "../../typechain/GrantRoundFactory"; -import { PollFactory } from "../../typechain/PollFactory"; -import { MessageAqFactory } from "../../typechain/MessageAqFactory"; -import { QFI } from "../../typechain/QFI"; -import { Poll__factory } from "../../typechain/factories/Poll__factory"; -import { MessageStruct, Poll } from "../../typechain/Poll"; - -import { VkRegistry__factory } from "../../typechain/factories/VkRegistry__factory"; -import { FreeForAllGatekeeper__factory } from "../../typechain/factories/FreeForAllGatekeeper__factory"; -import { ConstantInitialVoiceCreditProxy__factory } from "../../typechain/factories/ConstantInitialVoiceCreditProxy__factory"; - -import { VerifyingKeyStruct, VkRegistry } from "../../typechain/VkRegistry"; -import { FreeForAllGatekeeper } from "../../typechain/FreeForAllGatekeeper"; -import { ConstantInitialVoiceCreditProxy } from "../../typechain/ConstantInitialVoiceCreditProxy"; - -import { OptimisticRecipientRegistry } from "../../typechain/OptimisticRecipientRegistry"; -import { OptimisticRecipientRegistry__factory } from "../../typechain/factories/OptimisticRecipientRegistry__factory"; - -import { BaseERC20Token } from "../../typechain/BaseERC20Token"; -import { BaseERC20Token__factory } from "../../typechain/factories/BaseERC20Token__factory"; - -import { PollProcessorAndTallyer } from "../../typechain/PollProcessorAndTallyer"; -import { PollProcessorAndTallyer__factory } from "../../typechain/factories/PollProcessorAndTallyer__factory"; - -import { MockVerifier } from "../../typechain/MockVerifier"; -import { MockVerifier__factory } from "../../typechain/factories/MockVerifier__factory"; -import { AccQueueQuinaryMaci } from "../../typechain/AccQueueQuinaryMaci"; -import { AccQueueQuinaryMaci__factory } from "../../typechain"; - -chai.use(solidity); -const { expect } = chai; -const testProcessVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -const testTallyVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -describe("Process - Tally QV poll votes", function () { - let deployer: Signer; - let user1: Signer; - let user2: Signer; - let user3: Signer; - let user4: Signer; - let user5: Signer; - let user6: Signer; - let user7: Signer; - let user8: Signer; - let user9: Signer; - let user10: Signer; - - let project1: Signer; - let project2: Signer; - let project3: Signer; - let deployerAddress: string; - let PoseidonT3Factory: PoseidonT3__factory; - let PoseidonT4Factory: PoseidonT4__factory; - let PoseidonT5Factory: PoseidonT5__factory; - let PoseidonT6Factory: PoseidonT6__factory; - - let linkedLibraryAddresses: - | QFILibraryAddresses - | PollFactoryLibraryAddresses - | MessageAqFactoryLibraryAddresses - | GrantRoundFactoryLibraryAddresses; - let GrantRoundFactory: GrantRoundFactory__factory; - let PollFactoryFactory: PollFactory__factory; - let MessageAqFactoryFactory: MessageAqFactory__factory; - let MessageAq_Factory: AccQueueQuinaryMaci__factory; - let FreeForAllGateKeeperFactory: FreeForAllGatekeeper__factory; - let ConstantInitialVoiceCreditProxyFactory: ConstantInitialVoiceCreditProxy__factory; - let VKRegistryFactory: VkRegistry__factory; - - let RecipientRegistryFactory: OptimisticRecipientRegistry__factory; - let BaseERC20TokenFactory: BaseERC20Token__factory; - let PollProcessorAndTallyerFactory: PollProcessorAndTallyer__factory; - let MockVerifierFactory: MockVerifier__factory; - - let QFIFactory: QFI__factory; - - let PoseidonT3: PoseidonT3; - let PoseidonT4: PoseidonT4; - let PoseidonT5: PoseidonT5; - let PoseidonT6: PoseidonT6; - let grantRoundFactory: GrantRoundFactory; - let pollFactory: PollFactory; - let messageAqFactory: MessageAqFactory; - let messageAqFactoryGrants: MessageAqFactory; - let messageAq: AccQueueQuinaryMaci; - - let vkRegistry: VkRegistry; - let constantInitialVoiceCreditProxy: ConstantInitialVoiceCreditProxy; - let freeForAllGateKeeper: FreeForAllGatekeeper; - let optimisticRecipientRegistry: OptimisticRecipientRegistry; - let baseERC20Token: BaseERC20Token; - let pollProcessorAndTallyer: PollProcessorAndTallyer; - let mockVerifier: MockVerifier; - let qfi: QFI; - let coordinator: Keypair; - let poll: Poll; - let users: { - maciKey: Keypair; - signer: Signer; - stateIndex: number; - }[] = []; - const duration = 35; - const maxValues = { - maxUsers: 25, - maxMessages: 25, - maxVoteOptions: 25, - }; - const treeDepths = { - intStateTreeDepth: 2, //NOTE: actualy use tally batch size of 25 - messageTreeDepth: 4, - messageTreeSubDepth: 2, - voteOptionTreeDepth: 2, - }; - const STATE_TREE_DEPTH = 10; - const STATE_TREE_ARITY = 5; - const MESSAGE_TREE_ARITY = 5; - const messageBatchSize = MESSAGE_TREE_ARITY ** treeDepths.messageTreeSubDepth; - const tallyBatchSize = STATE_TREE_ARITY ** treeDepths.intStateTreeDepth; - - let maciState: MaciState; - let tallyFileData: { - maci: string; - pollId: number; - newTallyCommitment: any; - results: { - tally: any; - salt: any; - }; - totalSpentVoiceCredits: { - spent: any; - salt: any; - }; - perVOSpentVoiceCredits: { - tally: any; - salt: any; - }; - }; - let maciNewSbCommitment: any; - - beforeEach(async function () { - this?.timeout(400000); - [deployer, user1, user2, user3, user4, user5, user6, user7, user8, user9, user10] = await ethers.getSigners(); - deployerAddress = await deployer.getAddress(); - PoseidonT3Factory = new PoseidonT3__factory(deployer); - PoseidonT4Factory = new PoseidonT4__factory(deployer); - PoseidonT5Factory = new PoseidonT5__factory(deployer); - PoseidonT6Factory = new PoseidonT6__factory(deployer); - PoseidonT3 = await PoseidonT3Factory.deploy(); - PoseidonT4 = await PoseidonT4Factory.deploy(); - PoseidonT5 = await PoseidonT5Factory.deploy(); - PoseidonT6 = await PoseidonT6Factory.deploy(); - - linkedLibraryAddresses = { - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT5"]: PoseidonT5.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT3"]: PoseidonT3.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT6"]: PoseidonT6.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT4"]: PoseidonT4.address, - }; - - GrantRoundFactory = new GrantRoundFactory__factory({ ...linkedLibraryAddresses }, deployer); - PollFactoryFactory = new PollFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAqFactoryFactory = new MessageAqFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAq_Factory = new AccQueueQuinaryMaci__factory({ ...linkedLibraryAddresses }, deployer); - QFIFactory = new QFI__factory({ ...linkedLibraryAddresses }, deployer); - VKRegistryFactory = new VkRegistry__factory(deployer); - ConstantInitialVoiceCreditProxyFactory = new ConstantInitialVoiceCreditProxy__factory(deployer); - FreeForAllGateKeeperFactory = new FreeForAllGatekeeper__factory(deployer); - RecipientRegistryFactory = new OptimisticRecipientRegistry__factory(deployer); - BaseERC20TokenFactory = new BaseERC20Token__factory(deployer); - PollProcessorAndTallyerFactory = new PollProcessorAndTallyer__factory(deployer); - MockVerifierFactory = new MockVerifier__factory(deployer); - - optimisticRecipientRegistry = await RecipientRegistryFactory.deploy(0, 0, deployerAddress); - grantRoundFactory = await GrantRoundFactory.deploy(); - grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - pollFactory = await PollFactoryFactory.deploy(); - messageAqFactory = await MessageAqFactoryFactory.deploy(); - messageAqFactoryGrants = await MessageAqFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - //NOTE: each user recieves 100 voice credits by default - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(100); - vkRegistry = await VKRegistryFactory.deploy(); - baseERC20Token = await BaseERC20TokenFactory.deploy(100); - mockVerifier = await MockVerifierFactory.deploy(); - pollProcessorAndTallyer = await PollProcessorAndTallyerFactory.deploy(mockVerifier.address); - - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - await pollFactory.transferOwnership(qfi.address); - await grantRoundFactory.transferOwnership(qfi.address); - await messageAqFactory.transferOwnership(pollFactory.address); - await messageAqFactoryGrants.transferOwnership(grantRoundFactory.address); - await qfi.initialize(vkRegistry.address, messageAqFactory.address, messageAqFactoryGrants.address); - - const stateTreeDepth = await qfi.stateTreeDepth(); - const _stateTreeDepth = stateTreeDepth.toString(); - const _intStateTreeDepth = treeDepths.intStateTreeDepth; - const _messageTreeDepth = treeDepths.messageTreeDepth; - const _voteOptionTreeDepth = treeDepths.voteOptionTreeDepth; - const _messageBatchSize = messageBatchSize.toString(); - const _processVk = testProcessVk.asContractParam(); - const _tallyVk = testTallyVk.asContractParam(); - - await vkRegistry.setVerifyingKeys( - _stateTreeDepth, - _intStateTreeDepth, - _messageTreeDepth, - _voteOptionTreeDepth, - _messageBatchSize, - _processVk, - _tallyVk - ); - - await vkRegistry.genProcessVkSig(_stateTreeDepth, _messageTreeDepth, _voteOptionTreeDepth, _messageBatchSize); - await vkRegistry.genTallyVkSig(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); - coordinator = new Keypair(); - const coordinatorPubkey = coordinator.pubKey.asContractParam(); - - // NOTE: Create new local maci data structure - maciState = new MaciState(); - const provider = deployer.provider ?? ethers.getDefaultProvider(); - - const userSigners = [user1, user2, user3, user4, user5, user6, user7, user8, user9, user10]; - users = []; - for (const user of userSigners) { - const maciKey = new Keypair(); - const _pubKey = maciKey.pubKey.asContractParam(); - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - - const { logs } = await qfi - .connect(user) - .signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData) - .then((tx) => tx.wait()); - - const iface = qfi.interface; - const signUpEvent = iface.parseLog(logs[logs.length - 1]); - const stateIndex = signUpEvent.args._stateIndex.toString(); - users.push({ maciKey: maciKey, signer: user, stateIndex: stateIndex }); - // NOTE: Signup users on local maci data structure - maciState.signUp( - maciKey.pubKey, - BigInt(signUpEvent.args._voiceCreditBalance.toString()), - BigInt(signUpEvent.args._timestamp.toString()) - ); - } - - const { blockHash } = await qfi - .connect(deployer) - .deployPoll(duration, maxValues, treeDepths, coordinatorPubkey, { gasLimit: 30000000 }) - .then((tx) => tx.wait()); - - // NOTE: Deploy the poll on local maci data structure - const deployTime = (await provider.getBlock(blockHash)).timestamp; - //NOTE: this is where the coordinator key is set on the local maci data structure - const p = maciState.deployPoll( - duration, - BigInt(deployTime + duration), - maxValues, - treeDepths, - messageBatchSize, - coordinator - ); - const pollId = p.toString(); - const pollContractAddress = await qfi.getPoll(0); - poll = new Poll__factory({ ...linkedLibraryAddresses }, deployer).attach(pollContractAddress); - - let index = 1; - for (const user of users) { - const { maciKey, signer, stateIndex } = user; - const _stateIndex = BigInt(stateIndex); - const _newPubKey = maciKey.pubKey; - const _voteOptionIndex = BigInt(index); - const _newVoteWeight = BigInt(index); - const _nonce = BigInt(1); - const _pollId = BigInt(0); - const _salt = BigInt(1); - const command = new Command(_stateIndex, _newPubKey, _voteOptionIndex, _newVoteWeight, _nonce, _pollId, _salt); - index++; - - const signature = command.sign(maciKey.privKey); - const sharedKey = Keypair.genEcdhSharedKey(maciKey.privKey, coordinator.pubKey); - const message = command.encrypt(signature, sharedKey); - const _message = message.asContractParam(); - const _encPubKey = maciKey.pubKey.asContractParam(); - // NOTE: Publish the message on local maci data structure - maciState.polls[0].publishMessage(message, maciKey.pubKey); - const { logs } = await poll - .connect(signer) - .publishMessage(_message, _encPubKey) - .then((tx) => tx.wait()); - } - const [_deployTime, _duration] = await poll.getDeployTimeAndDuration(); - const hardHatProvider = ethers.provider; - await hardHatProvider.send("evm_increaseTime", [Number(_duration) + 1]); - await hardHatProvider.send("evm_mine", []); - - const extContracts = await poll.extContracts(); - - const messageAqAddress = extContracts.messageAq; - messageAq = MessageAq_Factory.attach(messageAqAddress); - - const maciStateAq = maciState.stateAq; - maciStateAq.mergeSubRoots(0); // 0 as input attempts to merge all subroots - maciStateAq.merge(stateTreeDepth); - await poll.mergeMaciStateAqSubRoots(0, 0); - await poll.mergeMaciStateAq(0); - - const maciPoll = maciState.polls[0]; - //maciPoll.mergeAllMessages(); - maciPoll.messageAq.mergeSubRoots(0); //NOTE: 0 as input attempts to merge all subroots - maciPoll.messageAq.merge(treeDepths.messageTreeDepth); - await poll.mergeMessageAqSubRoots(0); - await poll.mergeMessageAq(); - - //NOTE: new state root and ballot root commitment calculated off chain - const { newSbCommitment: _maciNewSbCommitment } = maciPoll.processMessages(0); - - maciNewSbCommitment = _maciNewSbCommitment; - //TODO: why does this work? due to the dummy verifier that is linked to the pollProcessor? - const dummyProof: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] = [0, 0, 0, 0, 0, 0, 0, 0]; - await pollProcessorAndTallyer.processMessages(poll.address, maciNewSbCommitment, dummyProof); - - const maciTallyCircuitInputs = maciPoll.tallyVotes(0); - await pollProcessorAndTallyer.tallyVotes(poll.address, maciTallyCircuitInputs.newTallyCommitment, dummyProof); - - // const maciTallyCircuitInputs2 = maciPoll.tallyVotes(0); - // await pollProcessorAndTallyer.tallyVotes(poll.address, maciTallyCircuitInputs2.newTallyCommitment, dummyProof); - const newTallyCommitment = maciTallyCircuitInputs.newTallyCommitment; - const tallyResults = maciPoll.results.map((x: any) => x.toString()); - const tallySalt = maciTallyCircuitInputs.newResultsRootSalt; - const voiceCreditsSpent = maciPoll.totalSpentVoiceCredits.toString(); - const voiceCreditsSalt = maciTallyCircuitInputs.newSpentVoiceCreditSubtotalSalt; - const perVOSpentTally = maciPoll.perVOSpentVoiceCredits.map((x: any) => x.toString()); - const perVOSpentSalt = maciTallyCircuitInputs.newPerVOSpentVoiceCreditsRootSalt; - tallyFileData = { - maci: qfi.address, - pollId: pollId, - newTallyCommitment: newTallyCommitment, - results: { - tally: tallyResults, - salt: tallySalt, - }, - totalSpentVoiceCredits: { - spent: voiceCreditsSpent, - salt: voiceCreditsSalt, - }, - perVOSpentVoiceCredits: { - tally: perVOSpentTally, - salt: perVOSpentSalt, - }, - }; - }); - - describe("Verify tally off chain", () => { - it("verify - tally results are correct", async () => { - // prettier-ignore - const expectedResultsTally = [ - '0', '1', '2', '3', '4', '5', - '6', '7', '8', '9', '10', '0', - '0', '0', '0', '0', '0', '0', - '0', '0', '0', '0', '0', '0', - '0' - ]; - expect(tallyFileData.results.tally).to.deep.equal(expectedResultsTally); - }); - - it("verify - per vote option spent voice credits results are correct", async () => { - // prettier-ignore - const expectedPerVOSpentVoiceCredits = [ - '0', '1', '4', '9', '16', - '25', '36', '49', '64', '81', - '100', '0', '0', '0', '0', - '0', '0', '0', '0', '0', - '0', '0', '0', '0', '0' - ]; - expect(tallyFileData.perVOSpentVoiceCredits.tally).to.deep.equal(expectedPerVOSpentVoiceCredits); - }); - - it("verify - total spent voice credits is correct", async () => { - // prettier-ignore - const expectedTotalSpentVoiceCredits = [ - '0', '1', '4', '9', '16', - '25', '36', '49', '64', '81', - '100', '0', '0', '0', '0', - '0', '0', '0', '0', '0', - '0', '0', '0', '0', '0' - ].reduce(((acc, x) => acc + Number(x)), 0).toString(); - expect(tallyFileData.totalSpentVoiceCredits.spent).to.deep.equal(expectedTotalSpentVoiceCredits); - }); - }); - - describe("Verify ZK Proof on chain", () => { - it("verify - stateAQ merged and processing complete", async () => { - const stateAqMerged = await poll.stateAqMerged(); - expect(stateAqMerged).to.be.true; - - const processingComplete = await pollProcessorAndTallyer.processingComplete(); - expect(processingComplete).to.be.true; - }); - - it("verify - all parameters are set correctly", async () => { - const { intStateTreeDepth, messageTreeSubDepth, messageTreeDepth, voteOptionTreeDepth } = await poll.treeDepths(); - expect(intStateTreeDepth).to.be.equal(treeDepths.intStateTreeDepth); - expect(messageTreeDepth).to.be.equal(treeDepths.messageTreeDepth); - expect(messageTreeSubDepth).to.be.equal(treeDepths.messageTreeSubDepth); - expect(voteOptionTreeDepth).to.be.equal(treeDepths.voteOptionTreeDepth); - - const [numSignUps, numMessages] = await poll.numSignUpsAndMessages(); - expect(numSignUps).to.be.equal(10); - expect(numMessages).to.be.equal(10); - - const [maxMessages, maxVoteOptions] = await poll.maxValues(); - expect(maxVoteOptions).to.be.equal(maxValues.maxVoteOptions); - expect(maxMessages).to.be.equal(maxValues.maxMessages); - - const [_messageBatchSize, _tallyBatchSize] = await poll.batchSizes(); - expect(_messageBatchSize).to.be.equal(messageBatchSize); - expect(_tallyBatchSize).to.be.equal(tallyBatchSize); - }); - - it("verify - merged state root is correct", async () => { - const mergedStateRootPoll = await poll.mergedStateRoot(); - const mergedStateRootMACI = await qfi.getStateAqRoot(); - const expectedStateTreeRoot = maciState.polls[0].maciStateRef.stateTree.root; - expect(mergedStateRootPoll).to.not.be.equal(BigNumber.from(0)); - expect(mergedStateRootMACI).to.not.be.equal(BigNumber.from(0)); - expect(expectedStateTreeRoot).to.not.be.equal(BigNumber.from(0)); - expect(mergedStateRootPoll).to.be.equal(mergedStateRootMACI); // MACI state root is the same as the poll state root - expect(mergedStateRootPoll).to.be.equal(expectedStateTreeRoot); // MACI state root is the same as the one calculated offchain - }); - - it("verify - sbCommitment is correct on pollProcessorAndTallyer", async () => { - const pptsbCommitment = await pollProcessorAndTallyer.sbCommitment(); - const expectedSbCommitment = maciNewSbCommitment; - expect(pptsbCommitment).to.not.be.equal(BigNumber.from(0)); - expect(expectedSbCommitment).to.not.be.equal(BigNumber.from(0)); - expect(pptsbCommitment).to.be.equal(expectedSbCommitment); // pollProcessorAndTallyer sbCommitment is the same as the one calculated offchain - }); - - it("verify - sbCommitment correct on poll", async () => { - const pollCurrentSbCommitment = await poll.currentSbCommitment(); - const pptsbCommitment = await pollProcessorAndTallyer.sbCommitment(); - const expectedSbCommitment = maciNewSbCommitment; - console.log(`poll_SbCommitment: ${pollCurrentSbCommitment}`); - console.log(`pollProcessorAndTallyer_SbCommitment: ${pptsbCommitment}`); - console.log(`expectedSbCommitment: ${expectedSbCommitment}`); - expect(pollCurrentSbCommitment).to.not.be.equal(BigNumber.from(0)); - expect(pptsbCommitment).to.not.be.equal(BigNumber.from(0)); - expect(expectedSbCommitment).to.not.be.equal(BigNumber.from(0)); - expect(pptsbCommitment).to.be.equal(expectedSbCommitment); - expect(pollCurrentSbCommitment).to.not.be.equal(pptsbCommitment); // poll sbCommitment is the same as the one calculated offchain - }); - - it("verify - merged message root is correct", async () => { - const mergedMessageRoot = await messageAq.getMainRoot(treeDepths.messageTreeDepth); - const expectedMessageTreeRoot = maciState.polls[0].messageTree.root; - expect(mergedMessageRoot).to.not.be.equal(BigNumber.from(0)); - expect(expectedMessageTreeRoot).to.not.be.equal(BigNumber.from(0)); - expect(mergedMessageRoot).to.be.equal(expectedMessageTreeRoot); // MACI message root is the same as the one calculated offchain - }); - - it("verify - tally commitment is correct", async () => { - const tallyCommitment = await pollProcessorAndTallyer.tallyCommitment(); - const expectedTallyCommitment = tallyFileData.newTallyCommitment; - expect(tallyCommitment).to.not.be.equal(BigNumber.from(0)); - expect(expectedTallyCommitment).to.not.be.equal(BigNumber.from(0)); - expect(tallyCommitment).to.be.equal(expectedTallyCommitment); // pollProcessorAndTallyer tallyCommitment is the same as the one calculated offchain - }); - - it.skip("TODO FIX - poll SHOULD verify total spent voice credits", async () => { - const { spent: _totalSpent, salt: _totalSpentSalt } = tallyFileData.totalSpentVoiceCredits; - - expect(await poll.verifySpentVoiceCredits(_totalSpent, _totalSpentSalt)).to.be.true; - }); - - it.skip("TODO FIX - poll SHOULD verifyTallyResult", async () => { - // Setup - const recipientIndex = 1; - const resultTree = new IncrementalQuinTree(treeDepths.voteOptionTreeDepth, BigInt(0), STATE_TREE_ARITY, hash5); - const perVOspentTree = new IncrementalQuinTree( treeDepths.voteOptionTreeDepth, BigInt(0), STATE_TREE_ARITY, hash5); // prettier-ignore - - for (const leaf of tallyFileData.results.tally) resultTree.insert(leaf); // insert resuls tally as leaves - for (const leaf of tallyFileData.perVOSpentVoiceCredits.tally) perVOspentTree.insert(leaf); // insert perVO spent as leaves - - const resultProof = resultTree.genMerklePath(recipientIndex); // generate merkle path for result - const spentProof = perVOspentTree.genMerklePath(recipientIndex); // generate merkle path for spent - - expect(resultTree.root).to.be.equal(resultProof.root); // verify result tree root - expect(perVOspentTree.root).to.be.equal(spentProof.root); // verify spent tree root - - // Calculate arguments - const _voteOptionIndex = recipientIndex; - const _tallyResult = tallyFileData.results.tally[recipientIndex]; // result of the recipient - const _tallyResultProof = resultProof.pathElements.map((x: any) => x.map((y: any) => y.toString())); // result proof as astring - const _spentVoiceCreditsHash = BigNumber.from( - hashLeftRight( - BigInt(tallyFileData.totalSpentVoiceCredits.spent), - BigInt(tallyFileData.totalSpentVoiceCredits.salt) - ).toString() - ).toString(); - const _perVOSpentVoiceCreditsHash = BigNumber.from( - hashLeftRight( - perVOspentTree.root, - BigInt(tallyFileData.perVOSpentVoiceCredits.salt)).toString() - ).toString(); // prettier-ignore - const _tallyCommitment = BigNumber.from(tallyFileData.newTallyCommitment).toString(); - - console.log(`_tallyResultProof: ${_tallyResultProof}`); - console.log(`_tallyResult: ${_tallyResult}`); - console.log(`_voteOptionIndex: ${_voteOptionIndex}`); - console.log(`_spentVoiceCreditsHash: ${_spentVoiceCreditsHash}`); - console.log(`_perVOSpentVoiceCreditsHash: ${_perVOSpentVoiceCreditsHash}`); - console.log(`_tallyCommitment: ${_tallyCommitment}`); - - // * @param _voteOptionIndex the index of the vote option to verify the correctness of the tally - // * @param _tallyResult Flattened array of the tally - // * @param _tallyResultProof Corresponding proof of the tally result - // * @param _tallyResultSalt the respective salt in the results object in the tally.json - // * @param _spentVoiceCreditsHash hashLeftRight(number of spent voice credits, spent salt) - // * @param _perVOSpentVoiceCreditsHash hashLeftRight(merkle root of the no spent voice credits per vote option, perVOSpentVoiceCredits salt) - // * @param _tallyCommitment newTallyCommitment field in the tally.json - expect( - await poll.verifyTallyResult( - _voteOptionIndex, - _tallyResult, - _tallyResultProof, - _spentVoiceCreditsHash, - _perVOSpentVoiceCreditsHash, - _tallyCommitment - ) - ).to.be.true; - }); - - it.skip("TODO FIX - poll contract SHOULD verifyPerVOSpentVoiceCredits", async () => { - const recipientIndex = 1; - - const perVOspentTree = new IncrementalQuinTree( treeDepths.voteOptionTreeDepth, BigInt(0), STATE_TREE_ARITY, hash5); // prettier-ignore - for (const leaf of tallyFileData.perVOSpentVoiceCredits.tally) perVOspentTree.insert(leaf); // insert tally as leaves - const spentProof = perVOspentTree.genMerklePath(recipientIndex); // generate merkle path for the spent voice credits - expect(perVOspentTree.root).to.be.equal(spentProof.root); // verify that the root of the tree is the same as the root of the merkle path - - const _voteOptionIndex = recipientIndex; - const _spent = tallyFileData.perVOSpentVoiceCredits.tally[recipientIndex]; // get the spent voice credits for the recipient - const _spentProof = spentProof.pathElements.map((x: any) => x.map((y: any) => y.toString())); // convert merkle path to string - const _spentSalt = tallyFileData.perVOSpentVoiceCredits.salt; // get salt from tally.json - - expect(await poll.verifyPerVOSpentVoiceCredits( - _voteOptionIndex, - _spent, - _spentProof, - _spentSalt - )).to.be.true; // prettier-ignore - }); - }); -}); diff --git a/packages/contracts/tests/QV/00-deploy.ts b/packages/contracts/tests/QV/00-deploy.ts index 826a8107..e4ced01c 100644 --- a/packages/contracts/tests/QV/00-deploy.ts +++ b/packages/contracts/tests/QV/00-deploy.ts @@ -2,102 +2,90 @@ import { ethers } from "hardhat"; import { BigNumber, Signer } from "ethers"; import chai from "chai"; import { solidity } from "ethereum-waffle"; -import { PoseidonT3 } from "../../typechain/PoseidonT3"; -import { PoseidonT3__factory } from "../../typechain/factories/PoseidonT3__factory"; -import { PoseidonT4 } from "../../typechain/PoseidonT4"; -import { PoseidonT4__factory } from "../../typechain/factories/PoseidonT4__factory"; -import { PoseidonT5 } from "../../typechain/PoseidonT5"; -import { PoseidonT5__factory } from "../../typechain/factories/PoseidonT5__factory"; -import { PoseidonT6 } from "../../typechain/PoseidonT6"; -import { PoseidonT6__factory } from "../../typechain/factories/PoseidonT6__factory"; - -import { MACI } from "../../typechain/MACI"; -import { MACI__factory } from "../../typechain/factories/MACI__factory"; - -import { - GrantRoundFactoryLibraryAddresses, - GrantRoundFactory__factory, -} from "../../typechain/factories/GrantRoundFactory__factory"; -import { PollFactory__factory, PollFactoryLibraryAddresses } from "../../typechain/factories/PollFactory__factory"; -import { - MessageAqFactory__factory, - MessageAqFactoryLibraryAddresses, -} from "../../typechain/factories/MessageAqFactory__factory"; -import { QFI__factory, QFILibraryAddresses } from "../../typechain/factories/QFI__factory"; - -import { GrantRoundFactory } from "../../typechain/GrantRoundFactory"; -import { PollFactory } from "../../typechain/PollFactory"; -import { MessageAqFactory } from "../../typechain/MessageAqFactory"; -import { QFI } from "../../typechain/QFI"; - -import { VkRegistry__factory } from "../../typechain/factories/VkRegistry__factory"; -import { FreeForAllGatekeeper__factory } from "../../typechain/factories/FreeForAllGatekeeper__factory"; -import { ConstantInitialVoiceCreditProxy__factory } from "../../typechain/factories/ConstantInitialVoiceCreditProxy__factory"; - -import { VkRegistry } from "../../typechain/VkRegistry"; -import { FreeForAllGatekeeper } from "../../typechain/FreeForAllGatekeeper"; -import { ConstantInitialVoiceCreditProxy } from "../../typechain/ConstantInitialVoiceCreditProxy"; - -import { OptimisticRecipientRegistry } from "../../typechain/OptimisticRecipientRegistry"; -import { OptimisticRecipientRegistry__factory } from "../../typechain/factories/OptimisticRecipientRegistry__factory"; - -import { BaseERC20Token } from "../../typechain/BaseERC20Token"; -import { BaseERC20Token__factory } from "../../typechain/factories/BaseERC20Token__factory"; - -import { PollProcessorAndTallyer } from "../../typechain/PollProcessorAndTallyer"; -import { PollProcessorAndTallyer__factory } from "../../typechain/factories/PollProcessorAndTallyer__factory"; + +import { Keypair, VerifyingKey } from "@qfi/macisdk"; +import { G1Point, G2Point } from "@qfi/macisdk"; + +import { PoseidonT3__factory } from "../../typechain-types/factories/contracts/poseidon/PoseidonT3__factory"; +import { PoseidonT4__factory } from "../../typechain-types/factories/contracts/poseidon/PoseidonT4__factory"; +import { PoseidonT5__factory } from "../../typechain-types/factories/contracts/poseidon/PoseidonT5__factory"; +import { PoseidonT6__factory } from "../../typechain-types/factories/contracts/poseidon/PoseidonT6__factory"; +import { MessageTreeLibraryAddresses, MessageTree__factory } from "../../typechain-types/factories/contracts/MessageTree__factory"; +import { JubjubLibraryAddresses, Jubjub__factory } from "../../typechain-types/factories/contracts/Jubjub__factory"; +import { JubjubFactoryLibraryAddresses, JubjubFactory__factory } from "../../typechain-types/factories/contracts/JubjubFactory__factory"; +import { ConstantInitialVoiceCreditProxy__factory } from "../../typechain-types/factories/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/ConstantInitialVoiceCreditProxy__factory"; +import { FreeForAllGatekeeper__factory } from "../../typechain-types/factories/contracts/flavors/F.sol/FreeForAllGatekeeper__factory"; +import { StateTreeLibraryAddresses, StateTree__factory } from "../../typechain-types/factories/contracts/StateTree__factory"; + +import { PoseidonT3 } from "../../typechain-types/contracts/poseidon/PoseidonT3"; +import { PoseidonT4 } from "../../typechain-types/contracts/poseidon/PoseidonT4"; +import { PoseidonT5 } from "../../typechain-types/contracts/poseidon/PoseidonT5"; +import { PoseidonT6 } from "../../typechain-types/contracts/poseidon/PoseidonT6"; +import { Jubjub } from "../../typechain-types/contracts/Jubjub"; +import { JubjubFactory, VerifyingKeyStruct } from "../../typechain-types/contracts/JubjubFactory"; +import { ConstantInitialVoiceCreditProxy } from "../../typechain-types/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/ConstantInitialVoiceCreditProxy"; +import { FreeForAllGatekeeper } from "../../typechain-types/contracts/flavors/F.sol/FreeForAllGatekeeper"; +import { StateTree } from "../../typechain-types/contracts/StateTree"; +import { MessageTree } from "../../typechain-types/contracts/MessageTree"; + chai.use(solidity); const { expect } = chai; -describe("Deploy - QV Infrastructure Smart Contracts", () => { +const testProcessVk = new VerifyingKey( + new G1Point(BigInt(0), BigInt(1)), + new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), + new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), + new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), + [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] +); + +const testTallyVk = new VerifyingKey( + new G1Point(BigInt(0), BigInt(1)), + new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), + new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), + new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), + [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] +); + +describe("Deploy - QV 6-8-3-3 Configuration Smart Contracts", () => { let deployer: Signer; let deployerAddress: string; + let libs: JubjubLibraryAddresses; + let factoryLibs: JubjubFactoryLibraryAddresses; + let messageTreeLibs: MessageTreeLibraryAddresses; + let stateTreeLibs: StateTreeLibraryAddresses; + let PoseidonT3Factory: PoseidonT3__factory; let PoseidonT4Factory: PoseidonT4__factory; let PoseidonT5Factory: PoseidonT5__factory; let PoseidonT6Factory: PoseidonT6__factory; - let linkedLibraryAddresses: - | QFILibraryAddresses - | PollFactoryLibraryAddresses - | MessageAqFactoryLibraryAddresses - | GrantRoundFactoryLibraryAddresses; - let GrantRoundFactory: GrantRoundFactory__factory; - let PollFactoryFactory: PollFactory__factory; - let MessageAqFactoryFactory: MessageAqFactory__factory; - - let FreeForAllGateKeeperFactory: FreeForAllGatekeeper__factory; + let JubjubFactoryFactory: JubjubFactory__factory; let ConstantInitialVoiceCreditProxyFactory: ConstantInitialVoiceCreditProxy__factory; - let VKRegistryFactory: VkRegistry__factory; - - let RecipientRegistryFactory: OptimisticRecipientRegistry__factory; - let BaseERC20TokenFactory: BaseERC20Token__factory; - let PollProcessorAndTallyerFactory: PollProcessorAndTallyer__factory; + let FreeForAllGatekeeperFactory: FreeForAllGatekeeper__factory; - let QFIFactory: QFI__factory; - let MACIFactory: MACI__factory; + let JubjubTemplateFactory: Jubjub__factory; + let StateTreeFactory: StateTree__factory; + let MessageTreeFactory: MessageTree__factory; + let jubjubTemplate: Jubjub; + let stateTreeTemplate: StateTree; + let messageTreeTemplate: MessageTree; let poseidonT3: PoseidonT3; let poseidonT4: PoseidonT4; let poseidonT5: PoseidonT5; let poseidonT6: PoseidonT6; - let grantRoundFactory: GrantRoundFactory; - let pollFactory: PollFactory; - let messageAqFactory: MessageAqFactory; - let messageAqFactoryGrants: MessageAqFactory; - let vkRegistry: VkRegistry; + + let jubjubFactory: JubjubFactory; let constantInitialVoiceCreditProxy: ConstantInitialVoiceCreditProxy; let freeForAllGateKeeper: FreeForAllGatekeeper; - let optimisticRecipientRegistry: OptimisticRecipientRegistry; - let baseERC20Token: BaseERC20Token; - let pollProcessorAndTallyer: PollProcessorAndTallyer; - let qfi: QFI; - let maci: MACI; beforeEach(async () => { [deployer] = await ethers.getSigners(); deployerAddress = await deployer.getAddress(); + + // NOTE: Deploy Libs PoseidonT3Factory = new PoseidonT3__factory(deployer); PoseidonT4Factory = new PoseidonT4__factory(deployer); PoseidonT5Factory = new PoseidonT5__factory(deployer); @@ -106,204 +94,187 @@ describe("Deploy - QV Infrastructure Smart Contracts", () => { poseidonT4 = await PoseidonT4Factory.deploy(); poseidonT5 = await PoseidonT5Factory.deploy(); poseidonT6 = await PoseidonT6Factory.deploy(); - - linkedLibraryAddresses = { - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT5"]: poseidonT5.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT3"]: poseidonT3.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT6"]: poseidonT6.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT4"]: poseidonT4.address, + libs = { + ["contracts/poseidon/PoseidonT6.sol:PoseidonT6"]: poseidonT6.address, + ["contracts/poseidon/PoseidonT5.sol:PoseidonT5"]: poseidonT5.address, + ["contracts/poseidon/PoseidonT3.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/poseidon/PoseidonT4.sol:PoseidonT4"]: poseidonT4.address, + }; + factoryLibs = { + ["contracts/poseidon/PoseidonT6.sol:PoseidonT6"]: poseidonT6.address, + ["contracts/poseidon/PoseidonT5.sol:PoseidonT5"]: poseidonT5.address, + ["contracts/poseidon/PoseidonT3.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/poseidon/PoseidonT4.sol:PoseidonT4"]: poseidonT4.address, + ["contracts/AccQueue.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/AccQueue.sol:PoseidonT6"]: poseidonT6.address, }; - GrantRoundFactory = new GrantRoundFactory__factory({ ...linkedLibraryAddresses }, deployer); - PollFactoryFactory = new PollFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAqFactoryFactory = new MessageAqFactory__factory({ ...linkedLibraryAddresses }, deployer); - QFIFactory = new QFI__factory({ ...linkedLibraryAddresses }, deployer); - MACIFactory = new MACI__factory({ ...linkedLibraryAddresses }, deployer); + stateTreeLibs = { + ["contracts/AccQueue.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/AccQueue.sol:PoseidonT6"]: poseidonT6.address, + }; + messageTreeLibs = { + ["contracts/AccQueue.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/AccQueue.sol:PoseidonT6"]: poseidonT6.address, + }; + + // NOTE: Deploy templates - VKRegistryFactory = new VkRegistry__factory(deployer); + JubjubTemplateFactory = new Jubjub__factory(libs, deployer); + StateTreeFactory = new StateTree__factory(stateTreeLibs, deployer); + MessageTreeFactory = new MessageTree__factory(messageTreeLibs, deployer); + + jubjubTemplate = await JubjubTemplateFactory.deploy(); + stateTreeTemplate = await StateTreeFactory.deploy(6); + messageTreeTemplate = await MessageTreeFactory.deploy(8); + + // NOTE: Setup factories + + JubjubFactoryFactory = new JubjubFactory__factory(factoryLibs, deployer); ConstantInitialVoiceCreditProxyFactory = new ConstantInitialVoiceCreditProxy__factory(deployer); - FreeForAllGateKeeperFactory = new FreeForAllGatekeeper__factory(deployer); - RecipientRegistryFactory = new OptimisticRecipientRegistry__factory(deployer); - BaseERC20TokenFactory = new BaseERC20Token__factory(deployer); - PollProcessorAndTallyerFactory = new PollProcessorAndTallyer__factory(deployer); + FreeForAllGatekeeperFactory = new FreeForAllGatekeeper__factory(deployer); }); - it("deploys Poseidon Contracts", async () => { + it("verify - deploys New Poseidon Contract Implementations", async () => { expect(poseidonT3.address).to.not.equal(ethers.constants.AddressZero); expect(poseidonT4.address).to.not.equal(ethers.constants.AddressZero); expect(poseidonT5.address).to.not.equal(ethers.constants.AddressZero); expect(poseidonT6.address).to.not.equal(ethers.constants.AddressZero); - //NOTE: These should be correct as they are from precompiled contracts - expect(await poseidonT3.poseidon([BigNumber.from(0), BigNumber.from(0)])).to.be.equal( + }); + + it("verify - hashes all zeros inputs correctly", async () => { + // Expected hash values for each Poseidon contracts + // Contract | Input(s) | expected value + // PoseidonT3 | [ 0, 0 ] | 0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864 + // PoseidonT4 | [ 0, 0, 0 ] | 0x0bc188d27dcceadc1dcfb6af0a7af08fe2864eecec96c5ae7cee6db31ba599aa + // PoseidonT5 | [ 0, 0, 0, 0 ] | 0x0532fd436e19c70e51209694d9c215250937921b8b79060488c1206db73e9946 + // PoseidonT6 | [ 0, 0, 0, 0, 0 ] | 0x2066be41bebe6caf7e079360abe14fbf9118c62eabc42e2fe75e342b160a95bc + + expect(await poseidonT3.hash2([BigNumber.from(0), BigNumber.from(0)])).to.be.equal( BigNumber.from("0x2098f5fb9e239eab3ceac3f27b81e481dc3124d55ffed523a839ee8446b64864") ); - expect(await poseidonT4.poseidon([BigNumber.from(0), BigNumber.from(0), BigNumber.from(0)])).to.be.equal( + expect(await poseidonT4.hash3([BigNumber.from(0), BigNumber.from(0), BigNumber.from(0)])).to.be.equal( BigNumber.from("0x0bc188d27dcceadc1dcfb6af0a7af08fe2864eecec96c5ae7cee6db31ba599aa") ); - expect( - await poseidonT5.poseidon([BigNumber.from(0), BigNumber.from(0), BigNumber.from(0), BigNumber.from(0)]) - ).to.be.equal(BigNumber.from("0x0532fd436e19c70e51209694d9c215250937921b8b79060488c1206db73e9946")); - expect( - await poseidonT6.poseidon([ - BigNumber.from(0), - BigNumber.from(0), - BigNumber.from(0), - BigNumber.from(0), - BigNumber.from(0), - ]) - ).to.be.equal(BigNumber.from("0x2066be41bebe6caf7e079360abe14fbf9118c62eabc42e2fe75e342b160a95bc")); - - }); - - it("deploys GrantRoundFactory Contracts", async () => { - grantRoundFactory = await GrantRoundFactory.deploy(); - await expect((await grantRoundFactory.deployTransaction.wait()).status).to.not.equal(0); - }); - - it("deploys PollFactory Contracts", async () => { - pollFactory = await PollFactoryFactory.deploy(); - await expect((await pollFactory.deployTransaction.wait()).status).to.not.equal(0); - }); - - it("deploys MessageAqFactory Contract", async () => { - messageAqFactory = await MessageAqFactoryFactory.deploy(); - await expect((await messageAqFactory.deployTransaction.wait()).status).to.not.equal(0); - }); - - it("deploys VKRegistry Contracts", async () => { - vkRegistry = await VKRegistryFactory.deploy(); - await expect((await vkRegistry.deployTransaction.wait()).status).to.not.equal(0); - }); - - it("deploys constantInitialVoiceCreditProxy Contract", async () => { - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(0); - await expect((await constantInitialVoiceCreditProxy.deployTransaction.wait()).status).to.not.equal(0); - }); - - it("deploys freeForAllGateKeeper Contract", async () => { - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - await expect((await freeForAllGateKeeper.deployTransaction.wait()).status).to.not.equal(0); + expect(await poseidonT5.hash4([BigNumber.from(0), BigNumber.from(0), BigNumber.from(0), BigNumber.from(0)])).to.be.equal( + BigNumber.from("0x0532fd436e19c70e51209694d9c215250937921b8b79060488c1206db73e9946") + ); + expect(await poseidonT6.hash5([BigNumber.from(0), BigNumber.from(0), BigNumber.from(0), BigNumber.from(0), BigNumber.from(0)])).to.be.equal( + BigNumber.from("0x2066be41bebe6caf7e079360abe14fbf9118c62eabc42e2fe75e342b160a95bc") + ); }); - it("deploys Recipient Registry Contract", async () => { - optimisticRecipientRegistry = await RecipientRegistryFactory.deploy(0, 0, deployerAddress); - await expect((await optimisticRecipientRegistry.deployTransaction.wait()).status).to.not.equal(0); - }); + it("verify - hashes all different inputs correctly", async () => { + // Expected hash values for each Poseidon contracts + // Contract | Input(s) | expected value + // PoseidonT3 | [ 1, 2 ] | 0x115cc0f5e7d690413df64c6b9662e9cf2a3617f2743245519e19607a4417189a + // PoseidonT4 | [ 1, 2, 3 ] | 0xe7732d89e6939c0ff03d5e58dab6302f3230e269dc5b968f725df34ab36d732 + // PoseidonT5 | [ 1, 2, 3, 4 ] | 0x299c867db6c1fdd79dcefa40e4510b9837e60ebb1ce0663dbaa525df65250465 + // PoseidonT6 | [ 1, 2, 3, 4, 5 ] | 0xdab9449e4a1398a15224c0b15a49d598b2174d305a316c918125f8feeb123c0 - it("deploys ERC20 token Contract", async () => { - baseERC20Token = await BaseERC20TokenFactory.deploy(100); - await expect((await baseERC20Token.deployTransaction.wait()).status).to.not.equal(0); + expect(await poseidonT3.hash2([BigNumber.from(1), BigNumber.from(2)])).to.be.equal( + BigNumber.from("0x115cc0f5e7d690413df64c6b9662e9cf2a3617f2743245519e19607a4417189a") + ); + expect(await poseidonT4.hash3([BigNumber.from(1), BigNumber.from(2), BigNumber.from(3)])).to.be.equal( + BigNumber.from("0xe7732d89e6939c0ff03d5e58dab6302f3230e269dc5b968f725df34ab36d732") + ); + expect(await poseidonT5.hash4([BigNumber.from(1), BigNumber.from(2), BigNumber.from(3), BigNumber.from(4)])).to.be.equal( + BigNumber.from("0x299c867db6c1fdd79dcefa40e4510b9837e60ebb1ce0663dbaa525df65250465") + ); + expect(await poseidonT6.hash5([BigNumber.from(1), BigNumber.from(2), BigNumber.from(3), BigNumber.from(4), BigNumber.from(5)])).to.be.equal( + BigNumber.from("0xdab9449e4a1398a15224c0b15a49d598b2174d305a316c918125f8feeb123c0") + ); }); - it("deploys QFI Contracts", async () => { - optimisticRecipientRegistry = await RecipientRegistryFactory.deploy(0, 0, deployerAddress); - grantRoundFactory = await GrantRoundFactory.deploy(); - grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - pollFactory = await PollFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(0); - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - await expect((await qfi.deployTransaction.wait()).status).to.not.equal(0); + it("deploys a Jubjub instance", async () => { + //NOTE: Deploy Factory, SignupGatekeeper, and InitialVoiceCreditProxy + jubjubFactory = await JubjubFactoryFactory.deploy(); + freeForAllGateKeeper = await FreeForAllGatekeeperFactory.deploy(); + constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(99); + + //NOTE: Deploy Jubjub Instance + await expect( + jubjubFactory.deployJubjub( + "0x5445535400000000000000000000000000000000000000000000000000000000", + freeForAllGateKeeper.address, + constantInitialVoiceCreditProxy.address + ) + ).to.emit(jubjubFactory, "JubjubDeployed"); }); - it("deploys MACI Contracts", async () => { - optimisticRecipientRegistry = await RecipientRegistryFactory.deploy(0, 0, deployerAddress); - pollFactory = await PollFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(0); - maci = await MACIFactory.deploy( - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address + it.skip("sets the verifying keys", async () => { + const _processVk = testProcessVk.asContractParam(); + const _tallyVk = testTallyVk.asContractParam(); + + await jubjubFactory.setVerifyingKeys( + BigNumber.from(6), + BigNumber.from(3), + BigNumber.from(8), + BigNumber.from(3), + BigNumber.from(3), + _processVk, + _tallyVk ); - await expect((await maci.deployTransaction.wait()).status).to.not.equal(0); - }); + const pSig = await jubjubFactory.genProcessVkSig(BigNumber.from(6), BigNumber.from(8), BigNumber.from(3), BigNumber.from(3)); - it("transfers PollFactory ownership to Quadratic Funding Infrastructure Contract", async () => { - grantRoundFactory = await GrantRoundFactory.deploy(); - const tx = await grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); + const tSig = await jubjubFactory.genTallyVkSig(BigNumber.from(6), BigNumber.from(3), BigNumber.from(3)); - pollFactory = await PollFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(0); + let coordinator = new Keypair(); - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); + const isPSigSet = await jubjubFactory.isProcessVkSet(pSig); + expect(isPSigSet).to.be.true; - await expect(pollFactory.transferOwnership(qfi.address)) - .to.emit(pollFactory, "OwnershipTransferred") - .withArgs(deployerAddress, qfi.address); - }); + const isTSigSet = await jubjubFactory.isTallyVkSet(tSig); + expect(isTSigSet).to.be.true; - it("transfers messageAqFactory ownership to Poll Factory Contract", async () => { - grantRoundFactory = await GrantRoundFactory.deploy(); - grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - - pollFactory = await PollFactoryFactory.deploy(); - messageAqFactory = await MessageAqFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(0); - - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - - await expect(messageAqFactory.transferOwnership(pollFactory.address)) - .to.emit(messageAqFactory, "OwnershipTransferred") - .withArgs(deployerAddress, pollFactory.address); + const coordinatorPubkey = coordinator.pubKey.asContractParam(); + console.log(coordinatorPubkey); }); - - it("initializes Quadratic Funding Infrastructure", async () => { - grantRoundFactory = await GrantRoundFactory.deploy(); - grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - - pollFactory = await PollFactoryFactory.deploy(); - messageAqFactory = await MessageAqFactoryFactory.deploy(); - messageAqFactoryGrants = await MessageAqFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(0); - vkRegistry = await VKRegistryFactory.deploy(); - - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address + it("deploys a configured jubjubinstance correctly", async () => { + //NOTE: deploy factory and set templates + jubjubFactory = await JubjubFactoryFactory.deploy(); + expect(jubjubFactory.address).to.not.be.undefined; + expect(await jubjubFactory.jubjubTemplate()).to.not.be.undefined; + + freeForAllGateKeeper = await FreeForAllGatekeeperFactory.deploy(); + constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(99); + + const { logs } = await jubjubFactory + .connect(deployer) + .deployJubjub( + "0x5445535400000000000000000000000000000000000000000000000000000000", + freeForAllGateKeeper.address, + constantInitialVoiceCreditProxy.address + ) + .then((tx) => tx.wait()); + + const iface = jubjubFactory.interface; + const deployJubjubEvent = iface.parseLog(logs[logs.length - 1]).args["jubjub"]; + // console.log("deployJubjubEvent",logs); + + // console.log("deployer", await deployer.getAddress()); + // console.log("jubjubFactory", await jubjubFactory.address); + // console.log("jubjubTemplate", await jubjubFactory.jubjubTemplate()); + + // expect(deployJubjubEvent).to.not.equal(jubjubTemplate.address); + const jubjub1 = JubjubTemplateFactory.attach(deployJubjubEvent); + console.log("jubjubClone", await jubjub1.address); + const stateTree1 = StateTreeFactory.attach(await jubjub1.stateAq()); + const msgTree1 = MessageTreeFactory.attach(await jubjub1.messageAq()); + + // console.log("jubjubFactoryOwner", await jubjubFactory.owner()); + // console.log("jubjubOwner", await jubjub1.owner()); + // console.log("stateTree", stateTree1.address); + // console.log("msgTree", msgTree1.address); + // console.log("stateTreeOwner", await stateTree1.owner()); + // console.log("msgTreeOwner", await msgTree1.owner()); + + // Libraries should be linked to the Jubjub contract + expect(await jubjub1.hash(BigNumber.from(1), BigNumber.from(2))).to.be.equal( + BigNumber.from("0x115cc0f5e7d690413df64c6b9662e9cf2a3617f2743245519e19607a4417189a") ); - await expect(pollFactory.transferOwnership(qfi.address)) - .to.emit(pollFactory, "OwnershipTransferred") - .withArgs(deployerAddress, qfi.address); - - await expect(grantRoundFactory.transferOwnership(qfi.address)) - .to.emit(grantRoundFactory, "OwnershipTransferred") - .withArgs(deployerAddress, qfi.address); - - await expect(messageAqFactory.transferOwnership(pollFactory.address)) - .to.emit(messageAqFactory, "OwnershipTransferred") - .withArgs(deployerAddress, pollFactory.address); - - await expect(messageAqFactoryGrants.transferOwnership(grantRoundFactory.address)) - .to.emit(messageAqFactoryGrants, "OwnershipTransferred") - .withArgs(deployerAddress, grantRoundFactory.address); - await expect(qfi.initialize(vkRegistry.address, messageAqFactory.address, messageAqFactoryGrants.address)) - .to.emit(qfi, "Init") - .withArgs(vkRegistry.address, messageAqFactory.address); + console.log("message leaf hash", await jubjub1.blankMessageLeafHash()); + console.log("state leaf hash", await jubjub1.blankStateLeafHash()); }); }); diff --git a/packages/contracts/tests/QV/01-configure.ts b/packages/contracts/tests/QV/01-configure.ts deleted file mode 100644 index 736e5ed7..00000000 --- a/packages/contracts/tests/QV/01-configure.ts +++ /dev/null @@ -1,259 +0,0 @@ -import { ethers } from "hardhat"; -import { BigNumberish, Signer } from "ethers"; -import chai from "chai"; -import { solidity } from "ethereum-waffle"; -import { Keypair, VerifyingKey } from "qaci-domainobjs"; -import { G1Point, G2Point } from "qaci-crypto"; - -import { PoseidonT3 } from "../../typechain/PoseidonT3"; -import { PoseidonT3__factory } from "../../typechain/factories/PoseidonT3__factory"; - -import { PoseidonT4 } from "../../typechain/PoseidonT4"; -import { PoseidonT4__factory } from "../../typechain/factories/PoseidonT4__factory"; - -import { PoseidonT5 } from "../../typechain/PoseidonT5"; -import { PoseidonT5__factory } from "../../typechain/factories/PoseidonT5__factory"; - -import { PoseidonT6 } from "../../typechain/PoseidonT6"; -import { PoseidonT6__factory } from "../../typechain/factories/PoseidonT6__factory"; - -import { - GrantRoundFactoryLibraryAddresses, - GrantRoundFactory__factory, -} from "../../typechain/factories/GrantRoundFactory__factory"; -import { PollFactory__factory, PollFactoryLibraryAddresses } from "../../typechain/factories/PollFactory__factory"; - -import { - MessageAqFactory__factory, - MessageAqFactoryLibraryAddresses, -} from "../../typechain/factories/MessageAqFactory__factory"; -import { QFI__factory, QFILibraryAddresses } from "../../typechain/factories/QFI__factory"; - -import { GrantRoundFactory } from "../../typechain/GrantRoundFactory"; -import { PollFactory } from "../../typechain/PollFactory"; -import { MessageAqFactory } from "../../typechain/MessageAqFactory"; -import { QFI } from "../../typechain/QFI"; - -import { VkRegistry__factory } from "../../typechain/factories/VkRegistry__factory"; -import { FreeForAllGatekeeper__factory } from "../../typechain/factories/FreeForAllGatekeeper__factory"; -import { ConstantInitialVoiceCreditProxy__factory } from "../../typechain/factories/ConstantInitialVoiceCreditProxy__factory"; - -import { VerifyingKeyStruct, VkRegistry } from "../../typechain/VkRegistry"; -import { FreeForAllGatekeeper } from "../../typechain/FreeForAllGatekeeper"; -import { ConstantInitialVoiceCreditProxy } from "../../typechain/ConstantInitialVoiceCreditProxy"; - -import { OptimisticRecipientRegistry } from "../../typechain/OptimisticRecipientRegistry"; -import { OptimisticRecipientRegistry__factory } from "../../typechain/factories/OptimisticRecipientRegistry__factory"; - -import { BaseERC20Token } from "../../typechain/BaseERC20Token"; -import { BaseERC20Token__factory } from "../../typechain/factories/BaseERC20Token__factory"; - -import { PollProcessorAndTallyer } from "../../typechain/PollProcessorAndTallyer"; -import { PollProcessorAndTallyer__factory } from "../../typechain/factories/PollProcessorAndTallyer__factory"; - -import { MockVerifier } from "../../typechain/MockVerifier"; -import { MockVerifier__factory } from "../../typechain/factories/MockVerifier__factory"; - -chai.use(solidity); -const { expect } = chai; -const testProcessVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -const testTallyVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -describe("Configure - QV Infrastructure and vkRegistry", () => { - let deployer: Signer; - let deployerAddress: string; - let PoseidonT3Factory: PoseidonT3__factory; - let PoseidonT4Factory: PoseidonT4__factory; - let PoseidonT5Factory: PoseidonT5__factory; - let PoseidonT6Factory: PoseidonT6__factory; - - let linkedLibraryAddresses: - | QFILibraryAddresses - | PollFactoryLibraryAddresses - | MessageAqFactoryLibraryAddresses - | GrantRoundFactoryLibraryAddresses; - let GrantRoundFactory: GrantRoundFactory__factory; - let PollFactoryFactory: PollFactory__factory; - let MessageAqFactoryFactory: MessageAqFactory__factory; - - let FreeForAllGateKeeperFactory: FreeForAllGatekeeper__factory; - let ConstantInitialVoiceCreditProxyFactory: ConstantInitialVoiceCreditProxy__factory; - let VKRegistryFactory: VkRegistry__factory; - - let RecipientRegistryFactory: OptimisticRecipientRegistry__factory; - let BaseERC20TokenFactory: BaseERC20Token__factory; - let PollProcessorAndTallyerFactory: PollProcessorAndTallyer__factory; - let MockVerifierFactory: MockVerifier__factory; - - let QFIFactory: QFI__factory; - - let PoseidonT3: PoseidonT3; - let PoseidonT4: PoseidonT4; - let PoseidonT5: PoseidonT5; - let PoseidonT6: PoseidonT6; - let grantRoundFactory: GrantRoundFactory; - let pollFactory: PollFactory; - let messageAqFactory: MessageAqFactory; - let messageAqFactoryGrants: MessageAqFactory; - let vkRegistry: VkRegistry; - let constantInitialVoiceCreditProxy: ConstantInitialVoiceCreditProxy; - let freeForAllGateKeeper: FreeForAllGatekeeper; - let optimisticRecipientRegistry: OptimisticRecipientRegistry; - let baseERC20Token: BaseERC20Token; - let pollProcessorAndTallyer: PollProcessorAndTallyer; - let mockVerifier: MockVerifier; - let qfi: QFI; - let coordinator: Keypair; - - beforeEach(async () => { - [deployer] = await ethers.getSigners(); - deployerAddress = await deployer.getAddress(); - PoseidonT3Factory = new PoseidonT3__factory(deployer); - PoseidonT4Factory = new PoseidonT4__factory(deployer); - PoseidonT5Factory = new PoseidonT5__factory(deployer); - PoseidonT6Factory = new PoseidonT6__factory(deployer); - PoseidonT3 = await PoseidonT3Factory.deploy(); - PoseidonT4 = await PoseidonT4Factory.deploy(); - PoseidonT5 = await PoseidonT5Factory.deploy(); - PoseidonT6 = await PoseidonT6Factory.deploy(); - - linkedLibraryAddresses = { - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT5"]: PoseidonT5.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT3"]: PoseidonT3.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT6"]: PoseidonT6.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT4"]: PoseidonT4.address, - }; - - GrantRoundFactory = new GrantRoundFactory__factory({ ...linkedLibraryAddresses }, deployer); - PollFactoryFactory = new PollFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAqFactoryFactory = new MessageAqFactory__factory({ ...linkedLibraryAddresses }, deployer); - QFIFactory = new QFI__factory({ ...linkedLibraryAddresses }, deployer); - - VKRegistryFactory = new VkRegistry__factory(deployer); - ConstantInitialVoiceCreditProxyFactory = new ConstantInitialVoiceCreditProxy__factory(deployer); - FreeForAllGateKeeperFactory = new FreeForAllGatekeeper__factory(deployer); - RecipientRegistryFactory = new OptimisticRecipientRegistry__factory(deployer); - BaseERC20TokenFactory = new BaseERC20Token__factory(deployer); - PollProcessorAndTallyerFactory = new PollProcessorAndTallyer__factory(deployer); - MockVerifierFactory = new MockVerifier__factory(deployer); - - optimisticRecipientRegistry = await RecipientRegistryFactory.deploy(0, 0, deployerAddress); - grantRoundFactory = await GrantRoundFactory.deploy(); - grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - pollFactory = await PollFactoryFactory.deploy(); - messageAqFactory = await MessageAqFactoryFactory.deploy(); - messageAqFactoryGrants = await MessageAqFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(0); - vkRegistry = await VKRegistryFactory.deploy(); - baseERC20Token = await BaseERC20TokenFactory.deploy(100); - mockVerifier = await MockVerifierFactory.deploy(); - pollProcessorAndTallyer = await PollProcessorAndTallyerFactory.deploy(mockVerifier.address); - coordinator = new Keypair() - }); - - describe("Configure Infrastructure", () => { - it("verify - initialises Quadratic Funding Infrastructure", async () => { - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - await expect(pollFactory.transferOwnership(qfi.address)) - .to.emit(pollFactory, "OwnershipTransferred") - .withArgs(deployerAddress, qfi.address); - - await expect(grantRoundFactory.transferOwnership(qfi.address)) - .to.emit(grantRoundFactory, "OwnershipTransferred") - .withArgs(deployerAddress, qfi.address); - - await expect(messageAqFactory.transferOwnership(pollFactory.address)) - .to.emit(messageAqFactory, "OwnershipTransferred") - .withArgs(deployerAddress, pollFactory.address); - - await expect(messageAqFactoryGrants.transferOwnership(grantRoundFactory.address)) - .to.emit(messageAqFactoryGrants, "OwnershipTransferred") - .withArgs(deployerAddress, grantRoundFactory.address); - - await expect(qfi.initialize(vkRegistry.address, messageAqFactory.address, messageAqFactoryGrants.address)) - .to.emit(qfi, "Init") - .withArgs(vkRegistry.address, messageAqFactory.address); - }); - it("verify - set verifying keys in vkRegistry contract", async () => { - const stateTreeDepth = await qfi.stateTreeDepth(); - const _stateTreeDepth = stateTreeDepth.toString(); - const _intStateTreeDepth = 1; - const _messageTreeDepth = 4; - const _voteOptionTreeDepth = 2; - const _messageBatchSize = 25; - const _processVk = testProcessVk.asContractParam(); - const _tallyVk = testTallyVk.asContractParam(); - - const { status } = await vkRegistry - .setVerifyingKeys( - _stateTreeDepth, - _intStateTreeDepth, - _messageTreeDepth, - _voteOptionTreeDepth, - _messageBatchSize, - _processVk, - _tallyVk - ) - .then((tx) => tx.wait()); - - expect(status).to.equal(1); - - const pSig = await vkRegistry.genProcessVkSig( - _stateTreeDepth, - _messageTreeDepth, - _voteOptionTreeDepth, - _messageBatchSize - ); - - const isPSigSet = await vkRegistry.isProcessVkSet(pSig); - expect(isPSigSet).to.be.true; - - const tSig = await vkRegistry.genTallyVkSig(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); - const isTSigSet = await vkRegistry.isTallyVkSet(tSig); - expect(isTSigSet).to.be.true; - - // Check that the VKs are set - const processVkOnChain = await vkRegistry.getProcessVk( - _stateTreeDepth, - _messageTreeDepth, - _voteOptionTreeDepth, - _messageBatchSize - ); - expect(processVkOnChain).to.have.own.property("alpha1"); - - const tallyVkOnChain = await vkRegistry.getTallyVk(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); - expect(tallyVkOnChain).to.have.own.property("alpha1"); - expect(tallyVkOnChain.alpha1.x).to.not.be.empty; - }); - it("verify - sets Poll Processor And Tallyer", async () => { - const { status } = await qfi.setPollProcessorAndTallyer(pollProcessorAndTallyer.address) - .then((tx) => tx.wait()); - - expect(status).to.equal(1); - expect(await qfi.pollProcessorAndTallyer()).to.not.equal(ethers.constants.AddressZero); - - }) - }); - - -}); diff --git a/packages/contracts/tests/QV/01-signup.ts b/packages/contracts/tests/QV/01-signup.ts new file mode 100644 index 00000000..c250e25b --- /dev/null +++ b/packages/contracts/tests/QV/01-signup.ts @@ -0,0 +1,216 @@ +import { ethers } from "hardhat"; +import { BigNumber, constants, Signer } from "ethers"; +import chai from "chai"; +import { solidity } from "ethereum-waffle"; + +import { Keypair, VerifyingKey } from "@qfi/macisdk"; +import { G1Point, G2Point } from "@qfi/macisdk" + +import { PoseidonT3__factory } from "../../typechain-types/factories/contracts/poseidon/PoseidonT3__factory"; +import { PoseidonT4__factory } from "../../typechain-types/factories/contracts/poseidon/PoseidonT4__factory"; +import { PoseidonT5__factory } from "../../typechain-types/factories/contracts/poseidon/PoseidonT5__factory"; +import { PoseidonT6__factory } from "../../typechain-types/factories/contracts/poseidon/PoseidonT6__factory"; +import { MessageTreeLibraryAddresses, MessageTree__factory } from "../../typechain-types/factories/contracts/MessageTree__factory"; +import { JubjubLibraryAddresses, Jubjub__factory } from "../../typechain-types/factories/contracts/Jubjub__factory"; +import { JubjubFactoryLibraryAddresses, JubjubFactory__factory } from "../../typechain-types/factories/contracts/JubjubFactory__factory"; +import { ConstantInitialVoiceCreditProxy__factory } from "../../typechain-types/factories/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/ConstantInitialVoiceCreditProxy__factory"; +import { FreeForAllGatekeeper__factory } from "../../typechain-types/factories/contracts/flavors/F.sol/FreeForAllGatekeeper__factory"; +import { StateTreeLibraryAddresses, StateTree__factory } from "../../typechain-types/factories/contracts/StateTree__factory"; + +import { PoseidonT3 } from "../../typechain-types/contracts/poseidon/PoseidonT3"; +import { PoseidonT4 } from "../../typechain-types/contracts/poseidon/PoseidonT4"; +import { PoseidonT5 } from "../../typechain-types/contracts/poseidon/PoseidonT5"; +import { PoseidonT6 } from "../../typechain-types/contracts/poseidon/PoseidonT6"; +import { Jubjub } from "../../typechain-types/contracts/Jubjub"; +import { JubjubFactory, VerifyingKeyStruct } from "../../typechain-types/contracts/JubjubFactory"; +import { ConstantInitialVoiceCreditProxy } from "../../typechain-types/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/ConstantInitialVoiceCreditProxy"; +import { FreeForAllGatekeeper } from "../../typechain-types/contracts/flavors/F.sol/FreeForAllGatekeeper"; +import { StateTree } from "../../typechain-types/contracts/StateTree"; +import { MessageTree } from "../../typechain-types/contracts/MessageTree"; + +chai.use(solidity); +const { expect } = chai; + +const testProcessVk = new VerifyingKey( + new G1Point(BigInt(0), BigInt(1)), + new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), + new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), + new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), + [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] +); + +const testTallyVk = new VerifyingKey( + new G1Point(BigInt(0), BigInt(1)), + new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), + new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), + new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), + [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] +); + +describe("Signup - QV 6-8-3-3 Configuration Smart Contracts", () => { + let deployer: Signer; + let deployerAddress: string; + let libs: JubjubLibraryAddresses; + let factoryLibs: JubjubFactoryLibraryAddresses; + let messageTreeLibs: MessageTreeLibraryAddresses; + let stateTreeLibs: StateTreeLibraryAddresses; + + let PoseidonT3Factory: PoseidonT3__factory; + let PoseidonT4Factory: PoseidonT4__factory; + let PoseidonT5Factory: PoseidonT5__factory; + let PoseidonT6Factory: PoseidonT6__factory; + + let JubjubFactoryFactory: JubjubFactory__factory; + let ConstantInitialVoiceCreditProxyFactory: ConstantInitialVoiceCreditProxy__factory; + let FreeForAllGatekeeperFactory: FreeForAllGatekeeper__factory; + + let JubjubTemplateFactory: Jubjub__factory; + let StateTreeFactory: StateTree__factory; + let MessageTreeFactory: MessageTree__factory; + let jubjubTemplate: Jubjub; + let stateTreeTemplate: StateTree; + let messageTreeTemplate: MessageTree; + + let poseidonT3: PoseidonT3; + let poseidonT4: PoseidonT4; + let poseidonT5: PoseidonT5; + let poseidonT6: PoseidonT6; + + let jubjubFactory: JubjubFactory; + let constantInitialVoiceCreditProxy: ConstantInitialVoiceCreditProxy; + let freeForAllGateKeeper: FreeForAllGatekeeper; + + beforeEach(async () => { + [deployer] = await ethers.getSigners(); + deployerAddress = await deployer.getAddress(); + + // NOTE: Deploy Libs + PoseidonT3Factory = new PoseidonT3__factory(deployer); + PoseidonT4Factory = new PoseidonT4__factory(deployer); + PoseidonT5Factory = new PoseidonT5__factory(deployer); + PoseidonT6Factory = new PoseidonT6__factory(deployer); + poseidonT3 = await PoseidonT3Factory.deploy(); + poseidonT4 = await PoseidonT4Factory.deploy(); + poseidonT5 = await PoseidonT5Factory.deploy(); + poseidonT6 = await PoseidonT6Factory.deploy(); + libs = { + ["contracts/poseidon/PoseidonT6.sol:PoseidonT6"]: poseidonT6.address, + ["contracts/poseidon/PoseidonT5.sol:PoseidonT5"]: poseidonT5.address, + ["contracts/poseidon/PoseidonT3.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/poseidon/PoseidonT4.sol:PoseidonT4"]: poseidonT4.address, + }; + factoryLibs = { + ["contracts/poseidon/PoseidonT6.sol:PoseidonT6"]: poseidonT6.address, + ["contracts/poseidon/PoseidonT5.sol:PoseidonT5"]: poseidonT5.address, + ["contracts/poseidon/PoseidonT3.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/poseidon/PoseidonT4.sol:PoseidonT4"]: poseidonT4.address, + ["contracts/AccQueue.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/AccQueue.sol:PoseidonT6"]: poseidonT6.address, + }; + stateTreeLibs = { + ["contracts/AccQueue.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/AccQueue.sol:PoseidonT6"]: poseidonT6.address, + }; + messageTreeLibs = { + ["contracts/AccQueue.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/AccQueue.sol:PoseidonT6"]: poseidonT6.address, + }; + + // NOTE: Deploy templates + + JubjubTemplateFactory = new Jubjub__factory(libs, deployer); + StateTreeFactory = new StateTree__factory(stateTreeLibs, deployer); + MessageTreeFactory = new MessageTree__factory(messageTreeLibs, deployer); + + jubjubTemplate = await JubjubTemplateFactory.deploy(); + stateTreeTemplate = await StateTreeFactory.deploy(6); + messageTreeTemplate = await MessageTreeFactory.deploy(8); + + // NOTE: Setup factories + + JubjubFactoryFactory = new JubjubFactory__factory(factoryLibs, deployer); + ConstantInitialVoiceCreditProxyFactory = new ConstantInitialVoiceCreditProxy__factory(deployer); + FreeForAllGatekeeperFactory = new FreeForAllGatekeeper__factory(deployer); + + //NOTE: Deploy Factory, SignupGatekeeper, and InitialVoiceCreditProxy + jubjubFactory = await JubjubFactoryFactory.deploy(); + freeForAllGateKeeper = await FreeForAllGatekeeperFactory.deploy(); + constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(99); + + //NOTE: Deploy Jubjub Instance + const tx = await jubjubFactory.deployJubjub( + "0xDEADBEEF00000000000000000000000000000000000000000000000000000000", + freeForAllGateKeeper.address, + constantInitialVoiceCreditProxy.address + ); + tx.wait(0); + }); + + it("verify - contract deployer can set vkRegistry", async () => { + const jubjubInstance = JubjubTemplateFactory.attach(await jubjubFactory.currentJubjub()); + const vkRegistry = await jubjubInstance.vkRegistry(); + expect(vkRegistry).to.not.equal(constants.AddressZero); + await jubjubInstance.setVkRegistry(constants.AddressZero); + expect(await jubjubInstance.vkRegistry()).to.equal(constants.AddressZero); + await jubjubInstance.setVkRegistry(vkRegistry); + expect(await jubjubInstance.vkRegistry()).to.equal(jubjubFactory.address); + }); + + it("verify - can signup one user", async () => { + const maciKey = new Keypair(); + const [deployer, user1] = await ethers.getSigners(); + const jubjubInstance = JubjubTemplateFactory.attach(await jubjubFactory.currentJubjub()); + + //NOTE: build contract call data + const _pubKey = maciKey.pubKey.asContractParam(); + const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); + const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); + + //NOTE: call signup as user1 + await jubjubInstance.connect(user1).signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData); + }); + + it("can signup many users", async () => { + const maciKey = new Keypair(); + const [deployer, user1, user2, user3, user4, user5, user6] = await ethers.getSigners(); + const jubjubInstance = JubjubTemplateFactory.attach(await jubjubFactory.currentJubjub()); + const userSigners = [user1, user2, user3, user4, user5, user6]; + + const done = []; + for (const user of userSigners) { + const maciKey = new Keypair(); + const _pubKey = maciKey.pubKey.asContractParam(); + const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); + const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); + + await jubjubInstance.connect(user).signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData); + done.push({ maciKey: maciKey, signer: user }); + } + expect(Number(await jubjubInstance.numSignUps())).to.equal(6); + expect(Number(await jubjubInstance.numMessages())).to.equal(0); + }); + + it("verify - deploys signup event on user signup", async () => { + const maciKey = new Keypair(); + const [deployer, user1, user2, user3, user4, user5, user6] = await ethers.getSigners(); + const jubjubInstance = JubjubTemplateFactory.attach(await jubjubFactory.currentJubjub()); + const userSigners = [user1, user2, user3, user4, user5, user6]; + + const done = []; + for (const user of userSigners) { + const maciKey = new Keypair(); + const _pubKey = maciKey.pubKey.asContractParam(); + const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); + const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); + await expect(jubjubInstance.signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData)).to.emit(jubjubInstance, "SignUp"); + } + expect(Number(await jubjubInstance.numSignUps())).to.equal(6); + expect(Number(await jubjubInstance.numMessages())).to.equal(0); + }); + + it("verify - users signed up successfully before poll deployed", async () => { + const jubjubInstance = JubjubTemplateFactory.attach(await jubjubFactory.currentJubjub()); + expect(Number(await jubjubInstance.numSignUps())).to.equal(0); + expect(Number(await jubjubInstance.numMessages())).to.equal(0); + }); +}); \ No newline at end of file diff --git a/packages/contracts/tests/QV/02-poll.ts b/packages/contracts/tests/QV/02-poll.ts deleted file mode 100644 index 9a3018dc..00000000 --- a/packages/contracts/tests/QV/02-poll.ts +++ /dev/null @@ -1,460 +0,0 @@ -import { ethers } from "hardhat"; -import { BigNumber, BigNumberish, Signer } from "ethers"; -import chai from "chai"; -import { solidity } from "ethereum-waffle"; -import { Keypair, VerifyingKey } from "qaci-domainobjs"; -import { G1Point, G2Point } from "qaci-crypto"; - -import { PoseidonT3 } from "../../typechain/PoseidonT3"; -import { PoseidonT3__factory } from "../../typechain/factories/PoseidonT3__factory"; - -import { PoseidonT4 } from "../../typechain/PoseidonT4"; -import { PoseidonT4__factory } from "../../typechain/factories/PoseidonT4__factory"; - -import { PoseidonT5 } from "../../typechain/PoseidonT5"; -import { PoseidonT5__factory } from "../../typechain/factories/PoseidonT5__factory"; - -import { PoseidonT6 } from "../../typechain/PoseidonT6"; -import { PoseidonT6__factory } from "../../typechain/factories/PoseidonT6__factory"; - -import { - GrantRoundFactoryLibraryAddresses, - GrantRoundFactory__factory, -} from "../../typechain/factories/GrantRoundFactory__factory"; -import { PollFactory__factory, PollFactoryLibraryAddresses } from "../../typechain/factories/PollFactory__factory"; - -import { - MessageAqFactory__factory, - MessageAqFactoryLibraryAddresses, -} from "../../typechain/factories/MessageAqFactory__factory"; -import { QFI__factory, QFILibraryAddresses } from "../../typechain/factories/QFI__factory"; - -import { GrantRoundFactory } from "../../typechain/GrantRoundFactory"; -import { PollFactory } from "../../typechain/PollFactory"; -import { MessageAqFactory } from "../../typechain/MessageAqFactory"; -import { QFI } from "../../typechain/QFI"; -import { Poll__factory } from "../../typechain/factories/Poll__factory"; -import { Poll } from "../../typechain/Poll"; - -import { VkRegistry__factory } from "../../typechain/factories/VkRegistry__factory"; -import { FreeForAllGatekeeper__factory } from "../../typechain/factories/FreeForAllGatekeeper__factory"; -import { ConstantInitialVoiceCreditProxy__factory } from "../../typechain/factories/ConstantInitialVoiceCreditProxy__factory"; - -import { VerifyingKeyStruct, VkRegistry } from "../../typechain/VkRegistry"; -import { FreeForAllGatekeeper } from "../../typechain/FreeForAllGatekeeper"; -import { ConstantInitialVoiceCreditProxy } from "../../typechain/ConstantInitialVoiceCreditProxy"; - -import { OptimisticRecipientRegistry } from "../../typechain/OptimisticRecipientRegistry"; -import { OptimisticRecipientRegistry__factory } from "../../typechain/factories/OptimisticRecipientRegistry__factory"; - -import { BaseERC20Token } from "../../typechain/BaseERC20Token"; -import { BaseERC20Token__factory } from "../../typechain/factories/BaseERC20Token__factory"; - -import { PollProcessorAndTallyer } from "../../typechain/PollProcessorAndTallyer"; -import { PollProcessorAndTallyer__factory } from "../../typechain/factories/PollProcessorAndTallyer__factory"; - -import { MockVerifier } from "../../typechain/MockVerifier"; -import { MockVerifier__factory } from "../../typechain/factories/MockVerifier__factory"; - -chai.use(solidity); -const { expect } = chai; -const testProcessVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -const testTallyVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -type IVerifyingKey = { - alpha1: { - x: string; - y: string; - }; - beta2: { - x: [BigNumberish, BigNumberish]; - y: string[]; - }; - gamma2: { - x: string[]; - y: string[]; - }; - delta2: { - x: string[]; - y: string[]; - }; - ic: { - x: BigNumberish; - y: BigNumberish; - }[]; -}; - -describe("Poll - New QV Voting Round", () => { - let deployer: Signer; - let user1: Signer; - let user2: Signer; - let user3: Signer; - let user4: Signer; - let user5: Signer; - let user6: Signer; - let user7: Signer; - let user8: Signer; - let user9: Signer; - let user10: Signer; - let user11: Signer; - let user12: Signer; - let user13: Signer; - let user14: Signer; - let user15: Signer; - let user16: Signer; - let user17: Signer; - let user18: Signer; - let user19: Signer; - let user20: Signer; - let user21: Signer; - let user22: Signer; - let user23: Signer; - let user24: Signer; - let user25: Signer; - let user26: Signer; - let project1: Signer; - let project2: Signer; - let project3: Signer; - let deployerAddress: string; - let PoseidonT3Factory: PoseidonT3__factory; - let PoseidonT4Factory: PoseidonT4__factory; - let PoseidonT5Factory: PoseidonT5__factory; - let PoseidonT6Factory: PoseidonT6__factory; - - let linkedLibraryAddresses: - | QFILibraryAddresses - | PollFactoryLibraryAddresses - | MessageAqFactoryLibraryAddresses - | GrantRoundFactoryLibraryAddresses; - let GrantRoundFactory: GrantRoundFactory__factory; - let PollFactoryFactory: PollFactory__factory; - let MessageAqFactoryFactory: MessageAqFactory__factory; - - let FreeForAllGateKeeperFactory: FreeForAllGatekeeper__factory; - let ConstantInitialVoiceCreditProxyFactory: ConstantInitialVoiceCreditProxy__factory; - let VKRegistryFactory: VkRegistry__factory; - - let RecipientRegistryFactory: OptimisticRecipientRegistry__factory; - let BaseERC20TokenFactory: BaseERC20Token__factory; - let PollProcessorAndTallyerFactory: PollProcessorAndTallyer__factory; - let MockVerifierFactory: MockVerifier__factory; - - let QFIFactory: QFI__factory; - - let PoseidonT3: PoseidonT3; - let PoseidonT4: PoseidonT4; - let PoseidonT5: PoseidonT5; - let PoseidonT6: PoseidonT6; - let grantRoundFactory: GrantRoundFactory; - let pollFactory: PollFactory; - let messageAqFactory: MessageAqFactory; - let messageAqFactoryGrants: MessageAqFactory; - let vkRegistry: VkRegistry; - let constantInitialVoiceCreditProxy: ConstantInitialVoiceCreditProxy; - let freeForAllGateKeeper: FreeForAllGatekeeper; - let optimisticRecipientRegistry: OptimisticRecipientRegistry; - let baseERC20Token: BaseERC20Token; - let pollProcessorAndTallyer: PollProcessorAndTallyer; - let mockVerifier: MockVerifier; - let qfi: QFI; - let coordinator: Keypair; - let poll: Poll; - - beforeEach(async () => { - [ - deployer, - user1, - user2, - user3, - user4, - user5, - user6, - user7, - user8, - user9, - user10, - user11, - user12, - user13, - user14, - user15, - user16, - user17, - user18, - user19, - user20, - user21, - user22, - user23, - user24, - user25, - user26, - ] = await ethers.getSigners(); - - ethers.Wallet.createRandom(); - deployerAddress = await deployer.getAddress(); - PoseidonT3Factory = new PoseidonT3__factory(deployer); - PoseidonT4Factory = new PoseidonT4__factory(deployer); - PoseidonT5Factory = new PoseidonT5__factory(deployer); - PoseidonT6Factory = new PoseidonT6__factory(deployer); - PoseidonT3 = await PoseidonT3Factory.deploy(); - PoseidonT4 = await PoseidonT4Factory.deploy(); - PoseidonT5 = await PoseidonT5Factory.deploy(); - PoseidonT6 = await PoseidonT6Factory.deploy(); - - linkedLibraryAddresses = { - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT5"]: PoseidonT5.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT3"]: PoseidonT3.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT6"]: PoseidonT6.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT4"]: PoseidonT4.address, - }; - - GrantRoundFactory = new GrantRoundFactory__factory({ ...linkedLibraryAddresses }, deployer); - PollFactoryFactory = new PollFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAqFactoryFactory = new MessageAqFactory__factory({ ...linkedLibraryAddresses }, deployer); - QFIFactory = new QFI__factory({ ...linkedLibraryAddresses }, deployer); - - VKRegistryFactory = new VkRegistry__factory(deployer); - ConstantInitialVoiceCreditProxyFactory = new ConstantInitialVoiceCreditProxy__factory(deployer); - FreeForAllGateKeeperFactory = new FreeForAllGatekeeper__factory(deployer); - RecipientRegistryFactory = new OptimisticRecipientRegistry__factory(deployer); - BaseERC20TokenFactory = new BaseERC20Token__factory(deployer); - PollProcessorAndTallyerFactory = new PollProcessorAndTallyer__factory(deployer); - MockVerifierFactory = new MockVerifier__factory(deployer); - - optimisticRecipientRegistry = await RecipientRegistryFactory.deploy(0, 0, deployerAddress); - grantRoundFactory = await GrantRoundFactory.deploy(); - grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - pollFactory = await PollFactoryFactory.deploy(); - messageAqFactory = await MessageAqFactoryFactory.deploy(); - messageAqFactoryGrants = await MessageAqFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - //NOTE: each user recieves 100 voice credits by default - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(100); - vkRegistry = await VKRegistryFactory.deploy(); - baseERC20Token = await BaseERC20TokenFactory.deploy(100); - mockVerifier = await MockVerifierFactory.deploy(); - pollProcessorAndTallyer = await PollProcessorAndTallyerFactory.deploy(mockVerifier.address); - - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - await pollFactory.transferOwnership(qfi.address); - await grantRoundFactory.transferOwnership(qfi.address); - await messageAqFactory.transferOwnership(pollFactory.address); - await messageAqFactoryGrants.transferOwnership(grantRoundFactory.address); - await qfi.initialize(vkRegistry.address, messageAqFactory.address, messageAqFactoryGrants.address); - - const stateTreeDepth = await qfi.stateTreeDepth(); - const _stateTreeDepth = stateTreeDepth.toString(); - const _intStateTreeDepth = 1; - const _messageTreeDepth = 4; - const _voteOptionTreeDepth = 2; - const _messageBatchSize = 25; - const _processVk = testProcessVk.asContractParam(); - const _tallyVk = testTallyVk.asContractParam(); - - const { status } = await vkRegistry - .setVerifyingKeys( - _stateTreeDepth, - _intStateTreeDepth, - _messageTreeDepth, - _voteOptionTreeDepth, - _messageBatchSize, - _processVk, - _tallyVk - ) - .then((tx) => tx.wait()); - const pSig = await vkRegistry.genProcessVkSig( - _stateTreeDepth, - _messageTreeDepth, - _voteOptionTreeDepth, - _messageBatchSize - ); - const tSig = await vkRegistry.genTallyVkSig(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); - coordinator = new Keypair(); - }); - - describe("User Sign Ups", () => { - it("verify - allows one user to sign up to maci with correct parameters", async () => { - const provider = user1.provider ?? ethers.getDefaultProvider(); - const maciKey = new Keypair(); - - const _pubKey = maciKey.pubKey.asContractParam(); - - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - - const expectedStateIndex = "1"; - const expectedIntialVoiceCredits = 100; - const expectedPubKey = Object.values(_pubKey); - const expectedTimeStamp = (await provider.getBlock("latest")).timestamp + 1; - - await expect(qfi.connect(user1).signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData)) - .to.emit(qfi, "SignUp") - .withArgs(expectedStateIndex, expectedPubKey, expectedIntialVoiceCredits, expectedTimeStamp); - }); - - it("verify - allows two users to sign up to maci with correct parameters", async () => { - const provider = user1.provider ?? ethers.getDefaultProvider(); - const timeStamp = (await provider.getBlock("latest")).timestamp; - - const signups = await [user2, user3].map(async (user, index) => { - const maciKey = new Keypair(); - const _pubKey = maciKey.pubKey.asContractParam(); - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - const expectedPubKey = Object.values(_pubKey); - const expectedStateIndex = index + 1 + ""; - const expectedIntialVoiceCredits = 100; - //NOTE: each transaction will tick 1 🤷 - const expectedTimeStamp = timeStamp + index + 1; - - return expect(qfi.connect(user).signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData)) - .to.emit(qfi, "SignUp") - .withArgs(expectedStateIndex, expectedPubKey, expectedIntialVoiceCredits, expectedTimeStamp); - }); - await Promise.all(signups); - }); - - it("verify - allows many users to sign up to maci with correct parameters", async () => { - const userSigners = [ - user1, - user2, - user3, - user4, - user5, - user6, - user7, - user8, - user9, - user10, - user11, - user12, - user13, - user14, - user15, - user16, - user17, - user18, - user19, - user20, - user21, - user22, - user23, - user24, - user25, - ]; - for (const user of userSigners) { - const maciKey = new Keypair(); - const _pubKey = maciKey.pubKey.asContractParam(); - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - await expect(qfi.connect(user).signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData)).to.emit( - qfi, - "SignUp" - ); - } - }); - - it("require fail - sign up fails with invalid keys", async () => { - const _badPubKey = { - x: "21888242871839275222246405745257275088548364400416034343698204186575808495617", - y: "0", - }; - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - - await expect( - qfi.connect(user4).signUp(_badPubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData) - ).to.be.revertedWith("MACI: _pubKey values should be less than the snark scalar field"); - }); - }); - describe("Create a new Poll", () => { - const _duration = 15; - const _maxValues = { - maxUsers: 25, - maxMessages: 25, - maxVoteOptions: 25, - }; - const _treeDepths = { - intStateTreeDepth: 1, - messageTreeDepth: 4, - messageTreeSubDepth: 2, - voteOptionTreeDepth: 2, - }; - const _intStateTreeDepth = 1; - const _messageBatchSize = 25; - const _tallyBatchSize = 5 ** _intStateTreeDepth; - coordinator = new Keypair(); - const _coordinatorPubkey = coordinator.pubKey.asContractParam(); - - const expectedPollId = "0"; - //const expectedPollAddress = "0x4aAa546748B9b4DBaa3A1C58f0DD1b2d3C6E97Ef"; // NOTE: nonce hack to get the poll address. Use this for Integration test - const expectedPollAddress = "0xb22F17625EC8fD0173098Ae0C04485FD3F11BD19"; // NOTE: nonce hack to get the poll address. Use this for Unit test - - const expectedCoordinatorPublicKey = Object.values(_coordinatorPubkey); - - it("verify - deploys a new poll correctly", async () => { - const provider = deployer.provider ?? ethers.getDefaultProvider(); - - await expect(qfi.deployPoll(_duration, _maxValues, _treeDepths, _coordinatorPubkey)) - .to.emit(qfi, "DeployPoll") - // .withArgs(expectedPollId, expectedPollAddress, expectedCoordinatorPublicKey); - - const expectedTimeStamp = BigNumber.from((await provider.getBlock("latest")).timestamp); - const expectedDuration = BigNumber.from(_duration); - const pollContractAddress = await qfi.getPoll(0); - poll = new Poll__factory({ ...linkedLibraryAddresses }, deployer).attach(pollContractAddress); - const deployTimeandDuration = await poll.getDeployTimeAndDuration(); - - expect([...deployTimeandDuration]).to.deep.equal([expectedTimeStamp, expectedDuration]); - - expect(await poll.stateAqMerged()).to.be.false; - expect((await poll.currentSbCommitment()).toString()).to.equal("0"); - expect(Number((await poll.numSignUpsAndMessages())[0])).to.equal(0); - expect(Number((await poll.numSignUpsAndMessages())[1])).to.equal(0); - - const onChainMaxValues = await poll.maxValues(); - expect([onChainMaxValues.maxMessages, onChainMaxValues.maxVoteOptions]).to.deep.equal([ - BigNumber.from(_maxValues.maxMessages), - BigNumber.from(_maxValues.maxVoteOptions), - ]); - - const onChainTreeDepths = await poll.treeDepths(); - expect([ - onChainTreeDepths.intStateTreeDepth, - onChainTreeDepths.messageTreeSubDepth, - onChainTreeDepths.messageTreeDepth, - onChainTreeDepths.voteOptionTreeDepth, - ]).to.deep.equal([ - _treeDepths.intStateTreeDepth, - _treeDepths.messageTreeSubDepth, - _treeDepths.messageTreeDepth, - _treeDepths.voteOptionTreeDepth, - ]); - const onChainBatchSizes = await poll.batchSizes(); - expect([onChainBatchSizes.messageBatchSize, onChainBatchSizes.tallyBatchSize]).to.deep.equal([ - _messageBatchSize, - _tallyBatchSize, - ]); - }); - }); -}); diff --git a/packages/contracts/tests/QV/02-vote.ts b/packages/contracts/tests/QV/02-vote.ts new file mode 100644 index 00000000..d2f90f69 --- /dev/null +++ b/packages/contracts/tests/QV/02-vote.ts @@ -0,0 +1,354 @@ +import { ethers } from "hardhat"; +import { BigNumber, constants, Signer } from "ethers"; +import chai from "chai"; +import { solidity } from "ethereum-waffle"; + +import { Keypair, VerifyingKey } from "@qfi/macisdk"; +import { MaciState } from "@qfi/macisdk"; +import { G1Point, G2Point } from "@qfi/macisdk"; +import { PCommand } from "@qfi/macisdk"; + +import { PoseidonT3__factory } from "../../typechain-types/factories/contracts/poseidon/PoseidonT3__factory"; +import { PoseidonT4__factory } from "../../typechain-types/factories/contracts/poseidon/PoseidonT4__factory"; +import { PoseidonT5__factory } from "../../typechain-types/factories/contracts/poseidon/PoseidonT5__factory"; +import { PoseidonT6__factory } from "../../typechain-types/factories/contracts/poseidon/PoseidonT6__factory"; +import { MessageTreeLibraryAddresses, MessageTree__factory } from "../../typechain-types/factories/contracts/MessageTree__factory"; +import { JubjubLibraryAddresses, Jubjub__factory } from "../../typechain-types/factories/contracts/Jubjub__factory"; +import { JubjubFactoryLibraryAddresses, JubjubFactory__factory } from "../../typechain-types/factories/contracts/JubjubFactory__factory"; +import { ConstantInitialVoiceCreditProxy__factory } from "../../typechain-types/factories/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/ConstantInitialVoiceCreditProxy__factory"; +import { FreeForAllGatekeeper__factory } from "../../typechain-types/factories/contracts/flavors/F.sol/FreeForAllGatekeeper__factory"; +import { StateTreeLibraryAddresses, StateTree__factory } from "../../typechain-types/factories/contracts/StateTree__factory"; + +import { PoseidonT3 } from "../../typechain-types/contracts/poseidon/PoseidonT3"; +import { PoseidonT4 } from "../../typechain-types/contracts/poseidon/PoseidonT4"; +import { PoseidonT5 } from "../../typechain-types/contracts/poseidon/PoseidonT5"; +import { PoseidonT6 } from "../../typechain-types/contracts/poseidon/PoseidonT6"; +import { Jubjub } from "../../typechain-types/contracts/Jubjub"; +import { JubjubFactory, VerifyingKeyStruct } from "../../typechain-types/contracts/JubjubFactory"; +import { ConstantInitialVoiceCreditProxy } from "../../typechain-types/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/ConstantInitialVoiceCreditProxy"; +import { FreeForAllGatekeeper } from "../../typechain-types/contracts/flavors/F.sol/FreeForAllGatekeeper"; +import { StateTree } from "../../typechain-types/contracts/StateTree"; +import { MessageTree } from "../../typechain-types/contracts/MessageTree"; + +chai.use(solidity); +const { expect } = chai; + +const testProcessVk = new VerifyingKey( + new G1Point(BigInt(0), BigInt(1)), + new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), + new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), + new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), + [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] +); + +const testTallyVk = new VerifyingKey( + new G1Point(BigInt(0), BigInt(1)), + new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), + new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), + new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), + [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] +); + +describe("Vote - QV 6-8-3-3 Configuration Smart Contracts", () => { + let maciState: MaciState; + let deployer: Signer; + let user1: Signer; + let user2: Signer; + let user3: Signer; + let user4: Signer; + let user5: Signer; + let user6: Signer; + let user7: Signer; + let user8: Signer; + let user9: Signer; + let user10: Signer; + let users: { + maciKey: Keypair; + signer: Signer; + }[] = []; + let deployerAddress: string; + let libs: JubjubLibraryAddresses; + let factoryLibs: JubjubFactoryLibraryAddresses; + let messageTreeLibs: MessageTreeLibraryAddresses; + let stateTreeLibs: StateTreeLibraryAddresses; + + let PoseidonT3Factory: PoseidonT3__factory; + let PoseidonT4Factory: PoseidonT4__factory; + let PoseidonT5Factory: PoseidonT5__factory; + let PoseidonT6Factory: PoseidonT6__factory; + + let JubjubFactoryFactory: JubjubFactory__factory; + let ConstantInitialVoiceCreditProxyFactory: ConstantInitialVoiceCreditProxy__factory; + let FreeForAllGatekeeperFactory: FreeForAllGatekeeper__factory; + + let JubjubTemplateFactory: Jubjub__factory; + let StateTreeFactory: StateTree__factory; + let MessageTreeFactory: MessageTree__factory; + let jubjubTemplate: Jubjub; + let stateTreeTemplate: StateTree; + let messageTreeTemplate: MessageTree; + + let poseidonT3: PoseidonT3; + let poseidonT4: PoseidonT4; + let poseidonT5: PoseidonT5; + let poseidonT6: PoseidonT6; + + let jubjubFactory: JubjubFactory; + let constantInitialVoiceCreditProxy: ConstantInitialVoiceCreditProxy; + let freeForAllGateKeeper: FreeForAllGatekeeper; + let coordinator: Keypair; + let coordinatorPubkey: PubKeyStruct; + const duration = 15 * 60; + const stateTreeDepth = 6; + const intStateTreeDepth = 3; + const treeDepths = { + intStateTreeDepth: 3, + messageTreeDepth: 8, + messageTreeSubDepth: 3, + voteOptionTreeDepth: 3, + }; + const messageBatchSize = 5 ** treeDepths.messageTreeSubDepth; + const tallyBatchSize = 5 ** intStateTreeDepth; + const maxValues = { + maxUsers: 5 ** stateTreeDepth, + maxMessages: 5 ** treeDepths.messageTreeDepth, + maxVoteOptions: 5 ** treeDepths.voteOptionTreeDepth, + }; + + beforeEach(async function () { + this?.timeout(40000); + coordinator = new Keypair(); + coordinatorPubkey = coordinator.pubKey.asContractParam(); + [deployer, user1, user2, user3, user4, user5, user6, user7, user8, user9, user10] = await ethers.getSigners(); + deployerAddress = await deployer.getAddress(); + + // NOTE: Deploy Libs + PoseidonT3Factory = new PoseidonT3__factory(deployer); + PoseidonT4Factory = new PoseidonT4__factory(deployer); + PoseidonT5Factory = new PoseidonT5__factory(deployer); + PoseidonT6Factory = new PoseidonT6__factory(deployer); + poseidonT3 = await PoseidonT3Factory.deploy(); + poseidonT4 = await PoseidonT4Factory.deploy(); + poseidonT5 = await PoseidonT5Factory.deploy(); + poseidonT6 = await PoseidonT6Factory.deploy(); + libs = { + ["contracts/poseidon/PoseidonT6.sol:PoseidonT6"]: poseidonT6.address, + ["contracts/poseidon/PoseidonT5.sol:PoseidonT5"]: poseidonT5.address, + ["contracts/poseidon/PoseidonT3.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/poseidon/PoseidonT4.sol:PoseidonT4"]: poseidonT4.address, + }; + factoryLibs = { + ["contracts/poseidon/PoseidonT6.sol:PoseidonT6"]: poseidonT6.address, + ["contracts/poseidon/PoseidonT5.sol:PoseidonT5"]: poseidonT5.address, + ["contracts/poseidon/PoseidonT3.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/poseidon/PoseidonT4.sol:PoseidonT4"]: poseidonT4.address, + ["contracts/AccQueue.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/AccQueue.sol:PoseidonT6"]: poseidonT6.address, + }; + stateTreeLibs = { + ["contracts/AccQueue.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/AccQueue.sol:PoseidonT6"]: poseidonT6.address, + }; + messageTreeLibs = { + ["contracts/AccQueue.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/AccQueue.sol:PoseidonT6"]: poseidonT6.address, + }; + + // NOTE: Deploy templates + + JubjubTemplateFactory = new Jubjub__factory(libs, deployer); + StateTreeFactory = new StateTree__factory(stateTreeLibs, deployer); + MessageTreeFactory = new MessageTree__factory(messageTreeLibs, deployer); + + jubjubTemplate = await JubjubTemplateFactory.deploy(); + stateTreeTemplate = await StateTreeFactory.deploy(6); + messageTreeTemplate = await MessageTreeFactory.deploy(8); + + // NOTE: Setup factories + + JubjubFactoryFactory = new JubjubFactory__factory(factoryLibs, deployer); + ConstantInitialVoiceCreditProxyFactory = new ConstantInitialVoiceCreditProxy__factory(deployer); + FreeForAllGatekeeperFactory = new FreeForAllGatekeeper__factory(deployer); + + //NOTE: Deploy Factory, SignupGatekeeper, and InitialVoiceCreditProxy + jubjubFactory = await JubjubFactoryFactory.deploy(); + freeForAllGateKeeper = await FreeForAllGatekeeperFactory.deploy(); + constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(99); + + //NOTE: Deploy Jubjub Instance + const tx = await jubjubFactory.deployJubjub( + "0xDEADBEEF00000000000000000000000000000000000000000000000000000000", + freeForAllGateKeeper.address, + constantInitialVoiceCreditProxy.address + ); + tx.wait(0); + + const jubjubInstance = JubjubTemplateFactory.attach(await jubjubFactory.currentJubjub()); + + // NOTE: Create new local maci data structure + maciState = new MaciState(); + const provider = deployer.provider ?? ethers.getDefaultProvider(); + + const userSigners = [user1, user2, user3]; + users = []; + for (const user of userSigners) { + const maciKey = new Keypair(); + const _pubKey = maciKey.pubKey.asContractParam(); + const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); + const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); + + const { logs } = await jubjubInstance + .connect(user) + .signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData) + .then((tx) => tx.wait()); + + const iface = jubjubInstance.interface; + const signUpEvent = iface.parseLog(logs[logs.length - 1]); + + users.push({ maciKey: maciKey, signer: user }); + // NOTE: Signup users on local maci data structure + maciState.signUp(maciKey.pubKey, BigInt(signUpEvent.args._voiceCreditBalance.toString()), BigInt(signUpEvent.args._timestamp.toString())); + } + }); + + it("verify - vote triggers event with encrypted message", async () => { + const jubjubInstance = JubjubTemplateFactory.attach(await jubjubFactory.currentJubjub()); + await jubjubInstance.startVoting(BigNumber.from(3), BigNumber.from(60 * 60), coordinatorPubkey); + + const keypair = users[0].maciKey; + + const _stateIndex = BigInt(1); + const _newPubKey = keypair.pubKey; + const _voteOptionIndex = BigInt(0); + const _newVoteWeight = BigInt(9); + const _nonce = BigInt(1); + const _pollId = BigInt(0); + const _salt = BigInt(0); + + const sharedKey = Keypair.genEcdhSharedKey(keypair.privKey, coordinator.pubKey); + const command = new PCommand(_stateIndex, _newPubKey, _voteOptionIndex, _newVoteWeight, _nonce, _pollId, _salt); + const signature = command.sign(keypair.privKey); + const message = command.encrypt(signature, sharedKey); + + const { status, logs } = await jubjubInstance + .publishMessage(message.asContractParam(), keypair.pubKey.asContractParam()) + .then((tx) => tx.wait()); + const iface = jubjubInstance.interface; + console.log(logs); + const event = iface.parseLog(logs[logs.length - 1]); + + const expectOkStatus = 1; + const expectedMessage = message.data.map((data) => { + return BigNumber.from(data); + }); + expect(status).to.equal(expectOkStatus); + expect(event.args[0][1].map((n) => n.toString())).to.deep.equal(expectedMessage.map((n) => n.toString())); + }); + it("verify - can vote multiple times", async () => { + const jubjubInstance = JubjubTemplateFactory.attach(await jubjubFactory.currentJubjub()); + await jubjubInstance.startVoting(BigNumber.from(3), BigNumber.from(60 * 60), coordinatorPubkey); + let _stateIndex = BigInt(0); + for (const user of users) { + const keypair = user.maciKey; + + _stateIndex + 1n; + const _newPubKey = keypair.pubKey; + const _voteOptionIndex = BigInt(0); + const _newVoteWeight = BigInt(9); + const _nonce = BigInt(1); + const _pollId = BigInt(0); + const _salt = BigInt(0); + + const sharedKey = Keypair.genEcdhSharedKey(keypair.privKey, coordinator.pubKey); + const command = new PCommand(_stateIndex, _newPubKey, _voteOptionIndex, _newVoteWeight, _nonce, _pollId, _salt); + const signature = command.sign(keypair.privKey); + const message = command.encrypt(signature, sharedKey); + await expect(jubjubInstance.publishMessage(message.asContractParam(), keypair.pubKey.asContractParam())).to.emit( + jubjubInstance, + "PublishMessage" + ); + } + }); + it("fails - can vote before voting starts", async () => { + const jubjubInstance = JubjubTemplateFactory.attach(await jubjubFactory.currentJubjub()); + // await jubjubInstance.startVoting(BigNumber.from(3), BigNumber.from(60 * 60), coordinatorPubkey); + let _stateIndex = BigInt(0); + for (const user of users) { + const keypair = user.maciKey; + + _stateIndex + 1n; + const _newPubKey = keypair.pubKey; + const _voteOptionIndex = BigInt(0); + const _newVoteWeight = BigInt(9); + const _nonce = BigInt(1); + const _pollId = BigInt(0); + const _salt = BigInt(0); + + const sharedKey = Keypair.genEcdhSharedKey(keypair.privKey, coordinator.pubKey); + const command = new PCommand(_stateIndex, _newPubKey, _voteOptionIndex, _newVoteWeight, _nonce, _pollId, _salt); + const signature = command.sign(keypair.privKey); + const message = command.encrypt(signature, sharedKey); + await expect(jubjubInstance.publishMessage(message.asContractParam(), keypair.pubKey.asContractParam())).to.be.revertedWith( + "ERROR_VOTING_PERIOD_PASSED" + ); + } + }); + it("verify - can process votes locally", async function () { + this?.timeout(800000); + const provider = deployer.provider ?? ethers.getDefaultProvider(); + // //NOTE: this is where the coordinator key is set on the local maci data structure + const jubjubInstance = JubjubTemplateFactory.attach(await jubjubFactory.currentJubjub()); + + const { blockHash } = await jubjubInstance + .connect(deployer) + .startVoting(3, BigNumber.from(duration), coordinatorPubkey) + .then((tx) => tx.wait()); + const deployTime = (await provider.getBlock(blockHash)).timestamp; + const _duration = await jubjubInstance.voteDurationSeconds(); + console.log(_duration); + const p = maciState.deployPoll(_duration, BigInt(deployTime + _duration), maxValues, treeDepths, messageBatchSize, coordinator); + let index = 1; + for (const user of users) { + const { maciKey: keypair, signer } = user; + const _stateIndex = BigInt(index); + + const _newPubKey = keypair.pubKey; + const _voteOptionIndex = BigInt(index); + const _newVoteWeight = BigInt(index); + const _nonce = BigInt(1); + const _pollId = BigInt(0); + const _salt = BigInt(1); + const command = new PCommand(_stateIndex, _newPubKey, _voteOptionIndex, _newVoteWeight, _nonce, _pollId, _salt); + + const signature = command.sign(keypair.privKey); + const sharedKey = Keypair.genEcdhSharedKey(keypair.privKey, coordinator.pubKey); + const message = command.encrypt(signature, sharedKey); + maciState.polls[0].publishMessage(message, keypair.pubKey); + + const _message = message.asContractParam(); + const _encPubKey = keypair.pubKey.asContractParam(); + await expect(jubjubInstance.publishMessage(_message, keypair.pubKey.asContractParam())).to.emit(jubjubInstance, "PublishMessage"); + } + + console.log(await jubjubInstance.voteDeadline()); + + // const dd = await poll.getDeployTimeAndDuration(); + const hardHatProvider = ethers.provider; + await hardHatProvider.send("evm_increaseTime", [duration + 1]); + await hardHatProvider.send("evm_mine", []); + + const maciPoll = maciState.polls[0]; + maciPoll.messageAq.mergeSubRoots(0); //NOTE: 0 as input attempts to merge all subroots + maciPoll.messageAq.merge(treeDepths.messageTreeDepth); + + await jubjubInstance.mergeMessageAqSubRoots(0); + await jubjubInstance.mergeMessageAq(); + + const maciStateAq = maciState.stateAq; + maciStateAq.mergeSubRoots(0); // 0 as input attempts to merge all subroots + maciStateAq.merge(stateTreeDepth); + + await jubjubInstance.mergeStateAqSubRoots(0); + await jubjubInstance.mergeStateAq(); + }); +}); diff --git a/packages/contracts/tests/QV/03-process.ts b/packages/contracts/tests/QV/03-process.ts new file mode 100644 index 00000000..2b79a6b8 --- /dev/null +++ b/packages/contracts/tests/QV/03-process.ts @@ -0,0 +1,356 @@ +import { ethers } from "hardhat"; +import { BigNumber, BigNumberish, Signer } from "ethers"; +import chai from "chai"; +import { solidity } from "ethereum-waffle"; +import { PCommand, Keypair, Message, VerifyingKey } from "@qfi/macisdk"; +import { G1Point, G2Point } from "@qfi/macisdk"; +import { MaciState, genProcessVkSig, genTallyVkSig } from "@qfi/macisdk"; + +import { PoseidonT3__factory } from "../../typechain-types/factories/contracts/poseidon/PoseidonT3__factory"; +import { PoseidonT4__factory } from "../../typechain-types/factories/contracts/poseidon/PoseidonT4__factory"; +import { PoseidonT5__factory } from "../../typechain-types/factories/contracts/poseidon/PoseidonT5__factory"; +import { PoseidonT6__factory } from "../../typechain-types/factories/contracts/poseidon/PoseidonT6__factory"; +import { MessageTreeLibraryAddresses, MessageTree__factory } from "../../typechain-types/factories/contracts/MessageTree__factory"; +import { JubjubLibraryAddresses, Jubjub__factory } from "../../typechain-types/factories/contracts/Jubjub__factory"; +import { JubjubFactoryLibraryAddresses, JubjubFactory__factory } from "../../typechain-types/factories/contracts/JubjubFactory__factory"; +import { ConstantInitialVoiceCreditProxy__factory } from "../../typechain-types/factories/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/ConstantInitialVoiceCreditProxy__factory"; +import { FreeForAllGatekeeper__factory } from "../../typechain-types/factories/contracts/flavors/F.sol/FreeForAllGatekeeper__factory"; +import { StateTreeLibraryAddresses, StateTree__factory } from "../../typechain-types/factories/contracts/StateTree__factory"; + +import { PoseidonT3 } from "../../typechain-types/contracts/poseidon/PoseidonT3"; +import { PoseidonT4 } from "../../typechain-types/contracts/poseidon/PoseidonT4"; +import { PoseidonT5 } from "../../typechain-types/contracts/poseidon/PoseidonT5"; +import { PoseidonT6 } from "../../typechain-types/contracts/poseidon/PoseidonT6"; +import { Jubjub } from "../../typechain-types/contracts/Jubjub"; +import { JubjubFactory, VerifyingKeyStruct } from "../../typechain-types/contracts/JubjubFactory"; +import { ConstantInitialVoiceCreditProxy } from "../../typechain-types/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/ConstantInitialVoiceCreditProxy"; +import { FreeForAllGatekeeper } from "../../typechain-types/contracts/flavors/F.sol/FreeForAllGatekeeper"; +import { StateTree } from "../../typechain-types/contracts/StateTree"; +import { MessageTree } from "../../typechain-types/contracts/MessageTree"; + +chai.use(solidity); +const { expect } = chai; +const testProcessVk = new VerifyingKey( + new G1Point(BigInt(0), BigInt(1)), + new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), + new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), + new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), + [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] +); + +const testTallyVk = new VerifyingKey( + new G1Point(BigInt(0), BigInt(1)), + new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), + new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), + new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), + [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] +); + +describe("Process - Tally QV poll votes", () => { + let maciState: MaciState; + let deployer: Signer; + let user1: Signer; + let user2: Signer; + let user3: Signer; + let user4: Signer; + let user5: Signer; + let user6: Signer; + let user7: Signer; + let user8: Signer; + let user9: Signer; + let user10: Signer; + let users: { + maciKey: Keypair; + signer: Signer; + stateIndex: number; + }[] = []; + let deployerAddress: string; + let libs: JubjubLibraryAddresses; + let factoryLibs: JubjubFactoryLibraryAddresses; + let messageTreeLibs: MessageTreeLibraryAddresses; + let stateTreeLibs: StateTreeLibraryAddresses; + + let PoseidonT3Factory: PoseidonT3__factory; + let PoseidonT4Factory: PoseidonT4__factory; + let PoseidonT5Factory: PoseidonT5__factory; + let PoseidonT6Factory: PoseidonT6__factory; + + let JubjubFactoryFactory: JubjubFactory__factory; + let ConstantInitialVoiceCreditProxyFactory: ConstantInitialVoiceCreditProxy__factory; + let FreeForAllGatekeeperFactory: FreeForAllGatekeeper__factory; + + let JubjubTemplateFactory: Jubjub__factory; + let StateTreeFactory: StateTree__factory; + let MessageTreeFactory: MessageTree__factory; + let jubjubTemplate: Jubjub; + let stateTreeTemplate: StateTree; + let messageTreeTemplate: MessageTree; + + let poseidonT3: PoseidonT3; + let poseidonT4: PoseidonT4; + let poseidonT5: PoseidonT5; + let poseidonT6: PoseidonT6; + + let jubjubFactory: JubjubFactory; + let constantInitialVoiceCreditProxy: ConstantInitialVoiceCreditProxy; + let freeForAllGateKeeper: FreeForAllGatekeeper; + let coordinator: Keypair; + let coordinatorPubkey: PubKeyStruct; + + const duration = 15 * 60; + const stateTreeDepth = 6; + const intStateTreeDepth = 3; + const treeDepths = { + intStateTreeDepth: 3, + messageTreeDepth: 8, + messageTreeSubDepth: 3, + voteOptionTreeDepth: 3, + }; + const messageBatchSize = 5 ** treeDepths.messageTreeSubDepth; + const tallyBatchSize = 5 ** intStateTreeDepth; + const maxValues = { + maxUsers: 5 ** stateTreeDepth, + maxMessages: 5 ** treeDepths.messageTreeDepth, + maxVoteOptions: 5 ** treeDepths.voteOptionTreeDepth, + }; + let tallyFileData: { + maci: any; + pollId: number; + newTallyCommitment: any; + results: { + tally: any; + salt: any; + }; + totalSpentVoiceCredits: { + spent: any; + salt: any; + }; + perVOSpentVoiceCredits: { + tally: any; + salt: any; + }; + }; + + beforeEach(async function () { + this?.timeout(1200000); + coordinator = new Keypair(); + coordinatorPubkey = coordinator.pubKey.asContractParam(); + [deployer, user1, user2, user3, user4, user5, user6, user7, user8, user9, user10] = await ethers.getSigners(); + deployerAddress = await deployer.getAddress(); + + // NOTE: Deploy Libs + PoseidonT3Factory = new PoseidonT3__factory(deployer); + PoseidonT4Factory = new PoseidonT4__factory(deployer); + PoseidonT5Factory = new PoseidonT5__factory(deployer); + PoseidonT6Factory = new PoseidonT6__factory(deployer); + poseidonT3 = await PoseidonT3Factory.deploy(); + poseidonT4 = await PoseidonT4Factory.deploy(); + poseidonT5 = await PoseidonT5Factory.deploy(); + poseidonT6 = await PoseidonT6Factory.deploy(); + libs = { + ["contracts/poseidon/PoseidonT6.sol:PoseidonT6"]: poseidonT6.address, + ["contracts/poseidon/PoseidonT5.sol:PoseidonT5"]: poseidonT5.address, + ["contracts/poseidon/PoseidonT3.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/poseidon/PoseidonT4.sol:PoseidonT4"]: poseidonT4.address, + }; + factoryLibs = { + ["contracts/poseidon/PoseidonT6.sol:PoseidonT6"]: poseidonT6.address, + ["contracts/poseidon/PoseidonT5.sol:PoseidonT5"]: poseidonT5.address, + ["contracts/poseidon/PoseidonT3.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/poseidon/PoseidonT4.sol:PoseidonT4"]: poseidonT4.address, + ["contracts/AccQueue.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/AccQueue.sol:PoseidonT6"]: poseidonT6.address, + }; + stateTreeLibs = { + ["contracts/AccQueue.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/AccQueue.sol:PoseidonT6"]: poseidonT6.address, + }; + messageTreeLibs = { + ["contracts/AccQueue.sol:PoseidonT3"]: poseidonT3.address, + ["contracts/AccQueue.sol:PoseidonT6"]: poseidonT6.address, + }; + + // NOTE: Deploy templates + + JubjubTemplateFactory = new Jubjub__factory(libs, deployer); + StateTreeFactory = new StateTree__factory(stateTreeLibs, deployer); + MessageTreeFactory = new MessageTree__factory(messageTreeLibs, deployer); + + jubjubTemplate = await JubjubTemplateFactory.deploy(); + stateTreeTemplate = await StateTreeFactory.deploy(6); + messageTreeTemplate = await MessageTreeFactory.deploy(8); + + // NOTE: Setup factories + + JubjubFactoryFactory = new JubjubFactory__factory(factoryLibs, deployer); + ConstantInitialVoiceCreditProxyFactory = new ConstantInitialVoiceCreditProxy__factory(deployer); + FreeForAllGatekeeperFactory = new FreeForAllGatekeeper__factory(deployer); + + //NOTE: Deploy Factory, SignupGatekeeper, and InitialVoiceCreditProxy + jubjubFactory = await JubjubFactoryFactory.deploy(); + freeForAllGateKeeper = await FreeForAllGatekeeperFactory.deploy(); + constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(99); + + //NOTE: Deploy Jubjub Instance + const tx = await jubjubFactory.deployJubjub( + "0xDEADBEEF00000000000000000000000000000000000000000000000000000000", + freeForAllGateKeeper.address, + constantInitialVoiceCreditProxy.address + ); + tx.wait(0); + + const jubjubInstance = JubjubTemplateFactory.attach(await jubjubFactory.currentJubjub()); + + // NOTE: Create new local maci data structure + maciState = new MaciState(); + const provider = deployer.provider ?? ethers.getDefaultProvider(); + + const userSigners = [user1, user2, user3]; + users = []; + for (const user of userSigners) { + const maciKey = new Keypair(); + const _pubKey = maciKey.pubKey.asContractParam(); + const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); + const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); + + const { logs } = await jubjubInstance + .connect(user) + .signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData) + .then((tx) => tx.wait()); + + const iface = jubjubInstance.interface; + const signUpEvent = iface.parseLog(logs[logs.length - 1]); + const stateIndex = signUpEvent.args._stateIndex.toString(); + + users.push({ maciKey: maciKey, signer: user, stateIndex: stateIndex }); + // NOTE: Signup users on local maci data structure + maciState.signUp(maciKey.pubKey, BigInt(signUpEvent.args._voiceCreditBalance.toString()), BigInt(signUpEvent.args._timestamp.toString())); + } + + const { blockHash } = await jubjubInstance + .connect(deployer) + .startVoting(3, BigNumber.from(duration), coordinatorPubkey) + .then((tx) => tx.wait()); + const deployTime = (await provider.getBlock(blockHash)).timestamp; + const _duration = await jubjubInstance.voteDurationSeconds(); + + // //NOTE: this is where the coordinator key is set on the local maci data structure + const p = maciState.deployPoll(duration, BigInt(deployTime + duration), maxValues, treeDepths, messageBatchSize, coordinator); + let index = 0; + for (const user of users) { + const { maciKey: keypair, signer, stateIndex } = users[0]; + const _stateIndex = BigInt(stateIndex); + + const _newPubKey = keypair.pubKey; + const _voteOptionIndex = BigInt(index + 1); + const _newVoteWeight = BigInt(1); + //publish last nonce first + const _nonce = BigInt(3 - index); + const _pollId = BigInt(0); + const _salt = BigInt(0); + const command = new PCommand(_stateIndex, _newPubKey, _voteOptionIndex, _newVoteWeight, _nonce, _pollId, _salt); + + const signature = command.sign(keypair.privKey); + const sharedKey = Keypair.genEcdhSharedKey(keypair.privKey, coordinator.pubKey); + const message = command.encrypt(signature, sharedKey); + maciState.polls[0].publishMessage(message, keypair.pubKey); + index++; + + const _message = message.asContractParam(); + const _encPubKey = keypair.pubKey.asContractParam(); + await expect(jubjubInstance.publishMessage(_message, keypair.pubKey.asContractParam())).to.emit(jubjubInstance, "PublishMessage"); + } + index = 0; + for (const user of users) { + const { maciKey: keypair, signer, stateIndex } = users[1]; + const _stateIndex = BigInt(stateIndex); + + const _newPubKey = keypair.pubKey; + const _voteOptionIndex = BigInt(index + 1); + const _newVoteWeight = BigInt(2); + const _nonce = BigInt(3 - index); + const _pollId = BigInt(0); + const _salt = BigInt(0); + const command = new PCommand(_stateIndex, _newPubKey, _voteOptionIndex, _newVoteWeight, _nonce, _pollId, _salt); + + const signature = command.sign(keypair.privKey); + const sharedKey = Keypair.genEcdhSharedKey(keypair.privKey, coordinator.pubKey); + const message = command.encrypt(signature, sharedKey); + maciState.polls[0].publishMessage(message, keypair.pubKey); + index++; + console.log(index); + + const _message = message.asContractParam(); + const _encPubKey = keypair.pubKey.asContractParam(); + await expect(jubjubInstance.publishMessage(_message, keypair.pubKey.asContractParam())).to.emit(jubjubInstance, "PublishMessage"); + } + + await jubjubInstance.voteDeadline(); + const __duration = await jubjubInstance.voteDurationSeconds(); + // const dd = await poll.getDeployTimeAndDuration(); + const hardHatProvider = ethers.provider; + await hardHatProvider.send("evm_increaseTime", [duration + 1]); + await hardHatProvider.send("evm_mine", []); + + const maciStateAq = maciState.stateAq; + maciStateAq.mergeSubRoots(0); // 0 as input attempts to merge all subroots + maciStateAq.merge(stateTreeDepth); + + await jubjubInstance.mergeStateAqSubRoots(0); + await jubjubInstance.mergeStateAq(); + + const maciPoll = maciState.polls[0]; + maciPoll.messageAq.mergeSubRoots(0); //NOTE: 0 as input attempts to merge all subroots + maciPoll.messageAq.merge(treeDepths.messageTreeDepth); + + await jubjubInstance.mergeMessageAqSubRoots(0); + await jubjubInstance.mergeMessageAq(); + maciPoll.processMessages(); + }); + + describe("Process and Tally Vote messages", () => { + it("verify - generates tally file data", async () => { + const pollId = 0; + const maciPoll = maciState.polls[pollId]; + const maciTallyCircuitInputs = maciPoll.tallyVotes(pollId); + console.log("maciPollResults"); + console.log(maciPoll.results); + const newTallyCommitment = maciTallyCircuitInputs.newTallyCommitment; + const tallyResults = maciPoll.results.map((x: any) => x.toString()); + const tallySalt = maciTallyCircuitInputs.newResultsRootSalt; + const voiceCreditsSpent = maciPoll.totalSpentVoiceCredits.toString(); + const voiceCreditsSalt = maciTallyCircuitInputs.newSpentVoiceCreditSubtotalSalt; + const perVOSpentTally = maciPoll.perVOSpentVoiceCredits.map((x: any) => x.toString()); + const perVOSpentSalt = maciTallyCircuitInputs.newPerVOSpentVoiceCreditsRootSalt; + const jubjubInstance = JubjubTemplateFactory.attach(await jubjubFactory.currentJubjub()); + + tallyFileData = { + maci: jubjubInstance.address, + pollId: pollId, + newTallyCommitment: newTallyCommitment, + results: { + tally: tallyResults, + salt: tallySalt, + }, + totalSpentVoiceCredits: { + spent: voiceCreditsSpent, + salt: voiceCreditsSalt, + }, + perVOSpentVoiceCredits: { + tally: perVOSpentTally, + salt: perVOSpentSalt, + }, + }; + console.log(tallyFileData); + Object.values(tallyFileData).forEach((value) => { + expect(value).to.not.be.undefined; + }); + Object.values(tallyFileData).forEach((value) => { + expect(value).to.not.be.undefined; + }); + expect(maciPoll.hasUntalliedBallots()).to.equal(false); + expect(maciPoll.hasUnprocessedMessages()).to.equal(false); + expect(maciPoll.messages.length).to.be.equal(users.length * 2); //every user sends an overide message + }); + }); +}); diff --git a/packages/contracts/tests/QV/03-voting.ts b/packages/contracts/tests/QV/03-voting.ts deleted file mode 100644 index b94e8390..00000000 --- a/packages/contracts/tests/QV/03-voting.ts +++ /dev/null @@ -1,384 +0,0 @@ -import { ethers } from "hardhat"; -import { BigNumber, BigNumberish, Signer } from "ethers"; -import chai from "chai"; -import { solidity } from "ethereum-waffle"; -import { Command, Keypair, Message, VerifyingKey } from "qaci-domainobjs"; -import { G1Point, G2Point } from "qaci-crypto"; - -import { PoseidonT3 } from "../../typechain/PoseidonT3"; -import { PoseidonT3__factory } from "../../typechain/factories/PoseidonT3__factory"; - -import { PoseidonT4 } from "../../typechain/PoseidonT4"; -import { PoseidonT4__factory } from "../../typechain/factories/PoseidonT4__factory"; - -import { PoseidonT5 } from "../../typechain/PoseidonT5"; -import { PoseidonT5__factory } from "../../typechain/factories/PoseidonT5__factory"; - -import { PoseidonT6 } from "../../typechain/PoseidonT6"; -import { PoseidonT6__factory } from "../../typechain/factories/PoseidonT6__factory"; - -import { - GrantRoundFactoryLibraryAddresses, - GrantRoundFactory__factory, -} from "../../typechain/factories/GrantRoundFactory__factory"; -import { PollFactory__factory, PollFactoryLibraryAddresses } from "../../typechain/factories/PollFactory__factory"; - -import { - MessageAqFactory__factory, - MessageAqFactoryLibraryAddresses, -} from "../../typechain/factories/MessageAqFactory__factory"; -import { QFI__factory, QFILibraryAddresses } from "../../typechain/factories/QFI__factory"; - -import { GrantRoundFactory } from "../../typechain/GrantRoundFactory"; -import { PollFactory } from "../../typechain/PollFactory"; -import { MessageAqFactory } from "../../typechain/MessageAqFactory"; -import { QFI } from "../../typechain/QFI"; -import { Poll__factory } from "../../typechain/factories/Poll__factory"; -import { MessageStruct, Poll } from "../../typechain/Poll"; - -import { VkRegistry__factory } from "../../typechain/factories/VkRegistry__factory"; -import { FreeForAllGatekeeper__factory } from "../../typechain/factories/FreeForAllGatekeeper__factory"; -import { ConstantInitialVoiceCreditProxy__factory } from "../../typechain/factories/ConstantInitialVoiceCreditProxy__factory"; - -import { VerifyingKeyStruct, VkRegistry } from "../../typechain/VkRegistry"; -import { FreeForAllGatekeeper } from "../../typechain/FreeForAllGatekeeper"; -import { ConstantInitialVoiceCreditProxy } from "../../typechain/ConstantInitialVoiceCreditProxy"; - -import { OptimisticRecipientRegistry } from "../../typechain/OptimisticRecipientRegistry"; -import { OptimisticRecipientRegistry__factory } from "../../typechain/factories/OptimisticRecipientRegistry__factory"; - -import { BaseERC20Token } from "../../typechain/BaseERC20Token"; -import { BaseERC20Token__factory } from "../../typechain/factories/BaseERC20Token__factory"; - -import { PollProcessorAndTallyer } from "../../typechain/PollProcessorAndTallyer"; -import { PollProcessorAndTallyer__factory } from "../../typechain/factories/PollProcessorAndTallyer__factory"; - -import { MockVerifier } from "../../typechain/MockVerifier"; -import { MockVerifier__factory } from "../../typechain/factories/MockVerifier__factory"; - -chai.use(solidity); -const { expect } = chai; -const testProcessVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -const testTallyVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -describe("Voting - Cast QV votes", () => { - let deployer: Signer; - let user1: Signer; - let user2: Signer; - let user3: Signer; - let user4: Signer; - let user5: Signer; - let user6: Signer; - let user7: Signer; - let user8: Signer; - let user9: Signer; - let user10: Signer; - - let project1: Signer; - let project2: Signer; - let project3: Signer; - let deployerAddress: string; - let PoseidonT3Factory: PoseidonT3__factory; - let PoseidonT4Factory: PoseidonT4__factory; - let PoseidonT5Factory: PoseidonT5__factory; - let PoseidonT6Factory: PoseidonT6__factory; - - let linkedLibraryAddresses: - | QFILibraryAddresses - | PollFactoryLibraryAddresses - | MessageAqFactoryLibraryAddresses - | GrantRoundFactoryLibraryAddresses; - let GrantRoundFactory: GrantRoundFactory__factory; - let PollFactoryFactory: PollFactory__factory; - let MessageAqFactoryFactory: MessageAqFactory__factory; - - let FreeForAllGateKeeperFactory: FreeForAllGatekeeper__factory; - let ConstantInitialVoiceCreditProxyFactory: ConstantInitialVoiceCreditProxy__factory; - let VKRegistryFactory: VkRegistry__factory; - - let RecipientRegistryFactory: OptimisticRecipientRegistry__factory; - let BaseERC20TokenFactory: BaseERC20Token__factory; - let PollProcessorAndTallyerFactory: PollProcessorAndTallyer__factory; - let MockVerifierFactory: MockVerifier__factory; - - let QFIFactory: QFI__factory; - - let PoseidonT3: PoseidonT3; - let PoseidonT4: PoseidonT4; - let PoseidonT5: PoseidonT5; - let PoseidonT6: PoseidonT6; - let grantRoundFactory: GrantRoundFactory; - let pollFactory: PollFactory; - let messageAqFactory: MessageAqFactory; - let messageAqFactoryGrants: MessageAqFactory; - let vkRegistry: VkRegistry; - let constantInitialVoiceCreditProxy: ConstantInitialVoiceCreditProxy; - let freeForAllGateKeeper: FreeForAllGatekeeper; - let optimisticRecipientRegistry: OptimisticRecipientRegistry; - let baseERC20Token: BaseERC20Token; - let pollProcessorAndTallyer: PollProcessorAndTallyer; - let mockVerifier: MockVerifier; - let qfi: QFI; - let coordinator: Keypair; - let poll: Poll; - let users: { - maciKey: Keypair; - signer: Signer; - }[] = []; - const duration = 30; - const maxValues = { - maxUsers: 25, - maxMessages: 25, - maxVoteOptions: 25, - }; - const treeDepths = { - intStateTreeDepth: 1, - messageTreeDepth: 4, - messageTreeSubDepth: 2, - voteOptionTreeDepth: 2, - }; - const intStateTreeDepth = 1; - const messageBatchSize = 25; - const tallyBatchSize = 5 ** intStateTreeDepth; - - beforeEach(async () => { - [deployer, user1, user2, user3, user4, user5, user6, user7, user8, user9, user10] = await ethers.getSigners(); - deployerAddress = await deployer.getAddress(); - PoseidonT3Factory = new PoseidonT3__factory(deployer); - PoseidonT4Factory = new PoseidonT4__factory(deployer); - PoseidonT5Factory = new PoseidonT5__factory(deployer); - PoseidonT6Factory = new PoseidonT6__factory(deployer); - PoseidonT3 = await PoseidonT3Factory.deploy(); - PoseidonT4 = await PoseidonT4Factory.deploy(); - PoseidonT5 = await PoseidonT5Factory.deploy(); - PoseidonT6 = await PoseidonT6Factory.deploy(); - - linkedLibraryAddresses = { - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT5"]: PoseidonT5.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT3"]: PoseidonT3.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT6"]: PoseidonT6.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT4"]: PoseidonT4.address, - }; - - GrantRoundFactory = new GrantRoundFactory__factory({ ...linkedLibraryAddresses }, deployer); - PollFactoryFactory = new PollFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAqFactoryFactory = new MessageAqFactory__factory({ ...linkedLibraryAddresses }, deployer); - QFIFactory = new QFI__factory({ ...linkedLibraryAddresses }, deployer); - - VKRegistryFactory = new VkRegistry__factory(deployer); - ConstantInitialVoiceCreditProxyFactory = new ConstantInitialVoiceCreditProxy__factory(deployer); - FreeForAllGateKeeperFactory = new FreeForAllGatekeeper__factory(deployer); - RecipientRegistryFactory = new OptimisticRecipientRegistry__factory(deployer); - BaseERC20TokenFactory = new BaseERC20Token__factory(deployer); - PollProcessorAndTallyerFactory = new PollProcessorAndTallyer__factory(deployer); - MockVerifierFactory = new MockVerifier__factory(deployer); - - optimisticRecipientRegistry = await RecipientRegistryFactory.deploy(0, 0, deployerAddress); - grantRoundFactory = await GrantRoundFactory.deploy(); - grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - pollFactory = await PollFactoryFactory.deploy(); - messageAqFactory = await MessageAqFactoryFactory.deploy(); - messageAqFactoryGrants = await MessageAqFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - //NOTE: each user recieves 100 voice credits by default - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(100); - vkRegistry = await VKRegistryFactory.deploy(); - baseERC20Token = await BaseERC20TokenFactory.deploy(100); - mockVerifier = await MockVerifierFactory.deploy(); - pollProcessorAndTallyer = await PollProcessorAndTallyerFactory.deploy(mockVerifier.address); - - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - await pollFactory.transferOwnership(qfi.address); - await grantRoundFactory.transferOwnership(qfi.address); - await messageAqFactory.transferOwnership(pollFactory.address); - await messageAqFactoryGrants.transferOwnership(grantRoundFactory.address); - await qfi.initialize(vkRegistry.address, messageAqFactory.address, messageAqFactoryGrants.address); - - const stateTreeDepth = await qfi.stateTreeDepth(); - const _stateTreeDepth = stateTreeDepth.toString(); - const _intStateTreeDepth = 1; - const _messageTreeDepth = 4; - const _voteOptionTreeDepth = 2; - const _messageBatchSize = 25; - const _processVk = testProcessVk.asContractParam(); - const _tallyVk = testTallyVk.asContractParam(); - - await vkRegistry.setVerifyingKeys( - _stateTreeDepth, - _intStateTreeDepth, - _messageTreeDepth, - _voteOptionTreeDepth, - _messageBatchSize, - _processVk, - _tallyVk - ); - - await vkRegistry.genProcessVkSig(_stateTreeDepth, _messageTreeDepth, _voteOptionTreeDepth, _messageBatchSize); - await vkRegistry.genTallyVkSig(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); - coordinator = new Keypair(); - const coordinatorPubkey = coordinator.pubKey.asContractParam(); - - const userSigners = [user1, user2, user3, user4, user5]; - users = []; - for (const user of userSigners) { - const maciKey = new Keypair(); - const _pubKey = maciKey.pubKey.asContractParam(); - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - - await qfi.connect(user).signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData); - users.push({ maciKey: maciKey, signer: user }); - } - - await qfi.connect(deployer).deployPoll(duration, maxValues, treeDepths, coordinatorPubkey, { gasLimit: 30000000 }); - const pollContractAddress = await qfi.getPoll(0); - poll = new Poll__factory({ ...linkedLibraryAddresses }, deployer).attach(pollContractAddress); - - }); - - it("verify - users signed up successfully before poll deployed", async () => { - expect(Number((await poll.numSignUpsAndMessages())[0])).to.equal(5); - expect(Number((await poll.numSignUpsAndMessages())[1])).to.equal(0); - }); - - it("verify - user signed up successfully after poll deployed", async () => { - const userSigners = [user6]; - for (const user of userSigners) { - const maciKey = new Keypair(); - const _pubKey = maciKey.pubKey.asContractParam(); - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - - await qfi.connect(user).signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData); - users.push({ maciKey: maciKey, signer: user }); - } - expect(Number((await poll.numSignUpsAndMessages())[0])).to.equal(6); - expect(Number((await poll.numSignUpsAndMessages())[1])).to.equal(0); - }); - - it("verify - many users signed up successfully after poll deployed", async () => { - const userSigners = [user6, user7, user8, user9, user10]; - for (const user of userSigners) { - const maciKey = new Keypair(); - const _pubKey = maciKey.pubKey.asContractParam(); - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - - await qfi.connect(user).signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData); - users.push({ maciKey: maciKey, signer: user }); - } - expect(Number((await poll.numSignUpsAndMessages())[0])).to.equal(10); - expect(Number((await poll.numSignUpsAndMessages())[1])).to.equal(0); - }); - - it("verify - vote triggers event with encrypted message", async () => { - const keypair = users[0].maciKey; - - const _stateIndex = BigInt(1); - const _newPubKey = keypair.pubKey; - const _voteOptionIndex = BigInt(0); - const _newVoteWeight = BigInt(9); - const _nonce = BigInt(1); - const _pollId = BigInt(0); - const _salt = BigInt(0); - - const sharedKey = Keypair.genEcdhSharedKey(keypair.privKey, coordinator.pubKey); - const command = new Command(_stateIndex, _newPubKey, _voteOptionIndex, _newVoteWeight, _nonce, _pollId, _salt); - const signature = command.sign(keypair.privKey); - const message = command.encrypt(signature, sharedKey); - - const { status, logs } = await poll - .publishMessage(message.asContractParam(), keypair.pubKey.asContractParam()) - .then((tx) => tx.wait()); - const iface = poll.interface; - const event = iface.parseLog(logs[logs.length - 1]); - - const expectOkStatus = 1; - const expectedMessage = message.data.map((data) => { - return BigNumber.from(data); - }); - expect(status).to.equal(expectOkStatus); - expect(event.args[0][0]).to.deep.equal(expectedMessage); - }); - - it("verify - one user can vote", async () => { - const keypair = users[0].maciKey; - - const command = new Command(BigInt(1), keypair.pubKey, BigInt(0), BigInt(9), BigInt(1), BigInt(0), BigInt(0)); - - const signature = command.sign(keypair.privKey); - const sharedKey = Keypair.genEcdhSharedKey(keypair.privKey, coordinator.pubKey); - const message = command.encrypt(signature, sharedKey); - - const _message = message.asContractParam(); - const _encPubKey = keypair.pubKey.asContractParam(); - - await expect(poll.publishMessage(_message, _encPubKey)).to.emit(poll, "PublishMessage"); - }); - - it("verify - many users can vote", async () => { - for (const user of users) { - const { maciKey, signer } = user; - const _stateIndex = BigInt(1); - const _newPubKey = maciKey.pubKey; - const _voteOptionIndex = BigInt(0); - const _newVoteWeight = BigInt(9); - const _nonce = BigInt(1); - const _pollId = BigInt(0); - const _salt = BigInt(0); - const command = new Command(_stateIndex, _newPubKey, _voteOptionIndex, _newVoteWeight, _nonce, _pollId, _salt); - - const signature = command.sign(maciKey.privKey); - const sharedKey = Keypair.genEcdhSharedKey(maciKey.privKey, coordinator.pubKey); - const message = command.encrypt(signature, sharedKey); - const _message = message.asContractParam(); - const _encPubKey = maciKey.pubKey.asContractParam(); - await expect(poll.connect(signer).publishMessage(_message, _encPubKey)).to.emit(poll, "PublishMessage"); - } - }); - - it("expect revert - user cant vote after voting period", async () => { - const dd = await poll.getDeployTimeAndDuration(); - const provider = ethers.provider; - - const expectedTime = dd[1].add(dd[0]).toNumber(); - - expect((await provider.getBlock("latest")).timestamp).to.be.lt(expectedTime); - - await provider.send("evm_increaseTime", [Number(dd[1]) + 1]); - await provider.send("evm_mine", []); - - expect((await provider.getBlock("latest")).timestamp).to.be.gt(expectedTime); - const keypair = users[0].maciKey; - - const command = new Command(BigInt(1), keypair.pubKey, BigInt(0), BigInt(9), BigInt(1), BigInt(0), BigInt(0)); - - const signature = command.sign(keypair.privKey); - const sharedKey = Keypair.genEcdhSharedKey(keypair.privKey, coordinator.pubKey); - const message = command.encrypt(signature, sharedKey); - - const _message = message.asContractParam(); - const _encPubKey = keypair.pubKey.asContractParam(); - - await expect(poll.publishMessage(_message, _encPubKey)).to.be.revertedWith("PollE03"); - }); -}); diff --git a/packages/contracts/tests/QV/04-merge.ts b/packages/contracts/tests/QV/04-merge.ts deleted file mode 100644 index c21612ea..00000000 --- a/packages/contracts/tests/QV/04-merge.ts +++ /dev/null @@ -1,400 +0,0 @@ -import { ethers } from "hardhat"; -import { BigNumber, BigNumberish, Signer } from "ethers"; -import chai from "chai"; -import { solidity } from "ethereum-waffle"; -import { Command, Keypair, Message, VerifyingKey } from "qaci-domainobjs"; -import { G1Point, G2Point } from "qaci-crypto"; -import { MaciState, genProcessVkSig, genTallyVkSig } from "qaci-core"; -import { PoseidonT3 } from "../../typechain/PoseidonT3"; -import { PoseidonT3__factory } from "../../typechain/factories/PoseidonT3__factory"; - -import { PoseidonT4 } from "../../typechain/PoseidonT4"; -import { PoseidonT4__factory } from "../../typechain/factories/PoseidonT4__factory"; - -import { PoseidonT5 } from "../../typechain/PoseidonT5"; -import { PoseidonT5__factory } from "../../typechain/factories/PoseidonT5__factory"; - -import { PoseidonT6 } from "../../typechain/PoseidonT6"; -import { PoseidonT6__factory } from "../../typechain/factories/PoseidonT6__factory"; - -import { - GrantRoundFactoryLibraryAddresses, - GrantRoundFactory__factory, -} from "../../typechain/factories/GrantRoundFactory__factory"; -import { PollFactory__factory, PollFactoryLibraryAddresses } from "../../typechain/factories/PollFactory__factory"; - -import { - MessageAqFactory__factory, - MessageAqFactoryLibraryAddresses, -} from "../../typechain/factories/MessageAqFactory__factory"; -import { QFI__factory, QFILibraryAddresses } from "../../typechain/factories/QFI__factory"; - -import { GrantRoundFactory } from "../../typechain/GrantRoundFactory"; -import { PollFactory } from "../../typechain/PollFactory"; -import { MessageAqFactory } from "../../typechain/MessageAqFactory"; -import { QFI } from "../../typechain/QFI"; -import { Poll__factory } from "../../typechain/factories/Poll__factory"; -import { MessageStruct, Poll } from "../../typechain/Poll"; - -import { VkRegistry__factory } from "../../typechain/factories/VkRegistry__factory"; -import { FreeForAllGatekeeper__factory } from "../../typechain/factories/FreeForAllGatekeeper__factory"; -import { ConstantInitialVoiceCreditProxy__factory } from "../../typechain/factories/ConstantInitialVoiceCreditProxy__factory"; - -import { VerifyingKeyStruct, VkRegistry } from "../../typechain/VkRegistry"; -import { FreeForAllGatekeeper } from "../../typechain/FreeForAllGatekeeper"; -import { ConstantInitialVoiceCreditProxy } from "../../typechain/ConstantInitialVoiceCreditProxy"; - -import { OptimisticRecipientRegistry } from "../../typechain/OptimisticRecipientRegistry"; -import { OptimisticRecipientRegistry__factory } from "../../typechain/factories/OptimisticRecipientRegistry__factory"; - -import { BaseERC20Token } from "../../typechain/BaseERC20Token"; -import { BaseERC20Token__factory } from "../../typechain/factories/BaseERC20Token__factory"; - -import { PollProcessorAndTallyer } from "../../typechain/PollProcessorAndTallyer"; -import { PollProcessorAndTallyer__factory } from "../../typechain/factories/PollProcessorAndTallyer__factory"; - -import { MockVerifier } from "../../typechain/MockVerifier"; -import { MockVerifier__factory } from "../../typechain/factories/MockVerifier__factory"; -import { AccQueueQuinaryMaci } from "../../typechain/AccQueueQuinaryMaci"; -import { AccQueueQuinaryMaci__factory } from "../../typechain"; - -chai.use(solidity); -const { expect } = chai; -const testProcessVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -const testTallyVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -describe("Merge - Merge Signup and Message leaves", () => { - let deployer: Signer; - let user1: Signer; - let user2: Signer; - let user3: Signer; - let user4: Signer; - let user5: Signer; - let user6: Signer; - let user7: Signer; - let user8: Signer; - let user9: Signer; - let user10: Signer; - - let project1: Signer; - let project2: Signer; - let project3: Signer; - let deployerAddress: string; - let PoseidonT3Factory: PoseidonT3__factory; - let PoseidonT4Factory: PoseidonT4__factory; - let PoseidonT5Factory: PoseidonT5__factory; - let PoseidonT6Factory: PoseidonT6__factory; - - let linkedLibraryAddresses: - | QFILibraryAddresses - | PollFactoryLibraryAddresses - | MessageAqFactoryLibraryAddresses - | GrantRoundFactoryLibraryAddresses; - let GrantRoundFactory: GrantRoundFactory__factory; - let PollFactoryFactory: PollFactory__factory; - let MessageAqFactoryFactory: MessageAqFactory__factory; - let MessageAq_Factory: AccQueueQuinaryMaci__factory; - let FreeForAllGateKeeperFactory: FreeForAllGatekeeper__factory; - let ConstantInitialVoiceCreditProxyFactory: ConstantInitialVoiceCreditProxy__factory; - let VKRegistryFactory: VkRegistry__factory; - - let RecipientRegistryFactory: OptimisticRecipientRegistry__factory; - let BaseERC20TokenFactory: BaseERC20Token__factory; - let PollProcessorAndTallyerFactory: PollProcessorAndTallyer__factory; - let MockVerifierFactory: MockVerifier__factory; - - let QFIFactory: QFI__factory; - - let PoseidonT3: PoseidonT3; - let PoseidonT4: PoseidonT4; - let PoseidonT5: PoseidonT5; - let PoseidonT6: PoseidonT6; - let grantRoundFactory: GrantRoundFactory; - let pollFactory: PollFactory; - let messageAqFactory: MessageAqFactory; - let messageAqFactoryGrants: MessageAqFactory; - let messageAq: AccQueueQuinaryMaci; - - let vkRegistry: VkRegistry; - let constantInitialVoiceCreditProxy: ConstantInitialVoiceCreditProxy; - let freeForAllGateKeeper: FreeForAllGatekeeper; - let optimisticRecipientRegistry: OptimisticRecipientRegistry; - let baseERC20Token: BaseERC20Token; - let pollProcessorAndTallyer: PollProcessorAndTallyer; - let mockVerifier: MockVerifier; - let qfi: QFI; - let coordinator: Keypair; - let poll: Poll; - let users: { - maciKey: Keypair; - signer: Signer; - }[] = []; - const duration = 15; - const maxValues = { - maxUsers: 25, - maxMessages: 25, - maxVoteOptions: 25, - }; - const treeDepths = { - intStateTreeDepth: 1, - messageTreeDepth: 4, - messageTreeSubDepth: 2, - voteOptionTreeDepth: 2, - }; - const stateTreeDepth = 10; - const intStateTreeDepth = 1; - const messageBatchSize = 25; - const tallyBatchSize = 5 ** intStateTreeDepth; - let maciState: MaciState; - - beforeEach(async () => { - [deployer, user1, user2, user3, user4, user5, user6, user7, user8, user9, user10] = await ethers.getSigners(); - deployerAddress = await deployer.getAddress(); - PoseidonT3Factory = new PoseidonT3__factory(deployer); - PoseidonT4Factory = new PoseidonT4__factory(deployer); - PoseidonT5Factory = new PoseidonT5__factory(deployer); - PoseidonT6Factory = new PoseidonT6__factory(deployer); - PoseidonT3 = await PoseidonT3Factory.deploy(); - PoseidonT4 = await PoseidonT4Factory.deploy(); - PoseidonT5 = await PoseidonT5Factory.deploy(); - PoseidonT6 = await PoseidonT6Factory.deploy(); - - linkedLibraryAddresses = { - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT5"]: PoseidonT5.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT3"]: PoseidonT3.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT6"]: PoseidonT6.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT4"]: PoseidonT4.address, - }; - - GrantRoundFactory = new GrantRoundFactory__factory({ ...linkedLibraryAddresses }, deployer); - PollFactoryFactory = new PollFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAqFactoryFactory = new MessageAqFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAq_Factory = new AccQueueQuinaryMaci__factory({ ...linkedLibraryAddresses }, deployer); - QFIFactory = new QFI__factory({ ...linkedLibraryAddresses }, deployer); - VKRegistryFactory = new VkRegistry__factory(deployer); - ConstantInitialVoiceCreditProxyFactory = new ConstantInitialVoiceCreditProxy__factory(deployer); - FreeForAllGateKeeperFactory = new FreeForAllGatekeeper__factory(deployer); - RecipientRegistryFactory = new OptimisticRecipientRegistry__factory(deployer); - BaseERC20TokenFactory = new BaseERC20Token__factory(deployer); - PollProcessorAndTallyerFactory = new PollProcessorAndTallyer__factory(deployer); - MockVerifierFactory = new MockVerifier__factory(deployer); - - optimisticRecipientRegistry = await RecipientRegistryFactory.deploy(0, 0, deployerAddress); - grantRoundFactory = await GrantRoundFactory.deploy(); - grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - pollFactory = await PollFactoryFactory.deploy(); - messageAqFactory = await MessageAqFactoryFactory.deploy(); - messageAqFactoryGrants = await MessageAqFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - //NOTE: each user recieves 100 voice credits by default - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(100); - vkRegistry = await VKRegistryFactory.deploy(); - baseERC20Token = await BaseERC20TokenFactory.deploy(100); - mockVerifier = await MockVerifierFactory.deploy(); - pollProcessorAndTallyer = await PollProcessorAndTallyerFactory.deploy(mockVerifier.address); - - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - await pollFactory.transferOwnership(qfi.address); - await grantRoundFactory.transferOwnership(qfi.address); - await messageAqFactory.transferOwnership(pollFactory.address); - await messageAqFactoryGrants.transferOwnership(grantRoundFactory.address); - await qfi.initialize(vkRegistry.address, messageAqFactory.address, messageAqFactoryGrants.address); - - const stateTreeDepth = await qfi.stateTreeDepth(); - const _stateTreeDepth = stateTreeDepth.toString(); - const _intStateTreeDepth = 1; - const _messageTreeDepth = 4; - const _voteOptionTreeDepth = 2; - const _messageBatchSize = 25; - const _processVk = testProcessVk.asContractParam(); - const _tallyVk = testTallyVk.asContractParam(); - - await vkRegistry.setVerifyingKeys( - _stateTreeDepth, - _intStateTreeDepth, - _messageTreeDepth, - _voteOptionTreeDepth, - _messageBatchSize, - _processVk, - _tallyVk - ); - - await vkRegistry.genProcessVkSig(_stateTreeDepth, _messageTreeDepth, _voteOptionTreeDepth, _messageBatchSize); - await vkRegistry.genTallyVkSig(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); - coordinator = new Keypair(); - const coordinatorPubkey = coordinator.pubKey.asContractParam(); - - // NOTE: Create new local maci data structure - maciState = new MaciState(); - const provider = deployer.provider ?? ethers.getDefaultProvider(); - - const userSigners = [user1, user2, user3]; - users = []; - for (const user of userSigners) { - const maciKey = new Keypair(); - const _pubKey = maciKey.pubKey.asContractParam(); - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - - const { logs } = await qfi - .connect(user) - .signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData) - .then((tx) => tx.wait()); - - const iface = qfi.interface; - const signUpEvent = iface.parseLog(logs[logs.length - 1]); - - users.push({ maciKey: maciKey, signer: user }); - // NOTE: Signup users on local maci data structure - maciState.signUp( - maciKey.pubKey, - BigInt(signUpEvent.args._voiceCreditBalance.toString()), - BigInt(signUpEvent.args._timestamp.toString()) - ); - } - - const { blockHash } = await qfi - .connect(deployer) - .deployPoll(duration, maxValues, treeDepths, coordinatorPubkey, { gasLimit: 30000000 }) - .then((tx) => tx.wait()); - - // NOTE: Deploy the poll on local maci data structure - const deployTime = (await provider.getBlock(blockHash)).timestamp; - const p = maciState.deployPoll( - duration, - BigInt(deployTime + duration), - maxValues, - treeDepths, - messageBatchSize, - coordinator - ); - const pollContractAddress = await qfi.getPoll(0); - poll = new Poll__factory({ ...linkedLibraryAddresses }, deployer).attach(pollContractAddress); - - for (const user of users) { - const { maciKey, signer } = user; - const _stateIndex = BigInt(1); - const _newPubKey = maciKey.pubKey; - const _voteOptionIndex = BigInt(0); - const _newVoteWeight = BigInt(9); - const _nonce = BigInt(1); - const _pollId = BigInt(0); - const _salt = BigInt(0); - const command = new Command(_stateIndex, _newPubKey, _voteOptionIndex, _newVoteWeight, _nonce, _pollId, _salt); - - const signature = command.sign(maciKey.privKey); - const sharedKey = Keypair.genEcdhSharedKey(maciKey.privKey, coordinator.pubKey); - const message = command.encrypt(signature, sharedKey); - const _message = message.asContractParam(); - const _encPubKey = maciKey.pubKey.asContractParam(); - const { logs } = await poll - .connect(signer) - .publishMessage(_message, _encPubKey) - .then((tx) => tx.wait()); - - // NOTE: Publish the message on local maci data structure - maciState.polls[_pollId].publishMessage(message, maciKey.pubKey); - } - - const dd = await poll.getDeployTimeAndDuration(); - const hardHatProvider = ethers.provider; - await hardHatProvider.send("evm_increaseTime", [Number(dd[1]) + 1]); - await hardHatProvider.send("evm_mine", []); - - const extContracts = await poll.extContracts(); - - const messageAqAddress = extContracts.messageAq; - messageAq = MessageAq_Factory.attach(messageAqAddress); - }); - - it("expect revert - voting period is over", async () => { - const keypair = users[0].maciKey; - - const command = new Command(BigInt(1), keypair.pubKey, BigInt(0), BigInt(9), BigInt(1), BigInt(0), BigInt(0)); - - const signature = command.sign(keypair.privKey); - const sharedKey = Keypair.genEcdhSharedKey(keypair.privKey, coordinator.pubKey); - const message = command.encrypt(signature, sharedKey); - - const _message = message.asContractParam(); - const _encPubKey = keypair.pubKey.asContractParam(); - - await expect(poll.publishMessage(_message, _encPubKey)).to.be.revertedWith("PollE03"); - }); - - describe("Merge and calculate tree roots", () => { - // event MergeMaciStateAqSubRoots(uint256 _numSrQueueOps); - // event MergeMaciStateAq(uint256 _stateRoot); - // event MergeMessageAqSubRoots(uint256 _numSrQueueOps); - // event MergeMessageAq(uint256 _messageRoot); - it("verify - merge the message AccQueue", async () => { - await expect(poll.mergeMessageAqSubRoots(0)).to.emit(poll, "MergeMessageAqSubRoots").withArgs(0); - await expect(poll.mergeMessageAq()).to.emit(poll, "MergeMessageAq"); - }); - it("verify - merge the MaciStateAq ", async () => { - await expect(poll.mergeMaciStateAqSubRoots(0, 0)).to.emit(poll, "MergeMaciStateAqSubRoots").withArgs(0); - await expect(poll.mergeMaciStateAq(0)).to.emit(poll, "MergeMaciStateAq"); - }); - it("require fail - cannot merge messages twice", async () => { - await expect(poll.mergeMessageAqSubRoots(0)).to.emit(poll, "MergeMessageAqSubRoots"); - await expect(poll.mergeMessageAq()).to.emit(poll, "MergeMessageAq"); - await expect(poll.mergeMessageAqSubRoots(0)).to.be.revertedWith("AccQueue: subtrees already merged"); - }); - it("require fail - cannot merge state twice", async () => { - await expect(poll.mergeMaciStateAqSubRoots(0, 0)).to.emit(poll, "MergeMaciStateAqSubRoots"); - await expect(poll.mergeMaciStateAq(0)).to.emit(poll, "MergeMaciStateAq"); - await expect(poll.mergeMaciStateAqSubRoots(0, 0)).to.be.revertedWith("PollE07"); - await expect(poll.mergeMaciStateAq(0)).to.be.revertedWith("PollE07"); - }); - it("verify - correctly merges messageAq", async () => { - const maciPoll = maciState.polls[0]; - maciPoll.messageAq.mergeSubRoots(0); //NOTE: 0 as input attempts to merge all subroots - maciPoll.messageAq.merge(treeDepths.messageTreeDepth); - const expectedMessageRoot = maciState.polls[0].messageAq.mainRoots[treeDepths.messageTreeDepth].toString(); - - await expect(poll.mergeMessageAqSubRoots(0)).to.emit(poll, "MergeMessageAqSubRoots").withArgs(0); - await expect(poll.mergeMessageAq()).to.emit(poll, "MergeMessageAq").withArgs(expectedMessageRoot); - }); - - it("verify - correctly merges stateAq", async () => { - const maciPoll = maciState.polls[0]; - maciPoll.messageAq.mergeSubRoots(0); //NOTE: 0 as input attempts to merge all subroots - maciPoll.messageAq.merge(treeDepths.messageTreeDepth); - const expectedMessageRoot = maciState.polls[0].messageAq.mainRoots[treeDepths.messageTreeDepth].toString(); - - await expect(poll.mergeMessageAqSubRoots(0)).to.emit(poll, "MergeMessageAqSubRoots").withArgs(0); - await expect(poll.mergeMessageAq()).to.emit(poll, "MergeMessageAq").withArgs(expectedMessageRoot); - - const maciStateAq = maciState.stateAq; - maciStateAq.mergeSubRoots(0); // 0 as input attempts to merge all subroots - maciStateAq.merge(stateTreeDepth); - const expectedStateRoot = maciState.stateAq.mainRoots[stateTreeDepth].toString(); - - await expect(poll.mergeMaciStateAqSubRoots(0, 0)).to.emit(poll, "MergeMaciStateAqSubRoots").withArgs(0); - await expect(poll.mergeMaciStateAq(0)) - .to.emit(poll, "MergeMaciStateAq") - .withArgs(expectedStateRoot); - }); - }); - - -}); diff --git a/packages/contracts/tests/QV/05-process.ts b/packages/contracts/tests/QV/05-process.ts deleted file mode 100644 index 840b023f..00000000 --- a/packages/contracts/tests/QV/05-process.ts +++ /dev/null @@ -1,580 +0,0 @@ -import { ethers } from "hardhat"; -import { BigNumber, BigNumberish, Signer } from "ethers"; -import chai from "chai"; -import { solidity } from "ethereum-waffle"; -import { Command, Keypair, Message, VerifyingKey } from "qaci-domainobjs"; -import { G1Point, G2Point } from "qaci-crypto"; -import { MaciState, genProcessVkSig, genTallyVkSig } from "qaci-core"; -import { PoseidonT3 } from "../../typechain/PoseidonT3"; -import { PoseidonT3__factory } from "../../typechain/factories/PoseidonT3__factory"; - -import { PoseidonT4 } from "../../typechain/PoseidonT4"; -import { PoseidonT4__factory } from "../../typechain/factories/PoseidonT4__factory"; - -import { PoseidonT5 } from "../../typechain/PoseidonT5"; -import { PoseidonT5__factory } from "../../typechain/factories/PoseidonT5__factory"; - -import { PoseidonT6 } from "../../typechain/PoseidonT6"; -import { PoseidonT6__factory } from "../../typechain/factories/PoseidonT6__factory"; - -import { - GrantRoundFactoryLibraryAddresses, - GrantRoundFactory__factory, -} from "../../typechain/factories/GrantRoundFactory__factory"; -import { PollFactory__factory, PollFactoryLibraryAddresses } from "../../typechain/factories/PollFactory__factory"; - -import { - MessageAqFactory__factory, - MessageAqFactoryLibraryAddresses, -} from "../../typechain/factories/MessageAqFactory__factory"; -import { QFI__factory, QFILibraryAddresses } from "../../typechain/factories/QFI__factory"; - -import { GrantRoundFactory } from "../../typechain/GrantRoundFactory"; -import { PollFactory } from "../../typechain/PollFactory"; -import { MessageAqFactory } from "../../typechain/MessageAqFactory"; -import { QFI } from "../../typechain/QFI"; -import { Poll__factory } from "../../typechain/factories/Poll__factory"; -import { MessageStruct, Poll } from "../../typechain/Poll"; - -import { VkRegistry__factory } from "../../typechain/factories/VkRegistry__factory"; -import { FreeForAllGatekeeper__factory } from "../../typechain/factories/FreeForAllGatekeeper__factory"; -import { ConstantInitialVoiceCreditProxy__factory } from "../../typechain/factories/ConstantInitialVoiceCreditProxy__factory"; - -import { VerifyingKeyStruct, VkRegistry } from "../../typechain/VkRegistry"; -import { FreeForAllGatekeeper } from "../../typechain/FreeForAllGatekeeper"; -import { ConstantInitialVoiceCreditProxy } from "../../typechain/ConstantInitialVoiceCreditProxy"; - -import { OptimisticRecipientRegistry } from "../../typechain/OptimisticRecipientRegistry"; -import { OptimisticRecipientRegistry__factory } from "../../typechain/factories/OptimisticRecipientRegistry__factory"; - -import { BaseERC20Token } from "../../typechain/BaseERC20Token"; -import { BaseERC20Token__factory } from "../../typechain/factories/BaseERC20Token__factory"; - -import { PollProcessorAndTallyer } from "../../typechain/PollProcessorAndTallyer"; -import { PollProcessorAndTallyer__factory } from "../../typechain/factories/PollProcessorAndTallyer__factory"; - -import { MockVerifier } from "../../typechain/MockVerifier"; -import { MockVerifier__factory } from "../../typechain/factories/MockVerifier__factory"; -import { AccQueueQuinaryMaci } from "../../typechain/AccQueueQuinaryMaci"; -import { AccQueueQuinaryMaci__factory } from "../../typechain"; - -chai.use(solidity); -const { expect } = chai; -const testProcessVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -const testTallyVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -describe("Process - Tally QV poll votes", () => { - let deployer: Signer; - let user1: Signer; - let user2: Signer; - let user3: Signer; - let user4: Signer; - let user5: Signer; - let user6: Signer; - let user7: Signer; - let user8: Signer; - let user9: Signer; - let user10: Signer; - - let project1: Signer; - let project2: Signer; - let project3: Signer; - let deployerAddress: string; - let PoseidonT3Factory: PoseidonT3__factory; - let PoseidonT4Factory: PoseidonT4__factory; - let PoseidonT5Factory: PoseidonT5__factory; - let PoseidonT6Factory: PoseidonT6__factory; - - let linkedLibraryAddresses: - | QFILibraryAddresses - | PollFactoryLibraryAddresses - | MessageAqFactoryLibraryAddresses - | GrantRoundFactoryLibraryAddresses; - let GrantRoundFactory: GrantRoundFactory__factory; - let PollFactoryFactory: PollFactory__factory; - let MessageAqFactoryFactory: MessageAqFactory__factory; - let MessageAq_Factory: AccQueueQuinaryMaci__factory; - let FreeForAllGateKeeperFactory: FreeForAllGatekeeper__factory; - let ConstantInitialVoiceCreditProxyFactory: ConstantInitialVoiceCreditProxy__factory; - let VKRegistryFactory: VkRegistry__factory; - - let RecipientRegistryFactory: OptimisticRecipientRegistry__factory; - let BaseERC20TokenFactory: BaseERC20Token__factory; - let PollProcessorAndTallyerFactory: PollProcessorAndTallyer__factory; - let MockVerifierFactory: MockVerifier__factory; - - let QFIFactory: QFI__factory; - - let PoseidonT3: PoseidonT3; - let PoseidonT4: PoseidonT4; - let PoseidonT5: PoseidonT5; - let PoseidonT6: PoseidonT6; - let grantRoundFactory: GrantRoundFactory; - let pollFactory: PollFactory; - let messageAqFactory: MessageAqFactory; - let messageAqFactoryGrants: MessageAqFactory; - let messageAq: AccQueueQuinaryMaci; - - let vkRegistry: VkRegistry; - let constantInitialVoiceCreditProxy: ConstantInitialVoiceCreditProxy; - let freeForAllGateKeeper: FreeForAllGatekeeper; - let optimisticRecipientRegistry: OptimisticRecipientRegistry; - let baseERC20Token: BaseERC20Token; - let pollProcessorAndTallyer: PollProcessorAndTallyer; - let mockVerifier: MockVerifier; - let qfi: QFI; - let coordinator: Keypair; - let poll: Poll; - let users: { - maciKey: Keypair; - signer: Signer; - stateIndex: number; - }[] = []; - const duration = 15; - const maxValues = { - maxUsers: 25, - maxMessages: 25, - maxVoteOptions: 25, - }; - const treeDepths = { - intStateTreeDepth: 1, - messageTreeDepth: 4, - messageTreeSubDepth: 2, - voteOptionTreeDepth: 2, - }; - const stateTreeDepth = 10; - const intStateTreeDepth = 1; - const messageBatchSize = 25; - const tallyBatchSize = 5 ** intStateTreeDepth; - let maciState: MaciState; - let tallyFileData: { - maci: any; - pollId: number; - newTallyCommitment: any; - results: { - tally: any; - salt: any; - }; - totalSpentVoiceCredits: { - spent: any; - salt: any; - }; - perVOSpentVoiceCredits: { - tally: any; - salt: any; - }; - }; - - beforeEach(async function () { - this?.timeout(40000); - [deployer, user1, user2, user3, user4, user5, user6, user7, user8, user9, user10] = await ethers.getSigners(); - deployerAddress = await deployer.getAddress(); - PoseidonT3Factory = new PoseidonT3__factory(deployer); - PoseidonT4Factory = new PoseidonT4__factory(deployer); - PoseidonT5Factory = new PoseidonT5__factory(deployer); - PoseidonT6Factory = new PoseidonT6__factory(deployer); - PoseidonT3 = await PoseidonT3Factory.deploy(); - PoseidonT4 = await PoseidonT4Factory.deploy(); - PoseidonT5 = await PoseidonT5Factory.deploy(); - PoseidonT6 = await PoseidonT6Factory.deploy(); - - linkedLibraryAddresses = { - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT5"]: PoseidonT5.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT3"]: PoseidonT3.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT6"]: PoseidonT6.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT4"]: PoseidonT4.address, - }; - - GrantRoundFactory = new GrantRoundFactory__factory({ ...linkedLibraryAddresses }, deployer); - PollFactoryFactory = new PollFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAqFactoryFactory = new MessageAqFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAq_Factory = new AccQueueQuinaryMaci__factory({ ...linkedLibraryAddresses }, deployer); - QFIFactory = new QFI__factory({ ...linkedLibraryAddresses }, deployer); - VKRegistryFactory = new VkRegistry__factory(deployer); - ConstantInitialVoiceCreditProxyFactory = new ConstantInitialVoiceCreditProxy__factory(deployer); - FreeForAllGateKeeperFactory = new FreeForAllGatekeeper__factory(deployer); - RecipientRegistryFactory = new OptimisticRecipientRegistry__factory(deployer); - BaseERC20TokenFactory = new BaseERC20Token__factory(deployer); - PollProcessorAndTallyerFactory = new PollProcessorAndTallyer__factory(deployer); - MockVerifierFactory = new MockVerifier__factory(deployer); - - optimisticRecipientRegistry = await RecipientRegistryFactory.deploy(0, 0, deployerAddress); - grantRoundFactory = await GrantRoundFactory.deploy(); - grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - pollFactory = await PollFactoryFactory.deploy(); - messageAqFactory = await MessageAqFactoryFactory.deploy(); - messageAqFactoryGrants = await MessageAqFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - //NOTE: each user recieves 100 voice credits by default - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(100); - vkRegistry = await VKRegistryFactory.deploy(); - baseERC20Token = await BaseERC20TokenFactory.deploy(100); - mockVerifier = await MockVerifierFactory.deploy(); - pollProcessorAndTallyer = await PollProcessorAndTallyerFactory.deploy(mockVerifier.address); - - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - await pollFactory.transferOwnership(qfi.address); - await grantRoundFactory.transferOwnership(qfi.address); - await messageAqFactory.transferOwnership(pollFactory.address); - await messageAqFactoryGrants.transferOwnership(grantRoundFactory.address); - await qfi.initialize(vkRegistry.address, messageAqFactory.address, messageAqFactoryGrants.address); - - const stateTreeDepth = await qfi.stateTreeDepth(); - const _stateTreeDepth = stateTreeDepth.toString(); - const _intStateTreeDepth = 1; - const _messageTreeDepth = 4; - const _voteOptionTreeDepth = 2; - const _messageBatchSize = 25; - const _processVk = testProcessVk.asContractParam(); - const _tallyVk = testTallyVk.asContractParam(); - - await vkRegistry.setVerifyingKeys( - _stateTreeDepth, - _intStateTreeDepth, - _messageTreeDepth, - _voteOptionTreeDepth, - _messageBatchSize, - _processVk, - _tallyVk - ); - - await vkRegistry.genProcessVkSig(_stateTreeDepth, _messageTreeDepth, _voteOptionTreeDepth, _messageBatchSize); - await vkRegistry.genTallyVkSig(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); - coordinator = new Keypair(); - const coordinatorPubkey = coordinator.pubKey.asContractParam(); - - // NOTE: Create new local maci data structure - maciState = new MaciState(); - const provider = deployer.provider ?? ethers.getDefaultProvider(); - - const userSigners = [user1, user2, user3]; - users = []; - for (const user of userSigners) { - const maciKey = new Keypair(); - const _pubKey = maciKey.pubKey.asContractParam(); - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - - const { logs } = await qfi - .connect(user) - .signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData) - .then((tx) => tx.wait()); - - const iface = qfi.interface; - const signUpEvent = iface.parseLog(logs[logs.length - 1]); - const stateIndex = signUpEvent.args._stateIndex.toString(); - users.push({ maciKey: maciKey, signer: user, stateIndex: stateIndex }); - // NOTE: Signup users on local maci data structure - maciState.signUp( - maciKey.pubKey, - BigInt(signUpEvent.args._voiceCreditBalance.toString()), - BigInt(signUpEvent.args._timestamp.toString()) - ); - } - - const { blockHash } = await qfi - .connect(deployer) - .deployPoll(duration, maxValues, treeDepths, coordinatorPubkey, { gasLimit: 30000000 }) - .then((tx) => tx.wait()); - - // NOTE: Deploy the poll on local maci data structure - const deployTime = (await provider.getBlock(blockHash)).timestamp; - //NOTE: this is where the coordinator key is set on the local maci data structure - const p = maciState.deployPoll( - duration, - BigInt(deployTime + duration), - maxValues, - treeDepths, - messageBatchSize, - coordinator - ); - const pollContractAddress = await qfi.getPoll(0); - poll = new Poll__factory({ ...linkedLibraryAddresses }, deployer).attach(pollContractAddress); - let index = 1; - for (const user of users) { - const { maciKey, signer, stateIndex } = user; - const _stateIndex = BigInt(stateIndex); - - const _newPubKey = maciKey.pubKey; - const _voteOptionIndex = BigInt(index); - const _newVoteWeight = BigInt(index); - const _nonce = BigInt(1); - const _pollId = BigInt(0); - const _salt = BigInt(1); - const command = new Command(_stateIndex, _newPubKey, _voteOptionIndex, _newVoteWeight, _nonce, _pollId, _salt); - - const signature = command.sign(maciKey.privKey); - const sharedKey = Keypair.genEcdhSharedKey(maciKey.privKey, coordinator.pubKey); - const message = command.encrypt(signature, sharedKey); - const _message = message.asContractParam(); - const _encPubKey = maciKey.pubKey.asContractParam(); - // NOTE: Publish the message on local maci data structure - maciState.polls[0].publishMessage(message, maciKey.pubKey); - const { logs } = await poll - .connect(signer) - .publishMessage(_message, _encPubKey) - .then((tx) => tx.wait()); - } - const overwrite = [...users]; - for (const user of overwrite) { - const { maciKey, signer, stateIndex } = user; - const _stateIndex = BigInt(stateIndex); - const _newPubKey = maciKey.pubKey; - const _voteOptionIndex = BigInt(index); - const _newVoteWeight = BigInt(index); - const _nonce = BigInt(2); - const _pollId = BigInt(0); - const _salt = BigInt(2); - const command = new Command(_stateIndex, _newPubKey, _voteOptionIndex, _newVoteWeight, _nonce, _pollId, _salt); - index++; - - const signature = command.sign(maciKey.privKey); - const sharedKey = Keypair.genEcdhSharedKey(maciKey.privKey, coordinator.pubKey); - const message = command.encrypt(signature, sharedKey); - const _message = message.asContractParam(); - const _encPubKey = maciKey.pubKey.asContractParam(); - // NOTE: Publish the message on local maci data structure - maciState.polls[0].publishMessage(message, maciKey.pubKey); - const { logs } = await poll - .connect(signer) - .publishMessage(_message, _encPubKey) - .then((tx) => tx.wait()); - } - - const dd = await poll.getDeployTimeAndDuration(); - const hardHatProvider = ethers.provider; - await hardHatProvider.send("evm_increaseTime", [Number(dd[1]) + 1]); - await hardHatProvider.send("evm_mine", []); - - const extContracts = await poll.extContracts(); - - const messageAqAddress = extContracts.messageAq; - messageAq = MessageAq_Factory.attach(messageAqAddress); - - const maciPoll = maciState.polls[0]; - maciPoll.messageAq.mergeSubRoots(0); //NOTE: 0 as input attempts to merge all subroots - maciPoll.messageAq.merge(treeDepths.messageTreeDepth); - - await poll.mergeMessageAqSubRoots(0); - await poll.mergeMessageAq(); - - const maciStateAq = maciState.stateAq; - maciStateAq.mergeSubRoots(0); // 0 as input attempts to merge all subroots - maciStateAq.merge(stateTreeDepth); - - await poll.mergeMaciStateAqSubRoots(0, 0); - await poll.mergeMaciStateAq(0); - }); - - describe("Maci state calculations", () => { - it("verify - correctly packs maximumVoteOptions, numsignups, currentMessageBatchIndex, indexOfCurrentBatch into a 250-bit value", async () => { - const pollId = 0; - const maciPoll = maciState.polls[pollId]; - - //TODO: do we need large vals? - const expectedPackedVals = MaciState.packProcessMessageSmallVals( - maxValues.maxVoteOptions, - users.length, - 0, - maciPoll.messages.length - ); - const onChainPackedVals = await pollProcessorAndTallyer.genProcessMessagesPackedVals( - poll.address, - BigNumber.from(0), - users.length - ); - expect(expectedPackedVals.toString()).to.equal(onChainPackedVals.toString()); - }); - it("verify - correctly packs the batch start index and number of signups into a 100-bit value", async () => { - const maciExpectedPackedVals = MaciState.packTallyVotesSmallVals(0, tallyBatchSize, users.length); - const onChainPackedVals = await pollProcessorAndTallyer.genTallyVotesPackedVals(users.length, 0, tallyBatchSize); - expect(onChainPackedVals.toString()).to.equal(maciExpectedPackedVals.toString()); - }); - }); - - describe("Process and Tally Vote messages", () => { - it("verify - process messages and proof", async () => { - const pollId = 0; - const maciPoll = maciState.polls[pollId]; - //NOTE: new state root and ballot root commitment calculated off chain - const { newSbCommitment: maciNewSbCommitment } = maciPoll.processMessages(pollId); - //TODO: why does this work? - const dummyProof: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] = [0, 0, 0, 0, 0, 0, 0, 0]; - const { status } = await pollProcessorAndTallyer - .processMessages(poll.address, maciNewSbCommitment, dummyProof) - .then((tx) => tx.wait()); - expect(status).to.equal(1); - expect(await pollProcessorAndTallyer.processingComplete()).to.be.true; - - const onChainNewSbCommitment = await pollProcessorAndTallyer.sbCommitment(); - expect(maciNewSbCommitment).to.equal(onChainNewSbCommitment.toString()); - }); - - it("verify - tally proof is valid and updates tally commitment on chain", async () => { - const pollId = 0; - const maciPoll = maciState.polls[pollId]; - //NOTE: new state root and ballot root commitment calculated off chain - const { newSbCommitment: maciNewSbCommitment } = maciPoll.processMessages(pollId); - //TODO: why does this work? - const dummyProof: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] = [0, 0, 0, 0, 0, 0, 0, 0]; - const { status: processMessagesStatus } = await pollProcessorAndTallyer - .processMessages(poll.address, maciNewSbCommitment, dummyProof) - .then((tx) => tx.wait()); - expect(processMessagesStatus).to.equal(1); - expect(await pollProcessorAndTallyer.processingComplete()).to.be.true; - - const maciGeneratedInputs = maciPoll.tallyVotes(pollId); - const { status: tallyVotesStatus } = await pollProcessorAndTallyer - .tallyVotes(poll.address, maciGeneratedInputs.newTallyCommitment, dummyProof) - .then((tx) => tx.wait()); - expect(tallyVotesStatus).to.equal(1); - - const onChainNewTallyCommitment = await pollProcessorAndTallyer.tallyCommitment(); - expect(maciGeneratedInputs.newTallyCommitment).to.equal(onChainNewTallyCommitment); - }); - - it("require fail - Fails if there are no untallied ballots left", async () => { - const pollId = 0; - const maciPoll = maciState.polls[pollId]; - //NOTE: new state root and ballot root commitment calculated off chain - const { newSbCommitment: maciNewSbCommitment } = maciPoll.processMessages(pollId); - //TODO: why does this work? - const dummyProof: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] = [0, 0, 0, 0, 0, 0, 0, 0]; - const { status: processMessagesStatus } = await pollProcessorAndTallyer - .processMessages(poll.address, maciNewSbCommitment, dummyProof) - .then((tx) => tx.wait()); - expect(processMessagesStatus).to.equal(1); - expect(await pollProcessorAndTallyer.processingComplete()).to.be.true; - - const maciGeneratedInputs = maciPoll.tallyVotes(pollId); - const { status: tallyVotesStatus } = await pollProcessorAndTallyer - .tallyVotes(poll.address, maciGeneratedInputs.newTallyCommitment, dummyProof) - .then((tx) => tx.wait()); - expect(tallyVotesStatus).to.equal(1); - const onChainNewTallyCommitment = await pollProcessorAndTallyer.tallyCommitment(); - - expect(maciGeneratedInputs.newTallyCommitment).to.equal(onChainNewTallyCommitment); - - await expect( - pollProcessorAndTallyer.tallyVotes(poll.address, maciGeneratedInputs.newTallyCommitment, dummyProof) - ).to.be.revertedWith("PptE08"); - }); - - it("verify - generates tally file data", async () => { - const pollId = 0; - const maciPoll = maciState.polls[pollId]; - //NOTE: new state root and ballot root commitment calculated off chain - const { newSbCommitment: maciNewSbCommitment } = maciPoll.processMessages(pollId); - //TODO: why does this work? - const dummyProof: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] = [0, 0, 0, 0, 0, 0, 0, 0]; - - const { status: processMessagesStatus } = await pollProcessorAndTallyer - .processMessages(poll.address, maciNewSbCommitment, dummyProof) - .then((tx) => tx.wait()); - expect(processMessagesStatus).to.equal(1); - expect(await pollProcessorAndTallyer.processingComplete()).to.be.true; - - const maciTallyCircuitInputs = maciPoll.tallyVotes(pollId); - const { status: tallyVotesStatus } = await pollProcessorAndTallyer - .tallyVotes(poll.address, maciTallyCircuitInputs.newTallyCommitment, dummyProof) - .then((tx) => tx.wait()); - expect(tallyVotesStatus).to.equal(1); - - const onChainNewTallyCommitment = await pollProcessorAndTallyer.tallyCommitment(); - expect(maciTallyCircuitInputs.newTallyCommitment).to.equal(onChainNewTallyCommitment); - - await expect( - pollProcessorAndTallyer.tallyVotes(poll.address, maciTallyCircuitInputs.newTallyCommitment, dummyProof) - ).to.be.revertedWith("PptE08"); //NOTE: should not be any votes left to tally - - const newTallyCommitment = maciTallyCircuitInputs.newTallyCommitment; - const tallyResults = maciPoll.results.map((x: any) => x.toString()); - const tallySalt = maciTallyCircuitInputs.newResultsRootSalt; - const voiceCreditsSpent = maciPoll.totalSpentVoiceCredits.toString(); - const voiceCreditsSalt = maciTallyCircuitInputs.newSpentVoiceCreditSubtotalSalt; - const perVOSpentTally = maciPoll.perVOSpentVoiceCredits.map((x: any) => x.toString()); - const perVOSpentSalt = maciTallyCircuitInputs.newPerVOSpentVoiceCreditsRootSalt; - tallyFileData = { - maci: qfi.address, - pollId: pollId, - newTallyCommitment: newTallyCommitment, - results: { - tally: tallyResults, - salt: tallySalt, - }, - totalSpentVoiceCredits: { - spent: voiceCreditsSpent, - salt: voiceCreditsSalt, - }, - perVOSpentVoiceCredits: { - tally: perVOSpentTally, - salt: perVOSpentSalt, - }, - }; - Object.values(tallyFileData).forEach((value) => { - expect(value).to.not.be.undefined; - }); - Object.values(tallyFileData).forEach((value) => { - expect(value).to.not.be.undefined; - }); - expect(maciPoll.hasUntalliedBallots()).to.equal(false); - expect(maciPoll.hasUnprocessedMessages()).to.equal(false); - expect(maciPoll.messages.length).to.be.equal(users.length*2); //every user sends an overide message - }); - }); -}); diff --git a/packages/contracts/tests/QV/06-verify.ts b/packages/contracts/tests/QV/06-verify.ts deleted file mode 100644 index 0318ff14..00000000 --- a/packages/contracts/tests/QV/06-verify.ts +++ /dev/null @@ -1,614 +0,0 @@ -import { ethers } from "hardhat"; -import { BigNumber, BigNumberish, Signer } from "ethers"; -import chai from "chai"; -import { solidity } from "ethereum-waffle"; -import { Command, Keypair, Message, VerifyingKey } from "qaci-domainobjs"; -import { G1Point, G2Point, hash5, hashLeftRight, IncrementalQuinTree } from "qaci-crypto"; -import { MaciState, genProcessVkSig, genTallyVkSig } from "qaci-core"; -import { PoseidonT3 } from "../../typechain/PoseidonT3"; -import { PoseidonT3__factory } from "../../typechain/factories/PoseidonT3__factory"; - -import { PoseidonT4 } from "../../typechain/PoseidonT4"; -import { PoseidonT4__factory } from "../../typechain/factories/PoseidonT4__factory"; - -import { PoseidonT5 } from "../../typechain/PoseidonT5"; -import { PoseidonT5__factory } from "../../typechain/factories/PoseidonT5__factory"; - -import { PoseidonT6 } from "../../typechain/PoseidonT6"; -import { PoseidonT6__factory } from "../../typechain/factories/PoseidonT6__factory"; - -import { - GrantRoundFactoryLibraryAddresses, - GrantRoundFactory__factory, -} from "../../typechain/factories/GrantRoundFactory__factory"; -import { PollFactory__factory, PollFactoryLibraryAddresses } from "../../typechain/factories/PollFactory__factory"; - -import { - MessageAqFactory__factory, - MessageAqFactoryLibraryAddresses, -} from "../../typechain/factories/MessageAqFactory__factory"; -import { QFI__factory, QFILibraryAddresses } from "../../typechain/factories/QFI__factory"; - -import { GrantRoundFactory } from "../../typechain/GrantRoundFactory"; -import { PollFactory } from "../../typechain/PollFactory"; -import { MessageAqFactory } from "../../typechain/MessageAqFactory"; -import { QFI } from "../../typechain/QFI"; -import { Poll__factory } from "../../typechain/factories/Poll__factory"; -import { MessageStruct, Poll } from "../../typechain/Poll"; - -import { VkRegistry__factory } from "../../typechain/factories/VkRegistry__factory"; -import { FreeForAllGatekeeper__factory } from "../../typechain/factories/FreeForAllGatekeeper__factory"; -import { ConstantInitialVoiceCreditProxy__factory } from "../../typechain/factories/ConstantInitialVoiceCreditProxy__factory"; - -import { VerifyingKeyStruct, VkRegistry } from "../../typechain/VkRegistry"; -import { FreeForAllGatekeeper } from "../../typechain/FreeForAllGatekeeper"; -import { ConstantInitialVoiceCreditProxy } from "../../typechain/ConstantInitialVoiceCreditProxy"; - -import { OptimisticRecipientRegistry } from "../../typechain/OptimisticRecipientRegistry"; -import { OptimisticRecipientRegistry__factory } from "../../typechain/factories/OptimisticRecipientRegistry__factory"; - -import { BaseERC20Token } from "../../typechain/BaseERC20Token"; -import { BaseERC20Token__factory } from "../../typechain/factories/BaseERC20Token__factory"; - -import { PollProcessorAndTallyer } from "../../typechain/PollProcessorAndTallyer"; -import { PollProcessorAndTallyer__factory } from "../../typechain/factories/PollProcessorAndTallyer__factory"; - -import { MockVerifier } from "../../typechain/MockVerifier"; -import { MockVerifier__factory } from "../../typechain/factories/MockVerifier__factory"; -import { AccQueueQuinaryMaci } from "../../typechain/AccQueueQuinaryMaci"; -import { AccQueueQuinaryMaci__factory } from "../../typechain"; - -chai.use(solidity); -const { expect } = chai; -const testProcessVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -const testTallyVk = new VerifyingKey( - new G1Point(BigInt(0), BigInt(1)), - new G2Point([BigInt(2), BigInt(3)], [BigInt(4), BigInt(5)]), - new G2Point([BigInt(6), BigInt(7)], [BigInt(8), BigInt(9)]), - new G2Point([BigInt(10), BigInt(11)], [BigInt(12), BigInt(13)]), - [new G1Point(BigInt(14), BigInt(15)), new G1Point(BigInt(16), BigInt(17))] -); - -describe("Process - Tally QV poll votes", function () { - let deployer: Signer; - let user1: Signer; - let user2: Signer; - let user3: Signer; - let user4: Signer; - let user5: Signer; - let user6: Signer; - let user7: Signer; - let user8: Signer; - let user9: Signer; - let user10: Signer; - - let project1: Signer; - let project2: Signer; - let project3: Signer; - let deployerAddress: string; - let PoseidonT3Factory: PoseidonT3__factory; - let PoseidonT4Factory: PoseidonT4__factory; - let PoseidonT5Factory: PoseidonT5__factory; - let PoseidonT6Factory: PoseidonT6__factory; - - let linkedLibraryAddresses: - | QFILibraryAddresses - | PollFactoryLibraryAddresses - | MessageAqFactoryLibraryAddresses - | GrantRoundFactoryLibraryAddresses; - let GrantRoundFactory: GrantRoundFactory__factory; - let PollFactoryFactory: PollFactory__factory; - let MessageAqFactoryFactory: MessageAqFactory__factory; - let MessageAq_Factory: AccQueueQuinaryMaci__factory; - let FreeForAllGateKeeperFactory: FreeForAllGatekeeper__factory; - let ConstantInitialVoiceCreditProxyFactory: ConstantInitialVoiceCreditProxy__factory; - let VKRegistryFactory: VkRegistry__factory; - - let RecipientRegistryFactory: OptimisticRecipientRegistry__factory; - let BaseERC20TokenFactory: BaseERC20Token__factory; - let PollProcessorAndTallyerFactory: PollProcessorAndTallyer__factory; - let MockVerifierFactory: MockVerifier__factory; - - let QFIFactory: QFI__factory; - - let PoseidonT3: PoseidonT3; - let PoseidonT4: PoseidonT4; - let PoseidonT5: PoseidonT5; - let PoseidonT6: PoseidonT6; - let grantRoundFactory: GrantRoundFactory; - let pollFactory: PollFactory; - let messageAqFactory: MessageAqFactory; - let messageAqFactoryGrants: MessageAqFactory; - let messageAq: AccQueueQuinaryMaci; - - let vkRegistry: VkRegistry; - let constantInitialVoiceCreditProxy: ConstantInitialVoiceCreditProxy; - let freeForAllGateKeeper: FreeForAllGatekeeper; - let optimisticRecipientRegistry: OptimisticRecipientRegistry; - let baseERC20Token: BaseERC20Token; - let pollProcessorAndTallyer: PollProcessorAndTallyer; - let mockVerifier: MockVerifier; - let qfi: QFI; - let coordinator: Keypair; - let poll: Poll; - let users: { - maciKey: Keypair; - signer: Signer; - stateIndex: number; - }[] = []; - const duration = 35; - const maxValues = { - maxUsers: 25, - maxMessages: 25, - maxVoteOptions: 25, - }; - const treeDepths = { - intStateTreeDepth: 2, //NOTE: actualy use tally batch size of 25 - messageTreeDepth: 4, - messageTreeSubDepth: 2, - voteOptionTreeDepth: 2, - }; - const STATE_TREE_DEPTH = 10; - const STATE_TREE_ARITY = 5; - const MESSAGE_TREE_ARITY = 5; - const messageBatchSize = MESSAGE_TREE_ARITY ** treeDepths.messageTreeSubDepth; - const tallyBatchSize = STATE_TREE_ARITY ** treeDepths.intStateTreeDepth; - - let maciState: MaciState; - let tallyFileData: { - maci: string; - pollId: number; - newTallyCommitment: any; - results: { - tally: any; - salt: any; - }; - totalSpentVoiceCredits: { - spent: any; - salt: any; - }; - perVOSpentVoiceCredits: { - tally: any; - salt: any; - }; - }; - let maciNewSbCommitment: any; - - beforeEach(async function () { - this?.timeout(400000); - [deployer, user1, user2, user3, user4, user5, user6, user7, user8, user9, user10] = await ethers.getSigners(); - deployerAddress = await deployer.getAddress(); - PoseidonT3Factory = new PoseidonT3__factory(deployer); - PoseidonT4Factory = new PoseidonT4__factory(deployer); - PoseidonT5Factory = new PoseidonT5__factory(deployer); - PoseidonT6Factory = new PoseidonT6__factory(deployer); - PoseidonT3 = await PoseidonT3Factory.deploy(); - PoseidonT4 = await PoseidonT4Factory.deploy(); - PoseidonT5 = await PoseidonT5Factory.deploy(); - PoseidonT6 = await PoseidonT6Factory.deploy(); - - linkedLibraryAddresses = { - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT5"]: PoseidonT5.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT3"]: PoseidonT3.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT6"]: PoseidonT6.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT4"]: PoseidonT4.address, - }; - - GrantRoundFactory = new GrantRoundFactory__factory({ ...linkedLibraryAddresses }, deployer); - PollFactoryFactory = new PollFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAqFactoryFactory = new MessageAqFactory__factory({ ...linkedLibraryAddresses }, deployer); - MessageAq_Factory = new AccQueueQuinaryMaci__factory({ ...linkedLibraryAddresses }, deployer); - QFIFactory = new QFI__factory({ ...linkedLibraryAddresses }, deployer); - VKRegistryFactory = new VkRegistry__factory(deployer); - ConstantInitialVoiceCreditProxyFactory = new ConstantInitialVoiceCreditProxy__factory(deployer); - FreeForAllGateKeeperFactory = new FreeForAllGatekeeper__factory(deployer); - RecipientRegistryFactory = new OptimisticRecipientRegistry__factory(deployer); - BaseERC20TokenFactory = new BaseERC20Token__factory(deployer); - PollProcessorAndTallyerFactory = new PollProcessorAndTallyer__factory(deployer); - MockVerifierFactory = new MockVerifier__factory(deployer); - - optimisticRecipientRegistry = await RecipientRegistryFactory.deploy(0, 0, deployerAddress); - grantRoundFactory = await GrantRoundFactory.deploy(); - grantRoundFactory.setRecipientRegistry(optimisticRecipientRegistry.address); - pollFactory = await PollFactoryFactory.deploy(); - messageAqFactory = await MessageAqFactoryFactory.deploy(); - messageAqFactoryGrants = await MessageAqFactoryFactory.deploy(); - freeForAllGateKeeper = await FreeForAllGateKeeperFactory.deploy(); - //NOTE: each user recieves 100 voice credits by default - constantInitialVoiceCreditProxy = await ConstantInitialVoiceCreditProxyFactory.deploy(100); - vkRegistry = await VKRegistryFactory.deploy(); - baseERC20Token = await BaseERC20TokenFactory.deploy(100); - mockVerifier = await MockVerifierFactory.deploy(); - pollProcessorAndTallyer = await PollProcessorAndTallyerFactory.deploy(mockVerifier.address); - - qfi = await QFIFactory.deploy( - baseERC20Token.address, - grantRoundFactory.address, - pollFactory.address, - freeForAllGateKeeper.address, - constantInitialVoiceCreditProxy.address - ); - await pollFactory.transferOwnership(qfi.address); - await grantRoundFactory.transferOwnership(qfi.address); - await messageAqFactory.transferOwnership(pollFactory.address); - await messageAqFactoryGrants.transferOwnership(grantRoundFactory.address); - await qfi.initialize(vkRegistry.address, messageAqFactory.address, messageAqFactoryGrants.address); - - const stateTreeDepth = await qfi.stateTreeDepth(); - const _stateTreeDepth = stateTreeDepth.toString(); - const _intStateTreeDepth = treeDepths.intStateTreeDepth; - const _messageTreeDepth = treeDepths.messageTreeDepth; - const _voteOptionTreeDepth = treeDepths.voteOptionTreeDepth; - const _messageBatchSize = messageBatchSize.toString(); - const _processVk = testProcessVk.asContractParam(); - const _tallyVk = testTallyVk.asContractParam(); - - await vkRegistry.setVerifyingKeys( - _stateTreeDepth, - _intStateTreeDepth, - _messageTreeDepth, - _voteOptionTreeDepth, - _messageBatchSize, - _processVk, - _tallyVk - ); - - await vkRegistry.genProcessVkSig(_stateTreeDepth, _messageTreeDepth, _voteOptionTreeDepth, _messageBatchSize); - await vkRegistry.genTallyVkSig(_stateTreeDepth, _intStateTreeDepth, _voteOptionTreeDepth); - coordinator = new Keypair(); - const coordinatorPubkey = coordinator.pubKey.asContractParam(); - - // NOTE: Create new local maci data structure - maciState = new MaciState(); - const provider = deployer.provider ?? ethers.getDefaultProvider(); - - const userSigners = [user1, user2, user3, user4, user5, user6, user7, user8, user9, user10]; - users = []; - for (const user of userSigners) { - const maciKey = new Keypair(); - const _pubKey = maciKey.pubKey.asContractParam(); - const _signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode(["uint256"], [1]); - const _initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode(["uint256"], [0]); - - const { logs } = await qfi - .connect(user) - .signUp(_pubKey, _signUpGatekeeperData, _initialVoiceCreditProxyData) - .then((tx) => tx.wait()); - - const iface = qfi.interface; - const signUpEvent = iface.parseLog(logs[logs.length - 1]); - const stateIndex = signUpEvent.args._stateIndex.toString(); - users.push({ maciKey: maciKey, signer: user, stateIndex: stateIndex }); - // NOTE: Signup users on local maci data structure - maciState.signUp( - maciKey.pubKey, - BigInt(signUpEvent.args._voiceCreditBalance.toString()), - BigInt(signUpEvent.args._timestamp.toString()) - ); - } - - const { blockHash } = await qfi - .connect(deployer) - .deployPoll(duration, maxValues, treeDepths, coordinatorPubkey, { gasLimit: 30000000 }) - .then((tx) => tx.wait()); - - // NOTE: Deploy the poll on local maci data structure - const deployTime = (await provider.getBlock(blockHash)).timestamp; - //NOTE: this is where the coordinator key is set on the local maci data structure - const p = maciState.deployPoll( - duration, - BigInt(deployTime + duration), - maxValues, - treeDepths, - messageBatchSize, - coordinator - ); - const pollId = p.toString(); - const pollContractAddress = await qfi.getPoll(0); - poll = new Poll__factory({ ...linkedLibraryAddresses }, deployer).attach(pollContractAddress); - - let index = 1; - for (const user of users) { - const { maciKey, signer, stateIndex } = user; - const _stateIndex = BigInt(stateIndex); - const _newPubKey = maciKey.pubKey; - const _voteOptionIndex = BigInt(index); - const _newVoteWeight = BigInt(index); - const _nonce = BigInt(1); - const _pollId = BigInt(0); - const _salt = BigInt(1); - const command = new Command(_stateIndex, _newPubKey, _voteOptionIndex, _newVoteWeight, _nonce, _pollId, _salt); - index++; - - const signature = command.sign(maciKey.privKey); - const sharedKey = Keypair.genEcdhSharedKey(maciKey.privKey, coordinator.pubKey); - const message = command.encrypt(signature, sharedKey); - const _message = message.asContractParam(); - const _encPubKey = maciKey.pubKey.asContractParam(); - // NOTE: Publish the message on local maci data structure - maciState.polls[0].publishMessage(message, maciKey.pubKey); - const { logs } = await poll - .connect(signer) - .publishMessage(_message, _encPubKey) - .then((tx) => tx.wait()); - } - const [_deployTime, _duration] = await poll.getDeployTimeAndDuration(); - const hardHatProvider = ethers.provider; - await hardHatProvider.send("evm_increaseTime", [Number(_duration) + 1]); - await hardHatProvider.send("evm_mine", []); - - const extContracts = await poll.extContracts(); - - const messageAqAddress = extContracts.messageAq; - messageAq = MessageAq_Factory.attach(messageAqAddress); - - const maciStateAq = maciState.stateAq; - maciStateAq.mergeSubRoots(0); // 0 as input attempts to merge all subroots - maciStateAq.merge(stateTreeDepth); - await poll.mergeMaciStateAqSubRoots(0, 0); - await poll.mergeMaciStateAq(0); - - const maciPoll = maciState.polls[0]; - //maciPoll.mergeAllMessages(); - maciPoll.messageAq.mergeSubRoots(0); //NOTE: 0 as input attempts to merge all subroots - maciPoll.messageAq.merge(treeDepths.messageTreeDepth); - await poll.mergeMessageAqSubRoots(0); - await poll.mergeMessageAq(); - - //NOTE: new state root and ballot root commitment calculated off chain - const { newSbCommitment: _maciNewSbCommitment } = maciPoll.processMessages(0); - - maciNewSbCommitment = _maciNewSbCommitment; - //TODO: why does this work? due to the dummy verifier that is linked to the pollProcessor? - const dummyProof: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] = [0, 0, 0, 0, 0, 0, 0, 0]; - await pollProcessorAndTallyer.processMessages(poll.address, maciNewSbCommitment, dummyProof); - - const maciTallyCircuitInputs = maciPoll.tallyVotes(0); - await pollProcessorAndTallyer.tallyVotes(poll.address, maciTallyCircuitInputs.newTallyCommitment, dummyProof); - - // const maciTallyCircuitInputs2 = maciPoll.tallyVotes(0); - // await pollProcessorAndTallyer.tallyVotes(poll.address, maciTallyCircuitInputs2.newTallyCommitment, dummyProof); - const newTallyCommitment = maciTallyCircuitInputs.newTallyCommitment; - const tallyResults = maciPoll.results.map((x: any) => x.toString()); - const tallySalt = maciTallyCircuitInputs.newResultsRootSalt; - const voiceCreditsSpent = maciPoll.totalSpentVoiceCredits.toString(); - const voiceCreditsSalt = maciTallyCircuitInputs.newSpentVoiceCreditSubtotalSalt; - const perVOSpentTally = maciPoll.perVOSpentVoiceCredits.map((x: any) => x.toString()); - const perVOSpentSalt = maciTallyCircuitInputs.newPerVOSpentVoiceCreditsRootSalt; - tallyFileData = { - maci: qfi.address, - pollId: pollId, - newTallyCommitment: newTallyCommitment, - results: { - tally: tallyResults, - salt: tallySalt, - }, - totalSpentVoiceCredits: { - spent: voiceCreditsSpent, - salt: voiceCreditsSalt, - }, - perVOSpentVoiceCredits: { - tally: perVOSpentTally, - salt: perVOSpentSalt, - }, - }; - }); - - describe("Verify tally off chain", () => { - it("verify - tally results are correct", async () => { - // prettier-ignore - const expectedResultsTally = [ - '0', '1', '2', '3', '4', '5', - '6', '7', '8', '9', '10', '0', - '0', '0', '0', '0', '0', '0', - '0', '0', '0', '0', '0', '0', - '0' - ]; - expect(tallyFileData.results.tally).to.deep.equal(expectedResultsTally); - }); - - it("verify - per vote option spent voice credits results are correct", async () => { - // prettier-ignore - const expectedPerVOSpentVoiceCredits = [ - '0', '1', '4', '9', '16', - '25', '36', '49', '64', '81', - '100', '0', '0', '0', '0', - '0', '0', '0', '0', '0', - '0', '0', '0', '0', '0' - ]; - expect(tallyFileData.perVOSpentVoiceCredits.tally).to.deep.equal(expectedPerVOSpentVoiceCredits); - }); - - it("verify - total spent voice credits is correct", async () => { - // prettier-ignore - const expectedTotalSpentVoiceCredits = [ - '0', '1', '4', '9', '16', - '25', '36', '49', '64', '81', - '100', '0', '0', '0', '0', - '0', '0', '0', '0', '0', - '0', '0', '0', '0', '0' - ].reduce(((acc, x) => acc + Number(x)), 0).toString(); - expect(tallyFileData.totalSpentVoiceCredits.spent).to.deep.equal(expectedTotalSpentVoiceCredits); - }); - }); - - describe("Verify ZK Proof on chain", () => { - it("verify - stateAQ merged and processing complete", async () => { - const stateAqMerged = await poll.stateAqMerged(); - expect(stateAqMerged).to.be.true; - - const processingComplete = await pollProcessorAndTallyer.processingComplete(); - expect(processingComplete).to.be.true; - }); - - it("verify - all parameters are set correctly", async () => { - const { intStateTreeDepth, messageTreeSubDepth, messageTreeDepth, voteOptionTreeDepth } = await poll.treeDepths(); - expect(intStateTreeDepth).to.be.equal(treeDepths.intStateTreeDepth); - expect(messageTreeDepth).to.be.equal(treeDepths.messageTreeDepth); - expect(messageTreeSubDepth).to.be.equal(treeDepths.messageTreeSubDepth); - expect(voteOptionTreeDepth).to.be.equal(treeDepths.voteOptionTreeDepth); - - const [numSignUps, numMessages] = await poll.numSignUpsAndMessages(); - expect(numSignUps).to.be.equal(10); - expect(numMessages).to.be.equal(10); - - const [maxMessages, maxVoteOptions] = await poll.maxValues(); - expect(maxVoteOptions).to.be.equal(maxValues.maxVoteOptions); - expect(maxMessages).to.be.equal(maxValues.maxMessages); - - const [_messageBatchSize, _tallyBatchSize] = await poll.batchSizes(); - expect(_messageBatchSize).to.be.equal(messageBatchSize); - expect(_tallyBatchSize).to.be.equal(tallyBatchSize); - }); - - it("verify - merged state root is correct", async () => { - const mergedStateRootPoll = await poll.mergedStateRoot(); - const mergedStateRootMACI = await qfi.getStateAqRoot(); - const expectedStateTreeRoot = maciState.polls[0].maciStateRef.stateTree.root; - expect(mergedStateRootPoll).to.not.be.equal(BigNumber.from(0)); - expect(mergedStateRootMACI).to.not.be.equal(BigNumber.from(0)); - expect(expectedStateTreeRoot).to.not.be.equal(BigNumber.from(0)); - expect(mergedStateRootPoll).to.be.equal(mergedStateRootMACI); // MACI state root is the same as the poll state root - expect(mergedStateRootPoll).to.be.equal(expectedStateTreeRoot); // MACI state root is the same as the one calculated offchain - }); - - it("verify - sbCommitment is correct on pollProcessorAndTallyer", async () => { - const pptsbCommitment = await pollProcessorAndTallyer.sbCommitment(); - const expectedSbCommitment = maciNewSbCommitment; - expect(pptsbCommitment).to.not.be.equal(BigNumber.from(0)); - expect(expectedSbCommitment).to.not.be.equal(BigNumber.from(0)); - expect(pptsbCommitment).to.be.equal(expectedSbCommitment); // pollProcessorAndTallyer sbCommitment is the same as the one calculated offchain - }); - - it("verify - sbCommitment correct on poll", async () => { - const pollCurrentSbCommitment = await poll.currentSbCommitment(); - const pptsbCommitment = await pollProcessorAndTallyer.sbCommitment(); - const expectedSbCommitment = maciNewSbCommitment; - console.log(`poll_SbCommitment: ${pollCurrentSbCommitment}`); - console.log(`pollProcessorAndTallyer_SbCommitment: ${pptsbCommitment}`); - console.log(`expectedSbCommitment: ${expectedSbCommitment}`); - expect(pollCurrentSbCommitment).to.not.be.equal(BigNumber.from(0)); - expect(pptsbCommitment).to.not.be.equal(BigNumber.from(0)); - expect(expectedSbCommitment).to.not.be.equal(BigNumber.from(0)); - expect(pptsbCommitment).to.be.equal(expectedSbCommitment); - expect(pollCurrentSbCommitment).to.not.be.equal(pptsbCommitment); // poll sbCommitment is not the same as the one calculated on state - }); - - it("verify - merged message root is correct", async () => { - const mergedMessageRoot = await messageAq.getMainRoot(treeDepths.messageTreeDepth); - const expectedMessageTreeRoot = maciState.polls[0].messageTree.root; - expect(mergedMessageRoot).to.not.be.equal(BigNumber.from(0)); - expect(expectedMessageTreeRoot).to.not.be.equal(BigNumber.from(0)); - expect(mergedMessageRoot).to.be.equal(expectedMessageTreeRoot); // MACI message root is the same as the one calculated offchain - }); - - it("verify - tally commitment is correct", async () => { - const tallyCommitment = await pollProcessorAndTallyer.tallyCommitment(); - const expectedTallyCommitment = tallyFileData.newTallyCommitment; - expect(tallyCommitment).to.not.be.equal(BigNumber.from(0)); - expect(expectedTallyCommitment).to.not.be.equal(BigNumber.from(0)); - expect(tallyCommitment).to.be.equal(expectedTallyCommitment); // pollProcessorAndTallyer tallyCommitment is the same as the one calculated offchain - }); - - it.skip("TODO FIX - poll SHOULD verify total spent voice credits", async () => { - const { spent: _totalSpent, salt: _totalSpentSalt } = tallyFileData.totalSpentVoiceCredits; - - expect(await poll.verifySpentVoiceCredits(_totalSpent, _totalSpentSalt)).to.be.true; - }); - - it.skip("TODO FIX - poll SHOULD verifyTallyResult", async () => { - // Setup - const recipientIndex = 1; - const resultTree = new IncrementalQuinTree(treeDepths.voteOptionTreeDepth, BigInt(0), STATE_TREE_ARITY, hash5); - const perVOspentTree = new IncrementalQuinTree( treeDepths.voteOptionTreeDepth, BigInt(0), STATE_TREE_ARITY, hash5); // prettier-ignore - - for (const leaf of tallyFileData.results.tally) resultTree.insert(leaf); // insert resuls tally as leaves - for (const leaf of tallyFileData.perVOSpentVoiceCredits.tally) perVOspentTree.insert(leaf); // insert perVO spent as leaves - - const resultProof = resultTree.genMerklePath(recipientIndex); // generate merkle path for result - const spentProof = perVOspentTree.genMerklePath(recipientIndex); // generate merkle path for spent - - expect(resultTree.root).to.be.equal(resultProof.root); // verify result tree root - expect(perVOspentTree.root).to.be.equal(spentProof.root); // verify spent tree root - - // Calculate arguments - const _voteOptionIndex = recipientIndex; - const _tallyResult = tallyFileData.results.tally[recipientIndex]; // result of the recipient - const _tallyResultProof = resultProof.pathElements.map((x: any) => x.map((y: any) => y.toString())); // result proof as astring - const _spentVoiceCreditsHash = BigNumber.from( - hashLeftRight( - BigInt(tallyFileData.totalSpentVoiceCredits.spent), - BigInt(tallyFileData.totalSpentVoiceCredits.salt) - ).toString() - ).toString(); - const _perVOSpentVoiceCreditsHash = BigNumber.from( - hashLeftRight( - perVOspentTree.root, - BigInt(tallyFileData.perVOSpentVoiceCredits.salt)).toString() - ).toString(); // prettier-ignore - const _tallyCommitment = BigNumber.from(tallyFileData.newTallyCommitment).toString(); - - console.log(`_tallyResultProof: ${_tallyResultProof}`); - console.log(`_tallyResult: ${_tallyResult}`); - console.log(`_voteOptionIndex: ${_voteOptionIndex}`); - console.log(`_spentVoiceCreditsHash: ${_spentVoiceCreditsHash}`); - console.log(`_perVOSpentVoiceCreditsHash: ${_perVOSpentVoiceCreditsHash}`); - console.log(`_tallyCommitment: ${_tallyCommitment}`); - - // * @param _voteOptionIndex the index of the vote option to verify the correctness of the tally - // * @param _tallyResult Flattened array of the tally - // * @param _tallyResultProof Corresponding proof of the tally result - // * @param _tallyResultSalt the respective salt in the results object in the tally.json - // * @param _spentVoiceCreditsHash hashLeftRight(number of spent voice credits, spent salt) - // * @param _perVOSpentVoiceCreditsHash hashLeftRight(merkle root of the no spent voice credits per vote option, perVOSpentVoiceCredits salt) - // * @param _tallyCommitment newTallyCommitment field in the tally.json - expect( - await poll.verifyTallyResult( - _voteOptionIndex, - _tallyResult, - _tallyResultProof, - _spentVoiceCreditsHash, - _perVOSpentVoiceCreditsHash, - _tallyCommitment - ) - ).to.be.true; - }); - //TODO: fix broken tests once upstream maci decorator is fixed - it.skip("verify - poll contract can verifyPerVOSpentVoiceCredits", async () => { - const recipientIndex = 1; - - const perVOspentTree = new IncrementalQuinTree( treeDepths.voteOptionTreeDepth, BigInt(0), STATE_TREE_ARITY, hash5); // prettier-ignore - for (const leaf of tallyFileData.perVOSpentVoiceCredits.tally) perVOspentTree.insert(leaf); // insert tally as leaves - const spentProof = perVOspentTree.genMerklePath(recipientIndex); // generate merkle path for the spent voice credits - expect(perVOspentTree.root).to.be.equal(spentProof.root); // verify that the root of the tree is the same as the root of the merkle path - - const _voteOptionIndex = recipientIndex; - const _spent = tallyFileData.perVOSpentVoiceCredits.tally[recipientIndex]; // get the spent voice credits for the recipient - const _spentProof = spentProof.pathElements.map((x: any) => x.map((y: any) => y.toString())); // convert merkle path to string - const _spentSalt = tallyFileData.perVOSpentVoiceCredits.salt; // get salt from tally.json - - expect(await poll.verifyPerVOSpentVoiceCredits( - _voteOptionIndex, - _spent, - _spentProof, - _spentSalt - )).to.be.true; // prettier-ignore - }); - }); -}); diff --git a/packages/contracts/tests/Unit/FundsManager.ts b/packages/contracts/tests/Unit/FundsManager.ts deleted file mode 100644 index 144d293d..00000000 --- a/packages/contracts/tests/Unit/FundsManager.ts +++ /dev/null @@ -1,151 +0,0 @@ -import { ethers } from "hardhat"; -import chai from "chai"; -import { deployMockContract, MockContract, solidity } from "ethereum-waffle"; -import { ContractTransaction, Signer } from "ethers"; -import { FundsManager, FundsManager__factory, BaseERC20Token__factory } from "../../typechain"; - -chai.use(solidity); -const { expect } = chai; - -// Unit tests for Funds Manager smart contract. -describe("Funds Manager", () => { - // Signers. - let deployer: Signer; - let fundingSource: Signer; - let deployerAddress: string; - let fundingSourceAddress: string; - - // Funds Manager instance. - let fundsManager: FundsManager; - - // Mocked contracts. - let mockBaseERC20Token: MockContract; - - beforeEach(async () => { - // Get signers. - [deployer, fundingSource] = await ethers.getSigners(); - deployerAddress = await deployer.getAddress(); - fundingSourceAddress = await fundingSource.getAddress(); - - // Mocked contracts. - mockBaseERC20Token = await deployMockContract(deployer, BaseERC20Token__factory.abi); - - // nb. workaround due it's not possible to use Waffle library for linking libraries. - // ISSUE -> https://github.com/EthWorks/Waffle/issues/429. - const FundsManagerFactory = new FundsManager__factory(deployer); - - // Deploy Funds Manager. - fundsManager = await FundsManagerFactory.deploy(); - }); - - it("verify - initializes properly", async () => { - // Wait for the deploy tx. - const fundsManagerDeployTransaction: ContractTransaction = - fundsManager.deployTransaction; - const txReceipt = await fundsManagerDeployTransaction.wait(); - - expect(txReceipt.status).to.not.equal(0); - expect(txReceipt.contractAddress).to.equal(fundsManager.address); - }); - - it("verify - configured properly", async () => { - expect(await fundsManager.owner()).to.be.equal(deployerAddress); - }); - - describe("addFundingSource()", async () => { - it("allow to add a funding source", async () => { - await expect( - fundsManager.connect(deployer).addFundingSource(fundingSourceAddress) - ) - .to.emit(fundsManager, "FundingSourceAdded") - .withArgs(fundingSourceAddress); - }); - - it("revert - funding source already added", async () => { - // Add the funding source. - await expect( - fundsManager.connect(deployer).addFundingSource(fundingSourceAddress) - ) - .to.emit(fundsManager, "FundingSourceAdded") - .withArgs(fundingSourceAddress); - - // Should revert. - await expect( - fundsManager.connect(deployer).addFundingSource(fundingSourceAddress) - ).to.be.revertedWith("Factory: Funding source already added"); - }); - }); - - describe("removeFundingSource()", async () => { - it("allow to remove a funding source", async () => { - // Add. - await expect( - fundsManager.connect(deployer).addFundingSource(fundingSourceAddress) - ) - .to.emit(fundsManager, "FundingSourceAdded") - .withArgs(fundingSourceAddress); - - // Should remove. - await expect( - fundsManager.connect(deployer).removeFundingSource(fundingSourceAddress) - ) - .to.emit(fundsManager, "FundingSourceRemoved") - .withArgs(fundingSourceAddress); - }); - - it("revert - funding source not found", async () => { - // Should revert. - await expect( - fundsManager.connect(deployer).removeFundingSource(fundingSourceAddress) - ).to.be.revertedWith("Factory: Funding source not found"); - }); - }); - - describe("getMatchingFunds()", async () => { - // Expected values. - const fundingAmount = 100; - const expectedMatchingPoolSizeNoFundingSources = 100; - const expectedMatchingPoolSizeWithFundingSources = 200; - - it("allow to retrieve the total amount of matching funds when there are no funding sources", async () => { - // Mocks. - await mockBaseERC20Token.mock.balanceOf - .withArgs(fundsManager.address) - .returns(expectedMatchingPoolSizeNoFundingSources); - - const matchingPoolSize = await fundsManager.getMatchingFunds( - mockBaseERC20Token.address - ); - - expect(Number(matchingPoolSize)).to.be.equal( - expectedMatchingPoolSizeNoFundingSources - ); - }); - - it("allow to retrieve the total amount of matching funds when there are other funding sources", async () => { - // Add funding source. - await fundsManager - .connect(deployer) - .addFundingSource(fundingSourceAddress); - - // Mocks. - await mockBaseERC20Token.mock.balanceOf - .withArgs(fundsManager.address) - .returns(expectedMatchingPoolSizeNoFundingSources); - await mockBaseERC20Token.mock.allowance - .withArgs(fundingSourceAddress, fundsManager.address) - .returns(fundingAmount); - await mockBaseERC20Token.mock.balanceOf - .withArgs(fundingSourceAddress) - .returns(fundingAmount); - - const matchingPoolSize = await fundsManager.getMatchingFunds( - mockBaseERC20Token.address - ); - - expect(Number(matchingPoolSize)).to.be.equal( - expectedMatchingPoolSizeWithFundingSources - ); - }); - }); -}); diff --git a/packages/contracts/tests/Unit/GrantRound.ts b/packages/contracts/tests/Unit/GrantRound.ts deleted file mode 100644 index f254979f..00000000 --- a/packages/contracts/tests/Unit/GrantRound.ts +++ /dev/null @@ -1,1428 +0,0 @@ -import { ethers } from "hardhat"; -import chai from "chai"; -import { deployContract, solidity } from "ethereum-waffle"; -import { Signer, ContractTransaction, BigNumberish, constants } from "ethers"; -import { - deployMockContract, - MockContract, -} from "@ethereum-waffle/mock-contract"; -import { - GrantRound, - GrantRound__factory, - PoseidonT3__factory, - PoseidonT4__factory, - PoseidonT5__factory, - PoseidonT6__factory, - BaseERC20Token__factory, - VkRegistry__factory, - OptimisticRecipientRegistry__factory, - QFI__factory, - AccQueue__factory, - AccQueueQuinaryBlankSl__factory -} from "../../typechain"; -import { Command, Keypair } from "qaci-domainobjs"; -import { MessageStruct } from "../../typechain/GrantRound"; -import { hash4, hash5 } from "qaci-crypto"; - -chai.use(solidity); -const { expect } = chai; - -// Unit tests for Grant Round smart contract. -describe("Grant Round", () => { - // Signers. - let deployer: Signer; - let voter: Signer; - let voterAddress: string; - let recipient: Signer; - let recipientAddress: string; - const voterMaciKeypair = new Keypair(); - let coordinator: Signer; - let coordinatorAddress: string; - const coordinatorMaciPublicKey = new Keypair().pubKey; - - // Grant Round instance. - let grantRound: GrantRound; - - // Mock contracts. - let mockBaseERC20Token: MockContract; - let mockVkRegistry: MockContract; - let mockRecipientRegistry: MockContract; - let mockQfi: MockContract; - let mockMessageAq: MockContract; - let mockMaciStateAq: MockContract; - - // Pre-computed data. - const decimals = 5; - const voiceCreditFactor = - (BigInt(10 ** 4) * BigInt(10 ** decimals)) / BigInt(10 ** 9); - - // Input parameters for GrantRound methods. - // Deploy Grant Round. - const duration = 300; - const maxValues = { - maxMessages: 25, - maxVoteOptions: 25, - }; - const treeDepths = { - intStateTreeDepth: 2, - messageTreeDepth: 2, - messageTreeSubDepth: 2, - voteOptionTreeDepth: 2, - }; - const defaultMessageTreeArity = 5; - const defaultStateTreeArity = 5; - const batchSizes = { - messageBatchSize: defaultMessageTreeArity ** treeDepths.messageTreeSubDepth, - tallyBatchSize: defaultStateTreeArity ** treeDepths.intStateTreeDepth, - }; - let extContracts: { - vkRegistry: string; - maci: string; - messageAq: string; - }; - // Messages. - let message: MessageStruct; - let hashMessangeAndEncPubKey: BigInt; - // Finalize. - // TODO: we need the correct totalSpent and totalSpentSalt values. There's a known bug about - // the verifySpentVoiceCredits() method. So, just for now let's make test fail w/ some random values - // because we are on Grant Round contract and we cannot mock these values. - const tallyResults = { - totalSpent: 9, - totalSpentSalt: BigInt(999999999999), - }; - - beforeEach(async () => { - // Get signers. - [deployer, voter, coordinator, recipient] = await ethers.getSigners(); - voterAddress = await voter.getAddress(); - coordinatorAddress = await coordinator.getAddress(); - recipientAddress = await recipient.getAddress(); - - // Mocked contracts. - mockBaseERC20Token = await deployMockContract(deployer, BaseERC20Token__factory.abi); - mockRecipientRegistry = await deployMockContract( - deployer, - OptimisticRecipientRegistry__factory.abi - ); - mockQfi = await deployMockContract(deployer, QFI__factory.abi); - mockMessageAq = await deployMockContract(deployer, AccQueue__factory.abi); - mockVkRegistry = await deployMockContract(deployer, VkRegistry__factory.abi); - mockMaciStateAq = await deployMockContract( - deployer, - AccQueueQuinaryBlankSl__factory.abi - ); - - // External contracts for Grant Round. - extContracts = { - vkRegistry: mockVkRegistry.address, - maci: mockQfi.address, - messageAq: mockMessageAq.address, - }; - - // Poseidon libraries. - const poseidonT3 = await deployContract(deployer, PoseidonT3__factory, []); - const poseidonT4 = await deployContract(deployer, PoseidonT4__factory, []); - const poseidonT5 = await deployContract(deployer, PoseidonT5__factory, []); - const poseidonT6 = await deployContract(deployer, PoseidonT6__factory, []); - - // nb. workaround due it's not possible to use Waffle library for linking libraries. - // ISSUE -> https://github.com/EthWorks/Waffle/issues/429. - const GrantRoundFactory = new GrantRound__factory( - { - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT5"]: - poseidonT5.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT3"]: - poseidonT3.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT6"]: - poseidonT6.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT4"]: - poseidonT4.address, - }, - deployer - ); - - // Deploy Grant Round. - grantRound = await GrantRoundFactory.deploy( - voiceCreditFactor, - coordinatorAddress, - mockBaseERC20Token.address, - duration, - maxValues, - treeDepths, - batchSizes, - coordinatorMaciPublicKey.asContractParam(), - extContracts, - mockRecipientRegistry.address - ); - }); - - it("verify - initializes properly", async () => { - // Wait for the deploy tx. - const grantRoundDeployTransaction: ContractTransaction = - grantRound.deployTransaction; - const txReceipt = await grantRoundDeployTransaction.wait(); - - expect(txReceipt.status).to.not.equal(0); - expect(txReceipt.contractAddress).to.equal(grantRound.address); - }); - - it("verify - configured properly", async () => { - // Check state (inherited from Poll.sol too). - expect(await grantRound.voiceCreditFactor()).to.be.equal( - (BigInt(10 ** 4) * BigInt(10 ** decimals)) / BigInt(10 ** 9) - ); - expect(await grantRound.coordinator()).to.be.equal(coordinatorAddress); - expect(await grantRound.nativeToken()).to.be.equal( - mockBaseERC20Token.address - ); - expect(await grantRound.recipientRegistry()).to.be.equal( - mockRecipientRegistry.address - ); - expect(await grantRound.isCancelled()).to.be.false; - expect(await grantRound.isFinalized()).to.be.false; - expect(await grantRound.tallyHash()).to.be.empty; - expect(await grantRound.totalSpent()).to.be.equal(BigInt(0)); - expect(await grantRound.totalVotes()).to.be.equal(BigInt(0)); - expect(await grantRound.matchingPoolSize()).to.be.equal(BigInt(0)); - - expect((await grantRound.coordinatorPubKey()).x).to.be.equal( - coordinatorMaciPublicKey.asContractParam().x - ); - expect((await grantRound.coordinatorPubKey()).y).to.be.equal( - coordinatorMaciPublicKey.asContractParam().y - ); - expect(await grantRound.mergedStateRoot()).to.be.equal(BigInt(0)); - expect(await grantRound.coordinatorPubKeyHash()).to.be.equal( - coordinatorMaciPublicKey.hash() - ); - expect(await grantRound.stateAqMerged()).to.be.equal(false); - expect(await grantRound.currentSbCommitment()).to.be.equal(BigInt(0)); - expect((await grantRound.maxValues()).maxMessages).to.be.equal( - maxValues.maxMessages - ); - expect((await grantRound.maxValues()).maxVoteOptions).to.be.equal( - maxValues.maxVoteOptions - ); - expect((await grantRound.treeDepths()).intStateTreeDepth).to.be.equal( - treeDepths.intStateTreeDepth - ); - expect((await grantRound.treeDepths()).messageTreeDepth).to.be.equal( - treeDepths.messageTreeDepth - ); - expect((await grantRound.treeDepths()).voteOptionTreeDepth).to.be.equal( - treeDepths.voteOptionTreeDepth - ); - expect((await grantRound.treeDepths()).messageTreeSubDepth).to.be.equal( - treeDepths.messageTreeSubDepth - ); - expect((await grantRound.batchSizes()).messageBatchSize).to.be.equal( - batchSizes.messageBatchSize - ); - expect((await grantRound.batchSizes()).tallyBatchSize).to.be.equal( - batchSizes.tallyBatchSize - ); - expect((await grantRound.extContracts()).vkRegistry).to.be.equal( - extContracts.vkRegistry - ); - expect((await grantRound.extContracts()).maci).to.be.equal( - extContracts.maci - ); - expect((await grantRound.extContracts()).messageAq).to.be.equal( - extContracts.messageAq - ); - }); - - describe("publishMessageBatch()", async () => { - beforeEach(async () => { - // Message generation. - const command = new Command( - BigInt(1), - voterMaciKeypair.pubKey, - BigInt(0), - BigInt(9), - BigInt(1), - BigInt(0), - BigInt(0) - ); - const signature = command.sign(voterMaciKeypair.privKey); - const sharedKey = Keypair.genEcdhSharedKey( - voterMaciKeypair.privKey, - coordinatorMaciPublicKey - ); - const encMessage = command.encrypt(signature, sharedKey); - message = encMessage.asContractParam(); - - // Hash message and public key (necessary for mock). - // nb. can be calculated for one message because the batch is composed of three instances of the same message. - const n: any[] = []; - const m: any[] = []; - - n.push(message.data[0]); - n.push(message.data[1]); - n.push(message.data[2]); - n.push(message.data[3]); - n.push(message.data[4]); - - m.push(message.data[5]); - m.push(message.data[6]); - m.push(message.data[7]); - m.push(message.data[8]); - m.push(message.data[9]); - - hashMessangeAndEncPubKey = hash4([ - hash5(n), - hash5(m), - BigInt(coordinatorMaciPublicKey.asContractParam().x), - BigInt(coordinatorMaciPublicKey.asContractParam().y), - ]); - }); - - it("allow a signed user to publish a batch of messages (vote)", async () => { - // Mocks. - // nb. in this case the return from enqueue() it is not useful. - await mockMessageAq.mock.enqueue - .withArgs(hashMessangeAndEncPubKey) - .returns(0); - - await expect( - grantRound - .connect(voter) - .publishMessageBatch( - [message, message, message], - [ - coordinatorMaciPublicKey.asContractParam(), - coordinatorMaciPublicKey.asContractParam(), - coordinatorMaciPublicKey.asContractParam(), - ] - ) - ) - .to.emit(grantRound, "PublishMessage") - .to.emit(grantRound, "PublishMessage") - .to.emit(grantRound, "PublishMessage") - .to.emit(grantRound, "Voted") - .withArgs(voterAddress); - }); - - it("revert - voting period passed", async () => { - // Directly manage for expiring the voting period. - const deployTD = await grantRound.getDeployTimeAndDuration(); - const expectedTime = deployTD[1].add(deployTD[0]).toNumber(); - expect((await ethers.provider.getBlock("latest")).timestamp).to.be.lt( - expectedTime - ); - - await ethers.provider.send("evm_increaseTime", [Number(deployTD[1]) + 1]); - await ethers.provider.send("evm_mine", []); - - expect((await ethers.provider.getBlock("latest")).timestamp).to.be.gt( - expectedTime - ); - - await expect( - grantRound - .connect(voter) - .publishMessageBatch( - [message], - [coordinatorMaciPublicKey.asContractParam()] - ) - ).to.be.revertedWith("PollE03"); - }); - - it("revert - max number of messages reached", async () => { - // Mocks. - await mockMessageAq.mock.enqueue - .withArgs(hashMessangeAndEncPubKey) - .returns(0); - - for (let i = 0; i <= maxValues.maxMessages; i++) { - await grantRound - .connect(voter) - .publishMessageBatch( - [message], - [coordinatorMaciPublicKey.asContractParam()] - ); - } - - // Should revert the message number maxMessage + 1. - await expect( - grantRound - .connect(voter) - .publishMessageBatch( - [message], - [coordinatorMaciPublicKey.asContractParam()] - ) - ).to.be.revertedWith("PollE06"); - }); - - it("revert - invalid MACI public key", async () => { - const badContributorMaciPubKey = { - x: "21888242871839275222246405745257275088548364400416034343698204186575808495617", - y: "0", // < SNARK_SCALAR_FIELD - }; - - await expect( - grantRound - .connect(voter) - .publishMessageBatch([message], [badContributorMaciPubKey]) - ).to.be.revertedWith("PollE05"); - }); - }); - - describe("publishTallyHash()", async () => { - // Input parameters. - const dummyTallyHash = "0xabcd"; - - it("allow the coordinator to publish the IPFS tally hash", async () => { - await expect( - grantRound.connect(coordinator).publishTallyHash(dummyTallyHash) - ) - .to.emit(grantRound, "TallyPublished") - .withArgs(dummyTallyHash); - - expect(await grantRound.tallyHash()).to.be.equal(dummyTallyHash); - }); - - it("revert - sender is not the grant round coordinator", async () => { - await expect( - grantRound.connect(deployer).publishTallyHash(dummyTallyHash) - ).to.be.revertedWith("GrantRound: Sender is not the coordinator"); - }); - - //TODO: To be checked after grant round finalization. - it.skip("revert - grant round finalized", async () => { - await expect( - grantRound.connect(coordinator).publishTallyHash(dummyTallyHash) - ).to.be.revertedWith("GrantRound: Round finalized"); - }); - - it("revert - provided tally hash is an empty string", async () => { - await expect( - grantRound.connect(coordinator).publishTallyHash("") - ).to.be.revertedWith("GrantRound: Tally hash is empty string"); - }); - }); - - describe("finalize()", async () => { - //TODO: fix broken test and merge maci verifier bugfix - it.skip("allow owner to finalize the grant round", async () => { - await mockMessageAq.mock.enqueue - .withArgs(hashMessangeAndEncPubKey) - .returns(0); - - await expect( - grantRound - .connect(voter) - .publishMessage(message, coordinatorMaciPublicKey.asContractParam()) - ).to.emit(grantRound, "PublishMessage"); - - // Directly manage for expiring the voting period. - const deployTD = await grantRound.getDeployTimeAndDuration(); - await ethers.provider.send("evm_increaseTime", [Number(deployTD[1]) + 1]); - await ethers.provider.send("evm_mine", []); - - // Mocks for trees merge. - await mockMessageAq.mock.mergeSubRoots.withArgs(0).returns(); - await mockMessageAq.mock.merge - .withArgs(treeDepths.messageTreeDepth) - .returns(0); - await mockQfi.mock.stateAq.withArgs().returns(mockMaciStateAq.address); - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(false); - await mockQfi.mock.mergeStateAqSubRoots.withArgs(0, 0).returns(); - - await grantRound.mergeMessageAqSubRoots(0); - await grantRound.mergeMessageAq(); - await grantRound.mergeMaciStateAqSubRoots(0, 0); - - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(true); - await mockQfi.mock.mergeStateAq.withArgs(0).returns(1); - await mockQfi.mock.getStateAqRoot.withArgs().returns(1); - - await grantRound.mergeMaciStateAq(0); - - // Publish tally hash. - const dummyTallyHash = "0xabcd"; - await expect( - grantRound.connect(coordinator).publishTallyHash(dummyTallyHash) - ) - .to.emit(grantRound, "TallyPublished") - .withArgs(dummyTallyHash); - - // Mocks. - const dummyBalance = 100; - await mockBaseERC20Token.mock.balanceOf - .withArgs(grantRound.address) - .returns(dummyBalance); - - await grantRound - .connect(deployer) - .finalize(tallyResults.totalSpent, tallyResults.totalSpentSalt); - - expect(await grantRound.isFinalized()).to.be.true; - expect(await grantRound.totalSpent()).to.be.equal( - tallyResults.totalSpent - ); - expect(await grantRound.matchingPoolSize()).to.be.equal( - BigInt(dummyBalance) - - BigInt(tallyResults.totalSpent) * voiceCreditFactor - ); - }); - - it("revert - sender is not the owner", async () => { - await expect( - grantRound - .connect(coordinator) - .finalize(tallyResults.totalSpent, tallyResults.totalSpentSalt) - ).to.be.revertedWith("Ownable: caller is not the owner"); - }); - - it("revert - cannot finalize after voting deadline", async () => { - await expect( - grantRound - .connect(deployer) - .finalize(tallyResults.totalSpent, tallyResults.totalSpentSalt) - ).to.be.revertedWith("PollE04"); - }); - //TODO: fix broken test and merge maci verifier bugfix - it.skip("revert - grant round already finalized", async () => { - await mockMessageAq.mock.enqueue - .withArgs(hashMessangeAndEncPubKey) - .returns(0); - - await expect( - grantRound - .connect(voter) - .publishMessage(message, coordinatorMaciPublicKey.asContractParam()) - ).to.emit(grantRound, "PublishMessage"); - - // Directly manage for expiring the voting period. - const deployTD = await grantRound.getDeployTimeAndDuration(); - await ethers.provider.send("evm_increaseTime", [Number(deployTD[1]) + 1]); - await ethers.provider.send("evm_mine", []); - - // Mocks for trees merge. - await mockMessageAq.mock.mergeSubRoots.withArgs(0).returns(); - await mockMessageAq.mock.merge - .withArgs(treeDepths.messageTreeDepth) - .returns(0); - await mockQfi.mock.stateAq.withArgs().returns(mockMaciStateAq.address); - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(false); - await mockQfi.mock.mergeStateAqSubRoots.withArgs(0, 0).returns(); - - await grantRound.mergeMessageAqSubRoots(0); - await grantRound.mergeMessageAq(); - await grantRound.mergeMaciStateAqSubRoots(0, 0); - - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(true); - await mockQfi.mock.mergeStateAq.withArgs(0).returns(1); - await mockQfi.mock.getStateAqRoot.withArgs().returns(1); - - await grantRound.mergeMaciStateAq(0); - - // Publish tally hash. - const dummyTallyHash = "0xabcd"; - await expect( - grantRound.connect(coordinator).publishTallyHash(dummyTallyHash) - ) - .to.emit(grantRound, "TallyPublished") - .withArgs(dummyTallyHash); - - // Mocks. - const dummyBalance = 100; - await mockBaseERC20Token.mock.balanceOf - .withArgs(grantRound.address) - .returns(dummyBalance); - - await grantRound - .connect(deployer) - .finalize(tallyResults.totalSpent, tallyResults.totalSpentSalt); - - expect(await grantRound.isFinalized()).to.be.true; - expect(await grantRound.totalSpent()).to.be.equal( - tallyResults.totalSpent - ); - expect(await grantRound.matchingPoolSize()).to.be.equal( - BigInt(dummyBalance) - - BigInt(tallyResults.totalSpent) * voiceCreditFactor - ); - - // Should revert. - await expect( - grantRound - .connect(deployer) - .finalize(tallyResults.totalSpent, tallyResults.totalSpentSalt) - ).to.be.revertedWith("GrantRound: Already finalized"); - }); - - it("revert - stateAq not merged", async () => { - // Directly manage for expiring the voting period. - const deployTD = await grantRound.getDeployTimeAndDuration(); - await ethers.provider.send("evm_increaseTime", [Number(deployTD[1]) + 1]); - await ethers.provider.send("evm_mine", []); - - await expect( - grantRound - .connect(deployer) - .finalize(tallyResults.totalSpent, tallyResults.totalSpentSalt) - ).to.be.revertedWith("GrantRound: State AQ not merged"); - }); - - it("revert - tally hash not published", async () => { - // Directly manage for expiring the voting period. - const deployTD = await grantRound.getDeployTimeAndDuration(); - await ethers.provider.send("evm_increaseTime", [Number(deployTD[1]) + 1]); - await ethers.provider.send("evm_mine", []); - - // Mocks for trees merge. - await mockMessageAq.mock.mergeSubRoots.withArgs(0).returns(); - await mockMessageAq.mock.merge - .withArgs(treeDepths.messageTreeDepth) - .returns(0); - await mockQfi.mock.stateAq.withArgs().returns(mockMaciStateAq.address); - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(false); - await mockQfi.mock.mergeStateAqSubRoots.withArgs(0, 0).returns(); - - await grantRound.mergeMessageAqSubRoots(0); - await grantRound.mergeMessageAq(); - await grantRound.mergeMaciStateAqSubRoots(0, 0); - - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(true); - await mockQfi.mock.mergeStateAq.withArgs(0).returns(1); - await mockQfi.mock.getStateAqRoot.withArgs().returns(1); - - await grantRound.mergeMaciStateAq(0); - - await expect( - grantRound - .connect(deployer) - .finalize(tallyResults.totalSpent, tallyResults.totalSpentSalt) - ).to.be.revertedWith("GrantRound: Tally hash has not been published"); - }); - - it("revert - no votes", async () => { - // Directly manage for expiring the voting period. - const deployTD = await grantRound.getDeployTimeAndDuration(); - await ethers.provider.send("evm_increaseTime", [Number(deployTD[1]) + 1]); - await ethers.provider.send("evm_mine", []); - - // Mocks for trees merge. - await mockMessageAq.mock.mergeSubRoots.withArgs(0).returns(); - await mockMessageAq.mock.merge - .withArgs(treeDepths.messageTreeDepth) - .returns(0); - await mockQfi.mock.stateAq.withArgs().returns(mockMaciStateAq.address); - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(false); - await mockQfi.mock.mergeStateAqSubRoots.withArgs(0, 0).returns(); - - await grantRound.mergeMessageAqSubRoots(0); - await grantRound.mergeMessageAq(); - await grantRound.mergeMaciStateAqSubRoots(0, 0); - - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(true); - await mockQfi.mock.mergeStateAq.withArgs(0).returns(1); - await mockQfi.mock.getStateAqRoot.withArgs().returns(1); - - await grantRound.mergeMaciStateAq(0); - - // Publish tally hash. - const dummyTallyHash = "0xabcd"; - await expect( - grantRound.connect(coordinator).publishTallyHash(dummyTallyHash) - ) - .to.emit(grantRound, "TallyPublished") - .withArgs(dummyTallyHash); - - await expect( - grantRound - .connect(deployer) - .finalize(tallyResults.totalSpent, tallyResults.totalSpentSalt) - ).to.be.revertedWith("GrantRound: No votes"); - }); - - it("revert - incorrect total amount of spent voice credits", async () => { - await mockMessageAq.mock.enqueue - .withArgs(hashMessangeAndEncPubKey) - .returns(0); - - await expect( - grantRound - .connect(voter) - .publishMessage(message, coordinatorMaciPublicKey.asContractParam()) - ).to.emit(grantRound, "PublishMessage"); - - // Directly manage for expiring the voting period. - const deployTD = await grantRound.getDeployTimeAndDuration(); - await ethers.provider.send("evm_increaseTime", [Number(deployTD[1]) + 1]); - await ethers.provider.send("evm_mine", []); - - // Mocks for trees merge. - await mockMessageAq.mock.mergeSubRoots.withArgs(0).returns(); - await mockMessageAq.mock.merge - .withArgs(treeDepths.messageTreeDepth) - .returns(0); - await mockQfi.mock.stateAq.withArgs().returns(mockMaciStateAq.address); - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(false); - await mockQfi.mock.mergeStateAqSubRoots.withArgs(0, 0).returns(); - - await grantRound.mergeMessageAqSubRoots(0); - await grantRound.mergeMessageAq(); - await grantRound.mergeMaciStateAqSubRoots(0, 0); - - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(true); - await mockQfi.mock.mergeStateAq.withArgs(0).returns(1); - await mockQfi.mock.getStateAqRoot.withArgs().returns(1); - - await grantRound.mergeMaciStateAq(0); - - // Publish tally hash. - const dummyTallyHash = "0xabcd"; - await expect( - grantRound.connect(coordinator).publishTallyHash(dummyTallyHash) - ) - .to.emit(grantRound, "TallyPublished") - .withArgs(dummyTallyHash); - - // Mocks. - const dummyBalance = 100; - await mockBaseERC20Token.mock.balanceOf - .withArgs(grantRound.address) - .returns(dummyBalance); - - await expect( - grantRound - .connect(deployer) - .finalize(tallyResults.totalSpent, tallyResults.totalSpentSalt) - ).to.be.revertedWith( - "GrantRound: Incorrect total amount of spent voice credits" - ); - }); - }); - - describe("cancel()", async () => { - it("allow owner to cancel the grant round", async () => { - await expect(grantRound.connect(deployer).cancel()) - .to.emit(grantRound, "GrantRoundCancelled") - .withArgs(true, true); - - expect(await grantRound.isFinalized()).to.be.true; - expect(await grantRound.isCancelled()).to.be.true; - }); - - it("revert - sender is not owner", async () => { - await expect(grantRound.connect(coordinator).cancel()).to.be.revertedWith( - "Ownable: caller is not the owner" - ); - }); - - it("revert - grant round already finalized", async () => { - await expect(grantRound.connect(deployer).cancel()) - .to.emit(grantRound, "GrantRoundCancelled") - .withArgs(true, true); - - expect(await grantRound.isFinalized()).to.be.true; - expect(await grantRound.isCancelled()).to.be.true; - - // Should revert. - await expect(grantRound.connect(deployer).cancel()).to.be.revertedWith( - "GrantRound: Already finalized" - ); - }); - - it("revert - cannot cancel grant round twice", async () => { - await expect(grantRound.connect(deployer).cancel()) - .to.emit(grantRound, "GrantRoundCancelled") - .withArgs(true, true); - - expect(await grantRound.isFinalized()).to.be.true; - expect(await grantRound.isCancelled()).to.be.true; - - await expect(grantRound.connect(deployer).cancel()).to.be.revertedWith( - "GrantRound: Already finalized" - ); - }); - }); - - describe("getAllocatedAmount()", async () => { - const dummyTallyResult = 1; - const dummyTotalVotes = 1; - const dummySpentVoiceCredits = 1; - - // TODO: seems that the state variable totalVotes is never changed, so causing a zero div. - // (maybe open a new issue?) - it.skip("allow anyone to retrieve the allocated token amount (without verification)", async () => { - // Need to finalize to avoid matchingPoolSize equal 0 (invalid opcode). - await mockMessageAq.mock.enqueue - .withArgs(hashMessangeAndEncPubKey) - .returns(0); - - await expect( - grantRound - .connect(voter) - .publishMessage(message, coordinatorMaciPublicKey.asContractParam()) - ).to.emit(grantRound, "PublishMessage"); - - // Directly manage for expiring the voting period. - const deployTD = await grantRound.getDeployTimeAndDuration(); - await ethers.provider.send("evm_increaseTime", [Number(deployTD[1]) + 1]); - await ethers.provider.send("evm_mine", []); - - // Mocks for trees merge. - await mockMessageAq.mock.mergeSubRoots.withArgs(0).returns(); - await mockMessageAq.mock.merge - .withArgs(treeDepths.messageTreeDepth) - .returns(0); - await mockQfi.mock.stateAq.withArgs().returns(mockMaciStateAq.address); - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(false); - await mockQfi.mock.mergeStateAqSubRoots.withArgs(0, 0).returns(); - - await grantRound.mergeMessageAqSubRoots(0); - await grantRound.mergeMessageAq(); - await grantRound.mergeMaciStateAqSubRoots(0, 0); - - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(true); - await mockQfi.mock.mergeStateAq.withArgs(0).returns(1); - await mockQfi.mock.getStateAqRoot.withArgs().returns(1); - - await grantRound.mergeMaciStateAq(0); - - // Publish tally hash. - const dummyTallyHash = "0xabcd"; - await expect( - grantRound.connect(coordinator).publishTallyHash(dummyTallyHash) - ) - .to.emit(grantRound, "TallyPublished") - .withArgs(dummyTallyHash); - - // Mocks. - const dummyBalance = 100; - await mockBaseERC20Token.mock.balanceOf - .withArgs(grantRound.address) - .returns(dummyBalance); - - await grantRound - .connect(deployer) - .finalize(tallyResults.totalSpent, tallyResults.totalSpentSalt); - - expect(await grantRound.isFinalized()).to.be.true; - expect(await grantRound.totalSpent()).to.be.equal( - tallyResults.totalSpent - ); - expect(await grantRound.matchingPoolSize()).to.be.equal( - BigInt(dummyBalance) - - BigInt(tallyResults.totalSpent) * voiceCreditFactor - ); - - expect( - Number( - await grantRound.getAllocatedAmount( - dummyTallyResult, - dummySpentVoiceCredits - ) - ) - ).to.be.equal( - (Number(await grantRound.matchingPoolSize()) * dummyTallyResult) / - dummyTotalVotes + - dummySpentVoiceCredits * Number(voiceCreditFactor) - ); - }); - }); - - describe("claimFunds()", async () => { - // Input parameters. - const voteOptionIndex = 1; - const dummyTallyResult = 1; - const dummyTallyResultProof: [ - BigNumberish[], - BigNumberish[], - BigNumberish[], - BigNumberish[], - BigNumberish[], - BigNumberish[], - BigNumberish[], - BigNumberish[] - ] = [ - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - ]; - const dummySpentVoiceCreditsHash: BigNumberish = 1; - const dummyPerVOSpentVoiceCreditsHash: BigNumberish = 1; - const dummyTallyCommitment: BigNumberish = 1; - const dummySpent: BigNumberish = 1; - const dummySpentProof: [ - BigNumberish[], - BigNumberish[], - BigNumberish[], - BigNumberish[], - BigNumberish[], - BigNumberish[], - BigNumberish[], - BigNumberish[] - ] = [ - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0], - ]; - const dummySpentSalt: BigNumberish = 1; - - // TODO: seems that verifyTallyResult() and verifyPerVOSpentVoiceCredits() seems to always return false. - // (maybe open a new issue?) - it.skip("allow a recipient to claim the funds", async () => { - await mockMessageAq.mock.enqueue - .withArgs(hashMessangeAndEncPubKey) - .returns(0); - - await expect( - grantRound - .connect(voter) - .publishMessage(message, coordinatorMaciPublicKey.asContractParam()) - ).to.emit(grantRound, "PublishMessage"); - - // Directly manage for expiring the voting period. - let deployTD = await grantRound.getDeployTimeAndDuration(); - await ethers.provider.send("evm_increaseTime", [Number(deployTD[1]) + 1]); - await ethers.provider.send("evm_mine", []); - - // Mocks for trees merge. - await mockMessageAq.mock.mergeSubRoots.withArgs(0).returns(); - await mockMessageAq.mock.merge - .withArgs(treeDepths.messageTreeDepth) - .returns(0); - await mockQfi.mock.stateAq.withArgs().returns(mockMaciStateAq.address); - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(false); - await mockQfi.mock.mergeStateAqSubRoots.withArgs(0, 0).returns(); - - await grantRound.mergeMessageAqSubRoots(0); - await grantRound.mergeMessageAq(); - await grantRound.mergeMaciStateAqSubRoots(0, 0); - - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(true); - await mockQfi.mock.mergeStateAq.withArgs(0).returns(1); - await mockQfi.mock.getStateAqRoot.withArgs().returns(1); - - await grantRound.mergeMaciStateAq(0); - - // Publish tally hash. - const dummyTallyHash = "0xabcd"; - await expect( - grantRound.connect(coordinator).publishTallyHash(dummyTallyHash) - ) - .to.emit(grantRound, "TallyPublished") - .withArgs(dummyTallyHash); - - // Mocks. - const dummyBalance = 100; - await mockBaseERC20Token.mock.balanceOf - .withArgs(grantRound.address) - .returns(dummyBalance); - - await grantRound - .connect(deployer) - .finalize(tallyResults.totalSpent, tallyResults.totalSpentSalt); - - expect(await grantRound.isFinalized()).to.be.true; - expect(await grantRound.totalSpent()).to.be.equal( - tallyResults.totalSpent - ); - expect(await grantRound.matchingPoolSize()).to.be.equal( - BigInt(dummyBalance) - - BigInt(tallyResults.totalSpent) * voiceCreditFactor - ); - - // Mocks. - deployTD = await grantRound.getDeployTimeAndDuration(); - await mockRecipientRegistry.mock.getRecipientAddress - .withArgs( - voteOptionIndex, - deployTD[0], - Number(deployTD[0]) + Number(deployTD[1]) - ) - .returns(recipientAddress); - const allocatedAmount = await grantRound - .connect(recipient) - .getAllocatedAmount(dummyTallyResult, dummySpent); - await mockBaseERC20Token.mock.transfer - .withArgs(recipientAddress, allocatedAmount) - .returns(true); - - await expect( - grantRound - .connect(recipient) - .claimFunds( - voteOptionIndex, - dummyTallyResult, - dummyTallyResultProof, - dummySpentVoiceCreditsHash, - dummyPerVOSpentVoiceCreditsHash, - dummyTallyCommitment, - dummySpent, - dummySpentProof, - dummySpentSalt - ) - ) - .to.emit(grantRound, "FundsClaimed") - .withArgs(recipientAddress, voteOptionIndex, allocatedAmount); - }); - //TODO: fix broken test and merge maci verifier bugfix - it.skip("allow to send funds back to the matching pool if recipient address is zero", async () => { - await mockMessageAq.mock.enqueue - .withArgs(hashMessangeAndEncPubKey) - .returns(0); - - await expect( - grantRound - .connect(voter) - .publishMessage(message, coordinatorMaciPublicKey.asContractParam()) - ).to.emit(grantRound, "PublishMessage"); - - // Directly manage for expiring the voting period. - let deployTD = await grantRound.getDeployTimeAndDuration(); - await ethers.provider.send("evm_increaseTime", [Number(deployTD[1]) + 1]); - await ethers.provider.send("evm_mine", []); - - // Mocks for trees merge. - await mockMessageAq.mock.mergeSubRoots.withArgs(0).returns(); - await mockMessageAq.mock.merge - .withArgs(treeDepths.messageTreeDepth) - .returns(0); - await mockQfi.mock.stateAq.withArgs().returns(mockMaciStateAq.address); - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(false); - await mockQfi.mock.mergeStateAqSubRoots.withArgs(0, 0).returns(); - - await grantRound.mergeMessageAqSubRoots(0); - await grantRound.mergeMessageAq(); - await grantRound.mergeMaciStateAqSubRoots(0, 0); - - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(true); - await mockQfi.mock.mergeStateAq.withArgs(0).returns(1); - await mockQfi.mock.getStateAqRoot.withArgs().returns(1); - - await grantRound.mergeMaciStateAq(0); - - // Publish tally hash. - const dummyTallyHash = "0xabcd"; - await expect( - grantRound.connect(coordinator).publishTallyHash(dummyTallyHash) - ) - .to.emit(grantRound, "TallyPublished") - .withArgs(dummyTallyHash); - - // Mocks. - const dummyBalance = 100; - await mockBaseERC20Token.mock.balanceOf - .withArgs(grantRound.address) - .returns(dummyBalance); - - await grantRound - .connect(deployer) - .finalize(tallyResults.totalSpent, tallyResults.totalSpentSalt); - - expect(await grantRound.isFinalized()).to.be.true; - expect(await grantRound.totalSpent()).to.be.equal( - tallyResults.totalSpent - ); - expect(await grantRound.matchingPoolSize()).to.be.equal( - BigInt(dummyBalance) - - BigInt(tallyResults.totalSpent) * voiceCreditFactor - ); - - // Mocks. - deployTD = await grantRound.getDeployTimeAndDuration(); - await mockRecipientRegistry.mock.getRecipientAddress - .withArgs( - voteOptionIndex, - deployTD[0], - Number(deployTD[0]) + Number(deployTD[1]) - ) - .returns(constants.AddressZero); - const allocatedAmount = await grantRound - .connect(recipient) - .getAllocatedAmount(dummyTallyResult, dummySpent); - const newRecipient = await grantRound.owner(); - await mockBaseERC20Token.mock.transfer - .withArgs(newRecipient, allocatedAmount) - .returns(true); - - await expect( - grantRound - .connect(recipient) - .claimFunds( - voteOptionIndex, - dummyTallyResult, - dummyTallyResultProof, - dummySpentVoiceCreditsHash, - dummyPerVOSpentVoiceCreditsHash, - dummyTallyCommitment, - dummySpent, - dummySpentProof, - dummySpentSalt - ) - ) - .to.emit(grantRound, "FundsClaimed") - .withArgs(newRecipient, voteOptionIndex, allocatedAmount); - }); - - it("revert - grant round not finalized", async () => { - await expect( - grantRound - .connect(recipient) - .claimFunds( - voteOptionIndex, - dummyTallyResult, - dummyTallyResultProof, - dummySpentVoiceCreditsHash, - dummyPerVOSpentVoiceCreditsHash, - dummyTallyCommitment, - dummySpent, - dummySpentProof, - dummySpentSalt - ) - ).to.be.revertedWith("GrantRound: Round not finalized"); - }); - - it("revert - grant round cancelled", async () => { - await expect(grantRound.connect(deployer).cancel()) - .to.emit(grantRound, "GrantRoundCancelled") - .withArgs(true, true); - - expect(await grantRound.isFinalized()).to.be.true; - expect(await grantRound.isCancelled()).to.be.true; - - await expect( - grantRound - .connect(recipient) - .claimFunds( - voteOptionIndex, - dummyTallyResult, - dummyTallyResultProof, - dummySpentVoiceCreditsHash, - dummyPerVOSpentVoiceCreditsHash, - dummyTallyCommitment, - dummySpent, - dummySpentProof, - dummySpentSalt - ) - ).to.be.revertedWith("GrantRound: Round has been cancelled"); - }); - - // TODO: Same as todo above. - it.skip("revert - funds already claimed", async () => { - await mockMessageAq.mock.enqueue - .withArgs(hashMessangeAndEncPubKey) - .returns(0); - - await expect( - grantRound - .connect(voter) - .publishMessage(message, coordinatorMaciPublicKey.asContractParam()) - ).to.emit(grantRound, "PublishMessage"); - - // Directly manage for expiring the voting period. - let deployTD = await grantRound.getDeployTimeAndDuration(); - await ethers.provider.send("evm_increaseTime", [Number(deployTD[1]) + 1]); - await ethers.provider.send("evm_mine", []); - - // Mocks for trees merge. - await mockMessageAq.mock.mergeSubRoots.withArgs(0).returns(); - await mockMessageAq.mock.merge - .withArgs(treeDepths.messageTreeDepth) - .returns(0); - await mockQfi.mock.stateAq.withArgs().returns(mockMaciStateAq.address); - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(false); - await mockQfi.mock.mergeStateAqSubRoots.withArgs(0, 0).returns(); - - await grantRound.mergeMessageAqSubRoots(0); - await grantRound.mergeMessageAq(); - await grantRound.mergeMaciStateAqSubRoots(0, 0); - - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(true); - await mockQfi.mock.mergeStateAq.withArgs(0).returns(1); - await mockQfi.mock.getStateAqRoot.withArgs().returns(1); - - await grantRound.mergeMaciStateAq(0); - - // Publish tally hash. - const dummyTallyHash = "0xabcd"; - await expect( - grantRound.connect(coordinator).publishTallyHash(dummyTallyHash) - ) - .to.emit(grantRound, "TallyPublished") - .withArgs(dummyTallyHash); - - // Mocks. - const dummyBalance = 100; - await mockBaseERC20Token.mock.balanceOf - .withArgs(grantRound.address) - .returns(dummyBalance); - - await grantRound - .connect(deployer) - .finalize(tallyResults.totalSpent, tallyResults.totalSpentSalt); - - expect(await grantRound.isFinalized()).to.be.true; - expect(await grantRound.totalSpent()).to.be.equal( - tallyResults.totalSpent - ); - expect(await grantRound.matchingPoolSize()).to.be.equal( - BigInt(dummyBalance) - - BigInt(tallyResults.totalSpent) * voiceCreditFactor - ); - - // Mocks. - deployTD = await grantRound.getDeployTimeAndDuration(); - await mockRecipientRegistry.mock.getRecipientAddress - .withArgs( - voteOptionIndex, - deployTD[0], - Number(deployTD[0]) + Number(deployTD[1]) - ) - .returns(recipientAddress); - const allocatedAmount = await grantRound - .connect(recipient) - .getAllocatedAmount(dummyTallyResult, dummySpent); - await mockBaseERC20Token.mock.transfer - .withArgs(recipientAddress, allocatedAmount) - .returns(true); - - await expect( - grantRound - .connect(recipient) - .claimFunds( - voteOptionIndex, - dummyTallyResult, - dummyTallyResultProof, - dummySpentVoiceCreditsHash, - dummyPerVOSpentVoiceCreditsHash, - dummyTallyCommitment, - dummySpent, - dummySpentProof, - dummySpentSalt - ) - ) - .to.emit(grantRound, "FundsClaimed") - .withArgs(recipientAddress, voteOptionIndex, allocatedAmount); - - // Should revert. - await expect( - grantRound - .connect(recipient) - .claimFunds( - voteOptionIndex, - dummyTallyResult, - dummyTallyResultProof, - dummySpentVoiceCreditsHash, - dummyPerVOSpentVoiceCreditsHash, - dummyTallyCommitment, - dummySpent, - dummySpentProof, - dummySpentSalt - ) - ).to.be.revertedWith("FundingRound: Funds already claimed"); - }); - //TODO: fix broken test and merge maci verifier bugfix - it.skip("revert - incorrect tally result for the grant round", async () => { - await mockMessageAq.mock.enqueue - .withArgs(hashMessangeAndEncPubKey) - .returns(0); - - await expect( - grantRound - .connect(voter) - .publishMessage(message, coordinatorMaciPublicKey.asContractParam()) - ).to.emit(grantRound, "PublishMessage"); - - // Directly manage for expiring the voting period. - let deployTD = await grantRound.getDeployTimeAndDuration(); - await ethers.provider.send("evm_increaseTime", [Number(deployTD[1]) + 1]); - await ethers.provider.send("evm_mine", []); - - // Mocks for trees merge. - await mockMessageAq.mock.mergeSubRoots.withArgs(0).returns(); - await mockMessageAq.mock.merge - .withArgs(treeDepths.messageTreeDepth) - .returns(0); - await mockQfi.mock.stateAq.withArgs().returns(mockMaciStateAq.address); - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(false); - await mockQfi.mock.mergeStateAqSubRoots.withArgs(0, 0).returns(); - - await grantRound.mergeMessageAqSubRoots(0); - await grantRound.mergeMessageAq(); - await grantRound.mergeMaciStateAqSubRoots(0, 0); - - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(true); - await mockQfi.mock.mergeStateAq.withArgs(0).returns(1); - await mockQfi.mock.getStateAqRoot.withArgs().returns(1); - - await grantRound.mergeMaciStateAq(0); - - // Publish tally hash. - const dummyTallyHash = "0xabcd"; - await expect( - grantRound.connect(coordinator).publishTallyHash(dummyTallyHash) - ) - .to.emit(grantRound, "TallyPublished") - .withArgs(dummyTallyHash); - - // Mocks. - const dummyBalance = 100; - await mockBaseERC20Token.mock.balanceOf - .withArgs(grantRound.address) - .returns(dummyBalance); - - await grantRound - .connect(deployer) - .finalize(tallyResults.totalSpent, tallyResults.totalSpentSalt); - - expect(await grantRound.isFinalized()).to.be.true; - expect(await grantRound.totalSpent()).to.be.equal( - tallyResults.totalSpent - ); - expect(await grantRound.matchingPoolSize()).to.be.equal( - BigInt(dummyBalance) - - BigInt(tallyResults.totalSpent) * voiceCreditFactor - ); - - // Mocks. - deployTD = await grantRound.getDeployTimeAndDuration(); - await mockRecipientRegistry.mock.getRecipientAddress - .withArgs( - voteOptionIndex, - deployTD[0], - Number(deployTD[0]) + Number(deployTD[1]) - ) - .returns(recipientAddress); - const allocatedAmount = await grantRound - .connect(recipient) - .getAllocatedAmount(dummyTallyResult, dummySpent); - await mockBaseERC20Token.mock.transfer - .withArgs(recipientAddress, allocatedAmount) - .returns(true); - - // Should revert. - await expect( - grantRound - .connect(recipient) - .claimFunds( - voteOptionIndex, - dummyTallyResult, - dummyTallyResultProof, - dummySpentVoiceCreditsHash, - dummyPerVOSpentVoiceCreditsHash, - dummyTallyCommitment, - dummySpent, - dummySpentProof, - dummySpentSalt - ) - ).to.be.revertedWith("FundingRound: Incorrect tally result"); - }); - - // TODO: we need to verifyTallyResult() return true and then test for verifyPerVOSpentVoiceCredits() false. - it.skip("revert - incorrect amount of spent voice credits", async () => { - await mockMessageAq.mock.enqueue - .withArgs(hashMessangeAndEncPubKey) - .returns(0); - - await expect( - grantRound - .connect(voter) - .publishMessage(message, coordinatorMaciPublicKey.asContractParam()) - ).to.emit(grantRound, "PublishMessage"); - - // Directly manage for expiring the voting period. - let deployTD = await grantRound.getDeployTimeAndDuration(); - await ethers.provider.send("evm_increaseTime", [Number(deployTD[1]) + 1]); - await ethers.provider.send("evm_mine", []); - - // Mocks for trees merge. - await mockMessageAq.mock.mergeSubRoots.withArgs(0).returns(); - await mockMessageAq.mock.merge - .withArgs(treeDepths.messageTreeDepth) - .returns(0); - await mockQfi.mock.stateAq.withArgs().returns(mockMaciStateAq.address); - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(false); - await mockQfi.mock.mergeStateAqSubRoots.withArgs(0, 0).returns(); - - await grantRound.mergeMessageAqSubRoots(0); - await grantRound.mergeMessageAq(); - await grantRound.mergeMaciStateAqSubRoots(0, 0); - - await mockMaciStateAq.mock.subTreesMerged.withArgs().returns(true); - await mockQfi.mock.mergeStateAq.withArgs(0).returns(1); - await mockQfi.mock.getStateAqRoot.withArgs().returns(1); - - await grantRound.mergeMaciStateAq(0); - - // Publish tally hash. - const dummyTallyHash = "0xabcd"; - await expect( - grantRound.connect(coordinator).publishTallyHash(dummyTallyHash) - ) - .to.emit(grantRound, "TallyPublished") - .withArgs(dummyTallyHash); - - // Mocks. - const dummyBalance = 100; - await mockBaseERC20Token.mock.balanceOf - .withArgs(grantRound.address) - .returns(dummyBalance); - - await grantRound - .connect(deployer) - .finalize(tallyResults.totalSpent, tallyResults.totalSpentSalt); - - expect(await grantRound.isFinalized()).to.be.true; - expect(await grantRound.totalSpent()).to.be.equal( - tallyResults.totalSpent - ); - expect(await grantRound.matchingPoolSize()).to.be.equal( - BigInt(dummyBalance) - - BigInt(tallyResults.totalSpent) * voiceCreditFactor - ); - - // Mocks. - deployTD = await grantRound.getDeployTimeAndDuration(); - await mockRecipientRegistry.mock.getRecipientAddress - .withArgs( - voteOptionIndex, - deployTD[0], - Number(deployTD[0]) + Number(deployTD[1]) - ) - .returns(recipientAddress); - const allocatedAmount = await grantRound - .connect(recipient) - .getAllocatedAmount(dummyTallyResult, dummySpent); - await mockBaseERC20Token.mock.transfer - .withArgs(recipientAddress, allocatedAmount) - .returns(true); - - // Should revert. - await expect( - grantRound - .connect(recipient) - .claimFunds( - voteOptionIndex, - dummyTallyResult, - dummyTallyResultProof, - dummySpentVoiceCreditsHash, - dummyPerVOSpentVoiceCreditsHash, - dummyTallyCommitment, - dummySpent, - dummySpentProof, - dummySpentSalt - ) - ).to.be.revertedWith( - "GrantRound: Incorrect total amount of spent voice credits" - ); - }); - }); -}); diff --git a/packages/contracts/tests/Unit/GrantRoundFactory.ts b/packages/contracts/tests/Unit/GrantRoundFactory.ts deleted file mode 100644 index d5d00e1a..00000000 --- a/packages/contracts/tests/Unit/GrantRoundFactory.ts +++ /dev/null @@ -1,354 +0,0 @@ -import { ethers } from "hardhat"; -import { ContractTransaction, Signer, constants } from "ethers"; -import chai from "chai"; -import { - deployContract, - deployMockContract, - MockContract, - solidity, -} from "ethereum-waffle"; -import { GrantRoundFactory } from "../../typechain/GrantRoundFactory"; -import { - GrantRoundFactory__factory, - PoseidonT3__factory, - PoseidonT4__factory, - PoseidonT5__factory, - PoseidonT6__factory, - MessageAqFactory__factory, - AccQueue__factory, - OptimisticRecipientRegistry__factory, - QFI__factory, - VkRegistry__factory, - GrantRound__factory, - BaseERC20Token__factory -} from "../../typechain"; -import { Keypair } from "qaci-domainobjs"; - -chai.use(solidity); -const { expect } = chai; - -// Unit tests for Grant Round Factory smart contract. -describe("Grant Round Factory", () => { - // Signers. - let deployer: Signer; - let coordinator: Signer; - let coordinatorAddress: string; - - // Grant Round Factory instance. - let grantRoundFactory: GrantRoundFactory; - - // Mock contracts. - let mockMessageAqFactory: MockContract; - let mockRecipientRegistry: MockContract; - let mockBaseERC20Token: MockContract; - let mockQfi: MockContract; - let mockVkRegistry: MockContract; - let mockGrantRound: MockContract; - let mockMessageAq: MockContract; - - // Pre-computed data. - const decimals = 5; - const voiceCreditFactor = - (BigInt(10 ** 4) * BigInt(10 ** decimals)) / BigInt(10 ** 9); - - // Input parameters for GrantRound methods. - // Deploy Grant Round. - const duration = 30; - const maxValues = { - maxMessages: 25, - maxVoteOptions: 25, - }; - const treeDepths = { - intStateTreeDepth: 2, - messageTreeDepth: 2, - messageTreeSubDepth: 2, - voteOptionTreeDepth: 2, - }; - const defaultMessageTreeArity = 5; - const defaultStateTreeArity = 5; - const batchSizes = { - messageBatchSize: defaultMessageTreeArity ** treeDepths.messageTreeSubDepth, - tallyBatchSize: defaultStateTreeArity ** treeDepths.intStateTreeDepth, - }; - - beforeEach(async () => { - // Get signers. - [deployer, coordinator] = await ethers.getSigners(); - coordinatorAddress = await coordinator.getAddress(); - - // Poseidon libraries. - const poseidonT3 = await deployContract(deployer, PoseidonT3__factory, []); - const poseidonT4 = await deployContract(deployer, PoseidonT4__factory, []); - const poseidonT5 = await deployContract(deployer, PoseidonT5__factory, []); - const poseidonT6 = await deployContract(deployer, PoseidonT6__factory, []); - - // nb. workaround due it's not possible to use Waffle library for linking libraries. - // ISSUE -> https://github.com/EthWorks/Waffle/issues/429. - const GrantRoundFactoryFactory = new GrantRoundFactory__factory( - { - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT5"]: - poseidonT5.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT3"]: - poseidonT3.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT6"]: - poseidonT6.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT4"]: - poseidonT4.address, - }, - deployer - ); - - // Deploy Grant Round Factory. - grantRoundFactory = await GrantRoundFactoryFactory.deploy(); - }); - - it("verify - initializes properly", async () => { - // Wait for the deploy tx. - const grantRoundFactoryDeployTransaction: ContractTransaction = - grantRoundFactory.deployTransaction; - const txReceipt = await grantRoundFactoryDeployTransaction.wait(); - - expect(txReceipt.status).to.not.equal(0); - expect(txReceipt.contractAddress).to.equal(grantRoundFactory.address); - }); - - it("verify - configured properly", async () => { - expect(await grantRoundFactory.messageAqFactory()).to.equal( - constants.AddressZero - ); - expect(await grantRoundFactory.recipientRegistry()).to.equal( - constants.AddressZero - ); - }); - - describe("setMessageAqFactory()", async () => { - beforeEach(async () => { - // Mocks. - mockMessageAqFactory = await deployMockContract( - deployer, - MessageAqFactory__factory.abi - ); - }); - - it("allow owner to set message aq factory contract", async () => { - await expect( - grantRoundFactory - .connect(deployer) - .setMessageAqFactory(mockMessageAqFactory.address) - ) - .to.emit(grantRoundFactory, "MessageAqFactoryChanged") - .withArgs(mockMessageAqFactory.address); - }); - - it("allow owner to change message aq factory contract", async () => { - // Set. - await expect( - grantRoundFactory - .connect(deployer) - .setMessageAqFactory(mockMessageAqFactory.address) - ) - .to.emit(grantRoundFactory, "MessageAqFactoryChanged") - .withArgs(mockMessageAqFactory.address); - - mockMessageAqFactory = await deployMockContract( - deployer, - MessageAqFactory__factory.abi - ); - - expect(await grantRoundFactory.messageAqFactory()).to.be.not.equal( - constants.AddressZero - ); - expect(await grantRoundFactory.messageAqFactory()).to.be.not.equal( - mockMessageAqFactory.address - ); - - // Should change. - await expect( - grantRoundFactory - .connect(deployer) - .setMessageAqFactory(mockMessageAqFactory.address) - ) - .to.emit(grantRoundFactory, "MessageAqFactoryChanged") - .withArgs(mockMessageAqFactory.address); - }); - - it("revert - sender is not owner", async () => { - await expect( - grantRoundFactory - .connect(coordinator) - .setMessageAqFactory(mockMessageAqFactory.address) - ).to.be.revertedWith("Ownable: caller is not the owner"); - }); - }); - - describe("setRecipientRegistry()", async () => { - beforeEach(async () => { - // Mocks. - mockRecipientRegistry = await deployMockContract( - deployer, - OptimisticRecipientRegistry__factory.abi - ); - }); - - it("allow owner to set recipient registry contract", async () => { - await expect( - grantRoundFactory - .connect(deployer) - .setRecipientRegistry(mockRecipientRegistry.address) - ) - .to.emit(grantRoundFactory, "RecipientRegistryChanged") - .withArgs(mockRecipientRegistry.address); - }); - - it("allow owner to change recipient registry contract", async () => { - // Set. - await expect( - grantRoundFactory - .connect(deployer) - .setRecipientRegistry(mockRecipientRegistry.address) - ) - .to.emit(grantRoundFactory, "RecipientRegistryChanged") - .withArgs(mockRecipientRegistry.address); - - mockRecipientRegistry = await deployMockContract( - deployer, - OptimisticRecipientRegistry__factory.abi - ); - - expect(await grantRoundFactory.recipientRegistry()).to.be.not.equal( - constants.AddressZero - ); - expect(await grantRoundFactory.recipientRegistry()).to.be.not.equal( - mockRecipientRegistry.address - ); - - // Should change. - await expect( - grantRoundFactory - .connect(deployer) - .setRecipientRegistry(mockRecipientRegistry.address) - ) - .to.emit(grantRoundFactory, "RecipientRegistryChanged") - .withArgs(mockRecipientRegistry.address); - }); - - it("revert - sender is not owner", async () => { - await expect( - grantRoundFactory - .connect(coordinator) - .setRecipientRegistry(mockRecipientRegistry.address) - ).to.be.revertedWith("Ownable: caller is not the owner"); - }); - }); - - describe("deployGrantRound()", async () => { - // Input parameters. - const coordinatorKeys = new Keypair(); - // TODO: workaround to dinamically mock the - // 'messageAq.transferOwnership(address(grantRound));' call in deployGrantRound(). - // THIS ONLY WORKS WHEN RUNNING 'yarn coverage'. - // This address has been obtained throungh hardhat console.log() debugging feature because - // cannot be predicted/mocked in other ways (i.e., it's a new not a method, so cannot be mocked out). - const expectedGrantRoundAddress = - "0x33cdaa704a16ac6c83bc90e751623b67d5182993"; - - beforeEach(async () => { - // Mocks. - mockQfi = await deployMockContract(deployer, QFI__factory.abi); - - mockBaseERC20Token = await deployMockContract( - deployer, - BaseERC20Token__factory.abi - ); - - mockVkRegistry = await deployMockContract(deployer, VkRegistry__factory.abi); - - mockGrantRound = await deployMockContract(deployer, GrantRound__factory.abi); - - mockMessageAq = await deployMockContract(deployer, AccQueue__factory.abi); - }); - - it.skip("allow owner to deploy a grant round", async () => { - // Set MessageAqFactory. - await expect( - grantRoundFactory - .connect(deployer) - .setMessageAqFactory(mockMessageAqFactory.address) - ) - .to.emit(grantRoundFactory, "MessageAqFactoryChanged") - .withArgs(mockMessageAqFactory.address); - - // Mocks. - await mockMessageAqFactory.mock.deploy - .withArgs(treeDepths.messageTreeSubDepth) - .returns(mockMessageAq.address); - await mockMessageAq.mock.transferOwnership - .withArgs(expectedGrantRoundAddress) - .returns(); - await mockGrantRound.mock.transferOwnership - .withArgs(coordinatorAddress) - .returns(); - - await grantRoundFactory - .connect(deployer) - .deployGrantRound( - voiceCreditFactor, - coordinatorAddress, - mockBaseERC20Token.address, - duration, - maxValues, - treeDepths, - batchSizes, - coordinatorKeys.pubKey.asContractParam(), - mockVkRegistry.address, - mockQfi.address, - coordinatorAddress - ); - }); - - it("revert - sender is not owner", async () => { - await expect( - grantRoundFactory - .connect(coordinator) - .deployGrantRound( - voiceCreditFactor, - coordinatorAddress, - mockBaseERC20Token.address, - duration, - maxValues, - treeDepths, - batchSizes, - coordinatorKeys.pubKey.asContractParam(), - mockVkRegistry.address, - mockQfi.address, - coordinatorAddress - ) - ).to.be.revertedWith("Ownable: caller is not the owner"); - }); - - it("revert - invalid max values", async () => { - const invalidMaxValues = { - maxMessages: 1, - maxVoteOptions: 1, - }; - - await expect( - grantRoundFactory - .connect(deployer) - .deployGrantRound( - voiceCreditFactor, - coordinatorAddress, - mockBaseERC20Token.address, - duration, - invalidMaxValues, - treeDepths, - batchSizes, - coordinatorKeys.pubKey.asContractParam(), - mockVkRegistry.address, - mockQfi.address, - coordinatorAddress - ) - ).to.be.revertedWith("PollFactory: invalid _maxValues"); - }); - }); -}); diff --git a/packages/contracts/tests/Unit/QFI.ts b/packages/contracts/tests/Unit/QFI.ts deleted file mode 100644 index 4f2a407d..00000000 --- a/packages/contracts/tests/Unit/QFI.ts +++ /dev/null @@ -1,2112 +0,0 @@ -import { ethers } from "hardhat"; -import chai from "chai"; -import { deployContract, solidity } from "ethereum-waffle"; -import { Signer, constants, ContractTransaction } from "ethers"; -import { - deployMockContract, - MockContract, -} from "@ethereum-waffle/mock-contract"; -import { - PoseidonT3__factory, - PoseidonT4__factory, - PoseidonT5__factory, - PoseidonT6__factory, - QFI, - QFI__factory, - GrantRoundFactory__factory, - BaseERC20Token__factory, - PollFactory__factory, - SignUpGatekeeper__factory, - ConstantInitialVoiceCreditProxy__factory, - VkRegistry__factory, - MessageAqFactory__factory, - PollProcessorAndTallyer__factory, - GrantRound__factory -} from "../../typechain"; -import { Keypair } from "qaci-domainobjs"; - -chai.use(solidity); -const { expect } = chai; - -// Unit tests for Quadratic Funding Infrastructure (QFI) smart contract. -describe("QFI", () => { - // Signers. - let deployer: Signer; - let deployerAddress: string; - let contributor: Signer; - let contributorAddress: string; - let coordinator: Signer; - let coordinatorAddress: string; - let fundingSource: Signer; - let fundingSourceAddress: string; - const coordinatorMaciPublicKey = new Keypair().pubKey.asContractParam(); - - // QFI instance. - let qfi: QFI; - - // Mock contracts. - let mockBaseERC20Token: MockContract; - let mockGrantRoundFactory: MockContract; - let mockPollFactory: MockContract; - let mockFreeForAllGateKeeper: MockContract; - let mockConstantInitialVoiceCreditProxy: MockContract; - let mockVkRegistry: MockContract; - let mockMessageAqFactoryPolls: MockContract; - let mockMessageAqFactoryGrantRounds: MockContract; - let mockPPT: MockContract; - let mockGrantRound: MockContract; - - // Pre-computed data. - const decimals = 5; - const voiceCreditFactor = - (BigInt(10 ** 4) * BigInt(10 ** decimals)) / BigInt(10 ** 9); - const defaultMaxContributionAmount = BigInt(10 ** 9) * voiceCreditFactor; // MAX_VOICE_CREDITS * voiceCreditFactor. - - // Input parameters for QFI methods. - // Contribution. - const maciKey = new Keypair(); - const contributorMaciPubKey = maciKey.pubKey.asContractParam(); - const expectedInitialVoiceCredits = 100; - const contributionAmount = 100; - const expectedVoiceCredits = BigInt(contributionAmount) / voiceCreditFactor; - const expectedStateIndex = 1; - const expectedTotalAmountofVoiceCredits = - expectedInitialVoiceCredits + contributionAmount; - let signUpGatekeeperData: string; - let initialVoiceCreditProxyData: string; - // Deploy Grant Round. - const duration = 30; - const maxValues = { - maxMessages: 25, - maxVoteOptions: 25, - }; - const treeDepths = { - intStateTreeDepth: 2, - messageTreeDepth: 2, - messageTreeSubDepth: 2, - voteOptionTreeDepth: 2, - }; - const defaultMessageTreeArity = 5; - const defaultStateTreeArity = 5; - const batchSizes = { - messageBatchSize: defaultMessageTreeArity ** treeDepths.messageTreeSubDepth, - tallyBatchSize: defaultStateTreeArity ** treeDepths.intStateTreeDepth, - }; - // Finalize. - const tallyResults = { - totalSpent: 100, - totalSpentSalt: BigInt(999999999999), - }; - - beforeEach(async () => { - // Get signers. - [deployer, contributor, coordinator, fundingSource] = - await ethers.getSigners(); - deployerAddress = await deployer.getAddress(); - contributorAddress = await contributor.getAddress(); - coordinatorAddress = await coordinator.getAddress(); - fundingSourceAddress = await fundingSource.getAddress(); - - // Mocked contracts. - mockBaseERC20Token = await deployMockContract(deployer, BaseERC20Token__factory.abi); - mockGrantRoundFactory = await deployMockContract( - deployer, - GrantRoundFactory__factory.abi - ); - mockPollFactory = await deployMockContract(deployer, PollFactory__factory.abi); - mockFreeForAllGateKeeper = await deployMockContract( - deployer, - SignUpGatekeeper__factory.abi - ); - mockConstantInitialVoiceCreditProxy = await deployMockContract( - deployer, - ConstantInitialVoiceCreditProxy__factory.abi - ); - - // Poseidon libraries. - const poseidonT3 = await deployContract(deployer, PoseidonT3__factory, []); - const poseidonT4 = await deployContract(deployer, PoseidonT4__factory, []); - const poseidonT5 = await deployContract(deployer, PoseidonT5__factory, []); - const poseidonT6 = await deployContract(deployer, PoseidonT6__factory, []); - - // nb. workaround due it's not possible to use Waffle library for linking libraries. - // ISSUE -> https://github.com/EthWorks/Waffle/issues/429. - const QFIFactory = new QFI__factory( - { - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT5"]: - poseidonT5.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT3"]: - poseidonT3.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT6"]: - poseidonT6.address, - ["qaci-contracts/contracts/crypto/Hasher.sol:PoseidonT4"]: - poseidonT4.address, - }, - deployer - ); - - // Mock decimals value (used when deploying QFI). - // nb. for testing purposes, w/ 5 decimals we have a voiceCreditFactor of 1. - await mockBaseERC20Token.mock.decimals.withArgs().returns(decimals); - - // Deploy QFI. - qfi = await QFIFactory.deploy( - mockBaseERC20Token.address, - mockGrantRoundFactory.address, - mockPollFactory.address, - mockFreeForAllGateKeeper.address, - mockConstantInitialVoiceCreditProxy.address - ); - - // Prepare input parameters. - signUpGatekeeperData = ethers.utils.defaultAbiCoder.encode( - ["address", "uint256"], - [contributorAddress, 100] - ); - initialVoiceCreditProxyData = ethers.utils.defaultAbiCoder.encode( - ["address", "uint256"], - [contributorAddress, 100] - ); - }); - - it("verify - initializes properly", async () => { - // Wait for the deploy tx. - const qfiDeployTransaction: ContractTransaction = qfi.deployTransaction; - const txReceipt = await qfiDeployTransaction.wait(); - - expect(txReceipt.status).to.not.equal(0); - expect(txReceipt.contractAddress).to.equal(qfi.address); - - // Verify new event correct emit. - // nb. This is a workaround because there's no possibility to deploy QFI smart contract instance, - // store it locally and then use chai matcher (.to.emit()) when using QFIFactory.deploy(). - expect(txReceipt.logs.length).to.be.equal(3); - expect(txReceipt.events.length).to.be.equal(3); - for (const event of txReceipt.events) { - if (event.event === "QfiDeployed") { - expect(event.args._grantRoundFactory).to.be.equal( - mockGrantRoundFactory.address - ); - expect(event.args._nativeToken).to.be.equal(mockBaseERC20Token.address); - expect(event.args._voiceCreditFactor).to.be.equal(voiceCreditFactor); - } - } - }); - - it("verify - configured properly", async () => { - // Check state (inherited from MACI.sol too). - expect(await qfi.currentStage()).to.be.equal(0); - expect(await qfi.voiceCreditFactor()).to.be.equal( - (BigInt(10 ** 4) * BigInt(10 ** decimals)) / BigInt(10 ** 9) - ); - expect(await qfi.messageAqFactoryGrants()).to.be.equal( - constants.AddressZero - ); - expect(await qfi.currentGrantRound()).to.be.equal(constants.AddressZero); - expect(await qfi.pollProcessorAndTallyer()).to.be.equal( - constants.AddressZero - ); - expect(await qfi.nextGrantRoundId()).to.be.equal(0); - expect(await qfi.contributorCount()).to.be.equal(0); - expect(await qfi.numSignUps()).to.be.equal(0); - expect(await qfi.vkRegistry()).to.be.equal(constants.AddressZero); - expect(await qfi.messageAqFactory()).to.be.equal(constants.AddressZero); - expect(await qfi.stateAq()).to.be.not.equal(constants.AddressZero); - expect(await qfi.signUpTimestamp()).to.be.not.equal(0); - - // Input constructor parameters contracts. - expect(await qfi.grantRoundFactory()).to.be.equal( - mockGrantRoundFactory.address - ); - expect(await qfi.nativeToken()).to.be.equal(mockBaseERC20Token.address); - expect(await qfi.pollFactory()).to.be.equal(mockPollFactory.address); - expect(await qfi.signUpGatekeeper()).to.be.equal( - mockFreeForAllGateKeeper.address - ); - expect(await qfi.initialVoiceCreditProxy()).to.be.equal( - mockConstantInitialVoiceCreditProxy.address - ); - }); - - describe("initialize()", () => { - before(async () => { - // Mocked contracts. - mockVkRegistry = await deployMockContract(deployer, VkRegistry__factory.abi); - - mockMessageAqFactoryPolls = await deployMockContract( - deployer, - MessageAqFactory__factory.abi - ); - - mockMessageAqFactoryGrantRounds = await deployMockContract( - deployer, - MessageAqFactory__factory.abi - ); - }); - - it("allows owner to initialize QFI", async () => { - // Mocks. - await mockGrantRoundFactory.mock.owner.withArgs().returns(qfi.address); - await mockGrantRoundFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryGrantRounds.address) - .returns(); - await mockGrantRoundFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryGrantRounds.address); - await mockMessageAqFactoryGrantRounds.mock.owner - .withArgs() - .returns(mockGrantRoundFactory.address); - await mockMessageAqFactoryPolls.mock.owner - .withArgs() - .returns(mockPollFactory.address); - await mockPollFactory.mock.owner.withArgs().returns(qfi.address); - await mockPollFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryPolls.address) - .returns(); - await mockPollFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryPolls.address); - await mockVkRegistry.mock.owner.withArgs().returns(deployerAddress); - const expectedStage = 1 //"WAITING_FOR_SIGNUPS_AND_TOPUPS" - - // Should initialize QFI correctly. - await expect( - qfi - .connect(deployer) - .initialize( - mockVkRegistry.address, - mockMessageAqFactoryPolls.address, - mockMessageAqFactoryGrantRounds.address - ) - ) - .to.emit(qfi, "Init") - .withArgs(mockVkRegistry.address, mockMessageAqFactoryPolls.address) - .to.emit(qfi, "QfiInitialized") - .withArgs(mockMessageAqFactoryGrantRounds.address, expectedStage); - - }); - - it("revert - allows only owner to initialize QFI", async () => { - await expect( - qfi - .connect(contributor) - .initialize( - mockVkRegistry.address, - mockMessageAqFactoryPolls.address, - mockMessageAqFactoryGrantRounds.address - ) - ).to.revertedWith("Ownable: caller is not the owner"); - }); - - it("revert - PollFactory owner incorrectly set", async () => { - // Mock. - await mockPollFactory.mock.owner - .withArgs() - .returns(constants.AddressZero); - - await expect( - qfi - .connect(deployer) - .initialize( - mockVkRegistry.address, - mockMessageAqFactoryPolls.address, - mockMessageAqFactoryGrantRounds.address - ) - ).to.revertedWith("MACI: PollFactory owner incorrectly set"); - }); - - it("revert - MessageAqFactoryPolls owner incorrectly set", async () => { - // Mock. - await mockPollFactory.mock.owner.withArgs().returns(qfi.address); - await mockPollFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryPolls.address) - .returns(); - await mockPollFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryPolls.address); - await mockMessageAqFactoryPolls.mock.owner - .withArgs() - .returns(constants.AddressZero); - - await expect( - qfi - .connect(deployer) - .initialize( - mockVkRegistry.address, - mockMessageAqFactoryPolls.address, - mockMessageAqFactoryGrantRounds.address - ) - ).to.revertedWith("MACI: MessageAqFactory owner incorrectly set"); - }); - - it("revert - VkRegistry owner incorrectly set", async () => { - // Mock. - await mockPollFactory.mock.owner.withArgs().returns(qfi.address); - await mockPollFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryPolls.address) - .returns(); - await mockPollFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryPolls.address); - await mockMessageAqFactoryPolls.mock.owner - .withArgs() - .returns(mockPollFactory.address); - await mockVkRegistry.mock.owner.withArgs().returns(constants.AddressZero); - - await expect( - qfi - .connect(deployer) - .initialize( - mockVkRegistry.address, - mockMessageAqFactoryPolls.address, - mockMessageAqFactoryGrantRounds.address - ) - ).to.revertedWith("MACI: VkRegistry owner incorrectly set"); - }); - - it("revert - GrantFactory owner incorrectly set", async () => { - // Mock. - await mockPollFactory.mock.owner.withArgs().returns(qfi.address); - await mockPollFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryPolls.address) - .returns(); - await mockPollFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryPolls.address); - await mockMessageAqFactoryPolls.mock.owner - .withArgs() - .returns(mockPollFactory.address); - await mockVkRegistry.mock.owner.withArgs().returns(deployerAddress); - await mockGrantRoundFactory.mock.owner - .withArgs() - .returns(constants.AddressZero); - - await expect( - qfi - .connect(deployer) - .initialize( - mockVkRegistry.address, - mockMessageAqFactoryPolls.address, - mockMessageAqFactoryGrantRounds.address - ) - ).to.revertedWith("MACI: GrantFactory owner incorrectly set"); - }); - - it("revert - should not initialize twice", async () => { - // Mocks. - await mockGrantRoundFactory.mock.owner.withArgs().returns(qfi.address); - await mockGrantRoundFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryGrantRounds.address) - .returns(); - await mockGrantRoundFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryGrantRounds.address); - await mockMessageAqFactoryGrantRounds.mock.owner - .withArgs() - .returns(mockGrantRoundFactory.address); - await mockMessageAqFactoryPolls.mock.owner - .withArgs() - .returns(mockPollFactory.address); - await mockPollFactory.mock.owner.withArgs().returns(qfi.address); - await mockPollFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryPolls.address) - .returns(); - await mockPollFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryPolls.address); - await mockVkRegistry.mock.owner.withArgs().returns(deployerAddress); - - - // Should initialize QFI correctly. - const expectedStage = 1 //"WAITING_FOR_SIGNUPS_AND_TOPUPS" - await expect( - qfi - .connect(deployer) - .initialize( - mockVkRegistry.address, - mockMessageAqFactoryPolls.address, - mockMessageAqFactoryGrantRounds.address - ) - ) - .to.emit(qfi, "Init") - .withArgs(mockVkRegistry.address, mockMessageAqFactoryPolls.address) - .to.emit(qfi, "QfiInitialized") - .withArgs(mockMessageAqFactoryGrantRounds.address, expectedStage); - - // Should revert. - await expect( - qfi - .connect(deployer) - .initialize( - mockVkRegistry.address, - mockMessageAqFactoryPolls.address, - mockMessageAqFactoryGrantRounds.address - ) - ).to.revertedWith("MACI: already initialised"); - }); - }); - - describe("setPollProcessorAndTallyer()", () => { - before(async () => { - // Mocked contracts. - mockPPT = await deployMockContract(deployer, PollProcessorAndTallyer__factory.abi); - }); - - it("allows owner to set the PollProcessorAndTallyer", async () => { - // Should set the PPT correctly. - await expect( - qfi.connect(deployer).setPollProcessorAndTallyer(mockPPT.address) - ) - .to.emit(qfi, "PollProcessorAndTallyerChanged") - .withArgs(mockPPT.address); - }); - - it("allows owner to change the PollProcessorAndTallyer", async () => { - const firstMockedPPT = mockPPT.address; - - // Should set the PPT correctly. - await expect( - qfi.connect(deployer).setPollProcessorAndTallyer(mockPPT.address) - ) - .to.emit(qfi, "PollProcessorAndTallyerChanged") - .withArgs(mockPPT.address); - - // New PPT mock. - mockPPT = await deployMockContract(deployer, PollProcessorAndTallyer__factory.abi); - expect(firstMockedPPT).to.be.not.equal(mockPPT.address); - - // Should change the PPT correctly. - await expect( - qfi.connect(deployer).setPollProcessorAndTallyer(mockPPT.address) - ) - .to.emit(qfi, "PollProcessorAndTallyerChanged") - .withArgs(mockPPT.address); - }); - - it("revert - allows only owner to set the PollProcessorAndTallyer", async () => { - await expect( - qfi.connect(contributor).setPollProcessorAndTallyer(mockPPT.address) - ).to.revertedWith("Ownable: caller is not the owner"); - }); - }); - - describe("contribute()", () => { - beforeEach(async () => { - // Initialize. - await mockGrantRoundFactory.mock.owner.withArgs().returns(qfi.address); - await mockGrantRoundFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryGrantRounds.address) - .returns(); - await mockGrantRoundFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryGrantRounds.address); - await mockMessageAqFactoryGrantRounds.mock.owner - .withArgs() - .returns(mockGrantRoundFactory.address); - await mockMessageAqFactoryPolls.mock.owner - .withArgs() - .returns(mockPollFactory.address); - await mockPollFactory.mock.owner.withArgs().returns(qfi.address); - await mockPollFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryPolls.address) - .returns(); - await mockPollFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryPolls.address); - await mockVkRegistry.mock.owner.withArgs().returns(deployerAddress); - const expectedStage = 1 //"WAITING_FOR_SIGNUPS_AND_TOPUPS" - await expect( - qfi - .connect(deployer) - .initialize( - mockVkRegistry.address, - mockMessageAqFactoryPolls.address, - mockMessageAqFactoryGrantRounds.address - ) - ) - .to.emit(qfi, "Init") - .withArgs(mockVkRegistry.address, mockMessageAqFactoryPolls.address) - .to.emit(qfi, "QfiInitialized") - .withArgs(mockMessageAqFactoryGrantRounds.address, expectedStage); - }); - - it("allows anyone to contribute", async () => { - // Mocks. - await mockBaseERC20Token.mock.balanceOf - .withArgs(contributorAddress) - .returns(contributionAmount); - await mockBaseERC20Token.mock.allowance - .withArgs(contributorAddress, qfi.address) - .returns(contributionAmount); - - await mockBaseERC20Token.mock.transferFrom - .withArgs(contributorAddress, qfi.address, contributionAmount) - .returns(true); - - await mockFreeForAllGateKeeper.mock.register - .withArgs(contributorAddress, signUpGatekeeperData) - .returns(); - - await mockConstantInitialVoiceCreditProxy.mock.getVoiceCredits - .withArgs(contributorAddress, initialVoiceCreditProxyData) - .returns(expectedTotalAmountofVoiceCredits); - - // Should send a contribution correctly. - const expectedTimestamp = - (await ethers.provider.getBlock("latest")).timestamp + 1; - await expect( - qfi - .connect(contributor) - .contribute(contributorMaciPubKey, contributionAmount) - ) - .to.emit(qfi, "SignUp") - .withArgs( - expectedStateIndex, - Object.values(contributorMaciPubKey), - expectedTotalAmountofVoiceCredits, - expectedTimestamp - ) - .to.emit(qfi, "ContributionSent") - .withArgs(contributorAddress, contributionAmount); - }); - - // TODO: Simulate 10**5 signups. How we could test it if the QFI is not mockable here?. - // it("revert - maximum number of signups reached", async () => { - // }); - - it("revert - not accepting signups or top ups", async () => { - // Mocks. - const expectedMockGrantRoundAddress = - ethers.Wallet.createRandom().address; - - await mockGrantRoundFactory.mock.deployGrantRound - .withArgs( - voiceCreditFactor, - coordinatorAddress, - mockBaseERC20Token.address, - duration, - maxValues, - treeDepths, - batchSizes, - coordinatorMaciPublicKey, - mockVkRegistry.address, - qfi.address, - await qfi.owner() - ) - .returns(expectedMockGrantRoundAddress); - - const expectedThirdStage = 2 - // Should deploy a new Grant Round. - await expect( - qfi - .connect(deployer) - .deployGrantRound( - duration, - maxValues, - treeDepths, - coordinatorMaciPublicKey, - coordinatorAddress - ) - ) - .to.emit(qfi, "GrantRoundDeployed") - .withArgs( - expectedMockGrantRoundAddress, - duration, - Object.values(maxValues), - Object.values(treeDepths), - Object.values(batchSizes), - Object.values(coordinatorMaciPublicKey), - expectedThirdStage - ); - - - expect(Number(await qfi.nextGrantRoundId())).to.equal(1); - expect(Number(await qfi.currentStage())).to.equal(2); - expect(await qfi.currentGrantRound()).to.equal( - expectedMockGrantRoundAddress - ); - - // Should revert when not in correct stage. - await expect( - qfi.connect(contributor).contribute(contributorMaciPubKey, 0) - ).to.revertedWith("QFI: Not accepting signups or top ups"); - }); - - it("revert - contribution amount must be greater than zero", async () => { - await expect( - qfi.connect(contributor).contribute(contributorMaciPubKey, 0) - ).to.revertedWith("QFI: Contribution amount must be greater than zero"); - }); - - it("revert - contribution amount is too large", async () => { - await expect( - qfi - .connect(contributor) - .contribute( - contributorMaciPubKey, - defaultMaxContributionAmount + BigInt(1) - ) - ).to.revertedWith("QFI: Contribution amount is too large"); - }); - - it("revert - cannot contribute twice", async () => { - // Mocks. - await mockBaseERC20Token.mock.balanceOf - .withArgs(contributorAddress) - .returns(contributionAmount); - await mockBaseERC20Token.mock.allowance - .withArgs(contributorAddress, qfi.address) - .returns(contributionAmount); - - await mockBaseERC20Token.mock.transferFrom - .withArgs(contributorAddress, qfi.address, contributionAmount) - .returns(true); - - await mockFreeForAllGateKeeper.mock.register - .withArgs(contributorAddress, signUpGatekeeperData) - .returns(); - - await mockConstantInitialVoiceCreditProxy.mock.getVoiceCredits - .withArgs(contributorAddress, initialVoiceCreditProxyData) - .returns(expectedTotalAmountofVoiceCredits); - - // Should send a contribution correctly. - const expectedTimestamp = - (await ethers.provider.getBlock("latest")).timestamp + 1; - await expect( - qfi - .connect(contributor) - .contribute(contributorMaciPubKey, contributionAmount) - ) - .to.emit(qfi, "SignUp") - .withArgs( - expectedStateIndex, - Object.values(contributorMaciPubKey), - expectedTotalAmountofVoiceCredits, - expectedTimestamp - ) - .to.emit(qfi, "ContributionSent") - .withArgs(contributorAddress, contributionAmount); - - // Should revert the second contribution correctly. - await expect( - qfi - .connect(contributor) - .contribute(contributorMaciPubKey, contributionAmount) - ).to.revertedWith( - "QFI: top ups not supported, donate to matching pool instead" - ); - }); - - it("revert - pubKey values should be less than the snark scalar field", async () => { - // Mocks. - await mockBaseERC20Token.mock.balanceOf - .withArgs(contributorAddress) - .returns(contributionAmount); - await mockBaseERC20Token.mock.allowance - .withArgs(contributorAddress, qfi.address) - .returns(contributionAmount); - - await mockBaseERC20Token.mock.transferFrom - .withArgs(contributorAddress, qfi.address, contributionAmount) - .returns(true); - - await mockFreeForAllGateKeeper.mock.register - .withArgs(contributorAddress, signUpGatekeeperData) - .returns(); - - const badContributorMaciPubKey = { - x: "21888242871839275222246405745257275088548364400416034343698204186575808495617", - y: "0", // < SNARK_SCALAR_FIELD - }; - - await expect( - qfi - .connect(contributor) - .contribute(badContributorMaciPubKey, contributionAmount) - ).to.revertedWith( - "MACI: _pubKey values should be less than the snark scalar field" - ); - }); - }); - - describe("getVoiceCredits()", async () => { - // Input parameters. - const contributionAmount = 100; - let data: string; - - beforeEach(async () => { - // Initialize. - await mockGrantRoundFactory.mock.owner.withArgs().returns(qfi.address); - await mockGrantRoundFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryGrantRounds.address) - .returns(); - await mockGrantRoundFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryGrantRounds.address); - await mockMessageAqFactoryGrantRounds.mock.owner - .withArgs() - .returns(mockGrantRoundFactory.address); - await mockMessageAqFactoryPolls.mock.owner - .withArgs() - .returns(mockPollFactory.address); - await mockPollFactory.mock.owner.withArgs().returns(qfi.address); - await mockPollFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryPolls.address) - .returns(); - await mockPollFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryPolls.address); - await mockVkRegistry.mock.owner.withArgs().returns(deployerAddress); - const expectedStage = 1 //"WAITING_FOR_SIGNUPS_AND_TOPUPS" - await expect( - qfi - .connect(deployer) - .initialize( - mockVkRegistry.address, - mockMessageAqFactoryPolls.address, - mockMessageAqFactoryGrantRounds.address - ) - ) - .to.emit(qfi, "Init") - .withArgs(mockVkRegistry.address, mockMessageAqFactoryPolls.address) - .to.emit(qfi, "QfiInitialized") - .withArgs(mockMessageAqFactoryGrantRounds.address, expectedStage); - - // Mocks. - await mockBaseERC20Token.mock.balanceOf - .withArgs(contributorAddress) - .returns(contributionAmount); - await mockBaseERC20Token.mock.allowance - .withArgs(contributorAddress, qfi.address) - .returns(contributionAmount); - - await mockBaseERC20Token.mock.transferFrom - .withArgs(contributorAddress, qfi.address, contributionAmount) - .returns(true); - - await mockFreeForAllGateKeeper.mock.register - .withArgs(contributorAddress, signUpGatekeeperData) - .returns(); - - await mockConstantInitialVoiceCreditProxy.mock.getVoiceCredits - .withArgs(contributorAddress, initialVoiceCreditProxyData) - .returns(expectedTotalAmountofVoiceCredits); - - const expectedTimestamp = - (await ethers.provider.getBlock("latest")).timestamp + 1; - await expect( - qfi - .connect(contributor) - .contribute(contributorMaciPubKey, contributionAmount) - ) - .to.emit(qfi, "SignUp") - .withArgs( - expectedStateIndex, - Object.values(contributorMaciPubKey), - expectedTotalAmountofVoiceCredits, - expectedTimestamp - ) - .to.emit(qfi, "ContributionSent") - .withArgs(contributorAddress, contributionAmount); - }); - - it("allow to get the amount of voice credits for a given address", async () => { - data = ethers.utils.defaultAbiCoder.encode( - ["address"], - [contributorAddress] - ); - - const voiceCreditsAmount = await qfi - .connect(deployer) - .getVoiceCredits(contributorAddress, data); - - expect(Number(voiceCreditsAmount)).to.be.equal(contributionAmount); - }); - - it("revert - user does not have any voice credits", async () => { - data = ethers.utils.defaultAbiCoder.encode( - ["address"], - [deployerAddress] - ); - - await expect( - qfi.connect(deployer).getVoiceCredits(deployerAddress, data) - ).to.revertedWith("FundingRound: User does not have any voice credits"); - }); - }); - - describe("withdrawContribution()", async () => { - const contributionAmount = 100; - - beforeEach(async () => { - // Initialize. - await mockGrantRoundFactory.mock.owner.withArgs().returns(qfi.address); - await mockGrantRoundFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryGrantRounds.address) - .returns(); - await mockGrantRoundFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryGrantRounds.address); - await mockMessageAqFactoryGrantRounds.mock.owner - .withArgs() - .returns(mockGrantRoundFactory.address); - await mockMessageAqFactoryPolls.mock.owner - .withArgs() - .returns(mockPollFactory.address); - await mockPollFactory.mock.owner.withArgs().returns(qfi.address); - await mockPollFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryPolls.address) - .returns(); - await mockPollFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryPolls.address); - await mockVkRegistry.mock.owner.withArgs().returns(deployerAddress); - const expectedStage = 1 //"WAITING_FOR_SIGNUPS_AND_TOPUPS" - await expect( - qfi - .connect(deployer) - .initialize( - mockVkRegistry.address, - mockMessageAqFactoryPolls.address, - mockMessageAqFactoryGrantRounds.address - ) - ) - .to.emit(qfi, "Init") - .withArgs(mockVkRegistry.address, mockMessageAqFactoryPolls.address) - .to.emit(qfi, "QfiInitialized") - .withArgs(mockMessageAqFactoryGrantRounds.address, expectedStage); - - // Mocks. - await mockBaseERC20Token.mock.balanceOf - .withArgs(contributorAddress) - .returns(contributionAmount); - await mockBaseERC20Token.mock.allowance - .withArgs(contributorAddress, qfi.address) - .returns(contributionAmount); - - await mockBaseERC20Token.mock.transferFrom - .withArgs(contributorAddress, qfi.address, contributionAmount) - .returns(true); - - await mockFreeForAllGateKeeper.mock.register - .withArgs(contributorAddress, signUpGatekeeperData) - .returns(); - - await mockConstantInitialVoiceCreditProxy.mock.getVoiceCredits - .withArgs(contributorAddress, initialVoiceCreditProxyData) - .returns(expectedTotalAmountofVoiceCredits); - - const expectedTimestamp = - (await ethers.provider.getBlock("latest")).timestamp + 1; - await expect( - qfi - .connect(contributor) - .contribute(contributorMaciPubKey, contributionAmount) - ) - .to.emit(qfi, "SignUp") - .withArgs( - expectedStateIndex, - Object.values(contributorMaciPubKey), - expectedTotalAmountofVoiceCredits, - expectedTimestamp - ) - .to.emit(qfi, "ContributionSent") - .withArgs(contributorAddress, contributionAmount); - }); - - it("should withdraw the contribution", async () => { - // Mocks. - await mockBaseERC20Token.mock.balanceOf - .withArgs(qfi.address) - .returns(contributionAmount); - - await mockBaseERC20Token.mock.transfer - .withArgs(contributorAddress, contributionAmount) - .returns(true); - - await expect(qfi.connect(contributor).withdrawContribution()) - .to.emit(qfi, "ContributionWithdrew") - .withArgs(contributorAddress); - }); - - it("revert - nothing to withdraw", async () => { - await expect( - qfi.connect(deployer).withdrawContribution() - ).to.revertedWith("FundingRound: Nothing to withdraw"); - }); - }); - - describe("deployGrantRound()", async () => { - beforeEach(async () => { - // Mocked contracts. - mockGrantRound = await deployMockContract(deployer, GrantRound__factory.abi); - }); - - it("allow owner to deploy a grant round", async () => { - // Initialize. - await mockGrantRoundFactory.mock.owner.withArgs().returns(qfi.address); - await mockGrantRoundFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryGrantRounds.address) - .returns(); - await mockGrantRoundFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryGrantRounds.address); - await mockMessageAqFactoryGrantRounds.mock.owner - .withArgs() - .returns(mockGrantRoundFactory.address); - await mockMessageAqFactoryPolls.mock.owner - .withArgs() - .returns(mockPollFactory.address); - await mockPollFactory.mock.owner.withArgs().returns(qfi.address); - await mockPollFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryPolls.address) - .returns(); - await mockPollFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryPolls.address); - await mockVkRegistry.mock.owner.withArgs().returns(deployerAddress); - const expectedStage = 1 //"WAITING_FOR_SIGNUPS_AND_TOPUPS" - await expect( - qfi - .connect(deployer) - .initialize( - mockVkRegistry.address, - mockMessageAqFactoryPolls.address, - mockMessageAqFactoryGrantRounds.address - ) - ) - .to.emit(qfi, "Init") - .withArgs(mockVkRegistry.address, mockMessageAqFactoryPolls.address) - .to.emit(qfi, "QfiInitialized") - .withArgs(mockMessageAqFactoryGrantRounds.address, expectedStage); - - // Mocks. - await mockGrantRoundFactory.mock.deployGrantRound - .withArgs( - voiceCreditFactor, - coordinatorAddress, - mockBaseERC20Token.address, - duration, - maxValues, - treeDepths, - batchSizes, - coordinatorMaciPublicKey, - mockVkRegistry.address, - qfi.address, - await qfi.owner() - ) - .returns(mockGrantRound.address); - - // Should deploy a new Grant Round. - const expectedThirdStage = 2 - await expect( - qfi - .connect(deployer) - .deployGrantRound( - duration, - maxValues, - treeDepths, - coordinatorMaciPublicKey, - coordinatorAddress - ) - ) - .to.emit(qfi, "GrantRoundDeployed") - .withArgs( - mockGrantRound.address, - duration, - Object.values(maxValues), - Object.values(treeDepths), - Object.values(batchSizes), - Object.values(coordinatorMaciPublicKey), - expectedThirdStage - ); - - expect(Number(await qfi.nextGrantRoundId())).to.equal(1); - expect(Number(await qfi.currentStage())).to.equal(2); - expect(await qfi.currentGrantRound()).to.equal(mockGrantRound.address); - }); - - it("revert - allows only owner to deploy a Grant Round", async () => { - // Initialize. - await mockGrantRoundFactory.mock.owner.withArgs().returns(qfi.address); - await mockGrantRoundFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryGrantRounds.address) - .returns(); - await mockGrantRoundFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryGrantRounds.address); - await mockMessageAqFactoryGrantRounds.mock.owner - .withArgs() - .returns(mockGrantRoundFactory.address); - await mockMessageAqFactoryPolls.mock.owner - .withArgs() - .returns(mockPollFactory.address); - await mockPollFactory.mock.owner.withArgs().returns(qfi.address); - await mockPollFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryPolls.address) - .returns(); - await mockPollFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryPolls.address); - await mockVkRegistry.mock.owner.withArgs().returns(deployerAddress); - const expectedStage = 1 //"WAITING_FOR_SIGNUPS_AND_TOPUPS" - await expect( - qfi - .connect(deployer) - .initialize( - mockVkRegistry.address, - mockMessageAqFactoryPolls.address, - mockMessageAqFactoryGrantRounds.address - ) - ) - .to.emit(qfi, "Init") - .withArgs(mockVkRegistry.address, mockMessageAqFactoryPolls.address) - .to.emit(qfi, "QfiInitialized") - .withArgs(mockMessageAqFactoryGrantRounds.address, expectedStage); - - // Should revert. - await expect( - qfi - .connect(contributor) - .deployGrantRound( - duration, - maxValues, - treeDepths, - coordinatorMaciPublicKey, - coordinatorAddress - ) - ).to.revertedWith("Ownable: caller is not the owner"); - }); - - it("revert - cannot deploy while not waiting for signups and topups stage", async () => { - // Initialize. - await mockGrantRoundFactory.mock.owner.withArgs().returns(qfi.address); - await mockGrantRoundFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryGrantRounds.address) - .returns(); - await mockGrantRoundFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryGrantRounds.address); - await mockMessageAqFactoryGrantRounds.mock.owner - .withArgs() - .returns(mockGrantRoundFactory.address); - await mockMessageAqFactoryPolls.mock.owner - .withArgs() - .returns(mockPollFactory.address); - await mockPollFactory.mock.owner.withArgs().returns(qfi.address); - await mockPollFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryPolls.address) - .returns(); - await mockPollFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryPolls.address); - await mockVkRegistry.mock.owner.withArgs().returns(deployerAddress); - const expectedStage = 1 //"WAITING_FOR_SIGNUPS_AND_TOPUPS" - await expect( - qfi - .connect(deployer) - .initialize( - mockVkRegistry.address, - mockMessageAqFactoryPolls.address, - mockMessageAqFactoryGrantRounds.address - ) - ) - .to.emit(qfi, "Init") - .withArgs(mockVkRegistry.address, mockMessageAqFactoryPolls.address) - .to.emit(qfi, "QfiInitialized") - .withArgs(mockMessageAqFactoryGrantRounds.address, expectedStage); - - // Mocks. - await mockGrantRoundFactory.mock.deployGrantRound - .withArgs( - voiceCreditFactor, - coordinatorAddress, - mockBaseERC20Token.address, - duration, - maxValues, - treeDepths, - batchSizes, - coordinatorMaciPublicKey, - mockVkRegistry.address, - qfi.address, - await qfi.owner() - ) - .returns(mockGrantRound.address); - - // Should deploy a new Grant Round. - const expectedThirdStage = 2 - await expect( - qfi - .connect(deployer) - .deployGrantRound( - duration, - maxValues, - treeDepths, - coordinatorMaciPublicKey, - coordinatorAddress - ) - ) - .to.emit(qfi, "GrantRoundDeployed") - .withArgs( - mockGrantRound.address, - duration, - Object.values(maxValues), - Object.values(treeDepths), - Object.values(batchSizes), - Object.values(coordinatorMaciPublicKey), - expectedThirdStage - ); - - expect(Number(await qfi.nextGrantRoundId())).to.equal(1); - expect(Number(await qfi.currentStage())).to.equal(2); - expect(await qfi.currentGrantRound()).to.equal(mockGrantRound.address); - - // Should revert (wrong stage). - await expect( - qfi - .connect(deployer) - .deployGrantRound( - duration, - maxValues, - treeDepths, - coordinatorMaciPublicKey, - coordinatorAddress - ) - ).to.revertedWith( - "MACI: Cannot deploy a new grant round while not in the WAITING_FOR_SIGNUPS_AND_TOPUPS stage" - ); - }); - - it("revert - cannot deploy while not waiting for signups and topups stage", async () => { - // Mocks. - await mockGrantRoundFactory.mock.deployGrantRound - .withArgs( - voiceCreditFactor, - coordinatorAddress, - mockBaseERC20Token.address, - duration, - maxValues, - treeDepths, - batchSizes, - coordinatorMaciPublicKey, - mockVkRegistry.address, - qfi.address, - await qfi.owner() - ) - .returns(mockGrantRound.address); - - // Should revert if not initialized. - await expect( - qfi - .connect(deployer) - .deployGrantRound( - duration, - maxValues, - treeDepths, - coordinatorMaciPublicKey, - coordinatorAddress - ) - ).to.revertedWith("MACI: not initialised"); - }); - }); - - describe("getGrantRound()", async () => { - // Input parameters. - const expectedGrantRoundId = 0; - - beforeEach(async () => { - // Initialize. - await mockGrantRoundFactory.mock.owner.withArgs().returns(qfi.address); - await mockGrantRoundFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryGrantRounds.address) - .returns(); - await mockGrantRoundFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryGrantRounds.address); - await mockMessageAqFactoryGrantRounds.mock.owner - .withArgs() - .returns(mockGrantRoundFactory.address); - await mockMessageAqFactoryPolls.mock.owner - .withArgs() - .returns(mockPollFactory.address); - await mockPollFactory.mock.owner.withArgs().returns(qfi.address); - await mockPollFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryPolls.address) - .returns(); - await mockPollFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryPolls.address); - await mockVkRegistry.mock.owner.withArgs().returns(deployerAddress); - const expectedStage = 1 //"WAITING_FOR_SIGNUPS_AND_TOPUPS" - await expect( - qfi - .connect(deployer) - .initialize( - mockVkRegistry.address, - mockMessageAqFactoryPolls.address, - mockMessageAqFactoryGrantRounds.address - ) - ) - .to.emit(qfi, "Init") - .withArgs(mockVkRegistry.address, mockMessageAqFactoryPolls.address) - .to.emit(qfi, "QfiInitialized") - .withArgs(mockMessageAqFactoryGrantRounds.address, expectedStage); - - // Mocks. - await mockGrantRoundFactory.mock.deployGrantRound - .withArgs( - voiceCreditFactor, - coordinatorAddress, - mockBaseERC20Token.address, - duration, - maxValues, - treeDepths, - batchSizes, - coordinatorMaciPublicKey, - mockVkRegistry.address, - qfi.address, - await qfi.owner() - ) - .returns(mockGrantRound.address); - - // Should deploy a new Grant Round. - const expectedThirdStage = 2 - await expect( - qfi - .connect(deployer) - .deployGrantRound( - duration, - maxValues, - treeDepths, - coordinatorMaciPublicKey, - coordinatorAddress - ) - ) - .to.emit(qfi, "GrantRoundDeployed") - .withArgs( - mockGrantRound.address, - duration, - Object.values(maxValues), - Object.values(treeDepths), - Object.values(batchSizes), - Object.values(coordinatorMaciPublicKey), - expectedThirdStage - ); - - expect(Number(await qfi.nextGrantRoundId())).to.equal(1); - expect(Number(await qfi.currentStage())).to.equal(2); - expect(await qfi.currentGrantRound()).to.equal(mockGrantRound.address); - }); - - it("allow anyone to get the provided Grant Round", async () => { - const grantRound = await qfi - .connect(contributor) - .getGrantRound(expectedGrantRoundId); - - expect(grantRound).to.be.equal(mockGrantRound.address); - }); - - it("revert - provided Grant Round does not exist", async () => { - await expect( - qfi.connect(contributor).getGrantRound(1) - ).to.be.revertedWith( - "MACI: grantRound with _grantRoundId does not exist" - ); - }); - }); - - describe("getVotingDeadline()", async () => { - // Input parameters. - const expectedGrantRoundId = 0; - let expectedDeployGrantRoundTimestamp: number; - - beforeEach(async () => { - // Initialize. - await mockGrantRoundFactory.mock.owner.withArgs().returns(qfi.address); - await mockGrantRoundFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryGrantRounds.address) - .returns(); - await mockGrantRoundFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryGrantRounds.address); - await mockMessageAqFactoryGrantRounds.mock.owner - .withArgs() - .returns(mockGrantRoundFactory.address); - await mockMessageAqFactoryPolls.mock.owner - .withArgs() - .returns(mockPollFactory.address); - await mockPollFactory.mock.owner.withArgs().returns(qfi.address); - await mockPollFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryPolls.address) - .returns(); - await mockPollFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryPolls.address); - await mockVkRegistry.mock.owner.withArgs().returns(deployerAddress); - const expectedStage = 1 //"WAITING_FOR_SIGNUPS_AND_TOPUPS" - await expect( - qfi - .connect(deployer) - .initialize( - mockVkRegistry.address, - mockMessageAqFactoryPolls.address, - mockMessageAqFactoryGrantRounds.address - ) - ) - .to.emit(qfi, "Init") - .withArgs(mockVkRegistry.address, mockMessageAqFactoryPolls.address) - .to.emit(qfi, "QfiInitialized") - .withArgs(mockMessageAqFactoryGrantRounds.address, expectedStage); - - // Mocks. - expectedDeployGrantRoundTimestamp = - (await ethers.provider.getBlock("latest")).timestamp + 1; - - await mockGrantRoundFactory.mock.deployGrantRound - .withArgs( - voiceCreditFactor, - coordinatorAddress, - mockBaseERC20Token.address, - duration, - maxValues, - treeDepths, - batchSizes, - coordinatorMaciPublicKey, - mockVkRegistry.address, - qfi.address, - await qfi.owner() - ) - .returns(mockGrantRound.address); - - // Should deploy a new Grant Round. - const expectedThirdStage = 2 - await expect( - qfi - .connect(deployer) - .deployGrantRound( - duration, - maxValues, - treeDepths, - coordinatorMaciPublicKey, - coordinatorAddress - ) - ) - .to.emit(qfi, "GrantRoundDeployed") - .withArgs( - mockGrantRound.address, - duration, - Object.values(maxValues), - Object.values(treeDepths), - Object.values(batchSizes), - Object.values(coordinatorMaciPublicKey), - expectedThirdStage - ); - - expect(Number(await qfi.nextGrantRoundId())).to.equal(1); - expect(Number(await qfi.currentStage())).to.equal(2); - expect(await qfi.currentGrantRound()).to.equal(mockGrantRound.address); - }); - - it("allow anyone to get the voting deadline for the provided Grant Round", async () => { - // Mocks. - await mockGrantRound.mock.getDeployTimeAndDuration - .withArgs() - .returns(expectedDeployGrantRoundTimestamp, duration); - - const deadline = await qfi - .connect(contributor) - .getVotingDeadline(expectedGrantRoundId); - - expect(deadline).to.be.equal( - expectedDeployGrantRoundTimestamp + duration - ); - }); - - it("revert - provided Grant Round does not exist", async () => { - // Mocks. - await mockGrantRound.mock.getDeployTimeAndDuration - .withArgs() - .returns(expectedDeployGrantRoundTimestamp, duration); - - await expect( - qfi.connect(contributor).getVotingDeadline(1) - ).to.be.revertedWith( - "MACI: grantRound with _grantRoundId does not exist" - ); - }); - }); - - describe("closeVotingAndWaitForDeadline()", async () => { - it("allow owner to close the voting period", async () => { - // Initialize. - await mockGrantRoundFactory.mock.owner.withArgs().returns(qfi.address); - await mockGrantRoundFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryGrantRounds.address) - .returns(); - await mockGrantRoundFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryGrantRounds.address); - await mockMessageAqFactoryGrantRounds.mock.owner - .withArgs() - .returns(mockGrantRoundFactory.address); - await mockMessageAqFactoryPolls.mock.owner - .withArgs() - .returns(mockPollFactory.address); - await mockPollFactory.mock.owner.withArgs().returns(qfi.address); - await mockPollFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryPolls.address) - .returns(); - await mockPollFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryPolls.address); - await mockVkRegistry.mock.owner.withArgs().returns(deployerAddress); - const expectedStage = 1 //"WAITING_FOR_SIGNUPS_AND_TOPUPS" - await expect( - qfi - .connect(deployer) - .initialize( - mockVkRegistry.address, - mockMessageAqFactoryPolls.address, - mockMessageAqFactoryGrantRounds.address - ) - ) - .to.emit(qfi, "Init") - .withArgs(mockVkRegistry.address, mockMessageAqFactoryPolls.address) - .to.emit(qfi, "QfiInitialized") - .withArgs(mockMessageAqFactoryGrantRounds.address, expectedStage); - - // Mocks. - await mockGrantRoundFactory.mock.deployGrantRound - .withArgs( - voiceCreditFactor, - coordinatorAddress, - mockBaseERC20Token.address, - duration, - maxValues, - treeDepths, - batchSizes, - coordinatorMaciPublicKey, - mockVkRegistry.address, - qfi.address, - await qfi.owner() - ) - .returns(mockGrantRound.address); - - // Should deploy a new Grant Round. - const expectedThirdStage = 2 - await expect( - qfi - .connect(deployer) - .deployGrantRound( - duration, - maxValues, - treeDepths, - coordinatorMaciPublicKey, - coordinatorAddress - ) - ) - .to.emit(qfi, "GrantRoundDeployed") - .withArgs( - mockGrantRound.address, - duration, - Object.values(maxValues), - Object.values(treeDepths), - Object.values(batchSizes), - Object.values(coordinatorMaciPublicKey), - expectedThirdStage - ); - - expect(Number(await qfi.nextGrantRoundId())).to.equal(1); - expect(Number(await qfi.currentStage())).to.equal(2); - expect(await qfi.currentGrantRound()).to.equal(mockGrantRound.address); - - // Should close the voting period. - await expect(qfi.connect(deployer).closeVotingAndWaitForDeadline()) - .to.emit(qfi, "VotingPeriodClosed") - .withArgs(3); - }); - - it("revert - allow only owner to close the voting period", async () => { - await expect( - qfi.connect(contributor).closeVotingAndWaitForDeadline() - ).to.revertedWith("Ownable: caller is not the owner"); - }); - - it("revert - cannot close the voting period while not on voting period open", async () => { - await expect( - qfi.connect(deployer).closeVotingAndWaitForDeadline() - ).to.revertedWith( - "MACI: Cannot deploy a new grant round while not in the WAITING_FOR_SIGNUPS_AND_TOPUPS stage" - ); - }); - }); - - describe("finalizeCurrentRound()", async () => { - beforeEach(async () => { - // Initialize. - await mockGrantRoundFactory.mock.owner.withArgs().returns(qfi.address); - await mockGrantRoundFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryGrantRounds.address) - .returns(); - await mockGrantRoundFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryGrantRounds.address); - await mockMessageAqFactoryGrantRounds.mock.owner - .withArgs() - .returns(mockGrantRoundFactory.address); - await mockMessageAqFactoryPolls.mock.owner - .withArgs() - .returns(mockPollFactory.address); - await mockPollFactory.mock.owner.withArgs().returns(qfi.address); - await mockPollFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryPolls.address) - .returns(); - await mockPollFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryPolls.address); - await mockVkRegistry.mock.owner.withArgs().returns(deployerAddress); - const expectedStage = 1 //"WAITING_FOR_SIGNUPS_AND_TOPUPS" - await expect( - qfi - .connect(deployer) - .initialize( - mockVkRegistry.address, - mockMessageAqFactoryPolls.address, - mockMessageAqFactoryGrantRounds.address - ) - ) - .to.emit(qfi, "Init") - .withArgs(mockVkRegistry.address, mockMessageAqFactoryPolls.address) - .to.emit(qfi, "QfiInitialized") - .withArgs(mockMessageAqFactoryGrantRounds.address, expectedStage); - }); - - it("allow owner to finalize current grant round", async () => { - // Mocks. - await mockGrantRoundFactory.mock.deployGrantRound - .withArgs( - voiceCreditFactor, - coordinatorAddress, - mockBaseERC20Token.address, - duration, - maxValues, - treeDepths, - batchSizes, - coordinatorMaciPublicKey, - mockVkRegistry.address, - qfi.address, - await qfi.owner() - ) - .returns(mockGrantRound.address); - - // Should deploy a new Grant Round. - const expectedThirdStage = 2 - await expect( - qfi - .connect(deployer) - .deployGrantRound( - duration, - maxValues, - treeDepths, - coordinatorMaciPublicKey, - coordinatorAddress - ) - ) - .to.emit(qfi, "GrantRoundDeployed") - .withArgs( - mockGrantRound.address, - duration, - Object.values(maxValues), - Object.values(treeDepths), - Object.values(batchSizes), - Object.values(coordinatorMaciPublicKey), - expectedThirdStage - ); - - expect(Number(await qfi.nextGrantRoundId())).to.equal(1); - expect(Number(await qfi.currentStage())).to.equal(2); - expect(await qfi.currentGrantRound()).to.equal(mockGrantRound.address); - - // Close voting period and prepare for finalization. - await expect(qfi.connect(deployer).closeVotingAndWaitForDeadline()) - .to.emit(qfi, "VotingPeriodClosed") - .withArgs(3); - - // Set PPT contract. - await expect( - qfi.connect(deployer).setPollProcessorAndTallyer(mockPPT.address) - ) - .to.emit(qfi, "PollProcessorAndTallyerChanged") - .withArgs(mockPPT.address); - - // Mocks. - await mockPPT.mock.processingComplete.withArgs().returns(true); - await mockGrantRound.mock.nativeToken - .withArgs() - .returns(mockBaseERC20Token.address); - await mockBaseERC20Token.mock.balanceOf - .withArgs(qfi.address) - .returns(contributionAmount); - await mockBaseERC20Token.mock.transfer - .withArgs(mockGrantRound.address, contributionAmount) - .returns(true); - await mockGrantRound.mock.finalize - .withArgs(tallyResults.totalSpent, tallyResults.totalSpentSalt) - .returns(); - - await expect( - qfi - .connect(deployer) - .finalizeCurrentRound( - tallyResults.totalSpent, - tallyResults.totalSpentSalt - ) - ) - .to.emit(qfi, "GrantRoundFinalized") - .withArgs(mockGrantRound.address, 4); - }); - - it("allow owner to finalize current grant round with other funding sources", async () => { - // Add a funding source. - await expect(qfi.connect(deployer).addFundingSource(fundingSourceAddress)) - .to.emit(qfi, "FundingSourceAdded") - .withArgs(fundingSourceAddress); - - // Mocks. - await mockGrantRoundFactory.mock.deployGrantRound - .withArgs( - voiceCreditFactor, - coordinatorAddress, - mockBaseERC20Token.address, - duration, - maxValues, - treeDepths, - batchSizes, - coordinatorMaciPublicKey, - mockVkRegistry.address, - qfi.address, - await qfi.owner() - ) - .returns(mockGrantRound.address); - - // Should deploy a new Grant Round. - const expectedThirdStage = 2 - await expect( - qfi - .connect(deployer) - .deployGrantRound( - duration, - maxValues, - treeDepths, - coordinatorMaciPublicKey, - coordinatorAddress - ) - ) - .to.emit(qfi, "GrantRoundDeployed") - .withArgs( - mockGrantRound.address, - duration, - Object.values(maxValues), - Object.values(treeDepths), - Object.values(batchSizes), - Object.values(coordinatorMaciPublicKey), - expectedThirdStage - ); - - expect(Number(await qfi.nextGrantRoundId())).to.equal(1); - expect(Number(await qfi.currentStage())).to.equal(2); - expect(await qfi.currentGrantRound()).to.equal(mockGrantRound.address); - - // Close voting period and prepare for finalization. - await expect(qfi.connect(deployer).closeVotingAndWaitForDeadline()) - .to.emit(qfi, "VotingPeriodClosed") - .withArgs(3); - - // Set PPT contract. - await expect( - qfi.connect(deployer).setPollProcessorAndTallyer(mockPPT.address) - ) - .to.emit(qfi, "PollProcessorAndTallyerChanged") - .withArgs(mockPPT.address); - - // Mocks. - await mockPPT.mock.processingComplete.withArgs().returns(true); - await mockGrantRound.mock.nativeToken - .withArgs() - .returns(mockBaseERC20Token.address); - await mockBaseERC20Token.mock.balanceOf - .withArgs(qfi.address) - .returns(contributionAmount); - await mockBaseERC20Token.mock.transfer - .withArgs(mockGrantRound.address, contributionAmount) - .returns(true); - await mockGrantRound.mock.finalize - .withArgs(tallyResults.totalSpent, tallyResults.totalSpentSalt) - .returns(); - await mockBaseERC20Token.mock.allowance - .withArgs(fundingSourceAddress, qfi.address) - .returns(contributionAmount); - await mockBaseERC20Token.mock.balanceOf - .withArgs(fundingSourceAddress) - .returns(contributionAmount); - await mockBaseERC20Token.mock.transferFrom - .withArgs( - fundingSourceAddress, - mockGrantRound.address, - contributionAmount - ) - .returns(true); - - await expect( - qfi - .connect(deployer) - .finalizeCurrentRound( - tallyResults.totalSpent, - tallyResults.totalSpentSalt - ) - ) - .to.emit(qfi, "GrantRoundFinalized") - .withArgs(mockGrantRound.address, 4); - }); - - it("revert - allow only owner to finalize current grant round", async () => { - await expect( - qfi - .connect(contributor) - .finalizeCurrentRound( - tallyResults.totalSpent, - tallyResults.totalSpentSalt - ) - ).to.revertedWith("Ownable: caller is not the owner"); - }); - - it("revert - cannot finalize the grant round while not on waiting for finalization", async () => { - await expect( - qfi - .connect(deployer) - .finalizeCurrentRound( - tallyResults.totalSpent, - tallyResults.totalSpentSalt - ) - ).to.revertedWith( - "QFI: Cannot finalize a grant round while not in the WAITING_FOR_FINALIZATION stage" - ); - }); - - it("revert - cannot finalize when messages have not been proccessed", async () => { - // Mocks. - await mockGrantRoundFactory.mock.deployGrantRound - .withArgs( - voiceCreditFactor, - coordinatorAddress, - mockBaseERC20Token.address, - duration, - maxValues, - treeDepths, - batchSizes, - coordinatorMaciPublicKey, - mockVkRegistry.address, - qfi.address, - await qfi.owner() - ) - .returns(mockGrantRound.address); - - // Should deploy a new Grant Round. - const expectedThirdStage = 2 - await expect( - qfi - .connect(deployer) - .deployGrantRound( - duration, - maxValues, - treeDepths, - coordinatorMaciPublicKey, - coordinatorAddress - ) - ) - .to.emit(qfi, "GrantRoundDeployed") - .withArgs( - mockGrantRound.address, - duration, - Object.values(maxValues), - Object.values(treeDepths), - Object.values(batchSizes), - Object.values(coordinatorMaciPublicKey), - expectedThirdStage - ); - - expect(Number(await qfi.nextGrantRoundId())).to.equal(1); - expect(Number(await qfi.currentStage())).to.equal(2); - expect(await qfi.currentGrantRound()).to.equal(mockGrantRound.address); - - // Close voting period and prepare for finalization. - await expect(qfi.connect(deployer).closeVotingAndWaitForDeadline()) - .to.emit(qfi, "VotingPeriodClosed") - .withArgs(3); - - // Set PPT contract. - await expect( - qfi.connect(deployer).setPollProcessorAndTallyer(mockPPT.address) - ) - .to.emit(qfi, "PollProcessorAndTallyerChanged") - .withArgs(mockPPT.address); - - // Mocks. - await mockPPT.mock.processingComplete.withArgs().returns(false); - - await expect( - qfi - .connect(deployer) - .finalizeCurrentRound( - tallyResults.totalSpent, - tallyResults.totalSpentSalt - ) - ).to.revertedWith("QFI: messages have not been proccessed"); - }); - - it("revert - cannot finalize grant round twice", async () => { - // Mocks. - await mockGrantRoundFactory.mock.deployGrantRound - .withArgs( - voiceCreditFactor, - coordinatorAddress, - mockBaseERC20Token.address, - duration, - maxValues, - treeDepths, - batchSizes, - coordinatorMaciPublicKey, - mockVkRegistry.address, - qfi.address, - await qfi.owner() - ) - .returns(mockGrantRound.address); - - // Should deploy a new Grant Round. - const expectedThirdStage = 2 - await expect( - qfi - .connect(deployer) - .deployGrantRound( - duration, - maxValues, - treeDepths, - coordinatorMaciPublicKey, - coordinatorAddress - ) - ) - .to.emit(qfi, "GrantRoundDeployed") - .withArgs( - mockGrantRound.address, - duration, - Object.values(maxValues), - Object.values(treeDepths), - Object.values(batchSizes), - Object.values(coordinatorMaciPublicKey), - expectedThirdStage - ); - - expect(Number(await qfi.nextGrantRoundId())).to.equal(1); - expect(Number(await qfi.currentStage())).to.equal(2); - expect(await qfi.currentGrantRound()).to.equal(mockGrantRound.address); - - // Close voting period and prepare for finalization. - await expect(qfi.connect(deployer).closeVotingAndWaitForDeadline()) - .to.emit(qfi, "VotingPeriodClosed") - .withArgs(3); - - // Set PPT contract. - await expect( - qfi.connect(deployer).setPollProcessorAndTallyer(mockPPT.address) - ) - .to.emit(qfi, "PollProcessorAndTallyerChanged") - .withArgs(mockPPT.address); - - // Mocks. - await mockPPT.mock.processingComplete.withArgs().returns(true); - await mockGrantRound.mock.nativeToken - .withArgs() - .returns(mockBaseERC20Token.address); - await mockBaseERC20Token.mock.balanceOf - .withArgs(qfi.address) - .returns(contributionAmount); - await mockBaseERC20Token.mock.transfer - .withArgs(mockGrantRound.address, contributionAmount) - .returns(true); - await mockGrantRound.mock.finalize - .withArgs(tallyResults.totalSpent, tallyResults.totalSpentSalt) - .returns(); - - await expect( - qfi - .connect(deployer) - .finalizeCurrentRound( - tallyResults.totalSpent, - tallyResults.totalSpentSalt - ) - ) - .to.emit(qfi, "GrantRoundFinalized") - .withArgs(mockGrantRound.address, 4); - - // Should revert. - await expect( - qfi - .connect(deployer) - .finalizeCurrentRound( - tallyResults.totalSpent, - tallyResults.totalSpentSalt - ) - ).to.revertedWith( - "QFI: Cannot finalize a grant round while not in the WAITING_FOR_FINALIZATION stage" - ); - }); - }); - - describe("acceptContributionsAndTopUpsBeforeNewRound()", async () => { - beforeEach(async () => { - // Initialize. - await mockGrantRoundFactory.mock.owner.withArgs().returns(qfi.address); - await mockGrantRoundFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryGrantRounds.address) - .returns(); - await mockGrantRoundFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryGrantRounds.address); - await mockMessageAqFactoryGrantRounds.mock.owner - .withArgs() - .returns(mockGrantRoundFactory.address); - await mockMessageAqFactoryPolls.mock.owner - .withArgs() - .returns(mockPollFactory.address); - await mockPollFactory.mock.owner.withArgs().returns(qfi.address); - await mockPollFactory.mock.setMessageAqFactory - .withArgs(mockMessageAqFactoryPolls.address) - .returns(); - await mockPollFactory.mock.messageAqFactory - .withArgs() - .returns(mockMessageAqFactoryPolls.address); - await mockVkRegistry.mock.owner.withArgs().returns(deployerAddress); - const expectedStage = 1 //"WAITING_FOR_SIGNUPS_AND_TOPUPS" - await expect( - qfi - .connect(deployer) - .initialize( - mockVkRegistry.address, - mockMessageAqFactoryPolls.address, - mockMessageAqFactoryGrantRounds.address - ) - ) - .to.emit(qfi, "Init") - .withArgs(mockVkRegistry.address, mockMessageAqFactoryPolls.address) - .to.emit(qfi, "QfiInitialized") - .withArgs(mockMessageAqFactoryGrantRounds.address, expectedStage); - - // Mocks. - await mockGrantRoundFactory.mock.deployGrantRound - .withArgs( - voiceCreditFactor, - coordinatorAddress, - mockBaseERC20Token.address, - duration, - maxValues, - treeDepths, - batchSizes, - coordinatorMaciPublicKey, - mockVkRegistry.address, - qfi.address, - await qfi.owner() - ) - .returns(mockGrantRound.address); - - // Should deploy a new Grant Round. - const expectedThirdStage = 2 - await expect( - qfi - .connect(deployer) - .deployGrantRound( - duration, - maxValues, - treeDepths, - coordinatorMaciPublicKey, - coordinatorAddress - ) - ) - .to.emit(qfi, "GrantRoundDeployed") - .withArgs( - mockGrantRound.address, - duration, - Object.values(maxValues), - Object.values(treeDepths), - Object.values(batchSizes), - Object.values(coordinatorMaciPublicKey), - expectedThirdStage - ); - - expect(Number(await qfi.nextGrantRoundId())).to.equal(1); - expect(Number(await qfi.currentStage())).to.equal(2); - expect(await qfi.currentGrantRound()).to.equal(mockGrantRound.address); - }); - - it("allow owner to start accepting contributions/signups for the next grant round", async () => { - // Close voting period and prepare for finalization. - await expect(qfi.connect(deployer).closeVotingAndWaitForDeadline()) - .to.emit(qfi, "VotingPeriodClosed") - .withArgs(3); - - // Set PPT contract. - await expect( - qfi.connect(deployer).setPollProcessorAndTallyer(mockPPT.address) - ) - .to.emit(qfi, "PollProcessorAndTallyerChanged") - .withArgs(mockPPT.address); - - // Mocks. - await mockPPT.mock.processingComplete.withArgs().returns(true); - await mockGrantRound.mock.nativeToken - .withArgs() - .returns(mockBaseERC20Token.address); - await mockBaseERC20Token.mock.balanceOf - .withArgs(qfi.address) - .returns(contributionAmount); - await mockBaseERC20Token.mock.transfer - .withArgs(mockGrantRound.address, contributionAmount) - .returns(true); - await mockGrantRound.mock.finalize - .withArgs(tallyResults.totalSpent, tallyResults.totalSpentSalt) - .returns(); - - await expect( - qfi - .connect(deployer) - .finalizeCurrentRound( - tallyResults.totalSpent, - tallyResults.totalSpentSalt - ) - ) - .to.emit(qfi, "GrantRoundFinalized") - .withArgs(mockGrantRound.address, 4); - - // Should start a new contribution/signup period. - await expect( - qfi.connect(deployer).acceptContributionsAndTopUpsBeforeNewRound() - ) - .to.emit(qfi, "PreRoundContributionPeriodStarted") - .withArgs(1); - }); - - it("revert - allow only owner to close the voting period", async () => { - await expect( - qfi.connect(contributor).acceptContributionsAndTopUpsBeforeNewRound() - ).to.revertedWith("Ownable: caller is not the owner"); - }); - - it("revert - cannot start accepting new contributions/signups while the current grant round is not finalized yet", async () => { - await expect( - qfi.connect(deployer).acceptContributionsAndTopUpsBeforeNewRound() - ).to.revertedWith( - "QFI: Cannot deploy a new grant round while not in the WAITING_FOR_SIGNUPS_AND_TOPUPS stage" - ); - }); - }); -}); diff --git a/packages/contracts/tsconfig.json b/packages/contracts/tsconfig.json index 555cab83..917bcfa3 100644 --- a/packages/contracts/tsconfig.json +++ b/packages/contracts/tsconfig.json @@ -1,4 +1,5 @@ { + "*": ["node_modules/*"], "compilerOptions": { "target": "es2018", "module": "commonjs", @@ -7,10 +8,10 @@ "outDir": "dist", "resolveJsonModule": true }, - "include": ["./scripts", "./tests", "./typechain"], + "include": ["./scripts", "./test", "./typechain-types"], "files": [ "./hardhat.config.ts", "./node_modules/@nomiclabs/hardhat-ethers/src/type-extensions.d.ts", "./node_modules/@nomiclabs/hardhat-waffle/src/type-extensions.d.ts" ] -} +} \ No newline at end of file diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.ts b/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.ts new file mode 100644 index 00000000..4ebb8a9b --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.ts @@ -0,0 +1,188 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface OwnableUpgradeableInterface extends utils.Interface { + functions: { + "owner()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "owner" | "renounceOwnership" | "transferOwnership" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + + events: { + "Initialized(uint8)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export interface InitializedEventObject { + version: number; +} +export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; + +export type InitializedEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface OwnableUpgradeable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: OwnableUpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/access/index.ts b/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/access/index.ts new file mode 100644 index 00000000..5b7d8440 --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/access/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { OwnableUpgradeable } from "./OwnableUpgradeable"; diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/index.ts b/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/index.ts new file mode 100644 index 00000000..cb37af6a --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/index.ts @@ -0,0 +1,9 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as access from "./access"; +export type { access }; +import type * as proxy from "./proxy"; +export type { proxy }; +import type * as utils from "./utils"; +export type { utils }; diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.ts b/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.ts new file mode 100644 index 00000000..74cdc5fa --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/proxy/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as utils from "./utils"; +export type { utils }; diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.ts b/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.ts new file mode 100644 index 00000000..a97ca26e --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.ts @@ -0,0 +1,70 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { BaseContract, Signer, utils } from "ethers"; +import type { EventFragment } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface InitializableInterface extends utils.Interface { + functions: {}; + + events: { + "Initialized(uint8)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; +} + +export interface InitializedEventObject { + version: number; +} +export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; + +export type InitializedEventFilter = TypedEventFilter; + +export interface Initializable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: InitializableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: {}; + + callStatic: {}; + + filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + }; + + estimateGas: {}; + + populateTransaction: {}; +} diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts b/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts new file mode 100644 index 00000000..5da73d03 --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { Initializable } from "./Initializable"; diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.ts b/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.ts new file mode 100644 index 00000000..6886700d --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.ts @@ -0,0 +1,70 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { BaseContract, Signer, utils } from "ethers"; +import type { EventFragment } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface ContextUpgradeableInterface extends utils.Interface { + functions: {}; + + events: { + "Initialized(uint8)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; +} + +export interface InitializedEventObject { + version: number; +} +export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; + +export type InitializedEventFilter = TypedEventFilter; + +export interface ContextUpgradeable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ContextUpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: {}; + + callStatic: {}; + + filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + }; + + estimateGas: {}; + + populateTransaction: {}; +} diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.ts b/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.ts new file mode 100644 index 00000000..749da396 --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts-upgradeable/utils/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { ContextUpgradeable } from "./ContextUpgradeable"; diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts/access/Ownable.ts b/packages/contracts/typechain-types/@openzeppelin/contracts/access/Ownable.ts new file mode 100644 index 00000000..aaf0fb4e --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts/access/Ownable.ts @@ -0,0 +1,176 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface OwnableInterface extends utils.Interface { + functions: { + "owner()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "owner" | "renounceOwnership" | "transferOwnership" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + + events: { + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface Ownable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: OwnableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts/access/index.ts b/packages/contracts/typechain-types/@openzeppelin/contracts/access/index.ts new file mode 100644 index 00000000..999bcc77 --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts/access/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { Ownable } from "./Ownable"; diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts/index.ts b/packages/contracts/typechain-types/@openzeppelin/contracts/index.ts new file mode 100644 index 00000000..c8c5c07b --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts/index.ts @@ -0,0 +1,9 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as access from "./access"; +export type { access }; +import type * as token from "./token"; +export type { token }; +import type * as utils from "./utils"; +export type { utils }; diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts/token/ERC721/ERC721.ts b/packages/contracts/typechain-types/@openzeppelin/contracts/token/ERC721/ERC721.ts new file mode 100644 index 00000000..0d32560d --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts/token/ERC721/ERC721.ts @@ -0,0 +1,619 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface ERC721Interface extends utils.Interface { + functions: { + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "getApproved(uint256)": FunctionFragment; + "isApprovedForAll(address,address)": FunctionFragment; + "name()": FunctionFragment; + "ownerOf(uint256)": FunctionFragment; + "safeTransferFrom(address,address,uint256)": FunctionFragment; + "safeTransferFrom(address,address,uint256,bytes)": FunctionFragment; + "setApprovalForAll(address,bool)": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "symbol()": FunctionFragment; + "tokenURI(uint256)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "approve" + | "balanceOf" + | "getApproved" + | "isApprovedForAll" + | "name" + | "ownerOf" + | "safeTransferFrom(address,address,uint256)" + | "safeTransferFrom(address,address,uint256,bytes)" + | "setApprovalForAll" + | "supportsInterface" + | "symbol" + | "tokenURI" + | "transferFrom" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "approve", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getApproved", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isApprovedForAll", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData( + functionFragment: "ownerOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom(address,address,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom(address,address,uint256,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setApprovalForAll", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "tokenURI", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getApproved", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isApprovedForAll", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom(address,address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom(address,address,uint256,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setApprovalForAll", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "ApprovalForAll(address,address,bool)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + approved: string; + tokenId: BigNumber; +} +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + ApprovalEventObject +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface ApprovalForAllEventObject { + owner: string; + operator: string; + approved: boolean; +} +export type ApprovalForAllEvent = TypedEvent< + [string, string, boolean], + ApprovalForAllEventObject +>; + +export type ApprovalForAllEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + tokenId: BigNumber; +} +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + TransferEventObject +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface ERC721 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ERC721Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + name(overrides?: CallOverrides): Promise<[string]>; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + tokenURI( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + approved: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: PromiseOrValue | null, + approved?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null + ): ApprovalEventFilter; + Approval( + owner?: PromiseOrValue | null, + approved?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null + ): ApprovalEventFilter; + + "ApprovalForAll(address,address,bool)"( + owner?: PromiseOrValue | null, + operator?: PromiseOrValue | null, + approved?: null + ): ApprovalForAllEventFilter; + ApprovalForAll( + owner?: PromiseOrValue | null, + operator?: PromiseOrValue | null, + approved?: null + ): ApprovalForAllEventFilter; + + "Transfer(address,address,uint256)"( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null + ): TransferEventFilter; + Transfer( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null + ): TransferEventFilter; + }; + + estimateGas: { + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts/token/ERC721/IERC721.ts b/packages/contracts/typechain-types/@openzeppelin/contracts/token/ERC721/IERC721.ts new file mode 100644 index 00000000..62aed194 --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts/token/ERC721/IERC721.ts @@ -0,0 +1,559 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface IERC721Interface extends utils.Interface { + functions: { + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "getApproved(uint256)": FunctionFragment; + "isApprovedForAll(address,address)": FunctionFragment; + "ownerOf(uint256)": FunctionFragment; + "safeTransferFrom(address,address,uint256)": FunctionFragment; + "safeTransferFrom(address,address,uint256,bytes)": FunctionFragment; + "setApprovalForAll(address,bool)": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "approve" + | "balanceOf" + | "getApproved" + | "isApprovedForAll" + | "ownerOf" + | "safeTransferFrom(address,address,uint256)" + | "safeTransferFrom(address,address,uint256,bytes)" + | "setApprovalForAll" + | "supportsInterface" + | "transferFrom" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "approve", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getApproved", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isApprovedForAll", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "ownerOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom(address,address,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom(address,address,uint256,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setApprovalForAll", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getApproved", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isApprovedForAll", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom(address,address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom(address,address,uint256,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setApprovalForAll", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "ApprovalForAll(address,address,bool)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + approved: string; + tokenId: BigNumber; +} +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + ApprovalEventObject +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface ApprovalForAllEventObject { + owner: string; + operator: string; + approved: boolean; +} +export type ApprovalForAllEvent = TypedEvent< + [string, string, boolean], + ApprovalForAllEventObject +>; + +export type ApprovalForAllEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + tokenId: BigNumber; +} +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + TransferEventObject +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface IERC721 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC721Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { balance: BigNumber }>; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string] & { operator: string }>; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string] & { owner: string }>; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + _approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + _approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + _approved: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: PromiseOrValue | null, + approved?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null + ): ApprovalEventFilter; + Approval( + owner?: PromiseOrValue | null, + approved?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null + ): ApprovalEventFilter; + + "ApprovalForAll(address,address,bool)"( + owner?: PromiseOrValue | null, + operator?: PromiseOrValue | null, + approved?: null + ): ApprovalForAllEventFilter; + ApprovalForAll( + owner?: PromiseOrValue | null, + operator?: PromiseOrValue | null, + approved?: null + ): ApprovalForAllEventFilter; + + "Transfer(address,address,uint256)"( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null + ): TransferEventFilter; + Transfer( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null + ): TransferEventFilter; + }; + + estimateGas: { + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + _approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + _approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts/token/ERC721/IERC721Receiver.ts b/packages/contracts/typechain-types/@openzeppelin/contracts/token/ERC721/IERC721Receiver.ts new file mode 100644 index 00000000..29adc897 --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts/token/ERC721/IERC721Receiver.ts @@ -0,0 +1,126 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface IERC721ReceiverInterface extends utils.Interface { + functions: { + "onERC721Received(address,address,uint256,bytes)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "onERC721Received"): FunctionFragment; + + encodeFunctionData( + functionFragment: "onERC721Received", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult( + functionFragment: "onERC721Received", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IERC721Receiver extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC721ReceiverInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + onERC721Received( + operator: PromiseOrValue, + from: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + onERC721Received( + operator: PromiseOrValue, + from: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + onERC721Received( + operator: PromiseOrValue, + from: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + onERC721Received( + operator: PromiseOrValue, + from: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + onERC721Received( + operator: PromiseOrValue, + from: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.ts b/packages/contracts/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.ts new file mode 100644 index 00000000..c2bebdb6 --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.ts @@ -0,0 +1,619 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../../common"; + +export interface IERC721MetadataInterface extends utils.Interface { + functions: { + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "getApproved(uint256)": FunctionFragment; + "isApprovedForAll(address,address)": FunctionFragment; + "name()": FunctionFragment; + "ownerOf(uint256)": FunctionFragment; + "safeTransferFrom(address,address,uint256)": FunctionFragment; + "safeTransferFrom(address,address,uint256,bytes)": FunctionFragment; + "setApprovalForAll(address,bool)": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "symbol()": FunctionFragment; + "tokenURI(uint256)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "approve" + | "balanceOf" + | "getApproved" + | "isApprovedForAll" + | "name" + | "ownerOf" + | "safeTransferFrom(address,address,uint256)" + | "safeTransferFrom(address,address,uint256,bytes)" + | "setApprovalForAll" + | "supportsInterface" + | "symbol" + | "tokenURI" + | "transferFrom" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "approve", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getApproved", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isApprovedForAll", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData( + functionFragment: "ownerOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom(address,address,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom(address,address,uint256,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setApprovalForAll", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "tokenURI", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getApproved", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isApprovedForAll", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom(address,address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom(address,address,uint256,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setApprovalForAll", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "ApprovalForAll(address,address,bool)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + approved: string; + tokenId: BigNumber; +} +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + ApprovalEventObject +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface ApprovalForAllEventObject { + owner: string; + operator: string; + approved: boolean; +} +export type ApprovalForAllEvent = TypedEvent< + [string, string, boolean], + ApprovalForAllEventObject +>; + +export type ApprovalForAllEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + tokenId: BigNumber; +} +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + TransferEventObject +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface IERC721Metadata extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC721MetadataInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber] & { balance: BigNumber }>; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string] & { operator: string }>; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + name(overrides?: CallOverrides): Promise<[string]>; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string] & { owner: string }>; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + _approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + tokenURI( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + _approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + _approved: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: PromiseOrValue | null, + approved?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null + ): ApprovalEventFilter; + Approval( + owner?: PromiseOrValue | null, + approved?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null + ): ApprovalEventFilter; + + "ApprovalForAll(address,address,bool)"( + owner?: PromiseOrValue | null, + operator?: PromiseOrValue | null, + approved?: null + ): ApprovalForAllEventFilter; + ApprovalForAll( + owner?: PromiseOrValue | null, + operator?: PromiseOrValue | null, + approved?: null + ): ApprovalForAllEventFilter; + + "Transfer(address,address,uint256)"( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null + ): TransferEventFilter; + Transfer( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null + ): TransferEventFilter; + }; + + estimateGas: { + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + _approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + _approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/index.ts b/packages/contracts/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/index.ts new file mode 100644 index 00000000..aa8c2ff0 --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IERC721Metadata } from "./IERC721Metadata"; diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts/token/ERC721/index.ts b/packages/contracts/typechain-types/@openzeppelin/contracts/token/ERC721/index.ts new file mode 100644 index 00000000..e0a47f27 --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts/token/ERC721/index.ts @@ -0,0 +1,8 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as extensions from "./extensions"; +export type { extensions }; +export type { ERC721 } from "./ERC721"; +export type { IERC721 } from "./IERC721"; +export type { IERC721Receiver } from "./IERC721Receiver"; diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts/token/index.ts b/packages/contracts/typechain-types/@openzeppelin/contracts/token/index.ts new file mode 100644 index 00000000..710d7d12 --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts/token/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as erc721 from "./ERC721"; +export type { erc721 }; diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts/utils/index.ts b/packages/contracts/typechain-types/@openzeppelin/contracts/utils/index.ts new file mode 100644 index 00000000..3aa96c1c --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts/utils/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as introspection from "./introspection"; +export type { introspection }; diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts/utils/introspection/ERC165.ts b/packages/contracts/typechain-types/@openzeppelin/contracts/utils/introspection/ERC165.ts new file mode 100644 index 00000000..26c42e04 --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts/utils/introspection/ERC165.ts @@ -0,0 +1,103 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface ERC165Interface extends utils.Interface { + functions: { + "supportsInterface(bytes4)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "supportsInterface"): FunctionFragment; + + encodeFunctionData( + functionFragment: "supportsInterface", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + + events: {}; +} + +export interface ERC165 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ERC165Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + }; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts/utils/introspection/IERC165.ts b/packages/contracts/typechain-types/@openzeppelin/contracts/utils/introspection/IERC165.ts new file mode 100644 index 00000000..010603d4 --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts/utils/introspection/IERC165.ts @@ -0,0 +1,103 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface IERC165Interface extends utils.Interface { + functions: { + "supportsInterface(bytes4)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "supportsInterface"): FunctionFragment; + + encodeFunctionData( + functionFragment: "supportsInterface", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IERC165 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC165Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + }; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/@openzeppelin/contracts/utils/introspection/index.ts b/packages/contracts/typechain-types/@openzeppelin/contracts/utils/introspection/index.ts new file mode 100644 index 00000000..d7fccec7 --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/contracts/utils/introspection/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { ERC165 } from "./ERC165"; +export type { IERC165 } from "./IERC165"; diff --git a/packages/contracts/typechain-types/@openzeppelin/index.ts b/packages/contracts/typechain-types/@openzeppelin/index.ts new file mode 100644 index 00000000..f34b8770 --- /dev/null +++ b/packages/contracts/typechain-types/@openzeppelin/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as contracts from "./contracts"; +export type { contracts }; +import type * as contractsUpgradeable from "./contracts-upgradeable"; +export type { contractsUpgradeable }; diff --git a/packages/contracts/typechain-types/common.ts b/packages/contracts/typechain-types/common.ts new file mode 100644 index 00000000..4c90b08b --- /dev/null +++ b/packages/contracts/typechain-types/common.ts @@ -0,0 +1,46 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { Listener } from "@ethersproject/providers"; +import type { Event, EventFilter } from "ethers"; + +export interface TypedEvent< + TArgsArray extends Array = any, + TArgsObject = any +> extends Event { + args: TArgsArray & TArgsObject; +} + +export interface TypedEventFilter<_TEvent extends TypedEvent> + extends EventFilter {} + +export interface TypedListener { + (...listenerArg: [...__TypechainArgsArray, TEvent]): void; +} + +type __TypechainArgsArray = T extends TypedEvent ? U : never; + +export interface OnEvent { + ( + eventFilter: TypedEventFilter, + listener: TypedListener + ): TRes; + (eventName: string, listener: Listener): TRes; +} + +export type MinEthersFactory = { + deploy(...a: ARGS[]): Promise; +}; + +export type GetContractTypeFromFactory = F extends MinEthersFactory< + infer C, + any +> + ? C + : never; + +export type GetARGsTypeFromFactory = F extends MinEthersFactory + ? Parameters + : never; + +export type PromiseOrValue = T | Promise; diff --git a/packages/contracts/typechain-types/contracts/AccQueue.sol/AccQueue.ts b/packages/contracts/typechain-types/contracts/AccQueue.sol/AccQueue.ts new file mode 100644 index 00000000..f789730b --- /dev/null +++ b/packages/contracts/typechain-types/contracts/AccQueue.sol/AccQueue.ts @@ -0,0 +1,725 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface AccQueueInterface extends utils.Interface { + functions: { + "MAX_DEPTH()": FunctionFragment; + "calcMinHeight()": FunctionFragment; + "currentSubtreeIndex()": FunctionFragment; + "enqueue(uint256)": FunctionFragment; + "fill()": FunctionFragment; + "getMainRoot(uint256)": FunctionFragment; + "getSmallSRTroot()": FunctionFragment; + "getSrIndices()": FunctionFragment; + "getSubRoot(uint256)": FunctionFragment; + "hashLevelLeaf(uint256,uint256)": FunctionFragment; + "initialize()": FunctionFragment; + "insertSubTree(uint256)": FunctionFragment; + "mainRoots(uint256)": FunctionFragment; + "merge(uint256)": FunctionFragment; + "mergeSubRoots(uint256)": FunctionFragment; + "numLeaves()": FunctionFragment; + "owner()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "smallSRTroot()": FunctionFragment; + "subDepth()": FunctionFragment; + "subRoots(uint256)": FunctionFragment; + "subTreesMerged()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "treeMerged()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "MAX_DEPTH" + | "calcMinHeight" + | "currentSubtreeIndex" + | "enqueue" + | "fill" + | "getMainRoot" + | "getSmallSRTroot" + | "getSrIndices" + | "getSubRoot" + | "hashLevelLeaf" + | "initialize" + | "insertSubTree" + | "mainRoots" + | "merge" + | "mergeSubRoots" + | "numLeaves" + | "owner" + | "renounceOwnership" + | "smallSRTroot" + | "subDepth" + | "subRoots" + | "subTreesMerged" + | "transferOwnership" + | "treeMerged" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "MAX_DEPTH", values?: undefined): string; + encodeFunctionData( + functionFragment: "calcMinHeight", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "currentSubtreeIndex", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "enqueue", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "fill", values?: undefined): string; + encodeFunctionData( + functionFragment: "getMainRoot", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSmallSRTroot", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getSrIndices", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getSubRoot", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "hashLevelLeaf", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "insertSubTree", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "mainRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "merge", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "mergeSubRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "numLeaves", values?: undefined): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "smallSRTroot", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "subDepth", values?: undefined): string; + encodeFunctionData( + functionFragment: "subRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "subTreesMerged", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "treeMerged", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "MAX_DEPTH", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "calcMinHeight", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "currentSubtreeIndex", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "enqueue", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "fill", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getMainRoot", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSmallSRTroot", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSrIndices", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getSubRoot", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "hashLevelLeaf", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "insertSubTree", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "mainRoots", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "merge", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "mergeSubRoots", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "numLeaves", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "smallSRTroot", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "subDepth", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "subRoots", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "subTreesMerged", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "treeMerged", data: BytesLike): Result; + + events: { + "Initialized(uint8)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export interface InitializedEventObject { + version: number; +} +export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; + +export type InitializedEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface AccQueue extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: AccQueueInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + MAX_DEPTH(overrides?: CallOverrides): Promise<[BigNumber]>; + + calcMinHeight(overrides?: CallOverrides): Promise<[BigNumber]>; + + currentSubtreeIndex(overrides?: CallOverrides): Promise<[BigNumber]>; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getSmallSRTroot(overrides?: CallOverrides): Promise<[BigNumber]>; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise<[BigNumber]>; + + subDepth(overrides?: CallOverrides): Promise<[BigNumber]>; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + subTreesMerged(overrides?: CallOverrides): Promise<[boolean]>; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise<[boolean]>; + }; + + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + + callStatic: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + fill(overrides?: CallOverrides): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize(overrides?: CallOverrides): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; + + filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex( + overrides?: CallOverrides + ): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/AccQueue.sol/AccQueueBinary.ts b/packages/contracts/typechain-types/contracts/AccQueue.sol/AccQueueBinary.ts new file mode 100644 index 00000000..33963261 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/AccQueue.sol/AccQueueBinary.ts @@ -0,0 +1,725 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface AccQueueBinaryInterface extends utils.Interface { + functions: { + "MAX_DEPTH()": FunctionFragment; + "calcMinHeight()": FunctionFragment; + "currentSubtreeIndex()": FunctionFragment; + "enqueue(uint256)": FunctionFragment; + "fill()": FunctionFragment; + "getMainRoot(uint256)": FunctionFragment; + "getSmallSRTroot()": FunctionFragment; + "getSrIndices()": FunctionFragment; + "getSubRoot(uint256)": FunctionFragment; + "hashLevelLeaf(uint256,uint256)": FunctionFragment; + "initialize()": FunctionFragment; + "insertSubTree(uint256)": FunctionFragment; + "mainRoots(uint256)": FunctionFragment; + "merge(uint256)": FunctionFragment; + "mergeSubRoots(uint256)": FunctionFragment; + "numLeaves()": FunctionFragment; + "owner()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "smallSRTroot()": FunctionFragment; + "subDepth()": FunctionFragment; + "subRoots(uint256)": FunctionFragment; + "subTreesMerged()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "treeMerged()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "MAX_DEPTH" + | "calcMinHeight" + | "currentSubtreeIndex" + | "enqueue" + | "fill" + | "getMainRoot" + | "getSmallSRTroot" + | "getSrIndices" + | "getSubRoot" + | "hashLevelLeaf" + | "initialize" + | "insertSubTree" + | "mainRoots" + | "merge" + | "mergeSubRoots" + | "numLeaves" + | "owner" + | "renounceOwnership" + | "smallSRTroot" + | "subDepth" + | "subRoots" + | "subTreesMerged" + | "transferOwnership" + | "treeMerged" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "MAX_DEPTH", values?: undefined): string; + encodeFunctionData( + functionFragment: "calcMinHeight", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "currentSubtreeIndex", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "enqueue", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "fill", values?: undefined): string; + encodeFunctionData( + functionFragment: "getMainRoot", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSmallSRTroot", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getSrIndices", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getSubRoot", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "hashLevelLeaf", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "insertSubTree", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "mainRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "merge", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "mergeSubRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "numLeaves", values?: undefined): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "smallSRTroot", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "subDepth", values?: undefined): string; + encodeFunctionData( + functionFragment: "subRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "subTreesMerged", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "treeMerged", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "MAX_DEPTH", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "calcMinHeight", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "currentSubtreeIndex", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "enqueue", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "fill", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getMainRoot", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSmallSRTroot", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSrIndices", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getSubRoot", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "hashLevelLeaf", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "insertSubTree", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "mainRoots", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "merge", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "mergeSubRoots", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "numLeaves", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "smallSRTroot", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "subDepth", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "subRoots", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "subTreesMerged", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "treeMerged", data: BytesLike): Result; + + events: { + "Initialized(uint8)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export interface InitializedEventObject { + version: number; +} +export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; + +export type InitializedEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface AccQueueBinary extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: AccQueueBinaryInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + MAX_DEPTH(overrides?: CallOverrides): Promise<[BigNumber]>; + + calcMinHeight(overrides?: CallOverrides): Promise<[BigNumber]>; + + currentSubtreeIndex(overrides?: CallOverrides): Promise<[BigNumber]>; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getSmallSRTroot(overrides?: CallOverrides): Promise<[BigNumber]>; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise<[BigNumber]>; + + subDepth(overrides?: CallOverrides): Promise<[BigNumber]>; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + subTreesMerged(overrides?: CallOverrides): Promise<[boolean]>; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise<[boolean]>; + }; + + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + + callStatic: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + fill(overrides?: CallOverrides): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize(overrides?: CallOverrides): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; + + filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex( + overrides?: CallOverrides + ): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/AccQueue.sol/AccQueueQuinary.ts b/packages/contracts/typechain-types/contracts/AccQueue.sol/AccQueueQuinary.ts new file mode 100644 index 00000000..7c0bf816 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/AccQueue.sol/AccQueueQuinary.ts @@ -0,0 +1,725 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface AccQueueQuinaryInterface extends utils.Interface { + functions: { + "MAX_DEPTH()": FunctionFragment; + "calcMinHeight()": FunctionFragment; + "currentSubtreeIndex()": FunctionFragment; + "enqueue(uint256)": FunctionFragment; + "fill()": FunctionFragment; + "getMainRoot(uint256)": FunctionFragment; + "getSmallSRTroot()": FunctionFragment; + "getSrIndices()": FunctionFragment; + "getSubRoot(uint256)": FunctionFragment; + "hashLevelLeaf(uint256,uint256)": FunctionFragment; + "initialize()": FunctionFragment; + "insertSubTree(uint256)": FunctionFragment; + "mainRoots(uint256)": FunctionFragment; + "merge(uint256)": FunctionFragment; + "mergeSubRoots(uint256)": FunctionFragment; + "numLeaves()": FunctionFragment; + "owner()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "smallSRTroot()": FunctionFragment; + "subDepth()": FunctionFragment; + "subRoots(uint256)": FunctionFragment; + "subTreesMerged()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "treeMerged()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "MAX_DEPTH" + | "calcMinHeight" + | "currentSubtreeIndex" + | "enqueue" + | "fill" + | "getMainRoot" + | "getSmallSRTroot" + | "getSrIndices" + | "getSubRoot" + | "hashLevelLeaf" + | "initialize" + | "insertSubTree" + | "mainRoots" + | "merge" + | "mergeSubRoots" + | "numLeaves" + | "owner" + | "renounceOwnership" + | "smallSRTroot" + | "subDepth" + | "subRoots" + | "subTreesMerged" + | "transferOwnership" + | "treeMerged" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "MAX_DEPTH", values?: undefined): string; + encodeFunctionData( + functionFragment: "calcMinHeight", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "currentSubtreeIndex", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "enqueue", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "fill", values?: undefined): string; + encodeFunctionData( + functionFragment: "getMainRoot", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSmallSRTroot", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getSrIndices", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getSubRoot", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "hashLevelLeaf", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "insertSubTree", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "mainRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "merge", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "mergeSubRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "numLeaves", values?: undefined): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "smallSRTroot", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "subDepth", values?: undefined): string; + encodeFunctionData( + functionFragment: "subRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "subTreesMerged", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "treeMerged", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "MAX_DEPTH", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "calcMinHeight", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "currentSubtreeIndex", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "enqueue", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "fill", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getMainRoot", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSmallSRTroot", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSrIndices", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getSubRoot", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "hashLevelLeaf", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "insertSubTree", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "mainRoots", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "merge", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "mergeSubRoots", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "numLeaves", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "smallSRTroot", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "subDepth", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "subRoots", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "subTreesMerged", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "treeMerged", data: BytesLike): Result; + + events: { + "Initialized(uint8)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export interface InitializedEventObject { + version: number; +} +export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; + +export type InitializedEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface AccQueueQuinary extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: AccQueueQuinaryInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + MAX_DEPTH(overrides?: CallOverrides): Promise<[BigNumber]>; + + calcMinHeight(overrides?: CallOverrides): Promise<[BigNumber]>; + + currentSubtreeIndex(overrides?: CallOverrides): Promise<[BigNumber]>; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getSmallSRTroot(overrides?: CallOverrides): Promise<[BigNumber]>; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise<[BigNumber]>; + + subDepth(overrides?: CallOverrides): Promise<[BigNumber]>; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + subTreesMerged(overrides?: CallOverrides): Promise<[boolean]>; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise<[boolean]>; + }; + + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + + callStatic: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + fill(overrides?: CallOverrides): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize(overrides?: CallOverrides): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; + + filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex( + overrides?: CallOverrides + ): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/AccQueue.sol/PoseidonT3.ts b/packages/contracts/typechain-types/contracts/AccQueue.sol/PoseidonT3.ts new file mode 100644 index 00000000..18c52e60 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/AccQueue.sol/PoseidonT3.ts @@ -0,0 +1,142 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface PoseidonT3Interface extends utils.Interface { + functions: { + "hash2(uint256[2])": FunctionFragment; + "hashLeftRight(uint256,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "hash2" | "hashLeftRight" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "hash2", + values: [[PromiseOrValue, PromiseOrValue]] + ): string; + encodeFunctionData( + functionFragment: "hashLeftRight", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "hash2", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "hashLeftRight", + data: BytesLike + ): Result; + + events: {}; +} + +export interface PoseidonT3 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: PoseidonT3Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + hash2( + input: [PromiseOrValue, PromiseOrValue], + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + }; + + hash2( + input: [PromiseOrValue, PromiseOrValue], + overrides?: CallOverrides + ): Promise; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + hash2( + input: [PromiseOrValue, PromiseOrValue], + overrides?: CallOverrides + ): Promise; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + hash2( + input: [PromiseOrValue, PromiseOrValue], + overrides?: CallOverrides + ): Promise; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + hash2( + input: [PromiseOrValue, PromiseOrValue], + overrides?: CallOverrides + ): Promise; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/AccQueue.sol/PoseidonT6.ts b/packages/contracts/typechain-types/contracts/AccQueue.sol/PoseidonT6.ts new file mode 100644 index 00000000..5ec5206e --- /dev/null +++ b/packages/contracts/typechain-types/contracts/AccQueue.sol/PoseidonT6.ts @@ -0,0 +1,139 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface PoseidonT6Interface extends utils.Interface { + functions: { + "hash5(uint256[5])": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "hash5"): FunctionFragment; + + encodeFunctionData( + functionFragment: "hash5", + values: [ + [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ] + ): string; + + decodeFunctionResult(functionFragment: "hash5", data: BytesLike): Result; + + events: {}; +} + +export interface PoseidonT6 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: PoseidonT6Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + hash5( + input: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise<[BigNumber]>; + }; + + hash5( + input: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + + callStatic: { + hash5( + input: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + hash5( + input: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + hash5( + input: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/AccQueue.sol/index.ts b/packages/contracts/typechain-types/contracts/AccQueue.sol/index.ts new file mode 100644 index 00000000..b59802d5 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/AccQueue.sol/index.ts @@ -0,0 +1,8 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { AccQueue } from "./AccQueue"; +export type { AccQueueBinary } from "./AccQueueBinary"; +export type { AccQueueQuinary } from "./AccQueueQuinary"; +export type { PoseidonT3 } from "./PoseidonT3"; +export type { PoseidonT6 } from "./PoseidonT6"; diff --git a/packages/contracts/typechain-types/contracts/Jubjub.ts b/packages/contracts/typechain-types/contracts/Jubjub.ts new file mode 100644 index 00000000..b97110c2 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/Jubjub.ts @@ -0,0 +1,1746 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../common"; + +export declare namespace Jubjub { + export type PubKeyStruct = { + x: PromiseOrValue; + y: PromiseOrValue; + }; + + export type PubKeyStructOutput = [BigNumber, BigNumber] & { + x: BigNumber; + y: BigNumber; + }; + + export type MessageStruct = { + msgType: PromiseOrValue; + data: PromiseOrValue[]; + }; + + export type MessageStructOutput = [BigNumber, BigNumber[]] & { + msgType: BigNumber; + data: BigNumber[]; + }; + + export type StateLeafStruct = { + pubKey: Jubjub.PubKeyStruct; + voiceCreditBalance: PromiseOrValue; + timestamp: PromiseOrValue; + }; + + export type StateLeafStructOutput = [ + Jubjub.PubKeyStructOutput, + BigNumber, + BigNumber + ] & { + pubKey: Jubjub.PubKeyStructOutput; + voiceCreditBalance: BigNumber; + timestamp: BigNumber; + }; +} + +export interface JubjubInterface extends utils.Interface { + functions: { + "blankMessageLeafHash()": FunctionFragment; + "blankStateLeafHash()": FunctionFragment; + "calculateCurrentMessageBatchIndex()": FunctionFragment; + "coordinatorPubKey()": FunctionFragment; + "coordinatorPubKeyHash()": FunctionFragment; + "currentBallotCommitment()": FunctionFragment; + "currentMessageCommitment()": FunctionFragment; + "currentSbCommitment()": FunctionFragment; + "currentStateCommitment()": FunctionFragment; + "hash(uint256,uint256)": FunctionFragment; + "hashMessageLeaf((uint256,uint256[10]),(uint256,uint256))": FunctionFragment; + "hashStateLeaf(((uint256,uint256),uint256,uint256))": FunctionFragment; + "initialize(uint256,uint256,uint256,uint256,uint256[],address,address,address,address)": FunctionFragment; + "isInitialised()": FunctionFragment; + "mergeMessageAq()": FunctionFragment; + "mergeMessageAqSubRoots(uint256)": FunctionFragment; + "mergeStateAq()": FunctionFragment; + "mergeStateAqSubRoots(uint256)": FunctionFragment; + "messageAq()": FunctionFragment; + "messageTreeDepth()": FunctionFragment; + "messageTreeSubDepth()": FunctionFragment; + "multicall(bytes[])": FunctionFragment; + "numBatchesProcessed()": FunctionFragment; + "numMessages()": FunctionFragment; + "numPolls()": FunctionFragment; + "numSignUps()": FunctionFragment; + "openSignUpPeriod()": FunctionFragment; + "owner()": FunctionFragment; + "pollResults(uint256)": FunctionFragment; + "polls(uint256)": FunctionFragment; + "processMessages(uint256,uint256,uint256[8])": FunctionFragment; + "publishMessage((uint256,uint256[10]),(uint256,uint256))": FunctionFragment; + "publishMessageBatch((uint256,uint256[10])[],(uint256,uint256)[])": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "resetBallotCommitment(uint256)": FunctionFragment; + "setVkRegistry(address)": FunctionFragment; + "signUp((uint256,uint256),bytes,bytes)": FunctionFragment; + "signUpGatekeeper()": FunctionFragment; + "signUpTimestamp()": FunctionFragment; + "signUpsOpen()": FunctionFragment; + "startVoting(uint256,uint256,(uint256,uint256))": FunctionFragment; + "stateAq()": FunctionFragment; + "stateLeafTimeStamps(uint256)": FunctionFragment; + "stateTreeDepth()": FunctionFragment; + "stateTreeSubDepth()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "vkRegistry()": FunctionFragment; + "voiceCreditProxy()": FunctionFragment; + "voteDeadline()": FunctionFragment; + "voteDurationSeconds()": FunctionFragment; + "voteOptionTreeDepth()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "blankMessageLeafHash" + | "blankStateLeafHash" + | "calculateCurrentMessageBatchIndex" + | "coordinatorPubKey" + | "coordinatorPubKeyHash" + | "currentBallotCommitment" + | "currentMessageCommitment" + | "currentSbCommitment" + | "currentStateCommitment" + | "hash" + | "hashMessageLeaf" + | "hashStateLeaf" + | "initialize" + | "isInitialised" + | "mergeMessageAq" + | "mergeMessageAqSubRoots" + | "mergeStateAq" + | "mergeStateAqSubRoots" + | "messageAq" + | "messageTreeDepth" + | "messageTreeSubDepth" + | "multicall" + | "numBatchesProcessed" + | "numMessages" + | "numPolls" + | "numSignUps" + | "openSignUpPeriod" + | "owner" + | "pollResults" + | "polls" + | "processMessages" + | "publishMessage" + | "publishMessageBatch" + | "renounceOwnership" + | "resetBallotCommitment" + | "setVkRegistry" + | "signUp" + | "signUpGatekeeper" + | "signUpTimestamp" + | "signUpsOpen" + | "startVoting" + | "stateAq" + | "stateLeafTimeStamps" + | "stateTreeDepth" + | "stateTreeSubDepth" + | "transferOwnership" + | "vkRegistry" + | "voiceCreditProxy" + | "voteDeadline" + | "voteDurationSeconds" + | "voteOptionTreeDepth" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "blankMessageLeafHash", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "blankStateLeafHash", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "calculateCurrentMessageBatchIndex", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "coordinatorPubKey", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "coordinatorPubKeyHash", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "currentBallotCommitment", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "currentMessageCommitment", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "currentSbCommitment", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "currentStateCommitment", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "hash", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "hashMessageLeaf", + values: [Jubjub.MessageStruct, Jubjub.PubKeyStruct] + ): string; + encodeFunctionData( + functionFragment: "hashStateLeaf", + values: [Jubjub.StateLeafStruct] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[], + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "isInitialised", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "mergeMessageAq", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "mergeMessageAqSubRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "mergeStateAq", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "mergeStateAqSubRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "messageAq", values?: undefined): string; + encodeFunctionData( + functionFragment: "messageTreeDepth", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "messageTreeSubDepth", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "multicall", + values: [PromiseOrValue[]] + ): string; + encodeFunctionData( + functionFragment: "numBatchesProcessed", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "numMessages", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "numPolls", values?: undefined): string; + encodeFunctionData( + functionFragment: "numSignUps", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "openSignUpPeriod", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "pollResults", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "polls", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "processMessages", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue[] + ] + ): string; + encodeFunctionData( + functionFragment: "publishMessage", + values: [Jubjub.MessageStruct, Jubjub.PubKeyStruct] + ): string; + encodeFunctionData( + functionFragment: "publishMessageBatch", + values: [Jubjub.MessageStruct[], Jubjub.PubKeyStruct[]] + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "resetBallotCommitment", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setVkRegistry", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "signUp", + values: [ + Jubjub.PubKeyStruct, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "signUpGatekeeper", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "signUpTimestamp", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "signUpsOpen", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "startVoting", + values: [ + PromiseOrValue, + PromiseOrValue, + Jubjub.PubKeyStruct + ] + ): string; + encodeFunctionData(functionFragment: "stateAq", values?: undefined): string; + encodeFunctionData( + functionFragment: "stateLeafTimeStamps", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "stateTreeDepth", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "stateTreeSubDepth", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "vkRegistry", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "voiceCreditProxy", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "voteDeadline", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "voteDurationSeconds", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "voteOptionTreeDepth", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "blankMessageLeafHash", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "blankStateLeafHash", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "calculateCurrentMessageBatchIndex", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "coordinatorPubKey", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "coordinatorPubKeyHash", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "currentBallotCommitment", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "currentMessageCommitment", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "currentSbCommitment", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "currentStateCommitment", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "hash", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "hashMessageLeaf", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "hashStateLeaf", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isInitialised", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "mergeMessageAq", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "mergeMessageAqSubRoots", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "mergeStateAq", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "mergeStateAqSubRoots", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "messageAq", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "messageTreeDepth", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "messageTreeSubDepth", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "numBatchesProcessed", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "numMessages", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "numPolls", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "numSignUps", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "openSignUpPeriod", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "pollResults", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "polls", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "processMessages", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "publishMessage", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "publishMessageBatch", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "resetBallotCommitment", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setVkRegistry", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "signUp", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "signUpGatekeeper", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "signUpTimestamp", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "signUpsOpen", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "startVoting", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "stateAq", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "stateLeafTimeStamps", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stateTreeDepth", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stateTreeSubDepth", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "vkRegistry", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "voiceCreditProxy", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "voteDeadline", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "voteDurationSeconds", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "voteOptionTreeDepth", + data: BytesLike + ): Result; + + events: { + "DeployPoll(uint256,address,tuple)": EventFragment; + "Init(address,address)": EventFragment; + "Initialized(uint8)": EventFragment; + "MergeMaciStateAq(uint256)": EventFragment; + "MergeMaciStateAqSubRoots(uint256,uint256)": EventFragment; + "MergeMessageAq(uint256)": EventFragment; + "MergeMessageAqSubRoots(uint256)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + "PublishMessage(tuple,tuple)": EventFragment; + "SignUp(uint256,tuple,uint256,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "DeployPoll"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Init"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "MergeMaciStateAq"): EventFragment; + getEvent(nameOrSignatureOrTopic: "MergeMaciStateAqSubRoots"): EventFragment; + getEvent(nameOrSignatureOrTopic: "MergeMessageAq"): EventFragment; + getEvent(nameOrSignatureOrTopic: "MergeMessageAqSubRoots"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "PublishMessage"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SignUp"): EventFragment; +} + +export interface DeployPollEventObject { + _pollId: BigNumber; + _pollAddr: string; + _pubKey: Jubjub.PubKeyStructOutput; +} +export type DeployPollEvent = TypedEvent< + [BigNumber, string, Jubjub.PubKeyStructOutput], + DeployPollEventObject +>; + +export type DeployPollEventFilter = TypedEventFilter; + +export interface InitEventObject { + _signUpGatekeeper: string; + _topupCredit: string; +} +export type InitEvent = TypedEvent<[string, string], InitEventObject>; + +export type InitEventFilter = TypedEventFilter; + +export interface InitializedEventObject { + version: number; +} +export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; + +export type InitializedEventFilter = TypedEventFilter; + +export interface MergeMaciStateAqEventObject { + _pollId: BigNumber; +} +export type MergeMaciStateAqEvent = TypedEvent< + [BigNumber], + MergeMaciStateAqEventObject +>; + +export type MergeMaciStateAqEventFilter = + TypedEventFilter; + +export interface MergeMaciStateAqSubRootsEventObject { + _pollId: BigNumber; + _numSrQueueOps: BigNumber; +} +export type MergeMaciStateAqSubRootsEvent = TypedEvent< + [BigNumber, BigNumber], + MergeMaciStateAqSubRootsEventObject +>; + +export type MergeMaciStateAqSubRootsEventFilter = + TypedEventFilter; + +export interface MergeMessageAqEventObject { + _messageRoot: BigNumber; +} +export type MergeMessageAqEvent = TypedEvent< + [BigNumber], + MergeMessageAqEventObject +>; + +export type MergeMessageAqEventFilter = TypedEventFilter; + +export interface MergeMessageAqSubRootsEventObject { + _numSrQueueOps: BigNumber; +} +export type MergeMessageAqSubRootsEvent = TypedEvent< + [BigNumber], + MergeMessageAqSubRootsEventObject +>; + +export type MergeMessageAqSubRootsEventFilter = + TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface PublishMessageEventObject { + _message: Jubjub.MessageStructOutput; + _encPubKey: Jubjub.PubKeyStructOutput; +} +export type PublishMessageEvent = TypedEvent< + [Jubjub.MessageStructOutput, Jubjub.PubKeyStructOutput], + PublishMessageEventObject +>; + +export type PublishMessageEventFilter = TypedEventFilter; + +export interface SignUpEventObject { + _stateIndex: BigNumber; + _userPubKey: Jubjub.PubKeyStructOutput; + _voiceCreditBalance: BigNumber; + _timestamp: BigNumber; +} +export type SignUpEvent = TypedEvent< + [BigNumber, Jubjub.PubKeyStructOutput, BigNumber, BigNumber], + SignUpEventObject +>; + +export type SignUpEventFilter = TypedEventFilter; + +export interface Jubjub extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: JubjubInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + blankMessageLeafHash(overrides?: CallOverrides): Promise<[BigNumber]>; + + blankStateLeafHash(overrides?: CallOverrides): Promise<[BigNumber]>; + + calculateCurrentMessageBatchIndex( + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + coordinatorPubKey( + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber] & { x: BigNumber; y: BigNumber }>; + + coordinatorPubKeyHash(overrides?: CallOverrides): Promise<[BigNumber]>; + + currentBallotCommitment(overrides?: CallOverrides): Promise<[BigNumber]>; + + currentMessageCommitment(overrides?: CallOverrides): Promise<[BigNumber]>; + + currentSbCommitment(overrides?: CallOverrides): Promise<[BigNumber]>; + + currentStateCommitment(overrides?: CallOverrides): Promise<[BigNumber]>; + + hash( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + hashMessageLeaf( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + hashStateLeaf( + _stateLeaf: Jubjub.StateLeafStruct, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + initialize( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _stateTreeSubDepth: PromiseOrValue, + _messageTreeSubDepth: PromiseOrValue, + _emptyBallotRoots: PromiseOrValue[], + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + _stateAq: PromiseOrValue, + _messageAq: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isInitialised(overrides?: CallOverrides): Promise<[boolean]>; + + mergeMessageAq( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeMessageAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeStateAq( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeStateAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + messageAq(overrides?: CallOverrides): Promise<[string]>; + + messageTreeDepth(overrides?: CallOverrides): Promise<[BigNumber]>; + + messageTreeSubDepth(overrides?: CallOverrides): Promise<[BigNumber]>; + + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + numBatchesProcessed(overrides?: CallOverrides): Promise<[BigNumber]>; + + numMessages(overrides?: CallOverrides): Promise<[BigNumber]>; + + numPolls(overrides?: CallOverrides): Promise<[BigNumber]>; + + numSignUps(overrides?: CallOverrides): Promise<[BigNumber]>; + + openSignUpPeriod( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise<[string]>; + + pollResults( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + polls( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + processMessages( + _newStateCommitment: PromiseOrValue, + _newSbCommitment: PromiseOrValue, + _proof: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + publishMessage( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + publishMessageBatch( + _messages: Jubjub.MessageStruct[], + _encPubKeys: Jubjub.PubKeyStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + resetBallotCommitment( + _voteOptionTreeDepth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVkRegistry( + _vkRegistry: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + signUp( + _pubKey: Jubjub.PubKeyStruct, + _signUpGatekeeperData: PromiseOrValue, + _initialVoiceCreditProxyData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + signUpGatekeeper(overrides?: CallOverrides): Promise<[string]>; + + signUpTimestamp(overrides?: CallOverrides): Promise<[BigNumber]>; + + signUpsOpen(overrides?: CallOverrides): Promise<[boolean]>; + + startVoting( + _voteOptionTreeDepth: PromiseOrValue, + _duration: PromiseOrValue, + _coordinatorPubKey: Jubjub.PubKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stateAq(overrides?: CallOverrides): Promise<[string]>; + + stateLeafTimeStamps( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + stateTreeDepth(overrides?: CallOverrides): Promise<[BigNumber]>; + + stateTreeSubDepth(overrides?: CallOverrides): Promise<[BigNumber]>; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + vkRegistry(overrides?: CallOverrides): Promise<[string]>; + + voiceCreditProxy(overrides?: CallOverrides): Promise<[string]>; + + voteDeadline(overrides?: CallOverrides): Promise<[BigNumber]>; + + voteDurationSeconds(overrides?: CallOverrides): Promise<[BigNumber]>; + + voteOptionTreeDepth(overrides?: CallOverrides): Promise<[BigNumber]>; + }; + + blankMessageLeafHash(overrides?: CallOverrides): Promise; + + blankStateLeafHash(overrides?: CallOverrides): Promise; + + calculateCurrentMessageBatchIndex( + overrides?: CallOverrides + ): Promise; + + coordinatorPubKey( + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber] & { x: BigNumber; y: BigNumber }>; + + coordinatorPubKeyHash(overrides?: CallOverrides): Promise; + + currentBallotCommitment(overrides?: CallOverrides): Promise; + + currentMessageCommitment(overrides?: CallOverrides): Promise; + + currentSbCommitment(overrides?: CallOverrides): Promise; + + currentStateCommitment(overrides?: CallOverrides): Promise; + + hash( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashMessageLeaf( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: CallOverrides + ): Promise; + + hashStateLeaf( + _stateLeaf: Jubjub.StateLeafStruct, + overrides?: CallOverrides + ): Promise; + + initialize( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _stateTreeSubDepth: PromiseOrValue, + _messageTreeSubDepth: PromiseOrValue, + _emptyBallotRoots: PromiseOrValue[], + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + _stateAq: PromiseOrValue, + _messageAq: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isInitialised(overrides?: CallOverrides): Promise; + + mergeMessageAq( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeMessageAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeStateAq( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeStateAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + messageAq(overrides?: CallOverrides): Promise; + + messageTreeDepth(overrides?: CallOverrides): Promise; + + messageTreeSubDepth(overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + numBatchesProcessed(overrides?: CallOverrides): Promise; + + numMessages(overrides?: CallOverrides): Promise; + + numPolls(overrides?: CallOverrides): Promise; + + numSignUps(overrides?: CallOverrides): Promise; + + openSignUpPeriod( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + pollResults( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + polls( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + processMessages( + _newStateCommitment: PromiseOrValue, + _newSbCommitment: PromiseOrValue, + _proof: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + publishMessage( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + publishMessageBatch( + _messages: Jubjub.MessageStruct[], + _encPubKeys: Jubjub.PubKeyStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + resetBallotCommitment( + _voteOptionTreeDepth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVkRegistry( + _vkRegistry: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + signUp( + _pubKey: Jubjub.PubKeyStruct, + _signUpGatekeeperData: PromiseOrValue, + _initialVoiceCreditProxyData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + signUpGatekeeper(overrides?: CallOverrides): Promise; + + signUpTimestamp(overrides?: CallOverrides): Promise; + + signUpsOpen(overrides?: CallOverrides): Promise; + + startVoting( + _voteOptionTreeDepth: PromiseOrValue, + _duration: PromiseOrValue, + _coordinatorPubKey: Jubjub.PubKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stateAq(overrides?: CallOverrides): Promise; + + stateLeafTimeStamps( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + stateTreeDepth(overrides?: CallOverrides): Promise; + + stateTreeSubDepth(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + vkRegistry(overrides?: CallOverrides): Promise; + + voiceCreditProxy(overrides?: CallOverrides): Promise; + + voteDeadline(overrides?: CallOverrides): Promise; + + voteDurationSeconds(overrides?: CallOverrides): Promise; + + voteOptionTreeDepth(overrides?: CallOverrides): Promise; + + callStatic: { + blankMessageLeafHash(overrides?: CallOverrides): Promise; + + blankStateLeafHash(overrides?: CallOverrides): Promise; + + calculateCurrentMessageBatchIndex( + overrides?: CallOverrides + ): Promise; + + coordinatorPubKey( + overrides?: CallOverrides + ): Promise<[BigNumber, BigNumber] & { x: BigNumber; y: BigNumber }>; + + coordinatorPubKeyHash(overrides?: CallOverrides): Promise; + + currentBallotCommitment(overrides?: CallOverrides): Promise; + + currentMessageCommitment(overrides?: CallOverrides): Promise; + + currentSbCommitment(overrides?: CallOverrides): Promise; + + currentStateCommitment(overrides?: CallOverrides): Promise; + + hash( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashMessageLeaf( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: CallOverrides + ): Promise; + + hashStateLeaf( + _stateLeaf: Jubjub.StateLeafStruct, + overrides?: CallOverrides + ): Promise; + + initialize( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _stateTreeSubDepth: PromiseOrValue, + _messageTreeSubDepth: PromiseOrValue, + _emptyBallotRoots: PromiseOrValue[], + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + _stateAq: PromiseOrValue, + _messageAq: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isInitialised(overrides?: CallOverrides): Promise; + + mergeMessageAq(overrides?: CallOverrides): Promise; + + mergeMessageAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mergeStateAq(overrides?: CallOverrides): Promise; + + mergeStateAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + messageAq(overrides?: CallOverrides): Promise; + + messageTreeDepth(overrides?: CallOverrides): Promise; + + messageTreeSubDepth(overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + numBatchesProcessed(overrides?: CallOverrides): Promise; + + numMessages(overrides?: CallOverrides): Promise; + + numPolls(overrides?: CallOverrides): Promise; + + numSignUps(overrides?: CallOverrides): Promise; + + openSignUpPeriod(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + pollResults( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + polls( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + processMessages( + _newStateCommitment: PromiseOrValue, + _newSbCommitment: PromiseOrValue, + _proof: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + publishMessage( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: CallOverrides + ): Promise; + + publishMessageBatch( + _messages: Jubjub.MessageStruct[], + _encPubKeys: Jubjub.PubKeyStruct[], + overrides?: CallOverrides + ): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + resetBallotCommitment( + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setVkRegistry( + _vkRegistry: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + signUp( + _pubKey: Jubjub.PubKeyStruct, + _signUpGatekeeperData: PromiseOrValue, + _initialVoiceCreditProxyData: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + signUpGatekeeper(overrides?: CallOverrides): Promise; + + signUpTimestamp(overrides?: CallOverrides): Promise; + + signUpsOpen(overrides?: CallOverrides): Promise; + + startVoting( + _voteOptionTreeDepth: PromiseOrValue, + _duration: PromiseOrValue, + _coordinatorPubKey: Jubjub.PubKeyStruct, + overrides?: CallOverrides + ): Promise; + + stateAq(overrides?: CallOverrides): Promise; + + stateLeafTimeStamps( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + stateTreeDepth(overrides?: CallOverrides): Promise; + + stateTreeSubDepth(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + vkRegistry(overrides?: CallOverrides): Promise; + + voiceCreditProxy(overrides?: CallOverrides): Promise; + + voteDeadline(overrides?: CallOverrides): Promise; + + voteDurationSeconds(overrides?: CallOverrides): Promise; + + voteOptionTreeDepth(overrides?: CallOverrides): Promise; + }; + + filters: { + "DeployPoll(uint256,address,tuple)"( + _pollId?: null, + _pollAddr?: null, + _pubKey?: null + ): DeployPollEventFilter; + DeployPoll( + _pollId?: null, + _pollAddr?: null, + _pubKey?: null + ): DeployPollEventFilter; + + "Init(address,address)"( + _signUpGatekeeper?: null, + _topupCredit?: null + ): InitEventFilter; + Init(_signUpGatekeeper?: null, _topupCredit?: null): InitEventFilter; + + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "MergeMaciStateAq(uint256)"(_pollId?: null): MergeMaciStateAqEventFilter; + MergeMaciStateAq(_pollId?: null): MergeMaciStateAqEventFilter; + + "MergeMaciStateAqSubRoots(uint256,uint256)"( + _pollId?: null, + _numSrQueueOps?: null + ): MergeMaciStateAqSubRootsEventFilter; + MergeMaciStateAqSubRoots( + _pollId?: null, + _numSrQueueOps?: null + ): MergeMaciStateAqSubRootsEventFilter; + + "MergeMessageAq(uint256)"(_messageRoot?: null): MergeMessageAqEventFilter; + MergeMessageAq(_messageRoot?: null): MergeMessageAqEventFilter; + + "MergeMessageAqSubRoots(uint256)"( + _numSrQueueOps?: null + ): MergeMessageAqSubRootsEventFilter; + MergeMessageAqSubRoots( + _numSrQueueOps?: null + ): MergeMessageAqSubRootsEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + + "PublishMessage(tuple,tuple)"( + _message?: null, + _encPubKey?: null + ): PublishMessageEventFilter; + PublishMessage( + _message?: null, + _encPubKey?: null + ): PublishMessageEventFilter; + + "SignUp(uint256,tuple,uint256,uint256)"( + _stateIndex?: null, + _userPubKey?: null, + _voiceCreditBalance?: null, + _timestamp?: null + ): SignUpEventFilter; + SignUp( + _stateIndex?: null, + _userPubKey?: null, + _voiceCreditBalance?: null, + _timestamp?: null + ): SignUpEventFilter; + }; + + estimateGas: { + blankMessageLeafHash(overrides?: CallOverrides): Promise; + + blankStateLeafHash(overrides?: CallOverrides): Promise; + + calculateCurrentMessageBatchIndex( + overrides?: CallOverrides + ): Promise; + + coordinatorPubKey(overrides?: CallOverrides): Promise; + + coordinatorPubKeyHash(overrides?: CallOverrides): Promise; + + currentBallotCommitment(overrides?: CallOverrides): Promise; + + currentMessageCommitment(overrides?: CallOverrides): Promise; + + currentSbCommitment(overrides?: CallOverrides): Promise; + + currentStateCommitment(overrides?: CallOverrides): Promise; + + hash( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashMessageLeaf( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: CallOverrides + ): Promise; + + hashStateLeaf( + _stateLeaf: Jubjub.StateLeafStruct, + overrides?: CallOverrides + ): Promise; + + initialize( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _stateTreeSubDepth: PromiseOrValue, + _messageTreeSubDepth: PromiseOrValue, + _emptyBallotRoots: PromiseOrValue[], + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + _stateAq: PromiseOrValue, + _messageAq: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isInitialised(overrides?: CallOverrides): Promise; + + mergeMessageAq( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeMessageAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeStateAq( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeStateAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + messageAq(overrides?: CallOverrides): Promise; + + messageTreeDepth(overrides?: CallOverrides): Promise; + + messageTreeSubDepth(overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + numBatchesProcessed(overrides?: CallOverrides): Promise; + + numMessages(overrides?: CallOverrides): Promise; + + numPolls(overrides?: CallOverrides): Promise; + + numSignUps(overrides?: CallOverrides): Promise; + + openSignUpPeriod( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + pollResults( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + polls( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + processMessages( + _newStateCommitment: PromiseOrValue, + _newSbCommitment: PromiseOrValue, + _proof: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + publishMessage( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + publishMessageBatch( + _messages: Jubjub.MessageStruct[], + _encPubKeys: Jubjub.PubKeyStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + resetBallotCommitment( + _voteOptionTreeDepth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVkRegistry( + _vkRegistry: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + signUp( + _pubKey: Jubjub.PubKeyStruct, + _signUpGatekeeperData: PromiseOrValue, + _initialVoiceCreditProxyData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + signUpGatekeeper(overrides?: CallOverrides): Promise; + + signUpTimestamp(overrides?: CallOverrides): Promise; + + signUpsOpen(overrides?: CallOverrides): Promise; + + startVoting( + _voteOptionTreeDepth: PromiseOrValue, + _duration: PromiseOrValue, + _coordinatorPubKey: Jubjub.PubKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stateAq(overrides?: CallOverrides): Promise; + + stateLeafTimeStamps( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + stateTreeDepth(overrides?: CallOverrides): Promise; + + stateTreeSubDepth(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + vkRegistry(overrides?: CallOverrides): Promise; + + voiceCreditProxy(overrides?: CallOverrides): Promise; + + voteDeadline(overrides?: CallOverrides): Promise; + + voteDurationSeconds(overrides?: CallOverrides): Promise; + + voteOptionTreeDepth(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + blankMessageLeafHash( + overrides?: CallOverrides + ): Promise; + + blankStateLeafHash( + overrides?: CallOverrides + ): Promise; + + calculateCurrentMessageBatchIndex( + overrides?: CallOverrides + ): Promise; + + coordinatorPubKey(overrides?: CallOverrides): Promise; + + coordinatorPubKeyHash( + overrides?: CallOverrides + ): Promise; + + currentBallotCommitment( + overrides?: CallOverrides + ): Promise; + + currentMessageCommitment( + overrides?: CallOverrides + ): Promise; + + currentSbCommitment( + overrides?: CallOverrides + ): Promise; + + currentStateCommitment( + overrides?: CallOverrides + ): Promise; + + hash( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashMessageLeaf( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: CallOverrides + ): Promise; + + hashStateLeaf( + _stateLeaf: Jubjub.StateLeafStruct, + overrides?: CallOverrides + ): Promise; + + initialize( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _stateTreeSubDepth: PromiseOrValue, + _messageTreeSubDepth: PromiseOrValue, + _emptyBallotRoots: PromiseOrValue[], + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + _stateAq: PromiseOrValue, + _messageAq: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isInitialised(overrides?: CallOverrides): Promise; + + mergeMessageAq( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeMessageAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeStateAq( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeStateAqSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + messageAq(overrides?: CallOverrides): Promise; + + messageTreeDepth(overrides?: CallOverrides): Promise; + + messageTreeSubDepth( + overrides?: CallOverrides + ): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + numBatchesProcessed( + overrides?: CallOverrides + ): Promise; + + numMessages(overrides?: CallOverrides): Promise; + + numPolls(overrides?: CallOverrides): Promise; + + numSignUps(overrides?: CallOverrides): Promise; + + openSignUpPeriod( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + pollResults( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + polls( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + processMessages( + _newStateCommitment: PromiseOrValue, + _newSbCommitment: PromiseOrValue, + _proof: PromiseOrValue[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + publishMessage( + _message: Jubjub.MessageStruct, + _encPubKey: Jubjub.PubKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + publishMessageBatch( + _messages: Jubjub.MessageStruct[], + _encPubKeys: Jubjub.PubKeyStruct[], + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + resetBallotCommitment( + _voteOptionTreeDepth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVkRegistry( + _vkRegistry: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + signUp( + _pubKey: Jubjub.PubKeyStruct, + _signUpGatekeeperData: PromiseOrValue, + _initialVoiceCreditProxyData: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + signUpGatekeeper(overrides?: CallOverrides): Promise; + + signUpTimestamp(overrides?: CallOverrides): Promise; + + signUpsOpen(overrides?: CallOverrides): Promise; + + startVoting( + _voteOptionTreeDepth: PromiseOrValue, + _duration: PromiseOrValue, + _coordinatorPubKey: Jubjub.PubKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + stateAq(overrides?: CallOverrides): Promise; + + stateLeafTimeStamps( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + stateTreeDepth(overrides?: CallOverrides): Promise; + + stateTreeSubDepth(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + vkRegistry(overrides?: CallOverrides): Promise; + + voiceCreditProxy(overrides?: CallOverrides): Promise; + + voteDeadline(overrides?: CallOverrides): Promise; + + voteDurationSeconds( + overrides?: CallOverrides + ): Promise; + + voteOptionTreeDepth( + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/JubjubFactory.ts b/packages/contracts/typechain-types/contracts/JubjubFactory.ts new file mode 100644 index 00000000..b003373b --- /dev/null +++ b/packages/contracts/typechain-types/contracts/JubjubFactory.ts @@ -0,0 +1,1345 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../common"; + +export declare namespace Pairing { + export type G1PointStruct = { + x: PromiseOrValue; + y: PromiseOrValue; + }; + + export type G1PointStructOutput = [BigNumber, BigNumber] & { + x: BigNumber; + y: BigNumber; + }; + + export type G2PointStruct = { + x: [PromiseOrValue, PromiseOrValue]; + y: [PromiseOrValue, PromiseOrValue]; + }; + + export type G2PointStructOutput = [ + [BigNumber, BigNumber], + [BigNumber, BigNumber] + ] & { x: [BigNumber, BigNumber]; y: [BigNumber, BigNumber] }; +} + +export declare namespace VkRegistry { + export type VerifyingKeyStruct = { + alpha1: Pairing.G1PointStruct; + beta2: Pairing.G2PointStruct; + gamma2: Pairing.G2PointStruct; + delta2: Pairing.G2PointStruct; + ic: Pairing.G1PointStruct[]; + }; + + export type VerifyingKeyStructOutput = [ + Pairing.G1PointStructOutput, + Pairing.G2PointStructOutput, + Pairing.G2PointStructOutput, + Pairing.G2PointStructOutput, + Pairing.G1PointStructOutput[] + ] & { + alpha1: Pairing.G1PointStructOutput; + beta2: Pairing.G2PointStructOutput; + gamma2: Pairing.G2PointStructOutput; + delta2: Pairing.G2PointStructOutput; + ic: Pairing.G1PointStructOutput[]; + }; +} + +export interface JubjubFactoryInterface extends utils.Interface { + functions: { + "currentJubjub()": FunctionFragment; + "deployJubjub(bytes32,address,address)": FunctionFragment; + "deployMessageTree(bytes32)": FunctionFragment; + "deployStateTree(bytes32)": FunctionFragment; + "determineJubjub(bytes32)": FunctionFragment; + "genProcessVkSig(uint256,uint256,uint256,uint256)": FunctionFragment; + "genSubsidyVkSig(uint256,uint256,uint256)": FunctionFragment; + "genTallyVkSig(uint256,uint256,uint256)": FunctionFragment; + "getProcessVk(uint256,uint256,uint256,uint256)": FunctionFragment; + "getProcessVkBySig(uint256)": FunctionFragment; + "getSubsidyVk(uint256,uint256,uint256)": FunctionFragment; + "getSubsidyVkBySig(uint256)": FunctionFragment; + "getTallyVk(uint256,uint256,uint256)": FunctionFragment; + "getTallyVkBySig(uint256)": FunctionFragment; + "hasProcessVk(uint256,uint256,uint256,uint256)": FunctionFragment; + "hasSubsidyVk(uint256,uint256,uint256)": FunctionFragment; + "hasTallyVk(uint256,uint256,uint256)": FunctionFragment; + "isProcessVkSet(uint256)": FunctionFragment; + "isSubsidyVkSet(uint256)": FunctionFragment; + "isTallyVkSet(uint256)": FunctionFragment; + "jubjubTemplate()": FunctionFragment; + "multicall(bytes[])": FunctionFragment; + "owner()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "setSubsidyKeys(uint256,uint256,uint256,((uint256,uint256),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256,uint256)[]))": FunctionFragment; + "setVerifyingKeys(uint256,uint256,uint256,uint256,uint256,((uint256,uint256),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256,uint256)[]),((uint256,uint256),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256,uint256)[]))": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "currentJubjub" + | "deployJubjub" + | "deployMessageTree" + | "deployStateTree" + | "determineJubjub" + | "genProcessVkSig" + | "genSubsidyVkSig" + | "genTallyVkSig" + | "getProcessVk" + | "getProcessVkBySig" + | "getSubsidyVk" + | "getSubsidyVkBySig" + | "getTallyVk" + | "getTallyVkBySig" + | "hasProcessVk" + | "hasSubsidyVk" + | "hasTallyVk" + | "isProcessVkSet" + | "isSubsidyVkSet" + | "isTallyVkSet" + | "jubjubTemplate" + | "multicall" + | "owner" + | "renounceOwnership" + | "setSubsidyKeys" + | "setVerifyingKeys" + | "transferOwnership" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "currentJubjub", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "deployJubjub", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "deployMessageTree", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "deployStateTree", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "determineJubjub", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "genProcessVkSig", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "genSubsidyVkSig", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "genTallyVkSig", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getProcessVk", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getProcessVkBySig", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSubsidyVk", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getSubsidyVkBySig", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getTallyVk", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getTallyVkBySig", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "hasProcessVk", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "hasSubsidyVk", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "hasTallyVk", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "isProcessVkSet", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isSubsidyVkSet", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isTallyVkSet", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "jubjubTemplate", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "multicall", + values: [PromiseOrValue[]] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setSubsidyKeys", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + VkRegistry.VerifyingKeyStruct + ] + ): string; + encodeFunctionData( + functionFragment: "setVerifyingKeys", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + VkRegistry.VerifyingKeyStruct, + VkRegistry.VerifyingKeyStruct + ] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "currentJubjub", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deployJubjub", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deployMessageTree", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "deployStateTree", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "determineJubjub", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "genProcessVkSig", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "genSubsidyVkSig", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "genTallyVkSig", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getProcessVk", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getProcessVkBySig", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSubsidyVk", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSubsidyVkBySig", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getTallyVk", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getTallyVkBySig", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "hasProcessVk", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "hasSubsidyVk", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "hasTallyVk", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isProcessVkSet", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isSubsidyVkSet", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isTallyVkSet", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "jubjubTemplate", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setSubsidyKeys", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setVerifyingKeys", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + + events: { + "JubjubDeployed(address)": EventFragment; + "MessageTreeDeployed(address)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + "ProcessVkSet(uint256)": EventFragment; + "StateTreeDeployed(address)": EventFragment; + "SubsidyVkSet(uint256)": EventFragment; + "TallyVkSet(uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "JubjubDeployed"): EventFragment; + getEvent(nameOrSignatureOrTopic: "MessageTreeDeployed"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ProcessVkSet"): EventFragment; + getEvent(nameOrSignatureOrTopic: "StateTreeDeployed"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SubsidyVkSet"): EventFragment; + getEvent(nameOrSignatureOrTopic: "TallyVkSet"): EventFragment; +} + +export interface JubjubDeployedEventObject { + jubjub: string; +} +export type JubjubDeployedEvent = TypedEvent< + [string], + JubjubDeployedEventObject +>; + +export type JubjubDeployedEventFilter = TypedEventFilter; + +export interface MessageTreeDeployedEventObject { + MessageTree: string; +} +export type MessageTreeDeployedEvent = TypedEvent< + [string], + MessageTreeDeployedEventObject +>; + +export type MessageTreeDeployedEventFilter = + TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface ProcessVkSetEventObject { + _sig: BigNumber; +} +export type ProcessVkSetEvent = TypedEvent< + [BigNumber], + ProcessVkSetEventObject +>; + +export type ProcessVkSetEventFilter = TypedEventFilter; + +export interface StateTreeDeployedEventObject { + StateTree: string; +} +export type StateTreeDeployedEvent = TypedEvent< + [string], + StateTreeDeployedEventObject +>; + +export type StateTreeDeployedEventFilter = + TypedEventFilter; + +export interface SubsidyVkSetEventObject { + _sig: BigNumber; +} +export type SubsidyVkSetEvent = TypedEvent< + [BigNumber], + SubsidyVkSetEventObject +>; + +export type SubsidyVkSetEventFilter = TypedEventFilter; + +export interface TallyVkSetEventObject { + _sig: BigNumber; +} +export type TallyVkSetEvent = TypedEvent<[BigNumber], TallyVkSetEventObject>; + +export type TallyVkSetEventFilter = TypedEventFilter; + +export interface JubjubFactory extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: JubjubFactoryInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + currentJubjub(overrides?: CallOverrides): Promise<[string]>; + + deployJubjub( + salt: PromiseOrValue, + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deployMessageTree( + salt: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deployStateTree( + salt: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + determineJubjub( + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + genProcessVkSig( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + genSubsidyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + genTallyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[VkRegistry.VerifyingKeyStructOutput]>; + + getProcessVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[VkRegistry.VerifyingKeyStructOutput]>; + + getSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[VkRegistry.VerifyingKeyStructOutput]>; + + getSubsidyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[VkRegistry.VerifyingKeyStructOutput]>; + + getTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[VkRegistry.VerifyingKeyStructOutput]>; + + getTallyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[VkRegistry.VerifyingKeyStructOutput]>; + + hasProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + hasSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + hasTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isProcessVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isSubsidyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isTallyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + jubjubTemplate(overrides?: CallOverrides): Promise<[string]>; + + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSubsidyKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _subsidyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVerifyingKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + _processVk: VkRegistry.VerifyingKeyStruct, + _tallyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + currentJubjub(overrides?: CallOverrides): Promise; + + deployJubjub( + salt: PromiseOrValue, + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deployMessageTree( + salt: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deployStateTree( + salt: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + determineJubjub( + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genProcessVkSig( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genSubsidyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genTallyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isProcessVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSubsidyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isTallyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + jubjubTemplate(overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSubsidyKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _subsidyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVerifyingKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + _processVk: VkRegistry.VerifyingKeyStruct, + _tallyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + currentJubjub(overrides?: CallOverrides): Promise; + + deployJubjub( + salt: PromiseOrValue, + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + deployMessageTree( + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + deployStateTree( + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + determineJubjub( + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genProcessVkSig( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genSubsidyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genTallyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isProcessVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSubsidyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isTallyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + jubjubTemplate(overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + setSubsidyKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _subsidyVk: VkRegistry.VerifyingKeyStruct, + overrides?: CallOverrides + ): Promise; + + setVerifyingKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + _processVk: VkRegistry.VerifyingKeyStruct, + _tallyVk: VkRegistry.VerifyingKeyStruct, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "JubjubDeployed(address)"( + jubjub?: PromiseOrValue | null + ): JubjubDeployedEventFilter; + JubjubDeployed( + jubjub?: PromiseOrValue | null + ): JubjubDeployedEventFilter; + + "MessageTreeDeployed(address)"( + MessageTree?: PromiseOrValue | null + ): MessageTreeDeployedEventFilter; + MessageTreeDeployed( + MessageTree?: PromiseOrValue | null + ): MessageTreeDeployedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + + "ProcessVkSet(uint256)"(_sig?: null): ProcessVkSetEventFilter; + ProcessVkSet(_sig?: null): ProcessVkSetEventFilter; + + "StateTreeDeployed(address)"( + StateTree?: PromiseOrValue | null + ): StateTreeDeployedEventFilter; + StateTreeDeployed( + StateTree?: PromiseOrValue | null + ): StateTreeDeployedEventFilter; + + "SubsidyVkSet(uint256)"(_sig?: null): SubsidyVkSetEventFilter; + SubsidyVkSet(_sig?: null): SubsidyVkSetEventFilter; + + "TallyVkSet(uint256)"(_sig?: null): TallyVkSetEventFilter; + TallyVkSet(_sig?: null): TallyVkSetEventFilter; + }; + + estimateGas: { + currentJubjub(overrides?: CallOverrides): Promise; + + deployJubjub( + salt: PromiseOrValue, + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deployMessageTree( + salt: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deployStateTree( + salt: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + determineJubjub( + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genProcessVkSig( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genSubsidyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genTallyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isProcessVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSubsidyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isTallyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + jubjubTemplate(overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSubsidyKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _subsidyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVerifyingKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + _processVk: VkRegistry.VerifyingKeyStruct, + _tallyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + currentJubjub(overrides?: CallOverrides): Promise; + + deployJubjub( + salt: PromiseOrValue, + _signUpGatekeeper: PromiseOrValue, + _voiceCreditProxy: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deployMessageTree( + salt: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + deployStateTree( + salt: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + determineJubjub( + salt: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genProcessVkSig( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genSubsidyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genTallyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isProcessVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSubsidyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isTallyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + jubjubTemplate(overrides?: CallOverrides): Promise; + + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSubsidyKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _subsidyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVerifyingKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + _processVk: VkRegistry.VerifyingKeyStruct, + _tallyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/MessageTree.ts b/packages/contracts/typechain-types/contracts/MessageTree.ts new file mode 100644 index 00000000..db212888 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/MessageTree.ts @@ -0,0 +1,725 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../common"; + +export interface MessageTreeInterface extends utils.Interface { + functions: { + "MAX_DEPTH()": FunctionFragment; + "calcMinHeight()": FunctionFragment; + "currentSubtreeIndex()": FunctionFragment; + "enqueue(uint256)": FunctionFragment; + "fill()": FunctionFragment; + "getMainRoot(uint256)": FunctionFragment; + "getSmallSRTroot()": FunctionFragment; + "getSrIndices()": FunctionFragment; + "getSubRoot(uint256)": FunctionFragment; + "hashLevelLeaf(uint256,uint256)": FunctionFragment; + "initialize()": FunctionFragment; + "insertSubTree(uint256)": FunctionFragment; + "mainRoots(uint256)": FunctionFragment; + "merge(uint256)": FunctionFragment; + "mergeSubRoots(uint256)": FunctionFragment; + "numLeaves()": FunctionFragment; + "owner()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "smallSRTroot()": FunctionFragment; + "subDepth()": FunctionFragment; + "subRoots(uint256)": FunctionFragment; + "subTreesMerged()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "treeMerged()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "MAX_DEPTH" + | "calcMinHeight" + | "currentSubtreeIndex" + | "enqueue" + | "fill" + | "getMainRoot" + | "getSmallSRTroot" + | "getSrIndices" + | "getSubRoot" + | "hashLevelLeaf" + | "initialize" + | "insertSubTree" + | "mainRoots" + | "merge" + | "mergeSubRoots" + | "numLeaves" + | "owner" + | "renounceOwnership" + | "smallSRTroot" + | "subDepth" + | "subRoots" + | "subTreesMerged" + | "transferOwnership" + | "treeMerged" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "MAX_DEPTH", values?: undefined): string; + encodeFunctionData( + functionFragment: "calcMinHeight", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "currentSubtreeIndex", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "enqueue", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "fill", values?: undefined): string; + encodeFunctionData( + functionFragment: "getMainRoot", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSmallSRTroot", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getSrIndices", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getSubRoot", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "hashLevelLeaf", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "insertSubTree", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "mainRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "merge", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "mergeSubRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "numLeaves", values?: undefined): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "smallSRTroot", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "subDepth", values?: undefined): string; + encodeFunctionData( + functionFragment: "subRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "subTreesMerged", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "treeMerged", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "MAX_DEPTH", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "calcMinHeight", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "currentSubtreeIndex", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "enqueue", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "fill", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getMainRoot", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSmallSRTroot", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSrIndices", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getSubRoot", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "hashLevelLeaf", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "insertSubTree", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "mainRoots", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "merge", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "mergeSubRoots", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "numLeaves", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "smallSRTroot", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "subDepth", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "subRoots", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "subTreesMerged", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "treeMerged", data: BytesLike): Result; + + events: { + "Initialized(uint8)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export interface InitializedEventObject { + version: number; +} +export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; + +export type InitializedEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface MessageTree extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: MessageTreeInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + MAX_DEPTH(overrides?: CallOverrides): Promise<[BigNumber]>; + + calcMinHeight(overrides?: CallOverrides): Promise<[BigNumber]>; + + currentSubtreeIndex(overrides?: CallOverrides): Promise<[BigNumber]>; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getSmallSRTroot(overrides?: CallOverrides): Promise<[BigNumber]>; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise<[BigNumber]>; + + subDepth(overrides?: CallOverrides): Promise<[BigNumber]>; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + subTreesMerged(overrides?: CallOverrides): Promise<[boolean]>; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise<[boolean]>; + }; + + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + + callStatic: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + fill(overrides?: CallOverrides): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize(overrides?: CallOverrides): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; + + filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex( + overrides?: CallOverrides + ): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/StateTree.ts b/packages/contracts/typechain-types/contracts/StateTree.ts new file mode 100644 index 00000000..1694e5a1 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/StateTree.ts @@ -0,0 +1,725 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../common"; + +export interface StateTreeInterface extends utils.Interface { + functions: { + "MAX_DEPTH()": FunctionFragment; + "calcMinHeight()": FunctionFragment; + "currentSubtreeIndex()": FunctionFragment; + "enqueue(uint256)": FunctionFragment; + "fill()": FunctionFragment; + "getMainRoot(uint256)": FunctionFragment; + "getSmallSRTroot()": FunctionFragment; + "getSrIndices()": FunctionFragment; + "getSubRoot(uint256)": FunctionFragment; + "hashLevelLeaf(uint256,uint256)": FunctionFragment; + "initialize()": FunctionFragment; + "insertSubTree(uint256)": FunctionFragment; + "mainRoots(uint256)": FunctionFragment; + "merge(uint256)": FunctionFragment; + "mergeSubRoots(uint256)": FunctionFragment; + "numLeaves()": FunctionFragment; + "owner()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "smallSRTroot()": FunctionFragment; + "subDepth()": FunctionFragment; + "subRoots(uint256)": FunctionFragment; + "subTreesMerged()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + "treeMerged()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "MAX_DEPTH" + | "calcMinHeight" + | "currentSubtreeIndex" + | "enqueue" + | "fill" + | "getMainRoot" + | "getSmallSRTroot" + | "getSrIndices" + | "getSubRoot" + | "hashLevelLeaf" + | "initialize" + | "insertSubTree" + | "mainRoots" + | "merge" + | "mergeSubRoots" + | "numLeaves" + | "owner" + | "renounceOwnership" + | "smallSRTroot" + | "subDepth" + | "subRoots" + | "subTreesMerged" + | "transferOwnership" + | "treeMerged" + ): FunctionFragment; + + encodeFunctionData(functionFragment: "MAX_DEPTH", values?: undefined): string; + encodeFunctionData( + functionFragment: "calcMinHeight", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "currentSubtreeIndex", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "enqueue", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "fill", values?: undefined): string; + encodeFunctionData( + functionFragment: "getMainRoot", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSmallSRTroot", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getSrIndices", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getSubRoot", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "hashLevelLeaf", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "insertSubTree", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "mainRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "merge", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "mergeSubRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "numLeaves", values?: undefined): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "smallSRTroot", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "subDepth", values?: undefined): string; + encodeFunctionData( + functionFragment: "subRoots", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "subTreesMerged", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "treeMerged", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "MAX_DEPTH", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "calcMinHeight", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "currentSubtreeIndex", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "enqueue", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "fill", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getMainRoot", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSmallSRTroot", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSrIndices", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getSubRoot", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "hashLevelLeaf", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "insertSubTree", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "mainRoots", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "merge", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "mergeSubRoots", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "numLeaves", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "smallSRTroot", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "subDepth", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "subRoots", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "subTreesMerged", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "treeMerged", data: BytesLike): Result; + + events: { + "Initialized(uint8)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export interface InitializedEventObject { + version: number; +} +export type InitializedEvent = TypedEvent<[number], InitializedEventObject>; + +export type InitializedEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface StateTree extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: StateTreeInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + MAX_DEPTH(overrides?: CallOverrides): Promise<[BigNumber]>; + + calcMinHeight(overrides?: CallOverrides): Promise<[BigNumber]>; + + currentSubtreeIndex(overrides?: CallOverrides): Promise<[BigNumber]>; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getSmallSRTroot(overrides?: CallOverrides): Promise<[BigNumber]>; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise<[BigNumber]>; + + subDepth(overrides?: CallOverrides): Promise<[BigNumber]>; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + subTreesMerged(overrides?: CallOverrides): Promise<[boolean]>; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise<[boolean]>; + }; + + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + + callStatic: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + fill(overrides?: CallOverrides): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize(overrides?: CallOverrides): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; + + filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex(overrides?: CallOverrides): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + MAX_DEPTH(overrides?: CallOverrides): Promise; + + calcMinHeight(overrides?: CallOverrides): Promise; + + currentSubtreeIndex( + overrides?: CallOverrides + ): Promise; + + enqueue( + _leaf: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + fill( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getMainRoot( + _depth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSmallSRTroot(overrides?: CallOverrides): Promise; + + getSrIndices(overrides?: CallOverrides): Promise; + + getSubRoot( + _index: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hashLevelLeaf( + _level: PromiseOrValue, + _leaf: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + initialize( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + insertSubTree( + _subRoot: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mainRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + merge( + _depth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + mergeSubRoots( + _numSrQueueOps: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + numLeaves(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + smallSRTroot(overrides?: CallOverrides): Promise; + + subDepth(overrides?: CallOverrides): Promise; + + subRoots( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + subTreesMerged(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + treeMerged(overrides?: CallOverrides): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/VkRegistry.ts b/packages/contracts/typechain-types/contracts/VkRegistry.ts new file mode 100644 index 00000000..430b5bbf --- /dev/null +++ b/packages/contracts/typechain-types/contracts/VkRegistry.ts @@ -0,0 +1,1059 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../common"; + +export declare namespace Pairing { + export type G1PointStruct = { + x: PromiseOrValue; + y: PromiseOrValue; + }; + + export type G1PointStructOutput = [BigNumber, BigNumber] & { + x: BigNumber; + y: BigNumber; + }; + + export type G2PointStruct = { + x: [PromiseOrValue, PromiseOrValue]; + y: [PromiseOrValue, PromiseOrValue]; + }; + + export type G2PointStructOutput = [ + [BigNumber, BigNumber], + [BigNumber, BigNumber] + ] & { x: [BigNumber, BigNumber]; y: [BigNumber, BigNumber] }; +} + +export declare namespace VkRegistry { + export type VerifyingKeyStruct = { + alpha1: Pairing.G1PointStruct; + beta2: Pairing.G2PointStruct; + gamma2: Pairing.G2PointStruct; + delta2: Pairing.G2PointStruct; + ic: Pairing.G1PointStruct[]; + }; + + export type VerifyingKeyStructOutput = [ + Pairing.G1PointStructOutput, + Pairing.G2PointStructOutput, + Pairing.G2PointStructOutput, + Pairing.G2PointStructOutput, + Pairing.G1PointStructOutput[] + ] & { + alpha1: Pairing.G1PointStructOutput; + beta2: Pairing.G2PointStructOutput; + gamma2: Pairing.G2PointStructOutput; + delta2: Pairing.G2PointStructOutput; + ic: Pairing.G1PointStructOutput[]; + }; +} + +export interface VkRegistryInterface extends utils.Interface { + functions: { + "genProcessVkSig(uint256,uint256,uint256,uint256)": FunctionFragment; + "genSubsidyVkSig(uint256,uint256,uint256)": FunctionFragment; + "genTallyVkSig(uint256,uint256,uint256)": FunctionFragment; + "getProcessVk(uint256,uint256,uint256,uint256)": FunctionFragment; + "getProcessVkBySig(uint256)": FunctionFragment; + "getSubsidyVk(uint256,uint256,uint256)": FunctionFragment; + "getSubsidyVkBySig(uint256)": FunctionFragment; + "getTallyVk(uint256,uint256,uint256)": FunctionFragment; + "getTallyVkBySig(uint256)": FunctionFragment; + "hasProcessVk(uint256,uint256,uint256,uint256)": FunctionFragment; + "hasSubsidyVk(uint256,uint256,uint256)": FunctionFragment; + "hasTallyVk(uint256,uint256,uint256)": FunctionFragment; + "isProcessVkSet(uint256)": FunctionFragment; + "isSubsidyVkSet(uint256)": FunctionFragment; + "isTallyVkSet(uint256)": FunctionFragment; + "owner()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "setSubsidyKeys(uint256,uint256,uint256,((uint256,uint256),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256,uint256)[]))": FunctionFragment; + "setVerifyingKeys(uint256,uint256,uint256,uint256,uint256,((uint256,uint256),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256,uint256)[]),((uint256,uint256),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256[2],uint256[2]),(uint256,uint256)[]))": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "genProcessVkSig" + | "genSubsidyVkSig" + | "genTallyVkSig" + | "getProcessVk" + | "getProcessVkBySig" + | "getSubsidyVk" + | "getSubsidyVkBySig" + | "getTallyVk" + | "getTallyVkBySig" + | "hasProcessVk" + | "hasSubsidyVk" + | "hasTallyVk" + | "isProcessVkSet" + | "isSubsidyVkSet" + | "isTallyVkSet" + | "owner" + | "renounceOwnership" + | "setSubsidyKeys" + | "setVerifyingKeys" + | "transferOwnership" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "genProcessVkSig", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "genSubsidyVkSig", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "genTallyVkSig", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getProcessVk", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getProcessVkBySig", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getSubsidyVk", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getSubsidyVkBySig", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getTallyVk", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getTallyVkBySig", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "hasProcessVk", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "hasSubsidyVk", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "hasTallyVk", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "isProcessVkSet", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isSubsidyVkSet", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isTallyVkSet", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setSubsidyKeys", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + VkRegistry.VerifyingKeyStruct + ] + ): string; + encodeFunctionData( + functionFragment: "setVerifyingKeys", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + VkRegistry.VerifyingKeyStruct, + VkRegistry.VerifyingKeyStruct + ] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "genProcessVkSig", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "genSubsidyVkSig", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "genTallyVkSig", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getProcessVk", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getProcessVkBySig", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSubsidyVk", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getSubsidyVkBySig", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "getTallyVk", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getTallyVkBySig", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "hasProcessVk", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "hasSubsidyVk", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "hasTallyVk", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isProcessVkSet", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isSubsidyVkSet", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isTallyVkSet", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setSubsidyKeys", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setVerifyingKeys", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + + events: { + "OwnershipTransferred(address,address)": EventFragment; + "ProcessVkSet(uint256)": EventFragment; + "SubsidyVkSet(uint256)": EventFragment; + "TallyVkSet(uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ProcessVkSet"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SubsidyVkSet"): EventFragment; + getEvent(nameOrSignatureOrTopic: "TallyVkSet"): EventFragment; +} + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface ProcessVkSetEventObject { + _sig: BigNumber; +} +export type ProcessVkSetEvent = TypedEvent< + [BigNumber], + ProcessVkSetEventObject +>; + +export type ProcessVkSetEventFilter = TypedEventFilter; + +export interface SubsidyVkSetEventObject { + _sig: BigNumber; +} +export type SubsidyVkSetEvent = TypedEvent< + [BigNumber], + SubsidyVkSetEventObject +>; + +export type SubsidyVkSetEventFilter = TypedEventFilter; + +export interface TallyVkSetEventObject { + _sig: BigNumber; +} +export type TallyVkSetEvent = TypedEvent<[BigNumber], TallyVkSetEventObject>; + +export type TallyVkSetEventFilter = TypedEventFilter; + +export interface VkRegistry extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: VkRegistryInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + genProcessVkSig( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + genSubsidyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + genTallyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[VkRegistry.VerifyingKeyStructOutput]>; + + getProcessVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[VkRegistry.VerifyingKeyStructOutput]>; + + getSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[VkRegistry.VerifyingKeyStructOutput]>; + + getSubsidyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[VkRegistry.VerifyingKeyStructOutput]>; + + getTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[VkRegistry.VerifyingKeyStructOutput]>; + + getTallyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[VkRegistry.VerifyingKeyStructOutput]>; + + hasProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + hasSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + hasTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isProcessVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isSubsidyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + isTallyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSubsidyKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _subsidyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVerifyingKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + _processVk: VkRegistry.VerifyingKeyStruct, + _tallyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + genProcessVkSig( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genSubsidyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genTallyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isProcessVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSubsidyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isTallyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSubsidyKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _subsidyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVerifyingKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + _processVk: VkRegistry.VerifyingKeyStruct, + _tallyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + genProcessVkSig( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genSubsidyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genTallyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isProcessVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSubsidyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isTallyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + setSubsidyKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _subsidyVk: VkRegistry.VerifyingKeyStruct, + overrides?: CallOverrides + ): Promise; + + setVerifyingKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + _processVk: VkRegistry.VerifyingKeyStruct, + _tallyVk: VkRegistry.VerifyingKeyStruct, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + + "ProcessVkSet(uint256)"(_sig?: null): ProcessVkSetEventFilter; + ProcessVkSet(_sig?: null): ProcessVkSetEventFilter; + + "SubsidyVkSet(uint256)"(_sig?: null): SubsidyVkSetEventFilter; + SubsidyVkSet(_sig?: null): SubsidyVkSetEventFilter; + + "TallyVkSet(uint256)"(_sig?: null): TallyVkSetEventFilter; + TallyVkSet(_sig?: null): TallyVkSetEventFilter; + }; + + estimateGas: { + genProcessVkSig( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genSubsidyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genTallyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isProcessVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSubsidyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isTallyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSubsidyKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _subsidyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVerifyingKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + _processVk: VkRegistry.VerifyingKeyStruct, + _tallyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + genProcessVkSig( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genSubsidyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + genTallyVkSig( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getProcessVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getSubsidyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTallyVkBySig( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasProcessVk( + _stateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasSubsidyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasTallyVk( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isProcessVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isSubsidyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isTallyVkSet( + _sig: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setSubsidyKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _subsidyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setVerifyingKeys( + _stateTreeDepth: PromiseOrValue, + _intStateTreeDepth: PromiseOrValue, + _messageTreeDepth: PromiseOrValue, + _voteOptionTreeDepth: PromiseOrValue, + _messageBatchSize: PromiseOrValue, + _processVk: VkRegistry.VerifyingKeyStruct, + _tallyVk: VkRegistry.VerifyingKeyStruct, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/ConstantInitialVoiceCreditProxy.ts b/packages/contracts/typechain-types/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/ConstantInitialVoiceCreditProxy.ts new file mode 100644 index 00000000..aeedfbae --- /dev/null +++ b/packages/contracts/typechain-types/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/ConstantInitialVoiceCreditProxy.ts @@ -0,0 +1,109 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface ConstantInitialVoiceCreditProxyInterface + extends utils.Interface { + functions: { + "getVoiceCredits(address,bytes)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "getVoiceCredits"): FunctionFragment; + + encodeFunctionData( + functionFragment: "getVoiceCredits", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "getVoiceCredits", + data: BytesLike + ): Result; + + events: {}; +} + +export interface ConstantInitialVoiceCreditProxy extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ConstantInitialVoiceCreditProxyInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + getVoiceCredits( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + }; + + getVoiceCredits( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + getVoiceCredits( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + getVoiceCredits( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + getVoiceCredits( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/InitialVoiceCreditProxy.ts b/packages/contracts/typechain-types/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/InitialVoiceCreditProxy.ts new file mode 100644 index 00000000..a08b7081 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/InitialVoiceCreditProxy.ts @@ -0,0 +1,108 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface InitialVoiceCreditProxyInterface extends utils.Interface { + functions: { + "getVoiceCredits(address,bytes)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "getVoiceCredits"): FunctionFragment; + + encodeFunctionData( + functionFragment: "getVoiceCredits", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "getVoiceCredits", + data: BytesLike + ): Result; + + events: {}; +} + +export interface InitialVoiceCreditProxy extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: InitialVoiceCreditProxyInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + getVoiceCredits( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + }; + + getVoiceCredits( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + getVoiceCredits( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + getVoiceCredits( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + getVoiceCredits( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/index.ts b/packages/contracts/typechain-types/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/index.ts new file mode 100644 index 00000000..bc1688ff --- /dev/null +++ b/packages/contracts/typechain-types/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { ConstantInitialVoiceCreditProxy } from "./ConstantInitialVoiceCreditProxy"; +export type { InitialVoiceCreditProxy } from "./InitialVoiceCreditProxy"; diff --git a/packages/contracts/typechain-types/contracts/flavors/F.sol/FreeForAllGatekeeper.ts b/packages/contracts/typechain-types/contracts/flavors/F.sol/FreeForAllGatekeeper.ts new file mode 100644 index 00000000..449d58f2 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/flavors/F.sol/FreeForAllGatekeeper.ts @@ -0,0 +1,107 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface FreeForAllGatekeeperInterface extends utils.Interface { + functions: { + "register(address,bytes)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "register"): FunctionFragment; + + encodeFunctionData( + functionFragment: "register", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "register", data: BytesLike): Result; + + events: {}; +} + +export interface FreeForAllGatekeeper extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: FreeForAllGatekeeperInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + register( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + register( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + register( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + register( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + register( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/flavors/F.sol/index.ts b/packages/contracts/typechain-types/contracts/flavors/F.sol/index.ts new file mode 100644 index 00000000..480e239a --- /dev/null +++ b/packages/contracts/typechain-types/contracts/flavors/F.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { FreeForAllGatekeeper } from "./FreeForAllGatekeeper"; diff --git a/packages/contracts/typechain-types/contracts/flavors/IInitialVoiceCreditProxy.ts b/packages/contracts/typechain-types/contracts/flavors/IInitialVoiceCreditProxy.ts new file mode 100644 index 00000000..6cfe5543 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/flavors/IInitialVoiceCreditProxy.ts @@ -0,0 +1,108 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface IInitialVoiceCreditProxyInterface extends utils.Interface { + functions: { + "getVoiceCredits(address,bytes)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "getVoiceCredits"): FunctionFragment; + + encodeFunctionData( + functionFragment: "getVoiceCredits", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "getVoiceCredits", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IInitialVoiceCreditProxy extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IInitialVoiceCreditProxyInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + getVoiceCredits( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + }; + + getVoiceCredits( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + getVoiceCredits( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + getVoiceCredits( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + getVoiceCredits( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/flavors/ISignUpGatekeeper.ts b/packages/contracts/typechain-types/contracts/flavors/ISignUpGatekeeper.ts new file mode 100644 index 00000000..0284f013 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/flavors/ISignUpGatekeeper.ts @@ -0,0 +1,107 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface ISignUpGatekeeperInterface extends utils.Interface { + functions: { + "register(address,bytes)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "register"): FunctionFragment; + + encodeFunctionData( + functionFragment: "register", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "register", data: BytesLike): Result; + + events: {}; +} + +export interface ISignUpGatekeeper extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ISignUpGatekeeperInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/flavors/NFTSignup.sol/InitialVoiceCreditProxy.ts b/packages/contracts/typechain-types/contracts/flavors/NFTSignup.sol/InitialVoiceCreditProxy.ts new file mode 100644 index 00000000..a08b7081 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/flavors/NFTSignup.sol/InitialVoiceCreditProxy.ts @@ -0,0 +1,108 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface InitialVoiceCreditProxyInterface extends utils.Interface { + functions: { + "getVoiceCredits(address,bytes)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "getVoiceCredits"): FunctionFragment; + + encodeFunctionData( + functionFragment: "getVoiceCredits", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "getVoiceCredits", + data: BytesLike + ): Result; + + events: {}; +} + +export interface InitialVoiceCreditProxy extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: InitialVoiceCreditProxyInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + getVoiceCredits( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + }; + + getVoiceCredits( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + getVoiceCredits( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + getVoiceCredits( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + getVoiceCredits( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/flavors/NFTSignup.sol/NFTSignup.ts b/packages/contracts/typechain-types/contracts/flavors/NFTSignup.sol/NFTSignup.ts new file mode 100644 index 00000000..963ccab7 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/flavors/NFTSignup.sol/NFTSignup.ts @@ -0,0 +1,529 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface NFTSignupInterface extends utils.Interface { + functions: { + "addRecipient(address,string)": FunctionFragment; + "balance()": FunctionFragment; + "controller()": FunctionFragment; + "getRecipientAddress(uint256,uint256,uint256)": FunctionFragment; + "getRecipientCount()": FunctionFragment; + "maxRecipients()": FunctionFragment; + "nft()": FunctionFragment; + "operator()": FunctionFragment; + "owner()": FunctionFragment; + "register(address,bytes)": FunctionFragment; + "removeRecipient(bytes32)": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "setMaxRecipients(uint256)": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addRecipient" + | "balance" + | "controller" + | "getRecipientAddress" + | "getRecipientCount" + | "maxRecipients" + | "nft" + | "operator" + | "owner" + | "register" + | "removeRecipient" + | "renounceOwnership" + | "setMaxRecipients" + | "transferOwnership" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "addRecipient", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "balance", values?: undefined): string; + encodeFunctionData( + functionFragment: "controller", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRecipientAddress", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getRecipientCount", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxRecipients", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "nft", values?: undefined): string; + encodeFunctionData(functionFragment: "operator", values?: undefined): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "register", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "removeRecipient", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setMaxRecipients", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "addRecipient", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "balance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "controller", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getRecipientAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRecipientCount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "maxRecipients", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "nft", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "operator", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "register", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "removeRecipient", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMaxRecipients", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + + events: { + "OwnershipTransferred(address,address)": EventFragment; + "RecipientAdded(bytes32,address,string,uint256,uint256)": EventFragment; + "RecipientRemoved(bytes32,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RecipientAdded"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RecipientRemoved"): EventFragment; +} + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface RecipientAddedEventObject { + _recipientId: string; + _recipient: string; + _metadata: string; + _index: BigNumber; + _timestamp: BigNumber; +} +export type RecipientAddedEvent = TypedEvent< + [string, string, string, BigNumber, BigNumber], + RecipientAddedEventObject +>; + +export type RecipientAddedEventFilter = TypedEventFilter; + +export interface RecipientRemovedEventObject { + _recipientId: string; + _timestamp: BigNumber; +} +export type RecipientRemovedEvent = TypedEvent< + [string, BigNumber], + RecipientRemovedEventObject +>; + +export type RecipientRemovedEventFilter = + TypedEventFilter; + +export interface NFTSignup extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: NFTSignupInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balance(overrides?: CallOverrides): Promise<[BigNumber]>; + + controller(overrides?: CallOverrides): Promise<[string]>; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + getRecipientCount(overrides?: CallOverrides): Promise<[BigNumber]>; + + maxRecipients(overrides?: CallOverrides): Promise<[BigNumber]>; + + nft(overrides?: CallOverrides): Promise<[string]>; + + operator(overrides?: CallOverrides): Promise<[string]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balance(overrides?: CallOverrides): Promise; + + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + nft(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balance(overrides?: CallOverrides): Promise; + + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + nft(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + + "RecipientAdded(bytes32,address,string,uint256,uint256)"( + _recipientId?: PromiseOrValue | null, + _recipient?: null, + _metadata?: null, + _index?: null, + _timestamp?: null + ): RecipientAddedEventFilter; + RecipientAdded( + _recipientId?: PromiseOrValue | null, + _recipient?: null, + _metadata?: null, + _index?: null, + _timestamp?: null + ): RecipientAddedEventFilter; + + "RecipientRemoved(bytes32,uint256)"( + _recipientId?: PromiseOrValue | null, + _timestamp?: null + ): RecipientRemovedEventFilter; + RecipientRemoved( + _recipientId?: PromiseOrValue | null, + _timestamp?: null + ): RecipientRemovedEventFilter; + }; + + estimateGas: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balance(overrides?: CallOverrides): Promise; + + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + nft(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balance(overrides?: CallOverrides): Promise; + + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + nft(overrides?: CallOverrides): Promise; + + operator(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/flavors/NFTSignup.sol/SignUpNFT.ts b/packages/contracts/typechain-types/contracts/flavors/NFTSignup.sol/SignUpNFT.ts new file mode 100644 index 00000000..88732bb2 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/flavors/NFTSignup.sol/SignUpNFT.ts @@ -0,0 +1,756 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface SignUpNFTInterface extends utils.Interface { + functions: { + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "getApproved(uint256)": FunctionFragment; + "giveToken(address,uint256)": FunctionFragment; + "isApprovedForAll(address,address)": FunctionFragment; + "name()": FunctionFragment; + "owner()": FunctionFragment; + "ownerOf(uint256)": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "safeTransferFrom(address,address,uint256)": FunctionFragment; + "safeTransferFrom(address,address,uint256,bytes)": FunctionFragment; + "setApprovalForAll(address,bool)": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "symbol()": FunctionFragment; + "tokenURI(uint256)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "approve" + | "balanceOf" + | "getApproved" + | "giveToken" + | "isApprovedForAll" + | "name" + | "owner" + | "ownerOf" + | "renounceOwnership" + | "safeTransferFrom(address,address,uint256)" + | "safeTransferFrom(address,address,uint256,bytes)" + | "setApprovalForAll" + | "supportsInterface" + | "symbol" + | "tokenURI" + | "transferFrom" + | "transferOwnership" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "approve", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getApproved", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "giveToken", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "isApprovedForAll", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "ownerOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom(address,address,uint256)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom(address,address,uint256,bytes)", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setApprovalForAll", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "tokenURI", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getApproved", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "giveToken", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isApprovedForAll", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom(address,address,uint256)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom(address,address,uint256,bytes)", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setApprovalForAll", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "ApprovalForAll(address,address,bool)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + approved: string; + tokenId: BigNumber; +} +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + ApprovalEventObject +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface ApprovalForAllEventObject { + owner: string; + operator: string; + approved: boolean; +} +export type ApprovalForAllEvent = TypedEvent< + [string, string, boolean], + ApprovalForAllEventObject +>; + +export type ApprovalForAllEventFilter = TypedEventFilter; + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + tokenId: BigNumber; +} +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + TransferEventObject +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface SignUpNFT extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: SignUpNFTInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + giveToken( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + name(overrides?: CallOverrides): Promise<[string]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[boolean]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + tokenURI( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + giveToken( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + giveToken( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + approved: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: PromiseOrValue | null, + approved?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null + ): ApprovalEventFilter; + Approval( + owner?: PromiseOrValue | null, + approved?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null + ): ApprovalEventFilter; + + "ApprovalForAll(address,address,bool)"( + owner?: PromiseOrValue | null, + operator?: PromiseOrValue | null, + approved?: null + ): ApprovalForAllEventFilter; + ApprovalForAll( + owner?: PromiseOrValue | null, + operator?: PromiseOrValue | null, + approved?: null + ): ApprovalForAllEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + + "Transfer(address,address,uint256)"( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null + ): TransferEventFilter; + Transfer( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + tokenId?: PromiseOrValue | null + ): TransferEventFilter; + }; + + estimateGas: { + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + giveToken( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + approve( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + giveToken( + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + isApprovedForAll( + owner: PromiseOrValue, + operator: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setApprovalForAll( + operator: PromiseOrValue, + approved: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + supportsInterface( + interfaceId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + tokenId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/flavors/NFTSignup.sol/index.ts b/packages/contracts/typechain-types/contracts/flavors/NFTSignup.sol/index.ts new file mode 100644 index 00000000..0aba8211 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/flavors/NFTSignup.sol/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { InitialVoiceCreditProxy } from "./InitialVoiceCreditProxy"; +export type { NFTSignup } from "./NFTSignup"; +export type { SignUpNFT } from "./SignUpNFT"; diff --git a/packages/contracts/typechain-types/contracts/flavors/SimpleHackathon.ts b/packages/contracts/typechain-types/contracts/flavors/SimpleHackathon.ts new file mode 100644 index 00000000..9a9bb71f --- /dev/null +++ b/packages/contracts/typechain-types/contracts/flavors/SimpleHackathon.ts @@ -0,0 +1,527 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface SimpleHackathonInterface extends utils.Interface { + functions: { + "addRecipient(address,string)": FunctionFragment; + "controller()": FunctionFragment; + "getRecipientAddress(uint256,uint256,uint256)": FunctionFragment; + "getRecipientCount()": FunctionFragment; + "getVoiceCredits(address,bytes)": FunctionFragment; + "maxRecipients()": FunctionFragment; + "owner()": FunctionFragment; + "register(address,bytes)": FunctionFragment; + "removeRecipient(bytes32)": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "setMaxRecipients(uint256)": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addRecipient" + | "controller" + | "getRecipientAddress" + | "getRecipientCount" + | "getVoiceCredits" + | "maxRecipients" + | "owner" + | "register" + | "removeRecipient" + | "renounceOwnership" + | "setMaxRecipients" + | "transferOwnership" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "addRecipient", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "controller", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRecipientAddress", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getRecipientCount", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getVoiceCredits", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "maxRecipients", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "register", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "removeRecipient", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setMaxRecipients", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "addRecipient", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "controller", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getRecipientAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRecipientCount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getVoiceCredits", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "maxRecipients", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "register", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "removeRecipient", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMaxRecipients", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + + events: { + "OwnershipTransferred(address,address)": EventFragment; + "RecipientAdded(bytes32,address,string,uint256,uint256)": EventFragment; + "RecipientRemoved(bytes32,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RecipientAdded"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RecipientRemoved"): EventFragment; +} + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface RecipientAddedEventObject { + _recipientId: string; + _recipient: string; + _metadata: string; + _index: BigNumber; + _timestamp: BigNumber; +} +export type RecipientAddedEvent = TypedEvent< + [string, string, string, BigNumber, BigNumber], + RecipientAddedEventObject +>; + +export type RecipientAddedEventFilter = TypedEventFilter; + +export interface RecipientRemovedEventObject { + _recipientId: string; + _timestamp: BigNumber; +} +export type RecipientRemovedEvent = TypedEvent< + [string, BigNumber], + RecipientRemovedEventObject +>; + +export type RecipientRemovedEventFilter = + TypedEventFilter; + +export interface SimpleHackathon extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: SimpleHackathonInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + controller(overrides?: CallOverrides): Promise<[string]>; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + getRecipientCount(overrides?: CallOverrides): Promise<[BigNumber]>; + + getVoiceCredits( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + maxRecipients(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[void]>; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + getVoiceCredits( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + getVoiceCredits( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + + "RecipientAdded(bytes32,address,string,uint256,uint256)"( + _recipientId?: PromiseOrValue | null, + _recipient?: null, + _metadata?: null, + _index?: null, + _timestamp?: null + ): RecipientAddedEventFilter; + RecipientAdded( + _recipientId?: PromiseOrValue | null, + _recipient?: null, + _metadata?: null, + _index?: null, + _timestamp?: null + ): RecipientAddedEventFilter; + + "RecipientRemoved(bytes32,uint256)"( + _recipientId?: PromiseOrValue | null, + _timestamp?: null + ): RecipientRemovedEventFilter; + RecipientRemoved( + _recipientId?: PromiseOrValue | null, + _timestamp?: null + ): RecipientRemovedEventFilter; + }; + + estimateGas: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + getVoiceCredits( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + getVoiceCredits( + arg0: PromiseOrValue, + arg1: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + register( + _user: PromiseOrValue, + _data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/flavors/index.ts b/packages/contracts/typechain-types/contracts/flavors/index.ts new file mode 100644 index 00000000..fcd5f907 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/flavors/index.ts @@ -0,0 +1,12 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as constantInitialVoiceCreditProxySol from "./ConstantInitialVoiceCreditProxy.sol"; +export type { constantInitialVoiceCreditProxySol }; +import type * as fSol from "./F.sol"; +export type { fSol }; +import type * as nftSignupSol from "./NFTSignup.sol"; +export type { nftSignupSol }; +export type { IInitialVoiceCreditProxy } from "./IInitialVoiceCreditProxy"; +export type { ISignUpGatekeeper } from "./ISignUpGatekeeper"; +export type { SimpleHackathon } from "./SimpleHackathon"; diff --git a/packages/contracts/typechain-types/contracts/index.ts b/packages/contracts/typechain-types/contracts/index.ts new file mode 100644 index 00000000..2f7966bb --- /dev/null +++ b/packages/contracts/typechain-types/contracts/index.ts @@ -0,0 +1,18 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as accQueueSol from "./AccQueue.sol"; +export type { accQueueSol }; +import type * as flavors from "./flavors"; +export type { flavors }; +import type * as poseidon from "./poseidon"; +export type { poseidon }; +import type * as recipientRegistry from "./recipientRegistry"; +export type { recipientRegistry }; +import type * as utils from "./utils"; +export type { utils }; +export type { Jubjub } from "./Jubjub"; +export type { JubjubFactory } from "./JubjubFactory"; +export type { MessageTree } from "./MessageTree"; +export type { StateTree } from "./StateTree"; +export type { VkRegistry } from "./VkRegistry"; diff --git a/packages/contracts/typechain-types/contracts/poseidon/PoseidonT3.ts b/packages/contracts/typechain-types/contracts/poseidon/PoseidonT3.ts new file mode 100644 index 00000000..70f3affb --- /dev/null +++ b/packages/contracts/typechain-types/contracts/poseidon/PoseidonT3.ts @@ -0,0 +1,142 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface PoseidonT3Interface extends utils.Interface { + functions: { + "hash2(uint256[2])": FunctionFragment; + "hashLeftRight(uint256,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "hash2" | "hashLeftRight" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "hash2", + values: [[PromiseOrValue, PromiseOrValue]] + ): string; + encodeFunctionData( + functionFragment: "hashLeftRight", + values: [PromiseOrValue, PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "hash2", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "hashLeftRight", + data: BytesLike + ): Result; + + events: {}; +} + +export interface PoseidonT3 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: PoseidonT3Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + hash2( + arg0: [PromiseOrValue, PromiseOrValue], + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + }; + + hash2( + arg0: [PromiseOrValue, PromiseOrValue], + overrides?: CallOverrides + ): Promise; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + callStatic: { + hash2( + arg0: [PromiseOrValue, PromiseOrValue], + overrides?: CallOverrides + ): Promise; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + hash2( + arg0: [PromiseOrValue, PromiseOrValue], + overrides?: CallOverrides + ): Promise; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + hash2( + arg0: [PromiseOrValue, PromiseOrValue], + overrides?: CallOverrides + ): Promise; + + hashLeftRight( + _left: PromiseOrValue, + _right: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/poseidon/PoseidonT4.ts b/packages/contracts/typechain-types/contracts/poseidon/PoseidonT4.ts new file mode 100644 index 00000000..fbd9cc21 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/poseidon/PoseidonT4.ts @@ -0,0 +1,127 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface PoseidonT4Interface extends utils.Interface { + functions: { + "hash3(uint256[3])": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "hash3"): FunctionFragment; + + encodeFunctionData( + functionFragment: "hash3", + values: [ + [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ] + ): string; + + decodeFunctionResult(functionFragment: "hash3", data: BytesLike): Result; + + events: {}; +} + +export interface PoseidonT4 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: PoseidonT4Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + hash3( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise<[BigNumber]>; + }; + + hash3( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + + callStatic: { + hash3( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + hash3( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + hash3( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/poseidon/PoseidonT5.ts b/packages/contracts/typechain-types/contracts/poseidon/PoseidonT5.ts new file mode 100644 index 00000000..3a8dfde9 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/poseidon/PoseidonT5.ts @@ -0,0 +1,133 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface PoseidonT5Interface extends utils.Interface { + functions: { + "hash4(uint256[4])": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "hash4"): FunctionFragment; + + encodeFunctionData( + functionFragment: "hash4", + values: [ + [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ] + ): string; + + decodeFunctionResult(functionFragment: "hash4", data: BytesLike): Result; + + events: {}; +} + +export interface PoseidonT5 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: PoseidonT5Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + hash4( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise<[BigNumber]>; + }; + + hash4( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + + callStatic: { + hash4( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + hash4( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + hash4( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/poseidon/PoseidonT6.ts b/packages/contracts/typechain-types/contracts/poseidon/PoseidonT6.ts new file mode 100644 index 00000000..680b7b4f --- /dev/null +++ b/packages/contracts/typechain-types/contracts/poseidon/PoseidonT6.ts @@ -0,0 +1,139 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface PoseidonT6Interface extends utils.Interface { + functions: { + "hash5(uint256[5])": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "hash5"): FunctionFragment; + + encodeFunctionData( + functionFragment: "hash5", + values: [ + [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ] + ): string; + + decodeFunctionResult(functionFragment: "hash5", data: BytesLike): Result; + + events: {}; +} + +export interface PoseidonT6 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: PoseidonT6Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + hash5( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise<[BigNumber]>; + }; + + hash5( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + + callStatic: { + hash5( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + hash5( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + hash5( + arg0: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ], + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/poseidon/index.ts b/packages/contracts/typechain-types/contracts/poseidon/index.ts new file mode 100644 index 00000000..61d61d49 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/poseidon/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { PoseidonT3 } from "./PoseidonT3"; +export type { PoseidonT4 } from "./PoseidonT4"; +export type { PoseidonT5 } from "./PoseidonT5"; +export type { PoseidonT6 } from "./PoseidonT6"; diff --git a/packages/contracts/typechain-types/contracts/recipientRegistry/BaseRecipientRegistry.ts b/packages/contracts/typechain-types/contracts/recipientRegistry/BaseRecipientRegistry.ts new file mode 100644 index 00000000..ea9e3c60 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/recipientRegistry/BaseRecipientRegistry.ts @@ -0,0 +1,215 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface BaseRecipientRegistryInterface extends utils.Interface { + functions: { + "controller()": FunctionFragment; + "getRecipientAddress(uint256,uint256,uint256)": FunctionFragment; + "getRecipientCount()": FunctionFragment; + "maxRecipients()": FunctionFragment; + "setMaxRecipients(uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "controller" + | "getRecipientAddress" + | "getRecipientCount" + | "maxRecipients" + | "setMaxRecipients" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "controller", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRecipientAddress", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getRecipientCount", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxRecipients", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setMaxRecipients", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "controller", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getRecipientAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRecipientCount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "maxRecipients", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMaxRecipients", + data: BytesLike + ): Result; + + events: {}; +} + +export interface BaseRecipientRegistry extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: BaseRecipientRegistryInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + controller(overrides?: CallOverrides): Promise<[string]>; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + getRecipientCount(overrides?: CallOverrides): Promise<[BigNumber]>; + + maxRecipients(overrides?: CallOverrides): Promise<[BigNumber]>; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/recipientRegistry/IRecipientRegistry.ts b/packages/contracts/typechain-types/contracts/recipientRegistry/IRecipientRegistry.ts new file mode 100644 index 00000000..a4f3b59a --- /dev/null +++ b/packages/contracts/typechain-types/contracts/recipientRegistry/IRecipientRegistry.ts @@ -0,0 +1,156 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface IRecipientRegistryInterface extends utils.Interface { + functions: { + "getRecipientAddress(uint256,uint256,uint256)": FunctionFragment; + "setMaxRecipients(uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "getRecipientAddress" | "setMaxRecipients" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "getRecipientAddress", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setMaxRecipients", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "getRecipientAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMaxRecipients", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IRecipientRegistry extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IRecipientRegistryInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + getRecipientAddress( + _index: PromiseOrValue, + _startBlock: PromiseOrValue, + _endBlock: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + getRecipientAddress( + _index: PromiseOrValue, + _startBlock: PromiseOrValue, + _endBlock: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + getRecipientAddress( + _index: PromiseOrValue, + _startBlock: PromiseOrValue, + _endBlock: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + getRecipientAddress( + _index: PromiseOrValue, + _startBlock: PromiseOrValue, + _endBlock: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + getRecipientAddress( + _index: PromiseOrValue, + _startBlock: PromiseOrValue, + _endBlock: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/recipientRegistry/OptimisticRecipientRegistry.ts b/packages/contracts/typechain-types/contracts/recipientRegistry/OptimisticRecipientRegistry.ts new file mode 100644 index 00000000..278fdafc --- /dev/null +++ b/packages/contracts/typechain-types/contracts/recipientRegistry/OptimisticRecipientRegistry.ts @@ -0,0 +1,647 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface OptimisticRecipientRegistryInterface extends utils.Interface { + functions: { + "addRecipient(address,string)": FunctionFragment; + "baseDeposit()": FunctionFragment; + "challengePeriodDuration()": FunctionFragment; + "challengeRequest(bytes32,address)": FunctionFragment; + "controller()": FunctionFragment; + "executeRequest(bytes32)": FunctionFragment; + "getRecipientAddress(uint256,uint256,uint256)": FunctionFragment; + "getRecipientCount()": FunctionFragment; + "maxRecipients()": FunctionFragment; + "owner()": FunctionFragment; + "removeRecipient(bytes32)": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "setBaseDeposit(uint256)": FunctionFragment; + "setChallengePeriodDuration(uint256)": FunctionFragment; + "setMaxRecipients(uint256)": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addRecipient" + | "baseDeposit" + | "challengePeriodDuration" + | "challengeRequest" + | "controller" + | "executeRequest" + | "getRecipientAddress" + | "getRecipientCount" + | "maxRecipients" + | "owner" + | "removeRecipient" + | "renounceOwnership" + | "setBaseDeposit" + | "setChallengePeriodDuration" + | "setMaxRecipients" + | "transferOwnership" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "addRecipient", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "baseDeposit", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "challengePeriodDuration", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "challengeRequest", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "controller", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "executeRequest", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getRecipientAddress", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getRecipientCount", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxRecipients", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "removeRecipient", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setBaseDeposit", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setChallengePeriodDuration", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setMaxRecipients", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "addRecipient", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "baseDeposit", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "challengePeriodDuration", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "challengeRequest", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "controller", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "executeRequest", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRecipientAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRecipientCount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "maxRecipients", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "removeRecipient", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setBaseDeposit", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setChallengePeriodDuration", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMaxRecipients", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + + events: { + "OwnershipTransferred(address,address)": EventFragment; + "RequestResolved(bytes32,uint8,bool,uint256,uint256)": EventFragment; + "RequestSubmitted(bytes32,uint8,address,string,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RequestResolved"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RequestSubmitted"): EventFragment; +} + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface RequestResolvedEventObject { + _recipientId: string; + _type: number; + _rejected: boolean; + _recipientIndex: BigNumber; + _timestamp: BigNumber; +} +export type RequestResolvedEvent = TypedEvent< + [string, number, boolean, BigNumber, BigNumber], + RequestResolvedEventObject +>; + +export type RequestResolvedEventFilter = TypedEventFilter; + +export interface RequestSubmittedEventObject { + _recipientId: string; + _type: number; + _recipient: string; + _metadata: string; + _timestamp: BigNumber; +} +export type RequestSubmittedEvent = TypedEvent< + [string, number, string, string, BigNumber], + RequestSubmittedEventObject +>; + +export type RequestSubmittedEventFilter = + TypedEventFilter; + +export interface OptimisticRecipientRegistry extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: OptimisticRecipientRegistryInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + baseDeposit(overrides?: CallOverrides): Promise<[BigNumber]>; + + challengePeriodDuration(overrides?: CallOverrides): Promise<[BigNumber]>; + + challengeRequest( + _recipientId: PromiseOrValue, + _beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + controller(overrides?: CallOverrides): Promise<[string]>; + + executeRequest( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + getRecipientCount(overrides?: CallOverrides): Promise<[BigNumber]>; + + maxRecipients(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setBaseDeposit( + _baseDeposit: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setChallengePeriodDuration( + _challengePeriodDuration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + baseDeposit(overrides?: CallOverrides): Promise; + + challengePeriodDuration(overrides?: CallOverrides): Promise; + + challengeRequest( + _recipientId: PromiseOrValue, + _beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + controller(overrides?: CallOverrides): Promise; + + executeRequest( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setBaseDeposit( + _baseDeposit: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setChallengePeriodDuration( + _challengePeriodDuration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + baseDeposit(overrides?: CallOverrides): Promise; + + challengePeriodDuration(overrides?: CallOverrides): Promise; + + challengeRequest( + _recipientId: PromiseOrValue, + _beneficiary: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + controller(overrides?: CallOverrides): Promise; + + executeRequest( + _recipientId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + setBaseDeposit( + _baseDeposit: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setChallengePeriodDuration( + _challengePeriodDuration: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + + "RequestResolved(bytes32,uint8,bool,uint256,uint256)"( + _recipientId?: PromiseOrValue | null, + _type?: PromiseOrValue | null, + _rejected?: PromiseOrValue | null, + _recipientIndex?: null, + _timestamp?: null + ): RequestResolvedEventFilter; + RequestResolved( + _recipientId?: PromiseOrValue | null, + _type?: PromiseOrValue | null, + _rejected?: PromiseOrValue | null, + _recipientIndex?: null, + _timestamp?: null + ): RequestResolvedEventFilter; + + "RequestSubmitted(bytes32,uint8,address,string,uint256)"( + _recipientId?: PromiseOrValue | null, + _type?: PromiseOrValue | null, + _recipient?: null, + _metadata?: null, + _timestamp?: null + ): RequestSubmittedEventFilter; + RequestSubmitted( + _recipientId?: PromiseOrValue | null, + _type?: PromiseOrValue | null, + _recipient?: null, + _metadata?: null, + _timestamp?: null + ): RequestSubmittedEventFilter; + }; + + estimateGas: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + baseDeposit(overrides?: CallOverrides): Promise; + + challengePeriodDuration(overrides?: CallOverrides): Promise; + + challengeRequest( + _recipientId: PromiseOrValue, + _beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + controller(overrides?: CallOverrides): Promise; + + executeRequest( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setBaseDeposit( + _baseDeposit: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setChallengePeriodDuration( + _challengePeriodDuration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + baseDeposit(overrides?: CallOverrides): Promise; + + challengePeriodDuration( + overrides?: CallOverrides + ): Promise; + + challengeRequest( + _recipientId: PromiseOrValue, + _beneficiary: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + controller(overrides?: CallOverrides): Promise; + + executeRequest( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setBaseDeposit( + _baseDeposit: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setChallengePeriodDuration( + _challengePeriodDuration: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/recipientRegistry/SimpleRecipientRegistry.ts b/packages/contracts/typechain-types/contracts/recipientRegistry/SimpleRecipientRegistry.ts new file mode 100644 index 00000000..04e47099 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/recipientRegistry/SimpleRecipientRegistry.ts @@ -0,0 +1,450 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface SimpleRecipientRegistryInterface extends utils.Interface { + functions: { + "addRecipient(address,string)": FunctionFragment; + "controller()": FunctionFragment; + "getRecipientAddress(uint256,uint256,uint256)": FunctionFragment; + "getRecipientCount()": FunctionFragment; + "maxRecipients()": FunctionFragment; + "owner()": FunctionFragment; + "removeRecipient(bytes32)": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "setMaxRecipients(uint256)": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "addRecipient" + | "controller" + | "getRecipientAddress" + | "getRecipientCount" + | "maxRecipients" + | "owner" + | "removeRecipient" + | "renounceOwnership" + | "setMaxRecipients" + | "transferOwnership" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "addRecipient", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "controller", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getRecipientAddress", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getRecipientCount", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "maxRecipients", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "removeRecipient", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "setMaxRecipients", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult( + functionFragment: "addRecipient", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "controller", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getRecipientAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getRecipientCount", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "maxRecipients", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "removeRecipient", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setMaxRecipients", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + + events: { + "OwnershipTransferred(address,address)": EventFragment; + "RecipientAdded(bytes32,address,string,uint256,uint256)": EventFragment; + "RecipientRemoved(bytes32,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RecipientAdded"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RecipientRemoved"): EventFragment; +} + +export interface OwnershipTransferredEventObject { + previousOwner: string; + newOwner: string; +} +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + OwnershipTransferredEventObject +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface RecipientAddedEventObject { + _recipientId: string; + _recipient: string; + _metadata: string; + _index: BigNumber; + _timestamp: BigNumber; +} +export type RecipientAddedEvent = TypedEvent< + [string, string, string, BigNumber, BigNumber], + RecipientAddedEventObject +>; + +export type RecipientAddedEventFilter = TypedEventFilter; + +export interface RecipientRemovedEventObject { + _recipientId: string; + _timestamp: BigNumber; +} +export type RecipientRemovedEvent = TypedEvent< + [string, BigNumber], + RecipientRemovedEventObject +>; + +export type RecipientRemovedEventFilter = + TypedEventFilter; + +export interface SimpleRecipientRegistry extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: SimpleRecipientRegistryInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + controller(overrides?: CallOverrides): Promise<[string]>; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + getRecipientCount(overrides?: CallOverrides): Promise<[BigNumber]>; + + maxRecipients(overrides?: CallOverrides): Promise<[BigNumber]>; + + owner(overrides?: CallOverrides): Promise<[string]>; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "OwnershipTransferred(address,address)"( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: PromiseOrValue | null, + newOwner?: PromiseOrValue | null + ): OwnershipTransferredEventFilter; + + "RecipientAdded(bytes32,address,string,uint256,uint256)"( + _recipientId?: PromiseOrValue | null, + _recipient?: null, + _metadata?: null, + _index?: null, + _timestamp?: null + ): RecipientAddedEventFilter; + RecipientAdded( + _recipientId?: PromiseOrValue | null, + _recipient?: null, + _metadata?: null, + _index?: null, + _timestamp?: null + ): RecipientAddedEventFilter; + + "RecipientRemoved(bytes32,uint256)"( + _recipientId?: PromiseOrValue | null, + _timestamp?: null + ): RecipientRemovedEventFilter; + RecipientRemoved( + _recipientId?: PromiseOrValue | null, + _timestamp?: null + ): RecipientRemovedEventFilter; + }; + + estimateGas: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + addRecipient( + _recipient: PromiseOrValue, + _metadata: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + controller(overrides?: CallOverrides): Promise; + + getRecipientAddress( + _index: PromiseOrValue, + _startTime: PromiseOrValue, + _endTime: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getRecipientCount(overrides?: CallOverrides): Promise; + + maxRecipients(overrides?: CallOverrides): Promise; + + owner(overrides?: CallOverrides): Promise; + + removeRecipient( + _recipientId: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setMaxRecipients( + _maxRecipients: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferOwnership( + newOwner: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/recipientRegistry/index.ts b/packages/contracts/typechain-types/contracts/recipientRegistry/index.ts new file mode 100644 index 00000000..d6aece63 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/recipientRegistry/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { BaseRecipientRegistry } from "./BaseRecipientRegistry"; +export type { IRecipientRegistry } from "./IRecipientRegistry"; +export type { OptimisticRecipientRegistry } from "./OptimisticRecipientRegistry"; +export type { SimpleRecipientRegistry } from "./SimpleRecipientRegistry"; diff --git a/packages/contracts/typechain-types/contracts/utils/LibClone.ts b/packages/contracts/typechain-types/contracts/utils/LibClone.ts new file mode 100644 index 00000000..8ef0a27b --- /dev/null +++ b/packages/contracts/typechain-types/contracts/utils/LibClone.ts @@ -0,0 +1,56 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { BaseContract, Signer, utils } from "ethers"; + +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface LibCloneInterface extends utils.Interface { + functions: {}; + + events: {}; +} + +export interface LibClone extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: LibCloneInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: {}; + + callStatic: {}; + + filters: {}; + + estimateGas: {}; + + populateTransaction: {}; +} diff --git a/packages/contracts/typechain-types/contracts/utils/Multicallable.ts b/packages/contracts/typechain-types/contracts/utils/Multicallable.ts new file mode 100644 index 00000000..8dbfd0c0 --- /dev/null +++ b/packages/contracts/typechain-types/contracts/utils/Multicallable.ts @@ -0,0 +1,102 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + ContractTransaction, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../common"; + +export interface MulticallableInterface extends utils.Interface { + functions: { + "multicall(bytes[])": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "multicall"): FunctionFragment; + + encodeFunctionData( + functionFragment: "multicall", + values: [PromiseOrValue[]] + ): string; + + decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result; + + events: {}; +} + +export interface Multicallable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: MulticallableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + }; + + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + multicall( + data: PromiseOrValue[], + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + multicall( + data: PromiseOrValue[], + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/packages/contracts/typechain-types/contracts/utils/index.ts b/packages/contracts/typechain-types/contracts/utils/index.ts new file mode 100644 index 00000000..4596a6ec --- /dev/null +++ b/packages/contracts/typechain-types/contracts/utils/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { LibClone } from "./LibClone"; +export type { Multicallable } from "./Multicallable"; diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.ts new file mode 100644 index 00000000..c4c6be30 --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.ts @@ -0,0 +1,91 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + OwnableUpgradeable, + OwnableUpgradeableInterface, +} from "../../../../@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class OwnableUpgradeable__factory { + static readonly abi = _abi; + static createInterface(): OwnableUpgradeableInterface { + return new utils.Interface(_abi) as OwnableUpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): OwnableUpgradeable { + return new Contract(address, _abi, signerOrProvider) as OwnableUpgradeable; + } +} diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.ts new file mode 100644 index 00000000..bf4b29cc --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/access/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { OwnableUpgradeable__factory } from "./OwnableUpgradeable__factory"; diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.ts new file mode 100644 index 00000000..2b4c7e65 --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as access from "./access"; +export * as proxy from "./proxy"; +export * as utils from "./utils"; diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.ts new file mode 100644 index 00000000..56778f88 --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as utils from "./utils"; diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.ts new file mode 100644 index 00000000..2f225279 --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.ts @@ -0,0 +1,39 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + Initializable, + InitializableInterface, +} from "../../../../../@openzeppelin/contracts-upgradeable/proxy/utils/Initializable"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, +] as const; + +export class Initializable__factory { + static readonly abi = _abi; + static createInterface(): InitializableInterface { + return new utils.Interface(_abi) as InitializableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Initializable { + return new Contract(address, _abi, signerOrProvider) as Initializable; + } +} diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts new file mode 100644 index 00000000..4baae4a2 --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { Initializable__factory } from "./Initializable__factory"; diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.ts new file mode 100644 index 00000000..6b02b4d3 --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.ts @@ -0,0 +1,39 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + ContextUpgradeable, + ContextUpgradeableInterface, +} from "../../../../@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, +] as const; + +export class ContextUpgradeable__factory { + static readonly abi = _abi; + static createInterface(): ContextUpgradeableInterface { + return new utils.Interface(_abi) as ContextUpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ContextUpgradeable { + return new Contract(address, _abi, signerOrProvider) as ContextUpgradeable; + } +} diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.ts new file mode 100644 index 00000000..3ff42aef --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts-upgradeable/utils/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { ContextUpgradeable__factory } from "./ContextUpgradeable__factory"; diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts new file mode 100644 index 00000000..fa147181 --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts @@ -0,0 +1,78 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + Ownable, + OwnableInterface, +} from "../../../../@openzeppelin/contracts/access/Ownable"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class Ownable__factory { + static readonly abi = _abi; + static createInterface(): OwnableInterface { + return new utils.Interface(_abi) as OwnableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Ownable { + return new Contract(address, _abi, signerOrProvider) as Ownable; + } +} diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts/access/index.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/access/index.ts new file mode 100644 index 00000000..e332ae32 --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/access/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { Ownable__factory } from "./Ownable__factory"; diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts/index.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/index.ts new file mode 100644 index 00000000..ed5ad1bc --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as access from "./access"; +export * as token from "./token"; +export * as utils from "./utils"; diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC721/ERC721__factory.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC721/ERC721__factory.ts new file mode 100644 index 00000000..102edaad --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC721/ERC721__factory.ts @@ -0,0 +1,410 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../../common"; +import type { + ERC721, + ERC721Interface, +} from "../../../../../@openzeppelin/contracts/token/ERC721/ERC721"; + +const _abi = [ + { + inputs: [ + { + internalType: "string", + name: "name_", + type: "string", + }, + { + internalType: "string", + name: "symbol_", + type: "string", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "approved", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "operator", + type: "address", + }, + { + indexed: false, + internalType: "bool", + name: "approved", + type: "bool", + }, + ], + name: "ApprovalForAll", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "approve", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "getApproved", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + name: "isApprovedForAll", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "ownerOf", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "safeTransferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "safeTransferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + { + internalType: "bool", + name: "approved", + type: "bool", + }, + ], + name: "setApprovalForAll", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "tokenURI", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x60806040523480156200001157600080fd5b5060405162001358380380620013588339810160408190526200003491620001db565b81516200004990600090602085019062000068565b5080516200005f90600190602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b6110c680620002926000396000f3fe608060405234801561001057600080fd5b50600436106100af5760003560e01c806301ffc9a7146100b457806306fdde03146100dc578063081812fc146100f1578063095ea7b31461011c57806323b872dd1461013157806342842e0e146101445780636352211e1461015757806370a082311461016a57806395d89b411461018b578063a22cb46514610193578063b88d4fde146101a6578063c87b56dd146101b9578063e985e9c5146101cc575b600080fd5b6100c76100c2366004610c18565b6101df565b60405190151581526020015b60405180910390f35b6100e4610231565b6040516100d39190610c8d565b6101046100ff366004610ca0565b6102c3565b6040516001600160a01b0390911681526020016100d3565b61012f61012a366004610cd5565b6102ea565b005b61012f61013f366004610cff565b610405565b61012f610152366004610cff565b610436565b610104610165366004610ca0565b610451565b61017d610178366004610d3b565b610485565b6040519081526020016100d3565b6100e461050b565b61012f6101a1366004610d56565b61051a565b61012f6101b4366004610da8565b610529565b6100e46101c7366004610ca0565b610561565b6100c76101da366004610e83565b6105d5565b60006001600160e01b031982166380ac58cd60e01b148061021057506001600160e01b03198216635b5e139f60e01b145b8061022b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461024090610eb6565b80601f016020809104026020016040519081016040528092919081815260200182805461026c90610eb6565b80156102b95780601f1061028e576101008083540402835291602001916102b9565b820191906000526020600020905b81548152906001019060200180831161029c57829003601f168201915b5050505050905090565b60006102ce82610603565b506000908152600460205260409020546001600160a01b031690565b60006102f582610451565b9050806001600160a01b0316836001600160a01b031614156103685760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b0382161480610384575061038481336105d5565b6103f65760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161035f565b610400838361062b565b505050565b61040f3382610699565b61042b5760405162461bcd60e51b815260040161035f90610ef1565b6104008383836106f8565b61040083838360405180602001604052806000815250610529565b60008061045d8361085c565b90506001600160a01b03811661022b5760405162461bcd60e51b815260040161035f90610f3e565b60006001600160a01b0382166104ef5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161035f565b506001600160a01b031660009081526003602052604090205490565b60606001805461024090610eb6565b610525338383610877565b5050565b6105333383610699565b61054f5760405162461bcd60e51b815260040161035f90610ef1565b61055b84848484610942565b50505050565b606061056c82610603565b600061058360408051602081019091526000815290565b905060008151116105a357604051806020016040528060008152506105ce565b806105ad84610975565b6040516020016105be929190610f70565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61060c81610a11565b6106285760405162461bcd60e51b815260040161035f90610f3e565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061066082610451565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806106a583610451565b9050806001600160a01b0316846001600160a01b031614806106cc57506106cc81856105d5565b806106f05750836001600160a01b03166106e5846102c3565b6001600160a01b0316145b949350505050565b826001600160a01b031661070b82610451565b6001600160a01b0316146107315760405162461bcd60e51b815260040161035f90610f9f565b6001600160a01b0382166107935760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161035f565b826001600160a01b03166107a682610451565b6001600160a01b0316146107cc5760405162461bcd60e51b815260040161035f90610f9f565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000908152600260205260409020546001600160a01b031690565b816001600160a01b0316836001600160a01b031614156108d55760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b604482015260640161035f565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61094d8484846106f8565b61095984848484610a2e565b61055b5760405162461bcd60e51b815260040161035f90610fe4565b6060600061098283610b2c565b60010190506000816001600160401b038111156109a1576109a1610d92565b6040519080825280601f01601f1916602001820160405280156109cb576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a0457610a09565b6109d5565b509392505050565b600080610a1d8361085c565b6001600160a01b0316141592915050565b60006001600160a01b0384163b15610b2157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610a72903390899088908890600401611036565b6020604051808303816000875af1925050508015610aad575060408051601f3d908101601f19168201909252610aaa91810190611073565b60015b610b07573d808015610adb576040519150601f19603f3d011682016040523d82523d6000602084013e610ae0565b606091505b508051610aff5760405162461bcd60e51b815260040161035f90610fe4565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506106f0565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610b6b5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310610b95576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310610bb357662386f26fc10000830492506010015b6305f5e1008310610bcb576305f5e100830492506008015b6127108310610bdf57612710830492506004015b60648310610bf1576064830492506002015b600a831061022b5760010192915050565b6001600160e01b03198116811461062857600080fd5b600060208284031215610c2a57600080fd5b81356105ce81610c02565b60005b83811015610c50578181015183820152602001610c38565b8381111561055b5750506000910152565b60008151808452610c79816020860160208601610c35565b601f01601f19169290920160200192915050565b6020815260006105ce6020830184610c61565b600060208284031215610cb257600080fd5b5035919050565b80356001600160a01b0381168114610cd057600080fd5b919050565b60008060408385031215610ce857600080fd5b610cf183610cb9565b946020939093013593505050565b600080600060608486031215610d1457600080fd5b610d1d84610cb9565b9250610d2b60208501610cb9565b9150604084013590509250925092565b600060208284031215610d4d57600080fd5b6105ce82610cb9565b60008060408385031215610d6957600080fd5b610d7283610cb9565b915060208301358015158114610d8757600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610dbe57600080fd5b610dc785610cb9565b9350610dd560208601610cb9565b92506040850135915060608501356001600160401b0380821115610df857600080fd5b818701915087601f830112610e0c57600080fd5b813581811115610e1e57610e1e610d92565b604051601f8201601f19908116603f01168101908382118183101715610e4657610e46610d92565b816040528281528a6020848701011115610e5f57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610e9657600080fd5b610e9f83610cb9565b9150610ead60208401610cb9565b90509250929050565b600181811c90821680610eca57607f821691505b60208210811415610eeb57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b60008351610f82818460208801610c35565b835190830190610f96818360208801610c35565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061106990830184610c61565b9695505050505050565b60006020828403121561108557600080fd5b81516105ce81610c0256fea2646970667358221220c89aa6528a17bbe3b733c0ed2f4bd3dd4dca37575eea3249adb690abe5e09f4d64736f6c634300080a0033"; + +type ERC721ConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ERC721ConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ERC721__factory extends ContractFactory { + constructor(...args: ERC721ConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + name_: PromiseOrValue, + symbol_: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(name_, symbol_, overrides || {}) as Promise; + } + override getDeployTransaction( + name_: PromiseOrValue, + symbol_: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(name_, symbol_, overrides || {}); + } + override attach(address: string): ERC721 { + return super.attach(address) as ERC721; + } + override connect(signer: Signer): ERC721__factory { + return super.connect(signer) as ERC721__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ERC721Interface { + return new utils.Interface(_abi) as ERC721Interface; + } + static connect(address: string, signerOrProvider: Signer | Provider): ERC721 { + return new Contract(address, _abi, signerOrProvider) as ERC721; + } +} diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC721/IERC721Receiver__factory.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC721/IERC721Receiver__factory.ts new file mode 100644 index 00000000..52ca02fd --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC721/IERC721Receiver__factory.ts @@ -0,0 +1,60 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IERC721Receiver, + IERC721ReceiverInterface, +} from "../../../../../@openzeppelin/contracts/token/ERC721/IERC721Receiver"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "onERC721Received", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IERC721Receiver__factory { + static readonly abi = _abi; + static createInterface(): IERC721ReceiverInterface { + return new utils.Interface(_abi) as IERC721ReceiverInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC721Receiver { + return new Contract(address, _abi, signerOrProvider) as IERC721Receiver; + } +} diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC721/IERC721__factory.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC721/IERC721__factory.ts new file mode 100644 index 00000000..48c95ed7 --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC721/IERC721__factory.ts @@ -0,0 +1,311 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IERC721, + IERC721Interface, +} from "../../../../../@openzeppelin/contracts/token/ERC721/IERC721"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "approved", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "operator", + type: "address", + }, + { + indexed: false, + internalType: "bool", + name: "approved", + type: "bool", + }, + ], + name: "ApprovalForAll", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "approve", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "getApproved", + outputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + name: "isApprovedForAll", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "ownerOf", + outputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "safeTransferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "safeTransferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + { + internalType: "bool", + name: "_approved", + type: "bool", + }, + ], + name: "setApprovalForAll", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IERC721__factory { + static readonly abi = _abi; + static createInterface(): IERC721Interface { + return new utils.Interface(_abi) as IERC721Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC721 { + return new Contract(address, _abi, signerOrProvider) as IERC721; + } +} diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata__factory.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata__factory.ts new file mode 100644 index 00000000..b8adf790 --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata__factory.ts @@ -0,0 +1,356 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IERC721Metadata, + IERC721MetadataInterface, +} from "../../../../../../@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "approved", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "operator", + type: "address", + }, + { + indexed: false, + internalType: "bool", + name: "approved", + type: "bool", + }, + ], + name: "ApprovalForAll", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "approve", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "getApproved", + outputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + name: "isApprovedForAll", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "ownerOf", + outputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "safeTransferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "safeTransferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + { + internalType: "bool", + name: "_approved", + type: "bool", + }, + ], + name: "setApprovalForAll", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "tokenURI", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IERC721Metadata__factory { + static readonly abi = _abi; + static createInterface(): IERC721MetadataInterface { + return new utils.Interface(_abi) as IERC721MetadataInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC721Metadata { + return new Contract(address, _abi, signerOrProvider) as IERC721Metadata; + } +} diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/index.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/index.ts new file mode 100644 index 00000000..c5073f8d --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IERC721Metadata__factory } from "./IERC721Metadata__factory"; diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC721/index.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC721/index.ts new file mode 100644 index 00000000..b1971ca6 --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/ERC721/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as extensions from "./extensions"; +export { ERC721__factory } from "./ERC721__factory"; +export { IERC721__factory } from "./IERC721__factory"; +export { IERC721Receiver__factory } from "./IERC721Receiver__factory"; diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/index.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/index.ts new file mode 100644 index 00000000..54f1ca30 --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/token/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as erc721 from "./ERC721"; diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts/utils/index.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/utils/index.ts new file mode 100644 index 00000000..03cab177 --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/utils/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as introspection from "./introspection"; diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts/utils/introspection/ERC165__factory.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/utils/introspection/ERC165__factory.ts new file mode 100644 index 00000000..b08274f7 --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/utils/introspection/ERC165__factory.ts @@ -0,0 +1,42 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + ERC165, + ERC165Interface, +} from "../../../../../@openzeppelin/contracts/utils/introspection/ERC165"; + +const _abi = [ + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class ERC165__factory { + static readonly abi = _abi; + static createInterface(): ERC165Interface { + return new utils.Interface(_abi) as ERC165Interface; + } + static connect(address: string, signerOrProvider: Signer | Provider): ERC165 { + return new Contract(address, _abi, signerOrProvider) as ERC165; + } +} diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts/utils/introspection/IERC165__factory.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/utils/introspection/IERC165__factory.ts new file mode 100644 index 00000000..71bfb8a9 --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/utils/introspection/IERC165__factory.ts @@ -0,0 +1,45 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IERC165, + IERC165Interface, +} from "../../../../../@openzeppelin/contracts/utils/introspection/IERC165"; + +const _abi = [ + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class IERC165__factory { + static readonly abi = _abi; + static createInterface(): IERC165Interface { + return new utils.Interface(_abi) as IERC165Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC165 { + return new Contract(address, _abi, signerOrProvider) as IERC165; + } +} diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/contracts/utils/introspection/index.ts b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/utils/introspection/index.ts new file mode 100644 index 00000000..8523e0a8 --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/contracts/utils/introspection/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { ERC165__factory } from "./ERC165__factory"; +export { IERC165__factory } from "./IERC165__factory"; diff --git a/packages/contracts/typechain-types/factories/@openzeppelin/index.ts b/packages/contracts/typechain-types/factories/@openzeppelin/index.ts new file mode 100644 index 00000000..6923c15a --- /dev/null +++ b/packages/contracts/typechain-types/factories/@openzeppelin/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as contracts from "./contracts"; +export * as contractsUpgradeable from "./contracts-upgradeable"; diff --git a/packages/contracts/typechain-types/factories/contracts/AccQueue.sol/AccQueueBinary__factory.ts b/packages/contracts/typechain-types/factories/contracts/AccQueue.sol/AccQueueBinary__factory.ts new file mode 100644 index 00000000..e9cfd043 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/AccQueue.sol/AccQueueBinary__factory.ts @@ -0,0 +1,404 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + AccQueueBinary, + AccQueueBinaryInterface, +} from "../../../contracts/AccQueue.sol/AccQueueBinary"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [], + name: "MAX_DEPTH", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "calcMinHeight", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "currentSubtreeIndex", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_leaf", + type: "uint256", + }, + ], + name: "enqueue", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "fill", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_depth", + type: "uint256", + }, + ], + name: "getMainRoot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSmallSRTroot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSrIndices", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_index", + type: "uint256", + }, + ], + name: "getSubRoot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_level", + type: "uint256", + }, + { + internalType: "uint256", + name: "_leaf", + type: "uint256", + }, + ], + name: "hashLevelLeaf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_subRoot", + type: "uint256", + }, + ], + name: "insertSubTree", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "mainRoots", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_depth", + type: "uint256", + }, + ], + name: "merge", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_numSrQueueOps", + type: "uint256", + }, + ], + name: "mergeSubRoots", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "numLeaves", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "smallSRTroot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "subDepth", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "subRoots", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "subTreesMerged", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "treeMerged", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class AccQueueBinary__factory { + static readonly abi = _abi; + static createInterface(): AccQueueBinaryInterface { + return new utils.Interface(_abi) as AccQueueBinaryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): AccQueueBinary { + return new Contract(address, _abi, signerOrProvider) as AccQueueBinary; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/AccQueue.sol/AccQueueQuinary__factory.ts b/packages/contracts/typechain-types/factories/contracts/AccQueue.sol/AccQueueQuinary__factory.ts new file mode 100644 index 00000000..bb723199 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/AccQueue.sol/AccQueueQuinary__factory.ts @@ -0,0 +1,404 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + AccQueueQuinary, + AccQueueQuinaryInterface, +} from "../../../contracts/AccQueue.sol/AccQueueQuinary"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [], + name: "MAX_DEPTH", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "calcMinHeight", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "currentSubtreeIndex", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_leaf", + type: "uint256", + }, + ], + name: "enqueue", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "fill", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_depth", + type: "uint256", + }, + ], + name: "getMainRoot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSmallSRTroot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSrIndices", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_index", + type: "uint256", + }, + ], + name: "getSubRoot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_level", + type: "uint256", + }, + { + internalType: "uint256", + name: "_leaf", + type: "uint256", + }, + ], + name: "hashLevelLeaf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_subRoot", + type: "uint256", + }, + ], + name: "insertSubTree", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "mainRoots", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_depth", + type: "uint256", + }, + ], + name: "merge", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_numSrQueueOps", + type: "uint256", + }, + ], + name: "mergeSubRoots", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "numLeaves", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "smallSRTroot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "subDepth", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "subRoots", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "subTreesMerged", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "treeMerged", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class AccQueueQuinary__factory { + static readonly abi = _abi; + static createInterface(): AccQueueQuinaryInterface { + return new utils.Interface(_abi) as AccQueueQuinaryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): AccQueueQuinary { + return new Contract(address, _abi, signerOrProvider) as AccQueueQuinary; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/AccQueue.sol/AccQueue__factory.ts b/packages/contracts/typechain-types/factories/contracts/AccQueue.sol/AccQueue__factory.ts new file mode 100644 index 00000000..b8e4ceb3 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/AccQueue.sol/AccQueue__factory.ts @@ -0,0 +1,404 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + AccQueue, + AccQueueInterface, +} from "../../../contracts/AccQueue.sol/AccQueue"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [], + name: "MAX_DEPTH", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "calcMinHeight", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "currentSubtreeIndex", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_leaf", + type: "uint256", + }, + ], + name: "enqueue", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "fill", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_depth", + type: "uint256", + }, + ], + name: "getMainRoot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSmallSRTroot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSrIndices", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_index", + type: "uint256", + }, + ], + name: "getSubRoot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_level", + type: "uint256", + }, + { + internalType: "uint256", + name: "_leaf", + type: "uint256", + }, + ], + name: "hashLevelLeaf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_subRoot", + type: "uint256", + }, + ], + name: "insertSubTree", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "mainRoots", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_depth", + type: "uint256", + }, + ], + name: "merge", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_numSrQueueOps", + type: "uint256", + }, + ], + name: "mergeSubRoots", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "numLeaves", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "smallSRTroot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "subDepth", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "subRoots", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "subTreesMerged", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "treeMerged", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class AccQueue__factory { + static readonly abi = _abi; + static createInterface(): AccQueueInterface { + return new utils.Interface(_abi) as AccQueueInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): AccQueue { + return new Contract(address, _abi, signerOrProvider) as AccQueue; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/AccQueue.sol/PoseidonT3__factory.ts b/packages/contracts/typechain-types/factories/contracts/AccQueue.sol/PoseidonT3__factory.ts new file mode 100644 index 00000000..31a9962e --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/AccQueue.sol/PoseidonT3__factory.ts @@ -0,0 +1,106 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + PoseidonT3, + PoseidonT3Interface, +} from "../../../contracts/AccQueue.sol/PoseidonT3"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256[2]", + name: "input", + type: "uint256[2]", + }, + ], + name: "hash2", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_left", + type: "uint256", + }, + { + internalType: "uint256", + name: "_right", + type: "uint256", + }, + ], + name: "hashLeftRight", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, +] as const; + +const _bytecode = + "0x61016661003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80635bb939951461004557806362a361bb1461006d575b600080fd5b61005b610053366004610081565b600092915050565b60405190815260200160405180910390f35b61005b61007b3660046100a3565b50600090565b6000806040838503121561009457600080fd5b50508035926020909101359150565b6000604082840312156100b557600080fd5b82601f8301126100c457600080fd5b604080519081016001600160401b03811182821017156100f457634e487b7160e01b600052604160045260246000fd5b806040525080604084018581111561010b57600080fd5b845b8181101561012557803583526020928301920161010d565b50919594505050505056fea2646970667358221220eb078a5fa8b4b989b31358669c038aeb9433a8670794d33223177a102307e0c364736f6c634300080a0033"; + +type PoseidonT3ConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: PoseidonT3ConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class PoseidonT3__factory extends ContractFactory { + constructor(...args: PoseidonT3ConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): PoseidonT3 { + return super.attach(address) as PoseidonT3; + } + override connect(signer: Signer): PoseidonT3__factory { + return super.connect(signer) as PoseidonT3__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): PoseidonT3Interface { + return new utils.Interface(_abi) as PoseidonT3Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): PoseidonT3 { + return new Contract(address, _abi, signerOrProvider) as PoseidonT3; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/AccQueue.sol/PoseidonT6__factory.ts b/packages/contracts/typechain-types/factories/contracts/AccQueue.sol/PoseidonT6__factory.ts new file mode 100644 index 00000000..79ebb791 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/AccQueue.sol/PoseidonT6__factory.ts @@ -0,0 +1,82 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + PoseidonT6, + PoseidonT6Interface, +} from "../../../contracts/AccQueue.sol/PoseidonT6"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256[5]", + name: "input", + type: "uint256[5]", + }, + ], + name: "hash5", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, +] as const; + +const _bytecode = + "0x61011661003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c80639cfced97146038575b600080fd5b60496043366004605b565b50600090565b60405190815260200160405180910390f35b600060a08284031215606c57600080fd5b82601f830112607a57600080fd5b60405160a081016001600160401b038111828210171560a957634e487b7160e01b600052604160045260246000fd5b6040528060a084018581111560bd57600080fd5b845b8181101560d557803583526020928301920160bf565b50919594505050505056fea264697066735822122062b87d71fe656c0a44edb906d7bfcdb8a91cf1017d896b4d8364319b995693b564736f6c634300080a0033"; + +type PoseidonT6ConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: PoseidonT6ConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class PoseidonT6__factory extends ContractFactory { + constructor(...args: PoseidonT6ConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): PoseidonT6 { + return super.attach(address) as PoseidonT6; + } + override connect(signer: Signer): PoseidonT6__factory { + return super.connect(signer) as PoseidonT6__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): PoseidonT6Interface { + return new utils.Interface(_abi) as PoseidonT6Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): PoseidonT6 { + return new Contract(address, _abi, signerOrProvider) as PoseidonT6; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/AccQueue.sol/index.ts b/packages/contracts/typechain-types/factories/contracts/AccQueue.sol/index.ts new file mode 100644 index 00000000..b7b9c5a0 Binary files /dev/null and b/packages/contracts/typechain-types/factories/contracts/AccQueue.sol/index.ts differ diff --git a/packages/contracts/typechain-types/factories/contracts/JubjubFactory__factory.ts b/packages/contracts/typechain-types/factories/contracts/JubjubFactory__factory.ts new file mode 100644 index 00000000..3bc07682 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/JubjubFactory__factory.ts @@ -0,0 +1,1643 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + PayableOverrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../common"; +import type { + JubjubFactory, + JubjubFactoryInterface, +} from "../../contracts/JubjubFactory"; + +const _abi = [ + { + inputs: [], + stateMutability: "payable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract Jubjub", + name: "jubjub", + type: "address", + }, + ], + name: "JubjubDeployed", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract AccQueue", + name: "MessageTree", + type: "address", + }, + ], + name: "MessageTreeDeployed", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "ProcessVkSet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract AccQueue", + name: "StateTree", + type: "address", + }, + ], + name: "StateTreeDeployed", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "SubsidyVkSet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "TallyVkSet", + type: "event", + }, + { + inputs: [], + name: "currentJubjub", + outputs: [ + { + internalType: "contract Jubjub", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "contract ISignUpGatekeeper", + name: "_signUpGatekeeper", + type: "address", + }, + { + internalType: "contract IInitialVoiceCreditProxy", + name: "_voiceCreditProxy", + type: "address", + }, + ], + name: "deployJubjub", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + ], + name: "deployMessageTree", + outputs: [ + { + internalType: "contract AccQueue", + name: "", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + ], + name: "deployStateTree", + outputs: [ + { + internalType: "contract AccQueue", + name: "", + type: "address", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + ], + name: "determineJubjub", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageBatchSize", + type: "uint256", + }, + ], + name: "genProcessVkSig", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "genSubsidyVkSig", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "genTallyVkSig", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageBatchSize", + type: "uint256", + }, + ], + name: "getProcessVk", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "getProcessVkBySig", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "getSubsidyVk", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "getSubsidyVkBySig", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "getTallyVk", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "getTallyVkBySig", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageBatchSize", + type: "uint256", + }, + ], + name: "hasProcessVk", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "hasSubsidyVk", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "hasTallyVk", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "isProcessVkSet", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "isSubsidyVkSet", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "isTallyVkSet", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "jubjubTemplate", + outputs: [ + { + internalType: "contract Jubjub", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes[]", + name: "data", + type: "bytes[]", + }, + ], + name: "multicall", + outputs: [ + { + internalType: "bytes[]", + name: "results", + type: "bytes[]", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "_subsidyVk", + type: "tuple", + }, + ], + name: "setSubsidyKeys", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageBatchSize", + type: "uint256", + }, + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "_processVk", + type: "tuple", + }, + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "_tallyVk", + type: "tuple", + }, + ], + name: "setVerifyingKeys", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x6080604052600360078190556008556200001933620001c8565b604051620000279062000218565b604051809103906000f08015801562000044573d6000803e3d6000fd5b50600e80546001600160a01b0319166001600160a01b0392909216919091179055600754604051620000769062000226565b908152602001604051809103906000f08015801562000099573d6000803e3d6000fd5b50600f80546001600160a01b0319166001600160a01b0392909216919091179055600854604051620000cb9062000234565b908152602001604051809103906000f080158015620000ee573d6000803e3d6000fd5b50601080546001600160a01b0319166001600160a01b03929092169190911790557f0ad794e7fb50257e0edc93fe4616c69ea691e7a6c653333b6a5b507d798947276009557ec31c90221285dc87ee66daadc19f64f922e45a613f4f5429d74ddc7d66e023600a557f2afdf0e1d10d07d0df3a8481202bf2595108195e34d4ccb88742641c576aa77d600b557f177bbb5acaafc1f1deb73b8ae33f97132089ab84039048a096e202b1f8c42910600c557f25c1a155f21ae70ca3b8bdb27961efdee58bdafff83274c18dd37d0f0a8bfbb5600d5562000242565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6143f3806200309b83390190565b61258f806200748e83390190565b61258f8062009a1d83390190565b612e4980620002526000396000f3fe60806040526004361061013c5760003560e01c806309c4fae2146101415780630bfbd4fe14610177578063141a8764146101a457806317b7f810146101d25780631afe11ef146101a4578063257752d31461021257806326960517146102425780632b0c71581461026257806341951d4f146102755780634f1b0e5f146102975780635b0c3fae146102b7578063715018a6146102d75780638bc1a599146102ec5780638da5cb5b1461030c578063935a2bc514610321578063a72821b714610351578063a761918614610371578063abc61c6b14610391578063ac9650d8146103b1578063b2e39530146103d1578063ba2ff7ab146103f1578063c7c8beec14610411578063ce0cce2a14610431578063db9f755b14610444578063ef5314ec14610464578063f1a510b014610477578063f2fde38b14610497575b600080fd5b34801561014d57600080fd5b5061016161015c36600461264b565b6104b7565b60405161016e9190612664565b60405180910390f35b34801561018357600080fd5b50610197610192366004612678565b6104e7565b60405161016e91906126f5565b3480156101b057600080fd5b506101c46101bf3660046127a8565b610512565b60405190815260200161016e565b3480156101de57600080fd5b506102026101ed36600461264b565b60009081526004602052604090205460ff1690565b604051901515815260200161016e565b34801561021e57600080fd5b5061020261022d36600461264b565b60009081526002602052604090205460ff1690565b34801561024e57600080fd5b5061020261025d3660046127a8565b610539565b61016161027036600461264b565b610562565b34801561028157600080fd5b50610295610290366004612a5a565b610638565b005b3480156102a357600080fd5b506102026102b2366004612678565b610841565b3480156102c357600080fd5b50601154610161906001600160a01b031681565b3480156102e357600080fd5b5061029561086c565b3480156102f857600080fd5b5061019761030736600461264b565b610880565b34801561031857600080fd5b50610161610b0d565b34801561032d57600080fd5b5061020261033c36600461264b565b60009081526006602052604090205460ff1690565b34801561035d57600080fd5b50600e54610161906001600160a01b031681565b34801561037d57600080fd5b5061020261038c3660046127a8565b610b1c565b34801561039d57600080fd5b506102956103ac366004612ab3565b610b45565b6103c46103bf366004612b46565b610f32565b60405161016e9190612bba565b3480156103dd57600080fd5b506101c46103ec366004612678565b610fb7565b3480156103fd57600080fd5b5061019761040c36600461264b565b610fee565b34801561041d57600080fd5b5061019761042c3660046127a8565b61125f565b61016161043f36600461264b565b61127f565b34801561045057600080fd5b5061019761045f36600461264b565b611355565b610295610472366004612c6a565b6115c3565b34801561048357600080fd5b506101976104923660046127a8565b612265565b3480156104a357600080fd5b506102956104b2366004612cac565b612285565b60408051600080825260208201909252600e546104e1916001600160a01b039091169084306122fe565b92915050565b6104ef612564565b60006104fd86868686610fb7565b905061050881610fee565b9695505050505050565b600081610527604085901b608087901b612ce6565b6105319190612ce6565b949350505050565b600080610547858585610512565b60009081526004602052604090205460ff1695945050505050565b6000806105a983600854604051602001610586929190918252602082015260400190565b60408051601f198184030181529190526010546001600160a01b031690856123e0565b9050806001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105e657600080fd5b505af11580156105fa573d6000803e3d6000fd5b50506040516001600160a01b03841692507f88db915e4f874e8dac9899209696366b0028ddfed81f4073132f9afe88efbed79150600090a292915050565b6106406124b5565b600061064d858585610512565b60008181526006602052604090205490915060ff16156106bf5760405162461bcd60e51b815260206004820152602260248201527f566b52656769737472793a207375627369647920766b20616c72656164792073604482015261195d60f21b60648201526084015b60405180910390fd5b600081815260056020908152604090912083518051825582015160018201559083015180516002808401916106f6918391906125b5565b50602082015161070c90600280840191906125b5565b50505060408301518051600683019061072890829060026125b5565b50602082015161073e90600280840191906125b5565b50505060608301518051600a83019061075a90829060026125b5565b50602082015161077090600280840191906125b5565b5090505060005b8360800151518160ff1610156107e55781600e0184608001518260ff16815181106107a4576107a4612cfe565b6020908102919091018101518254600181810185556000948552938390208251600290920201908155910151910155806107dd81612d14565b915050610777565b5060008281526006602052604090819020805460ff19166001179055517f85392fd56cfeb44bd3078be9ad4b18cbcc4ad1256a9fe8922ef360ef1ed26927906108319084815260200190565b60405180910390a1505050505050565b60008061085086868686610fb7565b60009081526002602052604090205460ff169695505050505050565b6108746124b5565b61087e6000612514565b565b610888612564565b60008281526006602052604090205460ff166108f85760405162461bcd60e51b815260206004820152602960248201527f566b52656769737472793a207375627369647920766572696679696e67206b656044820152681e481b9bdd081cd95d60ba1b60648201526084016106b6565b600082815260056020908152604091829020825160e081018452815460a08201908152600183015460c08301528152835160808101808652919492938501929091600280860192849290830191849182845b81548152602001906001019080831161094a57505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610980575050509190925250505081526040805160808101808352602090930192909160068501918391820190839060029082845b8154815260200190600101908083116109c457505050918352505060408051808201918290526020909201919060028481019182845b8154815260200190600101908083116109fa5750505091909252505050815260408051608081018083526020909301929091600a8501918391820190839060029082845b815481526020019060010190808311610a3e57505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610a74575050505050815250508152602001600e8201805480602002602001604051908101604052809291908181526020016000905b82821015610aff57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610ab9565b505050915250909392505050565b6000546001600160a01b031690565b600080610b2a858585610512565b60009081526006602052604090205460ff1695945050505050565b610b4d6124b5565b6000610b5b88878787610fb7565b60008181526002602052604090205490915060ff1615610bc85760405162461bcd60e51b815260206004820152602260248201527f566b52656769737472793a2070726f6365737320766b20616c72656164792073604482015261195d60f21b60648201526084016106b6565b6000610bd5898988610512565b60008181526004602052604090205490915060ff1615610c375760405162461bcd60e51b815260206004820181905260248201527f566b52656769737472793a2074616c6c7920766b20616c72656164792073657460448201526064016106b6565b600082815260016020818152604090922086518051825583015191810191909155908501518051600280840191610c70918391906125b5565b506020820151610c8690600280840191906125b5565b505050604085015180516006830190610ca290829060026125b5565b506020820151610cb890600280840191906125b5565b50505060608501518051600a830190610cd490829060026125b5565b506020820151610cea90600280840191906125b5565b5090505060005b8560800151518160ff161015610d5f5781600e0186608001518260ff1681518110610d1e57610d1e612cfe565b602090810291909101810151825460018181018555600094855293839020825160029092020190815591015191015580610d5781612d14565b915050610cf1565b506000838152600260208181526040808420805460ff19166001908117909155868552600383529320875180518255820151938101939093558601518051909183810191610daf918391906125b5565b506020820151610dc590600280840191906125b5565b505050604085015180516006830190610de190829060026125b5565b506020820151610df790600280840191906125b5565b50505060608501518051600a830190610e1390829060026125b5565b506020820151610e2990600280840191906125b5565b5090505060005b8560800151518160ff161015610e9e5781600e0186608001518260ff1681518110610e5d57610e5d612cfe565b602090810291909101810151825460018181018555600094855293839020825160029092020190815591015191015580610e9681612d14565b915050610e30565b5060008381526004602052604090819020805460ff19166001179055517f8f43c6d3469daf791f866fe1e4abbf6f0d05622995407c31724c500801558a3590610eea9085815260200190565b60405180910390a16040518481527f865b6bc6650679c23b8967ee4ae722034eb0634534e4963caf7cf662a6f3731c9060200160405180910390a15050505050505050505050565b606081156104e15750604051818152602001600582901b808483378101805b825185018035602082018337600080823584305af4610f74573d6000803e3d6000fd5b508083526020830192503d81523d6000602083013e3d01603f016020600160401b0316818310610fa357610fa8565b610f51565b60408051919052949350505050565b600082604085901b610fd1608088901b60c086901b612ce6565b610fdb9190612ce6565b610fe59190612ce6565b95945050505050565b610ff6612564565b60008281526002602052604090205460ff166110665760405162461bcd60e51b815260206004820152602960248201527f566b52656769737472793a2070726f6365737320766572696679696e67206b656044820152681e481b9bdd081cd95d60ba1b60648201526084016106b6565b600082815260016020818152604092839020835160e081018552815460a082019081529382015460c08201529283528351608081018086526002808401805497840197885295969395948701949293849290918491600389016060860180831161094a5750505091835250506040805180820191829052600284810180548352602094850194929390926003870190850180831161098057505050919092525050508152604080516080810180835260068501805493830193845260209094019391928391839060029060078901606086018083116109c4575050509183525050604080518082019182905260028481018054835260209485019492939092600387019085018083116109fa575050509190925250505081526040805160808101808352600a85018054938301938452602090940193919283918390600290600b890160608601808311610a3e57505050918352505060408051808201918290526002848101805483526020948501949293909260038701908501808311610a74575050505050815250508152602001600e82018054806020026020016040519081016040528092919081815260200160009082821015610aff57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610ab9565b611267612564565b6000611274858585610512565b9050610fe581611355565b6000806112c6836007546040516020016112a3929190918252602082015260400190565b60408051601f19818403018152919052600f546001600160a01b031690856123e0565b9050806001600160a01b0316638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561130357600080fd5b505af1158015611317573d6000803e3d6000fd5b50506040516001600160a01b03841692507f8dc46664f0d876fe5b8058862a21a8f61d559685d049cc798085a81c7881563c9150600090a292915050565b61135d612564565b60008281526004602052604090205460ff166113cb5760405162461bcd60e51b815260206004820152602760248201527f566b52656769737472793a2074616c6c7920766572696679696e67206b6579206044820152661b9bdd081cd95d60ca1b60648201526084016106b6565b600082815260036020818152604092839020835160e081018552815460a08201908152600183015460c0830152815284516080810180875260028085018054988401988952939794969588019592948593909285929189016060860180831161094a5750505091835250506040805180820191829052600284810180548352602094850194929390926003870190850180831161098057505050919092525050508152604080516080810180835260068501805493830193845260209094019391928391839060029060078901606086018083116109c4575050509183525050604080518082019182905260028481018054835260209485019492939092600387019085018083116109fa575050509190925250505081526040805160808101808352600a85018054938301938452602090940193919283918390600290600b890160608601808311610a3e57505050918352505060408051808201918290526002848101805483526020948501949293909260038701908501808311610a74575050505050815250508152602001600e82018054806020026020016040519081016040528092919081815260200160009082821015610aff57838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190610ab9565b60408051600080825260208201909252600e546115ec916001600160a01b0390911690866123e0565b60408051600580825260c08201909252919250600091906020820160a0803683370190505090506009600001548160008151811061162c5761162c612cfe565b60209081029190910101526009600101548160018151811061165057611650612cfe565b60209081029190910101526009600201548160028151811061167457611674612cfe565b60209081029190910101526009600301548160038151811061169857611698612cfe565b6020908102919091010152600960040154816004815181106116bc576116bc612cfe565b60200260200101818152505060006116d38661127f565b905060006116e087610562565b60405163f2fde38b60e01b81529091506001600160a01b0383169063f2fde38b9061170f908790600401612664565b600060405180830381600087803b15801561172957600080fd5b505af115801561173d573d6000803e3d6000fd5b505060405163f2fde38b60e01b81526001600160a01b038416925063f2fde38b915061176d908790600401612664565b600060405180830381600087803b15801561178757600080fd5b505af115801561179b573d6000803e3d6000fd5b5050505060006001600160a01b0316826001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180c9190612d34565b6001600160a01b031614156118615760405162461bcd60e51b815260206004820152601b60248201527a1cdd185d19551c9959481bdddb995c881b5d5cdd081899481cd95d602a1b60448201526064016106b6565b60006001600160a01b0316816001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ce9190612d34565b6001600160a01b031614156119215760405162461bcd60e51b81526020600482015260196024820152781b5cd9d51c9959481bdddb995c881b5d5cdd081899481cd95d603a1b60448201526064016106b6565b604051638aa5627160e01b81526001600160a01b03851690638aa56271906119609060069060089060039081908a908e908e908c908c90600401612d51565b600060405180830381600087803b15801561197a57600080fd5b505af115801561198e573d6000803e3d6000fd5b505060405163f90100f960e01b81526001600160a01b038716925063f90100f991506119be903090600401612664565b600060405180830381600087803b1580156119d857600080fd5b505af11580156119ec573d6000803e3d6000fd5b505050506000611a0160066008600380610fb7565b600081815260016020818152604080842081518083018352858152830184905293845583830192909255815160808101835260028184018181526003606084015282528351808501909452600484526005848401529181019290925281519394509192909180840191611a76918391906125b5565b506020820151611a8c90600280840191906125b5565b50506040805160808101825260068183018181526007606084015282528251808401909352600883526009602084810191909152820192909252805190925090830190611adc90829060026125b5565b506020820151611af290600280840191906125b5565b505060408051608081018252600a818301818152600b606084015282528251808401909352600c8352600d602084810191909152820192909252805190925090830190611b4290829060026125b5565b506020820151611b5890600280840191906125b5565b5050604080518082018252600e808252600f6020808401918252918601805460018181018355600083815285812096516002938402880190815594519482019490945586518088019097526010875260119487019485528254808201845592845295519102909301928355905191909201559050611bd96006600380610512565b600081815260036020818152604080842081518083018352858152600190840181905294885587850194909455805160808101825260028183018181526060830195909552938152815180830190925260048252600582840152918201528051939450919281860191611c4d9183916125b5565b506020820151611c6390600280840191906125b5565b50506040805160808101825260068183018181526007606084015282528251808401909352600883526009602084810191909152820192909252805190925090850190611cb390829060026125b5565b506020820151611cc990600280840191906125b5565b505060408051608081018252600a818301818152600b606084015282528251808401909352600c8352600d602084810191909152820192909252805190925090850190611d1990829060026125b5565b506020820151611d2f90600280840191906125b5565b5050604080518082018252600e808252600f6020808401918252918801805460018082018355600083815285812096516002938402880190815594519482019490945586518088018852601081526011818701908152845480840186559490955251928202909501918255915190840155835160e081018552885460a082019081529389015460c08201529283528351608081018086526121b196506006956003956008958795869592948e9492860193928286019284929183019184919082845b815481526020019060010190808311611df157505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311611e27575050509190925250505081526040805160808101808352602090930192909160068501918391820190839060029082845b815481526020019060010190808311611e6b57505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311611ea15750505091909252505050815260408051608081018083526020909301929091600a8501918391820190839060029082845b815481526020019060010190808311611ee557505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311611f1b575050505050815250508152602001600e8201805480602002602001604051908101604052809291908181526020016000905b82821015611fa657838290600052602060002090600202016040518060400160405290816000820154815260200160018201548152505081526020019060010190611f60565b505050915250506040805160e081018252895460a0820190815260018b015460c0830152815281516080810180845291928b926020850192916002808601928492830191849182845b815481526020019060010190808311611fef57505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311612025575050509190925250505081526040805160808101808352602090930192909160068501918391820190839060029082845b81548152602001906001019080831161206957505050918352505060408051808201918290526020909201919060028481019182845b81548152602001906001019080831161209f5750505091909252505050815260408051608081018083526020909301929091600a8501918391820190839060029082845b8154815260200190600101908083116120e357505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311612119575050505050815250508152602001600e8201805480602002602001604051908101604052809291908181526020016000905b828210156121a45783829060005260206000209060020201604051806040016040529081600082015481526020016001820154815250508152602001906001019061215e565b5050505081525050610b45565b60405163f2fde38b60e01b81526001600160a01b0389169063f2fde38b906121dd903390600401612664565b600060405180830381600087803b1580156121f757600080fd5b505af115801561220b573d6000803e3d6000fd5b5050601180546001600160a01b0319166001600160a01b038c169081179091556040519092507f31ab0bcf1a6c761cff6ed7b1181e6ea501637d77c4baaec103dc036b948ec3e99150600090a25050505050505050505050565b61226d612564565b600061227a858585610512565b9050610fe581610880565b61228d6124b5565b6001600160a01b0381166122f25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106b6565b6122fb81612514565b50565b600060608403516040850351602086035186518060208901018051600283016c5af43d3d93803e606057fd5bf38b528b600d8c035278593da1005b363d3d373d3d3d3d610000806062363936013d738160481b1760218c0352600080516020612df4833981519152603a8c0352716100003d81600a3d39f336602c57343d527f6062820160781b17605a8c03528060f01b8352606c8101604c8c03206035525060ff6000538760601b60015288601552605560002096506000603552808252505080885250806020880352508060408703525080606086035250949350505050565b600060608303516040840351602085035185518060208801018051600283016c5af43d3d93803e606057fd5bf38a528a600d8b035278593da1005b363d3d373d3d3d3d610000806062363936013d738160481b1760218b0352600080516020612df4833981519152603a8b0352716100003d81600a3d39f336602c57343d527f6062820160781b17605a8b03528060f01b835288606c8201604c8c036000f5975050866124955763301164256000526004601cfd5b90528652601f19860152603f19850152605f199093019290925250919050565b336124be610b0d565b6001600160a01b03161461087e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106b6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805160e08101909152600060a0820181815260c083019190915281526020810161258e6125f3565b815260200161259b6125f3565b81526020016125a86125f3565b8152602001606081525090565b82600281019282156125e3579160200282015b828111156125e35782518255916020019190600101906125c8565b506125ef929150612618565b5090565b604051806040016040528061260661262d565b815260200161261361262d565b905290565b5b808211156125ef5760008155600101612619565b60405180604001604052806002906020820280368337509192915050565b60006020828403121561265d57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b6000806000806080858703121561268e57600080fd5b5050823594602084013594506040840135936060013592509050565b8060005b60028110156126cd5781518452602093840193909101906001016126ae565b50505050565b6126de8282516126aa565b60208101516126f060408401826126aa565b505050565b60208082528251805183830152810151604083015260009061020083018185015161272360608601826126d3565b5060408086015161273760e08701826126d3565b50606086015161274b6101608701826126d3565b5060808601516101e0868101528051928390528301916000906102208701905b8083101561279c5761278882865180518252602090810151910152565b93850193600192909201919083019061276b565b50979650505050505050565b6000806000606084860312156127bd57600080fd5b505081359360208301359350604090920135919050565b6001600160a01b03169052565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612819576128196127e1565b60405290565b60405160a081016001600160401b0381118282101715612819576128196127e1565b604051601f8201601f191681016001600160401b0381118282101715612869576128696127e1565b604052919050565b60006040828403121561288357600080fd5b61288b6127f7565b9050813581526020820135602082015292915050565b600082601f8301126128b257600080fd5b604080519081016001600160401b03811182821017156128d4576128d46127e1565b80604052508060408401858111156128eb57600080fd5b845b818110156129055780358352602092830192016128ed565b509195945050505050565b60006080828403121561292257600080fd5b61292a6127f7565b905061293683836128a1565b815261294583604084016128a1565b602082015292915050565b60006101e0828403121561296357600080fd5b61296b61281f565b90506129778383612871565b8152604061298784828501612910565b6020818185015261299b8660c08701612910565b838501526129ad866101408701612910565b60608501526101c085013591506001600160401b03808311156129cf57600080fd5b828601925086601f8401126129e357600080fd5b8235818111156129f5576129f56127e1565b612a03838260051b01612841565b818152838101925060069190911b840183019088821115612a2357600080fd5b938301935b81851015612a4957612a3a8986612871565b83529385019391830191612a28565b608087015250939695505050505050565b60008060008060808587031215612a7057600080fd5b84359350602085013592506040850135915060608501356001600160401b03811115612a9b57600080fd5b612aa787828801612950565b91505092959194509250565b600080600080600080600060e0888a031215612ace57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a08801356001600160401b0380821115612b0857600080fd5b612b148b838c01612950565b935060c08a0135915080821115612b2a57600080fd5b50612b378a828b01612950565b91505092959891949750929550565b60008060208385031215612b5957600080fd5b82356001600160401b0380821115612b7057600080fd5b818501915085601f830112612b8457600080fd5b813581811115612b9357600080fd5b8660208260051b8501011115612ba857600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b87010192508387016000805b83811015612c4757888603603f1901855282518051808852835b81811015612c17578281018a01518982018b01528901612bfc565b81811115612c2757848a838b0101525b50601f01601f191696909601870195509386019391860191600101612be2565b509398975050505050505050565b6001600160a01b03811681146122fb57600080fd5b600080600060608486031215612c7f57600080fd5b833592506020840135612c9181612c55565b91506040840135612ca181612c55565b809150509250925092565b600060208284031215612cbe57600080fd5b8135612cc981612c55565b9392505050565b634e487b7160e01b600052601160045260246000fd5b60008219821115612cf957612cf9612cd0565b500190565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff811415612d2b57612d2b612cd0565b60010192915050565b600060208284031215612d4657600080fd5b8151612cc981612c55565b60006101208083018c845260208c818601528b60408601528a6060860152826080860152819250895180835261014086019350818b01925060005b81811015612da857835185529382019392820192600101612d8c565b5050505080915050612dbd60a08301876127d4565b612dca60c08301866127d4565b612dd760e08301856127d4565b612de56101008301846127d4565b9a995050505050505050505056fe9e4ac34f21c619cefc926c8bd93b54bf5a39c7ab2127a895af1cc0691d7e3dffa264697066735822122099bace46eae22507e4ff52eb588f53aeca13b24c3d3481a939024633f1fea3b464736f6c634300080a003360806040523480156200001157600080fd5b506200001c62000134565b7f0ef71f46e11a513c599eed9dd03576c33439bcfb1cee155316f90541e41649ba14620000a15760405162461bcd60e51b815260206004820152602860248201527f4d4143493a20424c414e4b5f53544154455f4c4541465f4841534820697320696044820152671b98dbdc9c9958dd60c21b60648201526084015b60405180910390fd5b620000ab62000194565b7f1dee9f497aa52e2ad4b049b789afb5056fbee5a0e3f1083a92d93cb3a5a70fb4146200012e5760405162461bcd60e51b815260206004820152602a60248201527f4d4143493a20424c414e4b5f4d4553534147455f4c4541465f48415348206973604482015269081a5b98dbdc9c9958dd60b21b606482015260840162000098565b620005e5565b604080518082018252600080516020620043b38339815191528152600080516020620043d383398151915260208083019190915282516060810184528281526000918101829052928301819052916200018d816200025a565b9250505090565b60408051610140810182527f12817f4161f2f5ded33f26c55735a77e80e4f8975483c8c2704745128417f711815260006020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905260e083018290526101008301829052610120830182905283518085018552600080516020620043b38339815191528152600080516020620043d38339815191528183015284518086019095526001855290840183905290926200025281836200030f565b935050505090565b60006200026662000532565b82515181528251602090810151818301528301518160026020020152604083810151606083015251631efdc45960e11b815273__$56e03346d0918fb20a2db08690fd2c2075$__90633dfb88b290620002c49084906004016200056e565b602060405180830381865af4158015620002e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003089190620005a1565b9392505050565b60006200031b62000550565b6020848101805151835280518201519183019190915280516040908101519083015280516060908101519083015251608090810151908201526200035e62000550565b6020858101805160a0908101518452815160c0015184840152815160e0015160408086019190915282516101000151606086015291516101200151608085015281519081018252875181529051639cfced9760e01b815273__$e63b1c9f9b66f613a0dd27ec595fdb417f$__92639cfced9792919082019084908490620003ea908990600401620005bb565b602060405180830381865af415801562000408573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042e9190620005a1565b815260200173__$e63b1c9f9b66f613a0dd27ec595fdb417f$__639cfced97866040518263ffffffff1660e01b81526004016200046c9190620005bb565b602060405180830381865af41580156200048a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b09190620005a1565b81526020018760000151815260200187602001518152506040518263ffffffff1660e01b8152600401620004e59190620005bb565b602060405180830381865af415801562000503573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005299190620005a1565b95945050505050565b60405180608001604052806004906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b60808101818360005b60048110156200059857815183526020928301929091019060010162000577565b50505092915050565b600060208284031215620005b457600080fd5b5051919050565b60a08101818360005b600581101562000598578151835260209283019290910190600101620005c4565b613dbe80620005f56000396000f3fe6080604052600436106102435760003560e01c8062329f2f14610248578063030ffa6e1461025f578063079410db146102875780630f4cf692146102bf5780630f78c3f2146102d5578063122db153146102eb578063133511b91461030157806313fb8932146103165780631c2a50a214610336578063203bfef51461034c578063213e7ba81461036257806331e766a5146103985780633364120a146103c8578063394b78a2146103e85780633bee85a81461040857806342bf25ab1461041e5780634c8104da146104335780635289052c14610453578063603baff814610473578063652c76e41461049357806370ee8e42146104a9578063715018a6146104be5780637296aaea146104d3578063793dbe32146104f35780637a38d18f146105085780637d0a81c81461051e57806383ca5a5b1461053e578063842ff2bd1461055457806388e8ee721461056a5780638aa0ba92146105805780638aa56271146105965780638ae8a05f146105b65780638da5cb5b146105d65780639bc609f3146105eb5780639c971729146106015780639eb1cab3146106215780639ed3c90c1461064e578063a78dac0d14610678578063ac2f007414610698578063ac9650d8146106ce578063c17268d9146106ee578063ca64d4ee14610704578063d5f7b1b614610724578063e5e7569314610744578063e71f900c14610764578063ec9289a814610784578063f2fde38b1461079a578063f74556bd146107ba578063f90100f9146107d0578063fcc2c3aa146107f0578063fed8fd441461080a575b600080fd5b34801561025457600080fd5b5061025d610820565b005b34801561026b57600080fd5b50610274610a4c565b6040519081526020015b60405180910390f35b34801561029357600080fd5b50607e546102a7906001600160a01b031681565b6040516001600160a01b03909116815260200161027e565b3480156102cb57600080fd5b5061027460725481565b3480156102e157600080fd5b5061027460835481565b3480156102f757600080fd5b5061027460715481565b34801561030d57600080fd5b5061025d610aa8565b34801561032257600080fd5b506080546102a7906001600160a01b031681565b34801561034257600080fd5b5061027460665481565b34801561035857600080fd5b5061027460775481565b34801561036e57600080fd5b506102a761037d366004612ee0565b607b602052600090815260409020546001600160a01b031681565b3480156103a457600080fd5b506081546082546103b3919082565b6040805192835260208301919091520161027e565b3480156103d457600080fd5b5061025d6103e3366004613028565b610cd3565b3480156103f457600080fd5b5061025d61040336600461312f565b61101d565b34801561041457600080fd5b5061027460765481565b34801561042a57600080fd5b50610274611236565b34801561043f57600080fd5b5061027461044e36600461312f565b6112e1565b34801561045f57600080fd5b5061025d61046e366004612ee0565b6114f3565b34801561047f57600080fd5b50607c546102a7906001600160a01b031681565b34801561049f57600080fd5b5061027460655481565b3480156104b557600080fd5b5061025d6115ff565b3480156104ca57600080fd5b5061025d611666565b3480156104df57600080fd5b5061025d6104ee366004613166565b61167a565b3480156104ff57600080fd5b506102746116fd565b34801561051457600080fd5b5061027460745481565b34801561052a57600080fd5b5061027461053936600461322e565b6117c0565b34801561054a57600080fd5b5061027460845481565b34801561056057600080fd5b5061027460705481565b34801561057657600080fd5b5061027460695481565b34801561058c57600080fd5b5061027460735481565b3480156105a257600080fd5b5061025d6105b13660046132d7565b61186e565b3480156105c257600080fd5b50607d546102a7906001600160a01b031681565b3480156105e257600080fd5b506102a761201e565b3480156105f757600080fd5b5061027460675481565b34801561060d57600080fd5b5061025d61061c366004612ee0565b61202d565b34801561062d57600080fd5b5061027461063c366004612ee0565b60796020526000908152604090205481565b34801561065a57600080fd5b50606f546106689060ff1681565b604051901515815260200161027e565b34801561068457600080fd5b506102746106933660046133d8565b6121e9565b3480156106a457600080fd5b506102a76106b3366004612ee0565b607a602052600090815260409020546001600160a01b031681565b6106e16106dc3660046133fa565b61227d565b60405161027e91906134bb565b3480156106fa57600080fd5b5061027460785481565b34801561071057600080fd5b50607f546102a7906001600160a01b031681565b34801561073057600080fd5b5061025d61073f366004612ee0565b612302565b34801561075057600080fd5b5061025d61075f36600461351d565b6124c0565b34801561077057600080fd5b5061025d61077f3660046135b2565b612898565b34801561079057600080fd5b5061027460755481565b3480156107a657600080fd5b5061025d6107b53660046135e8565b612cd8565b3480156107c657600080fd5b5061027460855481565b3480156107dc57600080fd5b5061025d6107eb3660046135e8565b612d51565b3480156107fc57600080fd5b506086546106689060ff1681565b34801561081657600080fd5b5061027460685481565b610828612d7b565b607d60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa15801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f9190613605565b156108c55760405162461bcd60e51b81526004016108bc90613627565b60405180910390fd5b607d60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190613605565b15156001146109995760405162461bcd60e51b8152602060048201526024808201527f4552524f525f4d4553534147455f41515f53554254524545535f4e4545445f4d6044820152634552474560e01b60648201526084016108bc565b607d546067546040516324a47aeb60e01b81526001600160a01b03909216916324a47aeb916109ce9160040190815260200190565b6020604051808303816000875af11580156109ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a11919061365e565b60768190556040519081527fc5624680ab5d50c84507f9e0dc2032163de2bda906ab8a661a53dd4d43bd5dc7906020015b60405180910390a1565b604080518082018252600080516020613ce98339815191528152600080516020613d498339815191526020808301919091528251606081018452828152600091810182905292830181905291610aa1816117c0565b9250505090565b610ab0612d7b565b607c60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b279190613605565b158015610b37575060865460ff16155b610b535760405162461bcd60e51b81526004016108bc90613677565b607c60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca9190613605565b1515600114610c265760405162461bcd60e51b815260206004820152602260248201527f4552524f525f53544154455f41515f53554254524545535f4e4545445f4d4552604482015261474560f01b60648201526084016108bc565b607c546065546040516324a47aeb60e01b81526001600160a01b03909216916324a47aeb91610c5b9160040190815260200190565b6020604051808303816000875af1158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9e919061365e565b60758190556040519081527f58deecc020170648ca539f41d6d967a2d071ce17a8296866ba3b3403977fd8ec90602001610a42565b606f5460ff16610cf55760405162461bcd60e51b81526004016108bc906136ae565b606554610d039060056137d7565b60715410610d635760405162461bcd60e51b815260206004820152602760248201527f4d4143493a206d6178696d756d206e756d626572206f66207369676e757073206044820152661c995858da195960ca1b60648201526084016108bc565b8251600080516020613d29833981519152118015610d925750600080516020613d298339815191528360200151105b610e045760405162461bcd60e51b815260206004820152603f60248201527f4d4143493a205f7075624b65792076616c7565732073686f756c64206265206c60448201527f657373207468616e2074686520736e61726b207363616c6172206669656c640060648201526084016108bc565b60865460ff16610e515760405162461bcd60e51b8152602060048201526018602482015277135050d24e881cda59db9d5c1cc8185c994818db1bdcd95960421b60448201526064016108bc565b607180546001019055607e5460405163125c7dfb60e11b81526001600160a01b03909116906324b8fbf690610e8c90339086906004016137e3565b600060405180830381600087803b158015610ea657600080fd5b505af1158015610eba573d6000803e3d6000fd5b5050607f5460405163b36543a960e01b8152600093506001600160a01b03909116915063b36543a990610ef390339086906004016137e3565b602060405180830381865afa158015610f10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f34919061365e565b905060004290506000610f606040518060600160405280888152602001858152602001848152506117c0565b607c54604051631ffc735d60e01b8152600481018390529192506000916001600160a01b0390911690631ffc735d906024016020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd5919061365e565b90507f99f34e3b6821c0bd1f5732936411fe3fd65fb78cbcd657c61bfb8deb08c0591f8188868660405161100c9493929190613816565b60405180910390a150505050505050565b608454421061106b5760405162461bcd60e51b815260206004820152601a60248201527911549493d497d593d5125391d7d411549253d117d41054d4d15160321b60448201526064016108bc565b6067546110799060056137d7565b60725411156110c75760405162461bcd60e51b815260206004820152601a60248201527911549493d497d3505617d35154d4d051d154d7d4915050d2115160321b60448201526064016108bc565b8051600080516020613d298339815191521180156110f65750600080516020613d298339815191528160200151105b6111395760405162461bcd60e51b81526020600482015260146024820152734552524f525f494e56414c49445f5055424b455960601b60448201526064016108bc565b426084541161117f5760405162461bcd60e51b815260206004820152601260248201527111549493d497d593d5125391d7d15391115160721b60448201526064016108bc565b6072805460019081019091558252600061119983836112e1565b607d54604051631ffc735d60e01b8152600481018390529192506001600160a01b031690631ffc735d906024016020604051808303816000875af11580156111e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611209919061365e565b50600080516020613d69833981519152838360405161122992919061383c565b60405180910390a1505050565b600080606854600561124891906137d7565b905060008160725461125a9190613898565b90506074546000141561128f578061128557818260725461127b91906138ac565b610aa191906138c0565b6072549250505090565b806112af57816074546112a291906138c0565b607254610aa191906138df565b8160016074546112bf91906138df565b6112c991906138c0565b816072546112d791906138df565b610aa191906138df565b60006112eb612e86565b60208481018051518352805182015191830191909152805160409081015190830152805160609081015190830152516080908101519082015261132c612e86565b6020858101805160a0908101518452815160c0015184840152815160e0015160408086019190915282516101000151606086015291516101200151608085015281519081018252875181529051639cfced9760e01b815273__$e63b1c9f9b66f613a0dd27ec595fdb417f$__92639cfced97929190820190849084906113b690899060040161390c565b602060405180830381865af41580156113d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f7919061365e565b815260200173__$e63b1c9f9b66f613a0dd27ec595fdb417f$__639cfced97866040518263ffffffff1660e01b8152600401611433919061390c565b602060405180830381865af4158015611450573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611474919061365e565b81526020018760000151815260200187602001518152506040518263ffffffff1660e01b81526004016114a7919061390c565b602060405180830381865af41580156114c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e8919061365e565b925050505b92915050565b6114fb612d7b565b60865460ff16156115435760405162461bcd60e51b815260206004820152601260248201527114d251d3955414d7d393d517d0d313d4d15160721b60448201526064016108bc565b606a6115506001836138df565b60058110611560576115606138f6565b0154607781905560408051606081018252607554815260208101929092526000828201525163bea140b360e01b815273__$8f0718d15a58b4353249f9bf6422c5f00e$__9163bea140b3916115b8919060040161393d565b602060405180830381865af41580156115d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f9919061365e565b60785550565b611607612d7b565b60865460ff16156116575760405162461bcd60e51b815260206004820152601a60248201527922a92927a92fa9a4a3a72aa829afa0a62922a0a22cafa7a822a760311b60448201526064016108bc565b6086805460ff19166001179055565b61166e612d7b565b6116786000612dda565b565b8260005b818160ff1610156116f5576116e386868360ff168181106116a1576116a16138f6565b905061016002018036038101906116b89190613965565b85858460ff168181106116cd576116cd6138f6565b9050604002018036038101906104039190613982565b806116ed8161399e565b91505061167e565b505050505050565b600080604051806101400160405280600080516020613d09833981519152815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250905060006040518060400160405280600080516020613ce98339815191528152602001600080516020613d49833981519152815250905060006040518060400160405280600181526020018481525090506117b881836112e1565b935050505090565b60006117ca612ea4565b82515181528251602090810151818301528301518160026020020152604083810151606083015251631efdc45960e11b815273__$56e03346d0918fb20a2db08690fd2c2075$__90633dfb88b2906118269084906004016139be565b602060405180830381865af4158015611843573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611867919061365e565b9392505050565b600054610100900460ff161580801561188e5750600054600160ff909116105b806118a85750303b1580156118a8575060005460ff166001145b61190b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108bc565b6000805460ff19166001179055801561192e576000805461ff0019166101001790555b611936612e2c565b600061194061201e565b6001600160a01b031614156119925760405162461bcd60e51b8152602060048201526018602482015277129d589a9d58881bdddb995c881b5d5cdd081899481cd95d60421b60448201526064016108bc565b606f5460ff16156119e15760405162461bcd60e51b8152602060048201526019602482015278135050d24e88185b1c9958591e481a5b9a5d1a585b1a5cd959603a1b60448201526064016108bc565b426083556086805460ff199081166001908117909255606f80549091169091179055607e80546001600160a01b038088166001600160a01b031992831617909255607f8054878416908316179055607c80548684169083168117909155607d80549386169390921692909217905560658b9055606689905560678a9055606888905560408051636ed44d3760e11b815290516000929163dda89a6e9160048281019260209291908290030181865afa158015611aa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac5919061365e565b1415611b5b57607c54604051631ffc735d60e01b81527f0ef71f46e11a513c599eed9dd03576c33439bcfb1cee155316f90541e41649ba60048201526001600160a01b0390911690631ffc735d906024016020604051808303816000875af1158015611b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b59919061365e565b505b607d60009054906101000a90046001600160a01b03166001600160a01b031663dda89a6e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd2919061365e565b15611c1f5760405162461bcd60e51b815260206004820152601d60248201527f4d4143493a206d657373616765206171206973206e6f7420656d70747900000060448201526064016108bc565b607d54604051631ffc735d60e01b81527f1dee9f497aa52e2ad4b049b789afb5056fbee5a0e3f1083a92d93cb3a5a70fb460048201526001600160a01b0390911690631ffc735d906024016020604051808303816000875af1158015611c89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cad919061365e565b5085600081518110611cc157611cc16138f6565b6020026020010151606a600060058110611cdd57611cdd6138f6565b0155855186906001908110611cf457611cf46138f6565b6020026020010151606a600160058110611d1057611d106138f6565b0155855186906002908110611d2757611d276138f6565b6020026020010151606a600260058110611d4357611d436138f6565b0155855186906003908110611d5a57611d5a6138f6565b6020026020010151606a600360058110611d7657611d766138f6565b0155855186906004908110611d8d57611d8d6138f6565b6020026020010151606a600460058110611da957611da96138f6565b0155607c546040805163442c38c760e11b815290516001600160a01b0390921691638858718e916004808201926020929091908290030181865afa158015611df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e19919061365e565b60665414611e395760405162461bcd60e51b81526004016108bc906139e6565b607d60009054906101000a90046001600160a01b03166001600160a01b0316638858718e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb0919061365e565b60685414611ed05760405162461bcd60e51b81526004016108bc906139e6565b607c60009054906101000a90046001600160a01b03166001600160a01b031663a27154ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f47919061365e565b60655410611f895760405162461bcd60e51b815260206004820152600f60248201526e0929c869ea4a48a86a840888aa0a89608b1b60448201526064016108bc565b604080516001600160a01b038088168252861660208201527f45acd56f401dc3db1d520e5e214f090b4ab3e3fbf42fd24596cb511edaad876a910160405180910390a18015612012576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6033546001600160a01b031690565b612035612d7b565b607d60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa158015612088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ac9190613605565b1580156120bc575060865460ff16155b6120d85760405162461bcd60e51b81526004016108bc90613627565b607d60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214f9190613605565b6121b257607d5460405163c15da65b60e01b8152600481018390526001600160a01b039091169063c15da65b90602401600060405180830381600087803b15801561219957600080fd5b505af11580156121ad573d6000803e3d6000fd5b505050505b6040518181527f1245b881cb30fdad22b2f9fde2d5c2a3605bbdf272d5e8a2235d8c9e81aba2ce906020015b60405180910390a150565b60006121f3612ec2565b838152602081018390526040516362a361bb60e01b815273__$c6850fb4e0ee9ead61bcd830cbea02ad6d$__906362a361bb90612234908490600401613a12565b602060405180830381865af4158015612251573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612275919061365e565b949350505050565b606081156114ed5750604051818152602001600582901b808483378101805b825185018035602082018337600080823584305af46122bf573d6000803e3d6000fd5b508083526020830192503d81523d6000602083013e3d01603f016020600160401b03168183106122ee576122f3565b61229c565b60408051919052949350505050565b61230a612d7b565b607c60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa15801561235d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123819190613605565b158015612391575060865460ff16155b6123ad5760405162461bcd60e51b81526004016108bc90613677565b607c60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612400573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124249190613605565b61248757607c5460405163c15da65b60e01b8152600481018390526001600160a01b039091169063c15da65b90602401600060405180830381600087803b15801561246e57600080fd5b505af1158015612482573d6000803e3d6000fd5b505050505b60705460408051918252602082018390527f20c94e460dce562bb3cf493d654a31e5adbf7abcce31a6b8da835c1211ed0dec91016121de565b6124c8612d7b565b607c60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa15801561251b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253f9190613605565b6125875760405162461bcd60e51b815260206004820152601960248201527811549493d497d4d510551157d05457d393d517d3515491d151603a1b60448201526064016108bc565b607d60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fe9190613605565b6126565760405162461bcd60e51b815260206004820152602360248201527f4552524f525f4d4553534147455f41515f4e4f545f414c52454144595f4d455260448201526211d15160ea1b60648201526084016108bc565b6000612660611236565b116126a65760405162461bcd60e51b81526020600482015260166024820152754552524f525f4e4f5f4d4f52455f4d4553534147455360501b60448201526064016108bc565b607d54606754604051631b9b8aa760e01b815260048101919091526000916001600160a01b031690631b9b8aa790602401602060405180830381865afa1580156126f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612718919061365e565b9050806127655760405162461bcd60e51b815260206004820152601b60248201527a11549493d497d35154d4d051d157d05457d393d517d3515491d151602a1b60448201526064016108bc565b6000606854600561277691906137d7565b6080546065546067546069546040516305fdea7f60e11b8152600481019390935260248301919091526044820152606481018390529192506000916001600160a01b0390911690630bfbd4fe90608401600060405180830381865afa1580156127e3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261280b9190810190613b19565b905060016000612819611236565b9050816128745760405162461bcd60e51b815260206004820152602360248201527f4552524f525f494e56414c49445f50524f434553535f4d4553534147455f505260448201526227a7a360e91b60648201526084016108bc565b60788790556074805490600061288983613c31565b91905055505050505050505050565b606f5460ff166128ba5760405162461bcd60e51b81526004016108bc906136ae565b607c60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa15801561290d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129319190613605565b1561294e5760405162461bcd60e51b81526004016108bc90613677565b607c60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c59190613605565b15612a125760405162461bcd60e51b815260206004820152601e60248201527f4552524f525f53544154455f41515f53554254524545535f4d4552474544000060448201526064016108bc565b607d60009054906101000a90046001600160a01b03166001600160a01b031663dda89a6e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a89919061365e565b600114612ad55760405162461bcd60e51b815260206004820152601a6024820152794552524f525f4d4553534147455f41515f4e4f545f454d50545960301b60448201526064016108bc565b6086805460ff19169055612ae8836114f3565b6000604051806101400160405280600080516020613d09833981519152815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250905060006040518060400160405280600080516020613ce98339815191528152602001600080516020613d4983398151915281525090506000604051806040016040528060016002811115612b9e57612b9e613c4c565b815260200184905260708054600190810190915560728054909101905560858690559050612bcc8542613c62565b60845560698690558351608181905560208501516082819055604051635bb9399560e01b815273__$c6850fb4e0ee9ead61bcd830cbea02ad6d$__92635bb9399592612c2392600401918252602082015260400190565b602060405180830381865af4158015612c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c64919061365e565b60735560006074556070546040517f76b880f3c8580b5bb05765c3b2160a2860692566e7f8cce8c58d23e77f3130c291612ca19130908890613c7a565b60405180910390a1600080516020613d698339815191528183604051612cc892919061383c565b60405180910390a1505050505050565b612ce0612d7b565b6001600160a01b038116612d455760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108bc565b612d4e81612dda565b50565b612d59612d7b565b608080546001600160a01b0319166001600160a01b0392909216919091179055565b33612d8461201e565b6001600160a01b0316146116785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108bc565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16612e535760405162461bcd60e51b81526004016108bc90613c9d565b611678600054610100900460ff16612e7d5760405162461bcd60e51b81526004016108bc90613c9d565b61167833612dda565b6040518060a001604052806005906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b600060208284031215612ef257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f3157612f31612ef9565b60405290565b60405160a081016001600160401b0381118282101715612f3157612f31612ef9565b604051601f8201601f191681016001600160401b0381118282101715612f8157612f81612ef9565b604052919050565b600060408284031215612f9b57600080fd5b612fa3612f0f565b9050813581526020820135602082015292915050565b600082601f830112612fca57600080fd5b81356001600160401b03811115612fe357612fe3612ef9565b612ff6601f8201601f1916602001612f59565b81815284602083860101111561300b57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006080848603121561303d57600080fd5b6130478585612f89565b925060408401356001600160401b038082111561306357600080fd5b61306f87838801612fb9565b9350606086013591508082111561308557600080fd5b5061309286828701612fb9565b9150509250925092565b60006101608083850312156130b057600080fd5b6130b8612f0f565b915082358252602084603f8501126130cf57600080fd5b60405161014081016001600160401b03811182821017156130f2576130f2612ef9565b60405291840191808684111561310757600080fd5b8286015b84811015613122578035825290830190830161310b565b5050908301525092915050565b6000806101a0838503121561314357600080fd5b61314d848461309c565b915061315d846101608501612f89565b90509250929050565b6000806000806040858703121561317c57600080fd5b84356001600160401b038082111561319357600080fd5b818701915087601f8301126131a757600080fd5b8135818111156131b657600080fd5b886020610160830285010111156131cc57600080fd5b6020928301965094509086013590808211156131e757600080fd5b818701915087601f8301126131fb57600080fd5b81358181111561320a57600080fd5b8860208260061b850101111561321f57600080fd5b95989497505060200194505050565b60006080828403121561324057600080fd5b604051606081016001600160401b038111828210171561326257613262612ef9565b60405261326f8484612f89565b815260408301356020820152606083013560408201528091505092915050565b60006001600160401b038211156132a8576132a8612ef9565b5060051b60200190565b6001600160a01b0381168114612d4e57600080fd5b80356132d2816132b2565b919050565b60008060008060008060008060006101208a8c0312156132f657600080fd5b893598506020808b0135985060408b0135975060608b0135965060808b01356001600160401b0381111561332957600080fd5b8b01601f81018d1361333a57600080fd5b803561334d6133488261328f565b612f59565b81815260059190911b8201830190838101908f83111561336c57600080fd5b928401925b8284101561338a57833582529284019290840190613371565b809950505050505061339e60a08b016132c7565b93506133ac60c08b016132c7565b92506133ba60e08b016132c7565b91506133c96101008b016132c7565b90509295985092959850929598565b600080604083850312156133eb57600080fd5b50508035926020909101359150565b6000806020838503121561340d57600080fd5b82356001600160401b038082111561342457600080fd5b818501915085601f83011261343857600080fd5b81358181111561344757600080fd5b8660208260051b850101111561345c57600080fd5b60209290920196919550909350505050565b6000815180845260005b8181101561349457602081850181015186830182015201613478565b818111156134a6576000602083870101525b50601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561351057603f198886030184526134fe85835161346e565b945092850192908501906001016134e2565b5092979650505050505050565b600080600061014080858703121561353457600080fd5b84359350602080860135935086605f87011261354f57600080fd5b60405161010081016001600160401b038111828210171561357257613572612ef9565b60405291860191808884111561358757600080fd5b604088015b848110156135a3578035825290830190830161358c565b50508093505050509250925092565b6000806000608084860312156135c757600080fd5b83359250602084013591506135df8560408601612f89565b90509250925092565b6000602082840312156135fa57600080fd5b8135611867816132b2565b60006020828403121561361757600080fd5b8151801515811461186757600080fd5b6020808252601f908201527f4552524f525f4d4553534147455f41515f414c52454144595f4d455247454400604082015260600190565b60006020828403121561367057600080fd5b5051919050565b6020808252601d908201527f4552524f525f53544154455f41515f414c52454144595f4d4552474544000000604082015260600190565b602080825260159082015274135050d24e881b9bdd081a5b9a5d1a585b1a5cd959605a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561372e578160001904821115613714576137146136dd565b8085161561372157918102915b93841c93908002906136f8565b509250929050565b600082613745575060016114ed565b81613752575060006114ed565b816001811461376857600281146137725761378e565b60019150506114ed565b60ff841115613783576137836136dd565b50506001821b6114ed565b5060208310610133831016604e8410600b84101617156137b1575081810a6114ed565b6137bb83836136f3565b80600019048211156137cf576137cf6136dd565b029392505050565b60006118678383613736565b6001600160a01b03831681526040602082018190526000906122759083018461346e565b80518252602090810151910152565b84815260a0810161382a6020830186613807565b60608201939093526080015292915050565b825181526020808401516101a08301919081840160005b600a81101561387057825182529183019190830190600101613853565b50505050611867610160830184613807565b634e487b7160e01b600052601260045260246000fd5b6000826138a7576138a7613882565b500690565b6000826138bb576138bb613882565b500490565b60008160001904831182151516156138da576138da6136dd565b500290565b6000828210156138f1576138f16136dd565b500390565b634e487b7160e01b600052603260045260246000fd5b60a08101818360005b6005811015613934578151835260209283019290910190600101613915565b50505092915050565b60608101818360005b6003811015613934578151835260209283019290910190600101613946565b6000610160828403121561397857600080fd5b611867838361309c565b60006040828403121561399457600080fd5b6118678383612f89565b600060ff821660ff8114156139b5576139b56136dd565b60010192915050565b60808101818360005b60048110156139345781518352602092830192909101906001016139c7565b6020808252601290820152710929c869ea4a48a86a840a6aa84888aa0a8960731b604082015260600190565b60408101818360005b6002811015613934578151835260209283019290910190600101613a1b565b600060408284031215613a4c57600080fd5b613a54612f0f565b9050815181526020820151602082015292915050565b600082601f830112613a7b57600080fd5b604080519081016001600160401b0381118282101715613a9d57613a9d612ef9565b8060405250806040840185811115613ab457600080fd5b845b81811015613ace578051835260209283019201613ab6565b509195945050505050565b600060808284031215613aeb57600080fd5b613af3612f0f565b9050613aff8383613a6a565b8152613b0e8360408401613a6a565b602082015292915050565b60006020808385031215613b2c57600080fd5b82516001600160401b0380821115613b4357600080fd5b908401906101e08287031215613b5857600080fd5b613b60612f37565b613b6a8784613a3a565b81526040613b7a88828601613ad9565b85830152613b8b8860c08601613ad9565b81830152613b9d886101408601613ad9565b60608301526101c084015183811115613bb557600080fd5b80850194505087601f850112613bca57600080fd5b83519250613bda6133488461328f565b83815260069390931b84018501928581019089851115613bf957600080fd5b948601945b84861015613c1f57613c108a87613a3a565b82529482019490860190613bfe565b60808401525090979650505050505050565b6000600019821415613c4557613c456136dd565b5060010190565b634e487b7160e01b600052602160045260246000fd5b60008219821115613c7557613c756136dd565b500190565b8381526001600160a01b0383166020820152608081016122756040830184613807565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe171e826ad4a870fd925e0bf0e87884e70e080879c2205ef10114f28a3b6f6dd712817f4161f2f5ded33f26c55735a77e80e4f8975483c8c2704745128417f71130644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000012bd407d897fbbca9f88adfd2d15252e69de8c1564eb4d3d27162e259172f1a1de2067f06dd7b8159b21a5490f8663f6bb031d9b35ed6d298b5489674cb9cda4ba2646970667358221220cc66c04d1d0fef90174f5ddc9fa31265ed24c1ec1a50f469ebafaed591bffb2764736f6c634300080a0033171e826ad4a870fd925e0bf0e87884e70e080879c2205ef10114f28a3b6f6dd72bd407d897fbbca9f88adfd2d15252e69de8c1564eb4d3d27162e259172f1a1d60e06040523480156200001157600080fd5b506040516200258f3803806200258f833981016040819052620000349162000673565b80806005600082116200009e5760405162461bcd60e51b815260206004820152602760248201527f41636351756575653a205f7375624465707468206d757374206265206d6f72656044820152660207468616e20360cc1b60648201526084015b60405180910390fd5b6020821115620001085760405162461bcd60e51b815260206004820152602e60248201527f41636351756575653a206f6e6c7920737570706f72747320757020746f204d4160448201526d585f4445505448206c6576656c7360901b606482015260840162000095565b8060021480620001185750806005145b6200017c5760405162461bcd60e51b815260206004820152602d60248201527f41636351756575653a206f6e6c7920737570706f727473205f686173684c656e60448201526c677468206f662032206f72203560981b606482015260840162000095565b6065805460ff191660028314179055608082905260a0819052620001a18282620007a2565b60c05250507f0ef71f46e11a513c599eed9dd03576c33439bcfb1cee155316f90541e41649ba6101d75550507f0404a2ed0a1df2006441895d9a65ffffdd4968cb5f555fe72a6da7aaec83e1a06101d8557f0b1c3d09dd575749a374a9dc1ee32af8c2312e24ad33a3e40fce8120b0f25fe36101d9557f1f60ed72fc1915366d2e52cfc7ddc0ff854c7aee9abbc07d1ca88ada842354dc6101da557f2ca1efc603fc121baf791319195ee3ab7fa075cee664d008f9ab2870f50283606101db557f2a0381fc4fb108733dfc58c355f2de753bcde61bd988eaa7d33fc967262be5ad6101dc557f12c6c7cce0332367373dafc95d75b98dd58980410434929dff09466a4ba262db6101dd557f2f212d3cc7e7334c4a10ced1be011b9cd70f73cca5522fc4137a51be8a17d18e6101de557f0968ef20d515d8d743b2cf66603f8b86f3fdeee932fdc911774bb8699566e11c6101df557f2e3604981890fb676c3dac1e14c5c201573f99d1b9e67025109baf274b10e9dd6101e0557f147d317fd4b7a1dd6cb961cfba444466b3c431ea638c8df74a89fc591d1a3a516101e1557f10ea2b72952b619afd5b9bc50561df8de0c6e1ba9b5ad66b179c39c420304a756101e2557f1c49f7b357d244d9144676ad23f79465ef5b88ef0f91762a3d35997688af9a5a6101e3557f05ca0cfef8158efc5c4af44122e2765179b5463618d5c5ac6185c192332cade96101e4557f0ae1595634e8a2e23620f33f9b2b5a23387a28f5833814646900110842f3a1096101e5557f08be8c2a6a099d9cdc96f9197af6ad99595d73419eb0694eaea432fa18baa2036101e6557f207f689ce35cf857ee6e68c42d31bb2191d1e84d7a295ccd63995ca7369d20eb6101e7557f2a6f6b7e4a2cd1a6466ed17debb0a27904e99adbd72be85566a87340f41efd056101e8557f0f0725795350566920bbf56d3f22c4d38e832e638c9cb91811f83194e9dd74be6101e9557f02cd50632e5c5b00a9a93f434797725ec0f85f11ba1b6a844f0cd10c70df63926101ea557f08868b85d2fa4c17eec0a7d8bca4671a00474bff80e801981437b77aa11d10b56101eb557f294a84b7b46ea0a781877a2c0efd1ee56758d9ee55722721867efe53f46452866101ec557f02cb8070979a018bb919f0d1a25d5ad3d5a376c4cf66f36d33434d221ca77e886101ed557f05dfce8303f471d776762f2ddd37f05191b8bf5064d8d28e892cd4ec21e7aab46101ee557f28a47617aa1e26bf42fd3b26e88aa717fd759bb92b22faaf5ad82090680b52316101ef557f1de9253f5fa546603817abd83d1a13c8562f2bf6a0069a546fe546ca0c03c1706101f0557f1cb9bd316e341b873dbbef94fd699c6e3a638451de2817db1620235db2b6c39e6101f1557f0654785b2917d7c659a95738add3d8eb51cbbefc0f521c2640bc74b0fec581626101f2557f2eed74eacf5de60a758f815cb5e73015455c38408143fc25810d03e1ec9e35246101f3557f16bea3363deb4753db67be8b19110b169ae39f33113a92773c41a8b025ca5a936101f4557f2b0dd3b7e0a7e234a4a1b48dd0e9083dc8bfc8cd7f72abdb93a1b8e5ef3e22ed6101f5557f0bc1ca795d5a059b1dc0c51f72c46f2288cb139ebf09f38ac3e8bca0485ed4976101f6557f249ca1610a7f80bbf422388c18ef9777fcdab26ee718e2b39e4011973a9023306101f755620007b7565b6000602082840312156200068657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006e4578160001904821115620006c857620006c86200068d565b80851615620006d657918102915b93841c9390800290620006a8565b509250929050565b600082620006fd575060016200079c565b816200070c575060006200079c565b8160018114620007255760028114620007305762000750565b60019150506200079c565b60ff8411156200074457620007446200068d565b50506001821b6200079c565b5060208310610133831016604e8410600b841016171562000775575081810a6200079c565b620007818383620006a3565b80600019048211156200079857620007986200068d565b0290505b92915050565b6000620007b08383620006ec565b9392505050565b60805160a05160c051611d236200086c600039600081816103f901528181610bd501528181610cd701528181610e960152610f960152600081816102fc0152818161062a015281816108b701528181610dca015281816111cb0152818161137001526116b001526000818161022601528181610426015281816104870152818161060001528181610e0401528181610ecc01528181610f16015281816111430152818161122201526115eb0152611d236000f3fe608060405234801561001057600080fd5b50600436106101285760003560e01c80631b9b8aa71461012d5780631ffc735d1461015357806324a47aeb146101665780633bfa6fce146101795780633e1a8cc1146101815780634d60dea0146101895780634ee3ab51146101925780635bf1fa4d1461019c57806360fd4010146101af57806369e7c586146101d0578063715018a6146101f35780638129fc1c146101fd57806381d6a24a146102055780638858718e146102215780638da5cb5b14610248578063a27154ba14610268578063b6a64acd14610270578063c00bdbcc1461027e578063c15da65b14610291578063d9c55ce1146102a4578063dda89a6e146102ac578063e93fb4d4146102b6578063ed3adab3146102c9578063f2fde38b146102dc575b600080fd5b61014061013b3660046119de565b6102ef565b6040519081526020015b60405180910390f35b6101406101613660046119de565b6103a9565b6101406101743660046119de565b6104d6565b6101406108a9565b6101406108f7565b61014060665481565b6101406101d45481565b6101406101aa3660046119f7565b610953565b6101406101bd3660046119de565b6101b16020526000908152604090205481565b6101d3546101e390610100900460ff1681565b604051901515815260200161014a565b6101fb610a6f565b005b6101fb610a83565b6101d5546066546040805192835260208301919091520161014a565b6101407f000000000000000000000000000000000000000000000000000000000000000081565b610250610b94565b6040516001600160a01b03909116815260200161014a565b610140602081565b6101d3546101e39060ff1681565b6101fb61028c3660046119de565b610ba3565b6101fb61029f3660046119de565b610c1f565b6101fb610e8c565b6101406101d65481565b6101406102c43660046119de565b610fd3565b6101406102d73660046119de565b611054565b6101fb6102ea366004611a19565b61106c565b6101d654600090610320837f0000000000000000000000000000000000000000000000000000000000000000611b43565b101561038d5760405162461bcd60e51b815260206004820152603160248201527f41636351756575653a206765744d61696e526f6f743a205f6465707468206d756044820152700e6e840c4ca40d0d2ced040cadcdeeaced607b1b60648201526084015b60405180910390fd5b6101b282602181106103a1576103a1611b4f565b015492915050565b60006103b36110e2565b6101d6546103c2836000611141565b6103cd816001611b65565b6101d6556103de6101b26000611932565b60006101d4556101d3805460ff191690556101d65461041e907f000000000000000000000000000000000000000000000000000000000000000090611b7d565b6104ce5760677f00000000000000000000000000000000000000000000000000000000000000006021811061045557610455611b4f565b60040201546066805460009081526101b1602052604081209290925580549161047d83611b9f565b90915550606790507f0000000000000000000000000000000000000000000000000000000000000000602181106104b6576104b6611b4f565b6004020160008091018190556104ce9060eb90611932565b90505b919050565b60006104e06110e2565b6000821161053c5760405162461bcd60e51b8152602060048201526024808201527f41636351756575653a205f6465707468206d757374206265206d6f72652074686044820152630616e20360e41b6064820152608401610384565b6101d35460ff1661059e5760405162461bcd60e51b81526020600482015260386024820152600080516020611cce83398151915260448201527764206265666f72652063616c6c696e67206d65726765282960401b6064820152608401610384565b60208211156105fe5760405162461bcd60e51b815260206004820152602660248201527f41636351756575653a205f6465707468206d757374206265206c7465204d41586044820152650be888aa0a8960d31b6064820152608401610384565b7f00000000000000000000000000000000000000000000000000000000000000005b6101d65461064e827f0000000000000000000000000000000000000000000000000000000000000000611b43565b106106585761066a565b8061066281611b9f565b915050610620565b808310156106cd5760405162461bcd60e51b815260206004820152602a60248201527f41636351756575653a205f6465707468206d7573742062652067746520746865604482015269040a6a4a840c8cae0e8d60b31b6064820152608401610384565b8083141561070a576101d4546101b284602181106106ed576106ed611b4f565b015550506101d3805461ff0019166101001790556101d454919050565b6101d454815b84811015610878576000610723826112ab565b60655490915060ff16156107c357610739611941565b838152602081018290526040516362a361bb60e01b815273__$c6e409f5c6bff7020676808cc3963e859e$__906362a361bb9061077a908490600401611bba565b602060405180830381865af4158015610797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bb9190611beb565b935050610865565b6107cb61195f565b838152602081018290526040808201839052606082018390526080820183905251639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790610820908490600401611c04565b602060405180830381865af415801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108619190611beb565b9350505b508061087081611b9f565b915050610710565b50806101b2856021811061088e5761088e611b4f565b01556101d3805461ff00191661010017905591506104d19050565b600060015b6066546108db827f0000000000000000000000000000000000000000000000000000000000000000611b43565b106108e557919050565b806108ef81611b9f565b9150506108ae565b6101d35460009060ff1661094b5760405162461bcd60e51b81526020600482015260276024820152600080516020611cce8339815191526044820152661908199a5c9cdd60ca1b6064820152608401610384565b506101d45490565b600061095d61195f565b6067846021811061097057610970611b4f565b600402015481526067846021811061098a5761098a611b4f565b60040201600101548160016020020152606784602181106109ad576109ad611b4f565b60040201600201548160026020020152606784602181106109d0576109d0611b4f565b60040201600301548160036020020152828160046020020152604051639cfced9760e01b815260009073__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790610a23908590600401611c04565b602060405180830381865af4158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a649190611beb565b925050505b92915050565b610a776110e2565b610a8160006112c1565b565b600054610100900460ff1615808015610aa35750600054600160ff909116105b80610abd5750303b158015610abd575060005460ff166001145b610b205760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610384565b6000805460ff191660011790558015610b43576000805461ff0019166101001790555b610b4b611313565b8015610b91576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6033546001600160a01b031690565b610bab6110e2565b6066805460009081526101b16020526040812083905581549190610bce83611b9f565b91905055507f00000000000000000000000000000000000000000000000000000000000000006101d66000828254610c069190611b65565b909155505060006101d455506101d3805460ff19169055565b610c276110e2565b6101d35460ff1615610c855760405162461bcd60e51b815260206004820152602160248201527f41636351756575653a20737562747265657320616c7265616479206d657267656044820152601960fa1b6064820152608401610384565b60006101d65411610cd55760405162461bcd60e51b815260206004820152601a60248201527941636351756575653a206e6f7468696e6720746f206d6572676560301b6044820152606401610384565b7f00000000000000000000000000000000000000000000000000000000000000006101d654610d049190611b7d565b15610d1157610d11610e8c565b60665460011415610d3b57610d266000610fd3565b6101d4556101d3805460ff1916600117905550565b6000610d456108a9565b6101d5549091506000905b606654811015610dc1578315801590610d6857508382145b15610d735750505050565b610d8a610d826101d554610fd3565b600085611342565b6101d58054906000610d9b83611b9f565b91905055508180610dab90611b9f565b9250508080610db990611b9f565b915050610d50565b506000610dee837f0000000000000000000000000000000000000000000000000000000000000000611b43565b90506066546101d5541415610e58576000610e287f00000000000000000000000000000000000000000000000000000000000000006112ab565b6066549091505b82811015610e5557610e4382600087611342565b80610e4d81611b9f565b915050610e2f565b50505b61010c8360218110610e6c57610e6c611b4f565b60040201600001546101d45550506101d3805460ff191660011790555050565b610e946110e2565b7f00000000000000000000000000000000000000000000000000000000000000006101d654610ec39190611b7d565b610f0857610ef07f00000000000000000000000000000000000000000000000000000000000000006112ab565b60665460009081526101b16020526040902055610f79565b610f1260006115e9565b60677f000000000000000000000000000000000000000000000000000000000000000060218110610f4557610f45611b4f565b600402015460665460009081526101b16020526040812091909155610f6c9060679061197d565b610f796101b26000611932565b60006066546001610f8a9190611b65565b60668190559050610fbb7f000000000000000000000000000000000000000000000000000000000000000082611c2c565b6101d6555060006101d4556101d3805460ff19169055565b600081606654116110405760405162461bcd60e51b815260206004820152603160248201527f41636351756575653a205f696e646578206d75737420726566657220746f206160448201527020636f6d706c657465207375627472656560781b6064820152608401610384565b5060009081526101b1602052604090205490565b6101b2816021811061106557600080fd5b0154905081565b6110746110e2565b6001600160a01b0381166110d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610384565b610b91816112c1565b336110eb610b94565b6001600160a01b031614610a815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b7f00000000000000000000000000000000000000000000000000000000000000008111156111ab5760405162461bcd60e51b81526020600482015260176024820152761058d8d45d595d594e881a5b9d985b1a59081b195d995b604a1b6044820152606401610384565b600060eb82602181106111c0576111c0611b4f565b015490506111ef60017f0000000000000000000000000000000000000000000000000000000000000000611c4b565b811461127457826067836021811061120957611209611b4f565b60040201826004811061121e5761121e611b4f565b01557f0000000000000000000000000000000000000000000000000000000000000000821461126f5760eb826021811061125a5761125a611b4f565b01805490600061126983611b9f565b91905055505b505050565b61127e82846117c4565b925060eb826021811061129357611293611b4f565b6000910155816112a281611b9f565b925050506111ab565b60006101d782602181106103a1576103a1611b4f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661133a5760405162461bcd60e51b815260040161038490611c62565b610a81611902565b8082111561134f57505050565b6000610190836021811061136557611365611b4f565b0154905061139460017f0000000000000000000000000000000000000000000000000000000000000000611c4b565b81146113f3578361010c84602181106113af576113af611b4f565b6004020182600481106113c4576113c4611b4f565b015561019083602181106113da576113da611b4f565b0180549060006113e983611b9f565b91905055506115e3565b60655460009060ff16156114ae57611409611941565b61010c856021811061141d5761141d611b4f565b600490810291909101548252602082018790526040516362a361bb60e01b815273__$c6e409f5c6bff7020676808cc3963e859e$__916362a361bb9161146591859101611bba565b602060405180830381865af4158015611482573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a69190611beb565b9150506115b3565b6114b661195f565b60005b838160ff16101561151e5761010c86602181106114d8576114d8611b4f565b600402018160ff16600481106114f0576114f0611b4f565b0154828260ff166005811061150757611507611b4f565b60200201528061151681611cad565b9150506114b9565b508581846005811061153257611532611b4f565b6020020152604051639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced979061156e908490600401611c04565b602060405180830381865af415801561158b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115af9190611beb565b9150505b61019084602181106115c7576115c7611b4f565b60009101556115e1816115db866001611b65565b85611342565b505b50505050565b7f0000000000000000000000000000000000000000000000000000000000000000811015610b9157600060eb826021811061162657611626611b4f565b01549050801561179957600061163a61195f565b6000611645856112ab565b905060005b848160ff1610156116ae576067866021811061166857611668611b4f565b600402018160ff166004811061168057611680611b4f565b0154838260ff166005811061169757611697611b4f565b6020020152806116a681611cad565b91505061164a565b7f00000000000000000000000000000000000000000000000000000000000000008160ff1610156117065781838260ff16600581106116ef576116ef611b4f565b6020020152806116fe81611cad565b9150506116ae565b604051639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced979061173d908690600401611c04565b602060405180830381865af415801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190611beb565b93506117948461178f886001611b65565b611141565b505050505b60eb82602181106117ac576117ac611b4f565b6000910155816117bb81611b9f565b925050506115e9565b60006117ce61195f565b606784602181106117e1576117e1611b4f565b60040201548152606784602181106117fb576117fb611b4f565b600402016001015481600160200201526067846021811061181e5761181e611b4f565b600402016002015481600260200201526067846021811061184157611841611b4f565b60040201600301548160036020020152828160046020020152604051639cfced9760e01b815260009073__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790611894908590600401611c04565b602060405180830381865af41580156118b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d59190611beb565b9050606785602181106118ea576118ea611b4f565b6004020160006118fa919061198c565b949350505050565b600054610100900460ff166119295760405162461bcd60e51b815260040161038490611c62565b610a81336112c1565b50610b919060218101906119a8565b60405180604001604052806002906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b50610b919060848101906119c1565b5060008155600101600081556001016000815560010160009055565b5b808211156119bd57600081556001016119a9565b5090565b808211156119bd5760006119d5828261198c565b506004016119c1565b6000602082840312156119f057600080fd5b5035919050565b60008060408385031215611a0a57600080fd5b50508035926020909101359150565b600060208284031215611a2b57600080fd5b81356001600160a01b0381168114611a4257600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611a9a578160001904821115611a8057611a80611a49565b80851615611a8d57918102915b93841c9390800290611a64565b509250929050565b600082611ab157506001610a69565b81611abe57506000610a69565b8160018114611ad45760028114611ade57611afa565b6001915050610a69565b60ff841115611aef57611aef611a49565b50506001821b610a69565b5060208310610133831016604e8410600b8410161715611b1d575081810a610a69565b611b278383611a5f565b8060001904821115611b3b57611b3b611a49565b029392505050565b6000611a428383611aa2565b634e487b7160e01b600052603260045260246000fd5b60008219821115611b7857611b78611a49565b500190565b600082611b9a57634e487b7160e01b600052601260045260246000fd5b500690565b6000600019821415611bb357611bb3611a49565b5060010190565b60408101818360005b6002811015611be2578151835260209283019290910190600101611bc3565b50505092915050565b600060208284031215611bfd57600080fd5b5051919050565b60a08101818360005b6005811015611be2578151835260209283019290910190600101611c0d565b6000816000190483118215151615611c4657611c46611a49565b500290565b600082821015611c5d57611c5d611a49565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060ff821660ff811415611cc457611cc4611a49565b6001019291505056fe41636351756575653a207375627472656573206d757374206265206d65726765a264697066735822122035d3c327cb697e983233470463d98dc00de7c855eb5feb0e729abb045039bd0564736f6c634300080a003360e06040523480156200001157600080fd5b506040516200258f3803806200258f833981016040819052620000349162000673565b80806005600082116200009e5760405162461bcd60e51b815260206004820152602760248201527f41636351756575653a205f7375624465707468206d757374206265206d6f72656044820152660207468616e20360cc1b60648201526084015b60405180910390fd5b6020821115620001085760405162461bcd60e51b815260206004820152602e60248201527f41636351756575653a206f6e6c7920737570706f72747320757020746f204d4160448201526d585f4445505448206c6576656c7360901b606482015260840162000095565b8060021480620001185750806005145b6200017c5760405162461bcd60e51b815260206004820152602d60248201527f41636351756575653a206f6e6c7920737570706f727473205f686173684c656e60448201526c677468206f662032206f72203560981b606482015260840162000095565b6065805460ff191660028314179055608082905260a0819052620001a18282620007a2565b60c05250507f0ef71f46e11a513c599eed9dd03576c33439bcfb1cee155316f90541e41649ba6101d75550507f0404a2ed0a1df2006441895d9a65ffffdd4968cb5f555fe72a6da7aaec83e1a06101d8557f0b1c3d09dd575749a374a9dc1ee32af8c2312e24ad33a3e40fce8120b0f25fe36101d9557f1f60ed72fc1915366d2e52cfc7ddc0ff854c7aee9abbc07d1ca88ada842354dc6101da557f2ca1efc603fc121baf791319195ee3ab7fa075cee664d008f9ab2870f50283606101db557f2a0381fc4fb108733dfc58c355f2de753bcde61bd988eaa7d33fc967262be5ad6101dc557f12c6c7cce0332367373dafc95d75b98dd58980410434929dff09466a4ba262db6101dd557f2f212d3cc7e7334c4a10ced1be011b9cd70f73cca5522fc4137a51be8a17d18e6101de557f0968ef20d515d8d743b2cf66603f8b86f3fdeee932fdc911774bb8699566e11c6101df557f2e3604981890fb676c3dac1e14c5c201573f99d1b9e67025109baf274b10e9dd6101e0557f147d317fd4b7a1dd6cb961cfba444466b3c431ea638c8df74a89fc591d1a3a516101e1557f10ea2b72952b619afd5b9bc50561df8de0c6e1ba9b5ad66b179c39c420304a756101e2557f1c49f7b357d244d9144676ad23f79465ef5b88ef0f91762a3d35997688af9a5a6101e3557f05ca0cfef8158efc5c4af44122e2765179b5463618d5c5ac6185c192332cade96101e4557f0ae1595634e8a2e23620f33f9b2b5a23387a28f5833814646900110842f3a1096101e5557f08be8c2a6a099d9cdc96f9197af6ad99595d73419eb0694eaea432fa18baa2036101e6557f207f689ce35cf857ee6e68c42d31bb2191d1e84d7a295ccd63995ca7369d20eb6101e7557f2a6f6b7e4a2cd1a6466ed17debb0a27904e99adbd72be85566a87340f41efd056101e8557f0f0725795350566920bbf56d3f22c4d38e832e638c9cb91811f83194e9dd74be6101e9557f02cd50632e5c5b00a9a93f434797725ec0f85f11ba1b6a844f0cd10c70df63926101ea557f08868b85d2fa4c17eec0a7d8bca4671a00474bff80e801981437b77aa11d10b56101eb557f294a84b7b46ea0a781877a2c0efd1ee56758d9ee55722721867efe53f46452866101ec557f02cb8070979a018bb919f0d1a25d5ad3d5a376c4cf66f36d33434d221ca77e886101ed557f05dfce8303f471d776762f2ddd37f05191b8bf5064d8d28e892cd4ec21e7aab46101ee557f28a47617aa1e26bf42fd3b26e88aa717fd759bb92b22faaf5ad82090680b52316101ef557f1de9253f5fa546603817abd83d1a13c8562f2bf6a0069a546fe546ca0c03c1706101f0557f1cb9bd316e341b873dbbef94fd699c6e3a638451de2817db1620235db2b6c39e6101f1557f0654785b2917d7c659a95738add3d8eb51cbbefc0f521c2640bc74b0fec581626101f2557f2eed74eacf5de60a758f815cb5e73015455c38408143fc25810d03e1ec9e35246101f3557f16bea3363deb4753db67be8b19110b169ae39f33113a92773c41a8b025ca5a936101f4557f2b0dd3b7e0a7e234a4a1b48dd0e9083dc8bfc8cd7f72abdb93a1b8e5ef3e22ed6101f5557f0bc1ca795d5a059b1dc0c51f72c46f2288cb139ebf09f38ac3e8bca0485ed4976101f6557f249ca1610a7f80bbf422388c18ef9777fcdab26ee718e2b39e4011973a9023306101f755620007b7565b6000602082840312156200068657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006e4578160001904821115620006c857620006c86200068d565b80851615620006d657918102915b93841c9390800290620006a8565b509250929050565b600082620006fd575060016200079c565b816200070c575060006200079c565b8160018114620007255760028114620007305762000750565b60019150506200079c565b60ff8411156200074457620007446200068d565b50506001821b6200079c565b5060208310610133831016604e8410600b841016171562000775575081810a6200079c565b620007818383620006a3565b80600019048211156200079857620007986200068d565b0290505b92915050565b6000620007b08383620006ec565b9392505050565b60805160a05160c051611d236200086c600039600081816103f901528181610bd501528181610cd701528181610e960152610f960152600081816102fc0152818161062a015281816108b701528181610dca015281816111cb0152818161137001526116b001526000818161022601528181610426015281816104870152818161060001528181610e0401528181610ecc01528181610f16015281816111430152818161122201526115eb0152611d236000f3fe608060405234801561001057600080fd5b50600436106101285760003560e01c80631b9b8aa71461012d5780631ffc735d1461015357806324a47aeb146101665780633bfa6fce146101795780633e1a8cc1146101815780634d60dea0146101895780634ee3ab51146101925780635bf1fa4d1461019c57806360fd4010146101af57806369e7c586146101d0578063715018a6146101f35780638129fc1c146101fd57806381d6a24a146102055780638858718e146102215780638da5cb5b14610248578063a27154ba14610268578063b6a64acd14610270578063c00bdbcc1461027e578063c15da65b14610291578063d9c55ce1146102a4578063dda89a6e146102ac578063e93fb4d4146102b6578063ed3adab3146102c9578063f2fde38b146102dc575b600080fd5b61014061013b3660046119de565b6102ef565b6040519081526020015b60405180910390f35b6101406101613660046119de565b6103a9565b6101406101743660046119de565b6104d6565b6101406108a9565b6101406108f7565b61014060665481565b6101406101d45481565b6101406101aa3660046119f7565b610953565b6101406101bd3660046119de565b6101b16020526000908152604090205481565b6101d3546101e390610100900460ff1681565b604051901515815260200161014a565b6101fb610a6f565b005b6101fb610a83565b6101d5546066546040805192835260208301919091520161014a565b6101407f000000000000000000000000000000000000000000000000000000000000000081565b610250610b94565b6040516001600160a01b03909116815260200161014a565b610140602081565b6101d3546101e39060ff1681565b6101fb61028c3660046119de565b610ba3565b6101fb61029f3660046119de565b610c1f565b6101fb610e8c565b6101406101d65481565b6101406102c43660046119de565b610fd3565b6101406102d73660046119de565b611054565b6101fb6102ea366004611a19565b61106c565b6101d654600090610320837f0000000000000000000000000000000000000000000000000000000000000000611b43565b101561038d5760405162461bcd60e51b815260206004820152603160248201527f41636351756575653a206765744d61696e526f6f743a205f6465707468206d756044820152700e6e840c4ca40d0d2ced040cadcdeeaced607b1b60648201526084015b60405180910390fd5b6101b282602181106103a1576103a1611b4f565b015492915050565b60006103b36110e2565b6101d6546103c2836000611141565b6103cd816001611b65565b6101d6556103de6101b26000611932565b60006101d4556101d3805460ff191690556101d65461041e907f000000000000000000000000000000000000000000000000000000000000000090611b7d565b6104ce5760677f00000000000000000000000000000000000000000000000000000000000000006021811061045557610455611b4f565b60040201546066805460009081526101b1602052604081209290925580549161047d83611b9f565b90915550606790507f0000000000000000000000000000000000000000000000000000000000000000602181106104b6576104b6611b4f565b6004020160008091018190556104ce9060eb90611932565b90505b919050565b60006104e06110e2565b6000821161053c5760405162461bcd60e51b8152602060048201526024808201527f41636351756575653a205f6465707468206d757374206265206d6f72652074686044820152630616e20360e41b6064820152608401610384565b6101d35460ff1661059e5760405162461bcd60e51b81526020600482015260386024820152600080516020611cce83398151915260448201527764206265666f72652063616c6c696e67206d65726765282960401b6064820152608401610384565b60208211156105fe5760405162461bcd60e51b815260206004820152602660248201527f41636351756575653a205f6465707468206d757374206265206c7465204d41586044820152650be888aa0a8960d31b6064820152608401610384565b7f00000000000000000000000000000000000000000000000000000000000000005b6101d65461064e827f0000000000000000000000000000000000000000000000000000000000000000611b43565b106106585761066a565b8061066281611b9f565b915050610620565b808310156106cd5760405162461bcd60e51b815260206004820152602a60248201527f41636351756575653a205f6465707468206d7573742062652067746520746865604482015269040a6a4a840c8cae0e8d60b31b6064820152608401610384565b8083141561070a576101d4546101b284602181106106ed576106ed611b4f565b015550506101d3805461ff0019166101001790556101d454919050565b6101d454815b84811015610878576000610723826112ab565b60655490915060ff16156107c357610739611941565b838152602081018290526040516362a361bb60e01b815273__$c6e409f5c6bff7020676808cc3963e859e$__906362a361bb9061077a908490600401611bba565b602060405180830381865af4158015610797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bb9190611beb565b935050610865565b6107cb61195f565b838152602081018290526040808201839052606082018390526080820183905251639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790610820908490600401611c04565b602060405180830381865af415801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108619190611beb565b9350505b508061087081611b9f565b915050610710565b50806101b2856021811061088e5761088e611b4f565b01556101d3805461ff00191661010017905591506104d19050565b600060015b6066546108db827f0000000000000000000000000000000000000000000000000000000000000000611b43565b106108e557919050565b806108ef81611b9f565b9150506108ae565b6101d35460009060ff1661094b5760405162461bcd60e51b81526020600482015260276024820152600080516020611cce8339815191526044820152661908199a5c9cdd60ca1b6064820152608401610384565b506101d45490565b600061095d61195f565b6067846021811061097057610970611b4f565b600402015481526067846021811061098a5761098a611b4f565b60040201600101548160016020020152606784602181106109ad576109ad611b4f565b60040201600201548160026020020152606784602181106109d0576109d0611b4f565b60040201600301548160036020020152828160046020020152604051639cfced9760e01b815260009073__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790610a23908590600401611c04565b602060405180830381865af4158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a649190611beb565b925050505b92915050565b610a776110e2565b610a8160006112c1565b565b600054610100900460ff1615808015610aa35750600054600160ff909116105b80610abd5750303b158015610abd575060005460ff166001145b610b205760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610384565b6000805460ff191660011790558015610b43576000805461ff0019166101001790555b610b4b611313565b8015610b91576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6033546001600160a01b031690565b610bab6110e2565b6066805460009081526101b16020526040812083905581549190610bce83611b9f565b91905055507f00000000000000000000000000000000000000000000000000000000000000006101d66000828254610c069190611b65565b909155505060006101d455506101d3805460ff19169055565b610c276110e2565b6101d35460ff1615610c855760405162461bcd60e51b815260206004820152602160248201527f41636351756575653a20737562747265657320616c7265616479206d657267656044820152601960fa1b6064820152608401610384565b60006101d65411610cd55760405162461bcd60e51b815260206004820152601a60248201527941636351756575653a206e6f7468696e6720746f206d6572676560301b6044820152606401610384565b7f00000000000000000000000000000000000000000000000000000000000000006101d654610d049190611b7d565b15610d1157610d11610e8c565b60665460011415610d3b57610d266000610fd3565b6101d4556101d3805460ff1916600117905550565b6000610d456108a9565b6101d5549091506000905b606654811015610dc1578315801590610d6857508382145b15610d735750505050565b610d8a610d826101d554610fd3565b600085611342565b6101d58054906000610d9b83611b9f565b91905055508180610dab90611b9f565b9250508080610db990611b9f565b915050610d50565b506000610dee837f0000000000000000000000000000000000000000000000000000000000000000611b43565b90506066546101d5541415610e58576000610e287f00000000000000000000000000000000000000000000000000000000000000006112ab565b6066549091505b82811015610e5557610e4382600087611342565b80610e4d81611b9f565b915050610e2f565b50505b61010c8360218110610e6c57610e6c611b4f565b60040201600001546101d45550506101d3805460ff191660011790555050565b610e946110e2565b7f00000000000000000000000000000000000000000000000000000000000000006101d654610ec39190611b7d565b610f0857610ef07f00000000000000000000000000000000000000000000000000000000000000006112ab565b60665460009081526101b16020526040902055610f79565b610f1260006115e9565b60677f000000000000000000000000000000000000000000000000000000000000000060218110610f4557610f45611b4f565b600402015460665460009081526101b16020526040812091909155610f6c9060679061197d565b610f796101b26000611932565b60006066546001610f8a9190611b65565b60668190559050610fbb7f000000000000000000000000000000000000000000000000000000000000000082611c2c565b6101d6555060006101d4556101d3805460ff19169055565b600081606654116110405760405162461bcd60e51b815260206004820152603160248201527f41636351756575653a205f696e646578206d75737420726566657220746f206160448201527020636f6d706c657465207375627472656560781b6064820152608401610384565b5060009081526101b1602052604090205490565b6101b2816021811061106557600080fd5b0154905081565b6110746110e2565b6001600160a01b0381166110d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610384565b610b91816112c1565b336110eb610b94565b6001600160a01b031614610a815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b7f00000000000000000000000000000000000000000000000000000000000000008111156111ab5760405162461bcd60e51b81526020600482015260176024820152761058d8d45d595d594e881a5b9d985b1a59081b195d995b604a1b6044820152606401610384565b600060eb82602181106111c0576111c0611b4f565b015490506111ef60017f0000000000000000000000000000000000000000000000000000000000000000611c4b565b811461127457826067836021811061120957611209611b4f565b60040201826004811061121e5761121e611b4f565b01557f0000000000000000000000000000000000000000000000000000000000000000821461126f5760eb826021811061125a5761125a611b4f565b01805490600061126983611b9f565b91905055505b505050565b61127e82846117c4565b925060eb826021811061129357611293611b4f565b6000910155816112a281611b9f565b925050506111ab565b60006101d782602181106103a1576103a1611b4f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661133a5760405162461bcd60e51b815260040161038490611c62565b610a81611902565b8082111561134f57505050565b6000610190836021811061136557611365611b4f565b0154905061139460017f0000000000000000000000000000000000000000000000000000000000000000611c4b565b81146113f3578361010c84602181106113af576113af611b4f565b6004020182600481106113c4576113c4611b4f565b015561019083602181106113da576113da611b4f565b0180549060006113e983611b9f565b91905055506115e3565b60655460009060ff16156114ae57611409611941565b61010c856021811061141d5761141d611b4f565b600490810291909101548252602082018790526040516362a361bb60e01b815273__$c6e409f5c6bff7020676808cc3963e859e$__916362a361bb9161146591859101611bba565b602060405180830381865af4158015611482573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a69190611beb565b9150506115b3565b6114b661195f565b60005b838160ff16101561151e5761010c86602181106114d8576114d8611b4f565b600402018160ff16600481106114f0576114f0611b4f565b0154828260ff166005811061150757611507611b4f565b60200201528061151681611cad565b9150506114b9565b508581846005811061153257611532611b4f565b6020020152604051639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced979061156e908490600401611c04565b602060405180830381865af415801561158b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115af9190611beb565b9150505b61019084602181106115c7576115c7611b4f565b60009101556115e1816115db866001611b65565b85611342565b505b50505050565b7f0000000000000000000000000000000000000000000000000000000000000000811015610b9157600060eb826021811061162657611626611b4f565b01549050801561179957600061163a61195f565b6000611645856112ab565b905060005b848160ff1610156116ae576067866021811061166857611668611b4f565b600402018160ff166004811061168057611680611b4f565b0154838260ff166005811061169757611697611b4f565b6020020152806116a681611cad565b91505061164a565b7f00000000000000000000000000000000000000000000000000000000000000008160ff1610156117065781838260ff16600581106116ef576116ef611b4f565b6020020152806116fe81611cad565b9150506116ae565b604051639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced979061173d908690600401611c04565b602060405180830381865af415801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190611beb565b93506117948461178f886001611b65565b611141565b505050505b60eb82602181106117ac576117ac611b4f565b6000910155816117bb81611b9f565b925050506115e9565b60006117ce61195f565b606784602181106117e1576117e1611b4f565b60040201548152606784602181106117fb576117fb611b4f565b600402016001015481600160200201526067846021811061181e5761181e611b4f565b600402016002015481600260200201526067846021811061184157611841611b4f565b60040201600301548160036020020152828160046020020152604051639cfced9760e01b815260009073__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790611894908590600401611c04565b602060405180830381865af41580156118b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d59190611beb565b9050606785602181106118ea576118ea611b4f565b6004020160006118fa919061198c565b949350505050565b600054610100900460ff166119295760405162461bcd60e51b815260040161038490611c62565b610a81336112c1565b50610b919060218101906119a8565b60405180604001604052806002906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b50610b919060848101906119c1565b5060008155600101600081556001016000815560010160009055565b5b808211156119bd57600081556001016119a9565b5090565b808211156119bd5760006119d5828261198c565b506004016119c1565b6000602082840312156119f057600080fd5b5035919050565b60008060408385031215611a0a57600080fd5b50508035926020909101359150565b600060208284031215611a2b57600080fd5b81356001600160a01b0381168114611a4257600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611a9a578160001904821115611a8057611a80611a49565b80851615611a8d57918102915b93841c9390800290611a64565b509250929050565b600082611ab157506001610a69565b81611abe57506000610a69565b8160018114611ad45760028114611ade57611afa565b6001915050610a69565b60ff841115611aef57611aef611a49565b50506001821b610a69565b5060208310610133831016604e8410600b8410161715611b1d575081810a610a69565b611b278383611a5f565b8060001904821115611b3b57611b3b611a49565b029392505050565b6000611a428383611aa2565b634e487b7160e01b600052603260045260246000fd5b60008219821115611b7857611b78611a49565b500190565b600082611b9a57634e487b7160e01b600052601260045260246000fd5b500690565b6000600019821415611bb357611bb3611a49565b5060010190565b60408101818360005b6002811015611be2578151835260209283019290910190600101611bc3565b50505092915050565b600060208284031215611bfd57600080fd5b5051919050565b60a08101818360005b6005811015611be2578151835260209283019290910190600101611c0d565b6000816000190483118215151615611c4657611c46611a49565b500290565b600082821015611c5d57611c5d611a49565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060ff821660ff811415611cc457611cc4611a49565b6001019291505056fe41636351756575653a207375627472656573206d757374206265206d65726765a2646970667358221220f80649095d1eb7e10092d74b15b65a36f51aba410679d6ea18218150930d38ee64736f6c634300080a0033"; + +type JubjubFactoryConstructorParams = + | [linkLibraryAddresses: JubjubFactoryLibraryAddresses, signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: JubjubFactoryConstructorParams +): xs is ConstructorParameters => { + return ( + typeof xs[0] === "string" || + (Array.isArray as (arg: any) => arg is readonly any[])(xs[0]) || + "_isInterface" in xs[0] + ); +}; + +export class JubjubFactory__factory extends ContractFactory { + constructor(...args: JubjubFactoryConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + const [linkLibraryAddresses, signer] = args; + super( + _abi, + JubjubFactory__factory.linkBytecode(linkLibraryAddresses), + signer + ); + } + } + + static linkBytecode( + linkLibraryAddresses: JubjubFactoryLibraryAddresses + ): string { + let linkedBytecode = _bytecode; + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$56e03346d0918fb20a2db08690fd2c2075\\$__", "g"), + linkLibraryAddresses["contracts/poseidon/PoseidonT5.sol:PoseidonT5"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$e63b1c9f9b66f613a0dd27ec595fdb417f\\$__", "g"), + linkLibraryAddresses["contracts/poseidon/PoseidonT6.sol:PoseidonT6"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$8f0718d15a58b4353249f9bf6422c5f00e\\$__", "g"), + linkLibraryAddresses["contracts/poseidon/PoseidonT4.sol:PoseidonT4"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$c6850fb4e0ee9ead61bcd830cbea02ad6d\\$__", "g"), + linkLibraryAddresses["contracts/poseidon/PoseidonT3.sol:PoseidonT3"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$c6e409f5c6bff7020676808cc3963e859e\\$__", "g"), + linkLibraryAddresses["contracts/AccQueue.sol:PoseidonT3"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$cedc09603cb2be64c780c22aabaab86809\\$__", "g"), + linkLibraryAddresses["contracts/AccQueue.sol:PoseidonT6"] + .replace(/^0x/, "") + .toLowerCase() + ); + + return linkedBytecode; + } + + override deploy( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): JubjubFactory { + return super.attach(address) as JubjubFactory; + } + override connect(signer: Signer): JubjubFactory__factory { + return super.connect(signer) as JubjubFactory__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): JubjubFactoryInterface { + return new utils.Interface(_abi) as JubjubFactoryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): JubjubFactory { + return new Contract(address, _abi, signerOrProvider) as JubjubFactory; + } +} + +export interface JubjubFactoryLibraryAddresses { + ["contracts/poseidon/PoseidonT5.sol:PoseidonT5"]: string; + ["contracts/poseidon/PoseidonT6.sol:PoseidonT6"]: string; + ["contracts/poseidon/PoseidonT4.sol:PoseidonT4"]: string; + ["contracts/poseidon/PoseidonT3.sol:PoseidonT3"]: string; + ["contracts/AccQueue.sol:PoseidonT3"]: string; + ["contracts/AccQueue.sol:PoseidonT6"]: string; +} diff --git a/packages/contracts/typechain-types/factories/contracts/Jubjub__factory.ts b/packages/contracts/typechain-types/factories/contracts/Jubjub__factory.ts new file mode 100644 index 00000000..9933d933 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/Jubjub__factory.ts @@ -0,0 +1,1243 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../common"; +import type { Jubjub, JubjubInterface } from "../../contracts/Jubjub"; + +const _abi = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_pollId", + type: "uint256", + }, + { + indexed: false, + internalType: "address", + name: "_pollAddr", + type: "address", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + indexed: false, + internalType: "struct Jubjub.PubKey", + name: "_pubKey", + type: "tuple", + }, + ], + name: "DeployPoll", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "contract ISignUpGatekeeper", + name: "_signUpGatekeeper", + type: "address", + }, + { + indexed: false, + internalType: "contract IInitialVoiceCreditProxy", + name: "_topupCredit", + type: "address", + }, + ], + name: "Init", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_pollId", + type: "uint256", + }, + ], + name: "MergeMaciStateAq", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_pollId", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "_numSrQueueOps", + type: "uint256", + }, + ], + name: "MergeMaciStateAqSubRoots", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_messageRoot", + type: "uint256", + }, + ], + name: "MergeMessageAq", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_numSrQueueOps", + type: "uint256", + }, + ], + name: "MergeMessageAqSubRoots", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + components: [ + { + internalType: "uint256", + name: "msgType", + type: "uint256", + }, + { + internalType: "uint256[10]", + name: "data", + type: "uint256[10]", + }, + ], + indexed: false, + internalType: "struct Jubjub.Message", + name: "_message", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + indexed: false, + internalType: "struct Jubjub.PubKey", + name: "_encPubKey", + type: "tuple", + }, + ], + name: "PublishMessage", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_stateIndex", + type: "uint256", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + indexed: false, + internalType: "struct Jubjub.PubKey", + name: "_userPubKey", + type: "tuple", + }, + { + indexed: false, + internalType: "uint256", + name: "_voiceCreditBalance", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "_timestamp", + type: "uint256", + }, + ], + name: "SignUp", + type: "event", + }, + { + inputs: [], + name: "blankMessageLeafHash", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "blankStateLeafHash", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "calculateCurrentMessageBatchIndex", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "coordinatorPubKey", + outputs: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "coordinatorPubKeyHash", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "currentBallotCommitment", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "currentMessageCommitment", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "currentSbCommitment", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "currentStateCommitment", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_left", + type: "uint256", + }, + { + internalType: "uint256", + name: "_right", + type: "uint256", + }, + ], + name: "hash", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "uint256", + name: "msgType", + type: "uint256", + }, + { + internalType: "uint256[10]", + name: "data", + type: "uint256[10]", + }, + ], + internalType: "struct Jubjub.Message", + name: "_message", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Jubjub.PubKey", + name: "_encPubKey", + type: "tuple", + }, + ], + name: "hashMessageLeaf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Jubjub.PubKey", + name: "pubKey", + type: "tuple", + }, + { + internalType: "uint256", + name: "voiceCreditBalance", + type: "uint256", + }, + { + internalType: "uint256", + name: "timestamp", + type: "uint256", + }, + ], + internalType: "struct Jubjub.StateLeaf", + name: "_stateLeaf", + type: "tuple", + }, + ], + name: "hashStateLeaf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_stateTreeSubDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageTreeSubDepth", + type: "uint256", + }, + { + internalType: "uint256[]", + name: "_emptyBallotRoots", + type: "uint256[]", + }, + { + internalType: "contract ISignUpGatekeeper", + name: "_signUpGatekeeper", + type: "address", + }, + { + internalType: "contract IInitialVoiceCreditProxy", + name: "_voiceCreditProxy", + type: "address", + }, + { + internalType: "contract AccQueue", + name: "_stateAq", + type: "address", + }, + { + internalType: "contract AccQueue", + name: "_messageAq", + type: "address", + }, + ], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "isInitialised", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "mergeMessageAq", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_numSrQueueOps", + type: "uint256", + }, + ], + name: "mergeMessageAqSubRoots", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "mergeStateAq", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_numSrQueueOps", + type: "uint256", + }, + ], + name: "mergeStateAqSubRoots", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "messageAq", + outputs: [ + { + internalType: "contract AccQueue", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "messageTreeDepth", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "messageTreeSubDepth", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes[]", + name: "data", + type: "bytes[]", + }, + ], + name: "multicall", + outputs: [ + { + internalType: "bytes[]", + name: "results", + type: "bytes[]", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "numBatchesProcessed", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "numMessages", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "numPolls", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "numSignUps", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "openSignUpPeriod", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "pollResults", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "polls", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_newStateCommitment", + type: "uint256", + }, + { + internalType: "uint256", + name: "_newSbCommitment", + type: "uint256", + }, + { + internalType: "uint256[8]", + name: "_proof", + type: "uint256[8]", + }, + ], + name: "processMessages", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "uint256", + name: "msgType", + type: "uint256", + }, + { + internalType: "uint256[10]", + name: "data", + type: "uint256[10]", + }, + ], + internalType: "struct Jubjub.Message", + name: "_message", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Jubjub.PubKey", + name: "_encPubKey", + type: "tuple", + }, + ], + name: "publishMessage", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "uint256", + name: "msgType", + type: "uint256", + }, + { + internalType: "uint256[10]", + name: "data", + type: "uint256[10]", + }, + ], + internalType: "struct Jubjub.Message[]", + name: "_messages", + type: "tuple[]", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Jubjub.PubKey[]", + name: "_encPubKeys", + type: "tuple[]", + }, + ], + name: "publishMessageBatch", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "resetBallotCommitment", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract VkRegistry", + name: "_vkRegistry", + type: "address", + }, + ], + name: "setVkRegistry", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Jubjub.PubKey", + name: "_pubKey", + type: "tuple", + }, + { + internalType: "bytes", + name: "_signUpGatekeeperData", + type: "bytes", + }, + { + internalType: "bytes", + name: "_initialVoiceCreditProxyData", + type: "bytes", + }, + ], + name: "signUp", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "signUpGatekeeper", + outputs: [ + { + internalType: "contract ISignUpGatekeeper", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "signUpTimestamp", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "signUpsOpen", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_duration", + type: "uint256", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Jubjub.PubKey", + name: "_coordinatorPubKey", + type: "tuple", + }, + ], + name: "startVoting", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "stateAq", + outputs: [ + { + internalType: "contract AccQueue", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "stateLeafTimeStamps", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "stateTreeDepth", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "stateTreeSubDepth", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "vkRegistry", + outputs: [ + { + internalType: "contract VkRegistry", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "voiceCreditProxy", + outputs: [ + { + internalType: "contract IInitialVoiceCreditProxy", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "voteDeadline", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "voteDurationSeconds", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "voteOptionTreeDepth", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x60806040523480156200001157600080fd5b506200001c62000134565b7f0ef71f46e11a513c599eed9dd03576c33439bcfb1cee155316f90541e41649ba14620000a15760405162461bcd60e51b815260206004820152602860248201527f4d4143493a20424c414e4b5f53544154455f4c4541465f4841534820697320696044820152671b98dbdc9c9958dd60c21b60648201526084015b60405180910390fd5b620000ab62000194565b7f1dee9f497aa52e2ad4b049b789afb5056fbee5a0e3f1083a92d93cb3a5a70fb4146200012e5760405162461bcd60e51b815260206004820152602a60248201527f4d4143493a20424c414e4b5f4d4553534147455f4c4541465f48415348206973604482015269081a5b98dbdc9c9958dd60b21b606482015260840162000098565b620005e5565b604080518082018252600080516020620043b38339815191528152600080516020620043d383398151915260208083019190915282516060810184528281526000918101829052928301819052916200018d816200025a565b9250505090565b60408051610140810182527f12817f4161f2f5ded33f26c55735a77e80e4f8975483c8c2704745128417f711815260006020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905260e083018290526101008301829052610120830182905283518085018552600080516020620043b38339815191528152600080516020620043d38339815191528183015284518086019095526001855290840183905290926200025281836200030f565b935050505090565b60006200026662000532565b82515181528251602090810151818301528301518160026020020152604083810151606083015251631efdc45960e11b815273__$56e03346d0918fb20a2db08690fd2c2075$__90633dfb88b290620002c49084906004016200056e565b602060405180830381865af4158015620002e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003089190620005a1565b9392505050565b60006200031b62000550565b6020848101805151835280518201519183019190915280516040908101519083015280516060908101519083015251608090810151908201526200035e62000550565b6020858101805160a0908101518452815160c0015184840152815160e0015160408086019190915282516101000151606086015291516101200151608085015281519081018252875181529051639cfced9760e01b815273__$e63b1c9f9b66f613a0dd27ec595fdb417f$__92639cfced9792919082019084908490620003ea908990600401620005bb565b602060405180830381865af415801562000408573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042e9190620005a1565b815260200173__$e63b1c9f9b66f613a0dd27ec595fdb417f$__639cfced97866040518263ffffffff1660e01b81526004016200046c9190620005bb565b602060405180830381865af41580156200048a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b09190620005a1565b81526020018760000151815260200187602001518152506040518263ffffffff1660e01b8152600401620004e59190620005bb565b602060405180830381865af415801562000503573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005299190620005a1565b95945050505050565b60405180608001604052806004906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b60808101818360005b60048110156200059857815183526020928301929091019060010162000577565b50505092915050565b600060208284031215620005b457600080fd5b5051919050565b60a08101818360005b600581101562000598578151835260209283019290910190600101620005c4565b613dbe80620005f56000396000f3fe6080604052600436106102435760003560e01c8062329f2f14610248578063030ffa6e1461025f578063079410db146102875780630f4cf692146102bf5780630f78c3f2146102d5578063122db153146102eb578063133511b91461030157806313fb8932146103165780631c2a50a214610336578063203bfef51461034c578063213e7ba81461036257806331e766a5146103985780633364120a146103c8578063394b78a2146103e85780633bee85a81461040857806342bf25ab1461041e5780634c8104da146104335780635289052c14610453578063603baff814610473578063652c76e41461049357806370ee8e42146104a9578063715018a6146104be5780637296aaea146104d3578063793dbe32146104f35780637a38d18f146105085780637d0a81c81461051e57806383ca5a5b1461053e578063842ff2bd1461055457806388e8ee721461056a5780638aa0ba92146105805780638aa56271146105965780638ae8a05f146105b65780638da5cb5b146105d65780639bc609f3146105eb5780639c971729146106015780639eb1cab3146106215780639ed3c90c1461064e578063a78dac0d14610678578063ac2f007414610698578063ac9650d8146106ce578063c17268d9146106ee578063ca64d4ee14610704578063d5f7b1b614610724578063e5e7569314610744578063e71f900c14610764578063ec9289a814610784578063f2fde38b1461079a578063f74556bd146107ba578063f90100f9146107d0578063fcc2c3aa146107f0578063fed8fd441461080a575b600080fd5b34801561025457600080fd5b5061025d610820565b005b34801561026b57600080fd5b50610274610a4c565b6040519081526020015b60405180910390f35b34801561029357600080fd5b50607e546102a7906001600160a01b031681565b6040516001600160a01b03909116815260200161027e565b3480156102cb57600080fd5b5061027460725481565b3480156102e157600080fd5b5061027460835481565b3480156102f757600080fd5b5061027460715481565b34801561030d57600080fd5b5061025d610aa8565b34801561032257600080fd5b506080546102a7906001600160a01b031681565b34801561034257600080fd5b5061027460665481565b34801561035857600080fd5b5061027460775481565b34801561036e57600080fd5b506102a761037d366004612ee0565b607b602052600090815260409020546001600160a01b031681565b3480156103a457600080fd5b506081546082546103b3919082565b6040805192835260208301919091520161027e565b3480156103d457600080fd5b5061025d6103e3366004613028565b610cd3565b3480156103f457600080fd5b5061025d61040336600461312f565b61101d565b34801561041457600080fd5b5061027460765481565b34801561042a57600080fd5b50610274611236565b34801561043f57600080fd5b5061027461044e36600461312f565b6112e1565b34801561045f57600080fd5b5061025d61046e366004612ee0565b6114f3565b34801561047f57600080fd5b50607c546102a7906001600160a01b031681565b34801561049f57600080fd5b5061027460655481565b3480156104b557600080fd5b5061025d6115ff565b3480156104ca57600080fd5b5061025d611666565b3480156104df57600080fd5b5061025d6104ee366004613166565b61167a565b3480156104ff57600080fd5b506102746116fd565b34801561051457600080fd5b5061027460745481565b34801561052a57600080fd5b5061027461053936600461322e565b6117c0565b34801561054a57600080fd5b5061027460845481565b34801561056057600080fd5b5061027460705481565b34801561057657600080fd5b5061027460695481565b34801561058c57600080fd5b5061027460735481565b3480156105a257600080fd5b5061025d6105b13660046132d7565b61186e565b3480156105c257600080fd5b50607d546102a7906001600160a01b031681565b3480156105e257600080fd5b506102a761201e565b3480156105f757600080fd5b5061027460675481565b34801561060d57600080fd5b5061025d61061c366004612ee0565b61202d565b34801561062d57600080fd5b5061027461063c366004612ee0565b60796020526000908152604090205481565b34801561065a57600080fd5b50606f546106689060ff1681565b604051901515815260200161027e565b34801561068457600080fd5b506102746106933660046133d8565b6121e9565b3480156106a457600080fd5b506102a76106b3366004612ee0565b607a602052600090815260409020546001600160a01b031681565b6106e16106dc3660046133fa565b61227d565b60405161027e91906134bb565b3480156106fa57600080fd5b5061027460785481565b34801561071057600080fd5b50607f546102a7906001600160a01b031681565b34801561073057600080fd5b5061025d61073f366004612ee0565b612302565b34801561075057600080fd5b5061025d61075f36600461351d565b6124c0565b34801561077057600080fd5b5061025d61077f3660046135b2565b612898565b34801561079057600080fd5b5061027460755481565b3480156107a657600080fd5b5061025d6107b53660046135e8565b612cd8565b3480156107c657600080fd5b5061027460855481565b3480156107dc57600080fd5b5061025d6107eb3660046135e8565b612d51565b3480156107fc57600080fd5b506086546106689060ff1681565b34801561081657600080fd5b5061027460685481565b610828612d7b565b607d60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa15801561087b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089f9190613605565b156108c55760405162461bcd60e51b81526004016108bc90613627565b60405180910390fd5b607d60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190613605565b15156001146109995760405162461bcd60e51b8152602060048201526024808201527f4552524f525f4d4553534147455f41515f53554254524545535f4e4545445f4d6044820152634552474560e01b60648201526084016108bc565b607d546067546040516324a47aeb60e01b81526001600160a01b03909216916324a47aeb916109ce9160040190815260200190565b6020604051808303816000875af11580156109ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a11919061365e565b60768190556040519081527fc5624680ab5d50c84507f9e0dc2032163de2bda906ab8a661a53dd4d43bd5dc7906020015b60405180910390a1565b604080518082018252600080516020613ce98339815191528152600080516020613d498339815191526020808301919091528251606081018452828152600091810182905292830181905291610aa1816117c0565b9250505090565b610ab0612d7b565b607c60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b279190613605565b158015610b37575060865460ff16155b610b535760405162461bcd60e51b81526004016108bc90613677565b607c60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca9190613605565b1515600114610c265760405162461bcd60e51b815260206004820152602260248201527f4552524f525f53544154455f41515f53554254524545535f4e4545445f4d4552604482015261474560f01b60648201526084016108bc565b607c546065546040516324a47aeb60e01b81526001600160a01b03909216916324a47aeb91610c5b9160040190815260200190565b6020604051808303816000875af1158015610c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9e919061365e565b60758190556040519081527f58deecc020170648ca539f41d6d967a2d071ce17a8296866ba3b3403977fd8ec90602001610a42565b606f5460ff16610cf55760405162461bcd60e51b81526004016108bc906136ae565b606554610d039060056137d7565b60715410610d635760405162461bcd60e51b815260206004820152602760248201527f4d4143493a206d6178696d756d206e756d626572206f66207369676e757073206044820152661c995858da195960ca1b60648201526084016108bc565b8251600080516020613d29833981519152118015610d925750600080516020613d298339815191528360200151105b610e045760405162461bcd60e51b815260206004820152603f60248201527f4d4143493a205f7075624b65792076616c7565732073686f756c64206265206c60448201527f657373207468616e2074686520736e61726b207363616c6172206669656c640060648201526084016108bc565b60865460ff16610e515760405162461bcd60e51b8152602060048201526018602482015277135050d24e881cda59db9d5c1cc8185c994818db1bdcd95960421b60448201526064016108bc565b607180546001019055607e5460405163125c7dfb60e11b81526001600160a01b03909116906324b8fbf690610e8c90339086906004016137e3565b600060405180830381600087803b158015610ea657600080fd5b505af1158015610eba573d6000803e3d6000fd5b5050607f5460405163b36543a960e01b8152600093506001600160a01b03909116915063b36543a990610ef390339086906004016137e3565b602060405180830381865afa158015610f10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f34919061365e565b905060004290506000610f606040518060600160405280888152602001858152602001848152506117c0565b607c54604051631ffc735d60e01b8152600481018390529192506000916001600160a01b0390911690631ffc735d906024016020604051808303816000875af1158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd5919061365e565b90507f99f34e3b6821c0bd1f5732936411fe3fd65fb78cbcd657c61bfb8deb08c0591f8188868660405161100c9493929190613816565b60405180910390a150505050505050565b608454421061106b5760405162461bcd60e51b815260206004820152601a60248201527911549493d497d593d5125391d7d411549253d117d41054d4d15160321b60448201526064016108bc565b6067546110799060056137d7565b60725411156110c75760405162461bcd60e51b815260206004820152601a60248201527911549493d497d3505617d35154d4d051d154d7d4915050d2115160321b60448201526064016108bc565b8051600080516020613d298339815191521180156110f65750600080516020613d298339815191528160200151105b6111395760405162461bcd60e51b81526020600482015260146024820152734552524f525f494e56414c49445f5055424b455960601b60448201526064016108bc565b426084541161117f5760405162461bcd60e51b815260206004820152601260248201527111549493d497d593d5125391d7d15391115160721b60448201526064016108bc565b6072805460019081019091558252600061119983836112e1565b607d54604051631ffc735d60e01b8152600481018390529192506001600160a01b031690631ffc735d906024016020604051808303816000875af11580156111e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611209919061365e565b50600080516020613d69833981519152838360405161122992919061383c565b60405180910390a1505050565b600080606854600561124891906137d7565b905060008160725461125a9190613898565b90506074546000141561128f578061128557818260725461127b91906138ac565b610aa191906138c0565b6072549250505090565b806112af57816074546112a291906138c0565b607254610aa191906138df565b8160016074546112bf91906138df565b6112c991906138c0565b816072546112d791906138df565b610aa191906138df565b60006112eb612e86565b60208481018051518352805182015191830191909152805160409081015190830152805160609081015190830152516080908101519082015261132c612e86565b6020858101805160a0908101518452815160c0015184840152815160e0015160408086019190915282516101000151606086015291516101200151608085015281519081018252875181529051639cfced9760e01b815273__$e63b1c9f9b66f613a0dd27ec595fdb417f$__92639cfced97929190820190849084906113b690899060040161390c565b602060405180830381865af41580156113d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f7919061365e565b815260200173__$e63b1c9f9b66f613a0dd27ec595fdb417f$__639cfced97866040518263ffffffff1660e01b8152600401611433919061390c565b602060405180830381865af4158015611450573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611474919061365e565b81526020018760000151815260200187602001518152506040518263ffffffff1660e01b81526004016114a7919061390c565b602060405180830381865af41580156114c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e8919061365e565b925050505b92915050565b6114fb612d7b565b60865460ff16156115435760405162461bcd60e51b815260206004820152601260248201527114d251d3955414d7d393d517d0d313d4d15160721b60448201526064016108bc565b606a6115506001836138df565b60058110611560576115606138f6565b0154607781905560408051606081018252607554815260208101929092526000828201525163bea140b360e01b815273__$8f0718d15a58b4353249f9bf6422c5f00e$__9163bea140b3916115b8919060040161393d565b602060405180830381865af41580156115d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f9919061365e565b60785550565b611607612d7b565b60865460ff16156116575760405162461bcd60e51b815260206004820152601a60248201527922a92927a92fa9a4a3a72aa829afa0a62922a0a22cafa7a822a760311b60448201526064016108bc565b6086805460ff19166001179055565b61166e612d7b565b6116786000612dda565b565b8260005b818160ff1610156116f5576116e386868360ff168181106116a1576116a16138f6565b905061016002018036038101906116b89190613965565b85858460ff168181106116cd576116cd6138f6565b9050604002018036038101906104039190613982565b806116ed8161399e565b91505061167e565b505050505050565b600080604051806101400160405280600080516020613d09833981519152815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250905060006040518060400160405280600080516020613ce98339815191528152602001600080516020613d49833981519152815250905060006040518060400160405280600181526020018481525090506117b881836112e1565b935050505090565b60006117ca612ea4565b82515181528251602090810151818301528301518160026020020152604083810151606083015251631efdc45960e11b815273__$56e03346d0918fb20a2db08690fd2c2075$__90633dfb88b2906118269084906004016139be565b602060405180830381865af4158015611843573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611867919061365e565b9392505050565b600054610100900460ff161580801561188e5750600054600160ff909116105b806118a85750303b1580156118a8575060005460ff166001145b61190b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108bc565b6000805460ff19166001179055801561192e576000805461ff0019166101001790555b611936612e2c565b600061194061201e565b6001600160a01b031614156119925760405162461bcd60e51b8152602060048201526018602482015277129d589a9d58881bdddb995c881b5d5cdd081899481cd95d60421b60448201526064016108bc565b606f5460ff16156119e15760405162461bcd60e51b8152602060048201526019602482015278135050d24e88185b1c9958591e481a5b9a5d1a585b1a5cd959603a1b60448201526064016108bc565b426083556086805460ff199081166001908117909255606f80549091169091179055607e80546001600160a01b038088166001600160a01b031992831617909255607f8054878416908316179055607c80548684169083168117909155607d80549386169390921692909217905560658b9055606689905560678a9055606888905560408051636ed44d3760e11b815290516000929163dda89a6e9160048281019260209291908290030181865afa158015611aa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac5919061365e565b1415611b5b57607c54604051631ffc735d60e01b81527f0ef71f46e11a513c599eed9dd03576c33439bcfb1cee155316f90541e41649ba60048201526001600160a01b0390911690631ffc735d906024016020604051808303816000875af1158015611b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b59919061365e565b505b607d60009054906101000a90046001600160a01b03166001600160a01b031663dda89a6e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd2919061365e565b15611c1f5760405162461bcd60e51b815260206004820152601d60248201527f4d4143493a206d657373616765206171206973206e6f7420656d70747900000060448201526064016108bc565b607d54604051631ffc735d60e01b81527f1dee9f497aa52e2ad4b049b789afb5056fbee5a0e3f1083a92d93cb3a5a70fb460048201526001600160a01b0390911690631ffc735d906024016020604051808303816000875af1158015611c89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cad919061365e565b5085600081518110611cc157611cc16138f6565b6020026020010151606a600060058110611cdd57611cdd6138f6565b0155855186906001908110611cf457611cf46138f6565b6020026020010151606a600160058110611d1057611d106138f6565b0155855186906002908110611d2757611d276138f6565b6020026020010151606a600260058110611d4357611d436138f6565b0155855186906003908110611d5a57611d5a6138f6565b6020026020010151606a600360058110611d7657611d766138f6565b0155855186906004908110611d8d57611d8d6138f6565b6020026020010151606a600460058110611da957611da96138f6565b0155607c546040805163442c38c760e11b815290516001600160a01b0390921691638858718e916004808201926020929091908290030181865afa158015611df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e19919061365e565b60665414611e395760405162461bcd60e51b81526004016108bc906139e6565b607d60009054906101000a90046001600160a01b03166001600160a01b0316638858718e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb0919061365e565b60685414611ed05760405162461bcd60e51b81526004016108bc906139e6565b607c60009054906101000a90046001600160a01b03166001600160a01b031663a27154ba6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f47919061365e565b60655410611f895760405162461bcd60e51b815260206004820152600f60248201526e0929c869ea4a48a86a840888aa0a89608b1b60448201526064016108bc565b604080516001600160a01b038088168252861660208201527f45acd56f401dc3db1d520e5e214f090b4ab3e3fbf42fd24596cb511edaad876a910160405180910390a18015612012576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6033546001600160a01b031690565b612035612d7b565b607d60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa158015612088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ac9190613605565b1580156120bc575060865460ff16155b6120d85760405162461bcd60e51b81526004016108bc90613627565b607d60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061214f9190613605565b6121b257607d5460405163c15da65b60e01b8152600481018390526001600160a01b039091169063c15da65b90602401600060405180830381600087803b15801561219957600080fd5b505af11580156121ad573d6000803e3d6000fd5b505050505b6040518181527f1245b881cb30fdad22b2f9fde2d5c2a3605bbdf272d5e8a2235d8c9e81aba2ce906020015b60405180910390a150565b60006121f3612ec2565b838152602081018390526040516362a361bb60e01b815273__$c6850fb4e0ee9ead61bcd830cbea02ad6d$__906362a361bb90612234908490600401613a12565b602060405180830381865af4158015612251573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612275919061365e565b949350505050565b606081156114ed5750604051818152602001600582901b808483378101805b825185018035602082018337600080823584305af46122bf573d6000803e3d6000fd5b508083526020830192503d81523d6000602083013e3d01603f016020600160401b03168183106122ee576122f3565b61229c565b60408051919052949350505050565b61230a612d7b565b607c60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa15801561235d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123819190613605565b158015612391575060865460ff16155b6123ad5760405162461bcd60e51b81526004016108bc90613677565b607c60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612400573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124249190613605565b61248757607c5460405163c15da65b60e01b8152600481018390526001600160a01b039091169063c15da65b90602401600060405180830381600087803b15801561246e57600080fd5b505af1158015612482573d6000803e3d6000fd5b505050505b60705460408051918252602082018390527f20c94e460dce562bb3cf493d654a31e5adbf7abcce31a6b8da835c1211ed0dec91016121de565b6124c8612d7b565b607c60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa15801561251b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253f9190613605565b6125875760405162461bcd60e51b815260206004820152601960248201527811549493d497d4d510551157d05457d393d517d3515491d151603a1b60448201526064016108bc565b607d60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125fe9190613605565b6126565760405162461bcd60e51b815260206004820152602360248201527f4552524f525f4d4553534147455f41515f4e4f545f414c52454144595f4d455260448201526211d15160ea1b60648201526084016108bc565b6000612660611236565b116126a65760405162461bcd60e51b81526020600482015260166024820152754552524f525f4e4f5f4d4f52455f4d4553534147455360501b60448201526064016108bc565b607d54606754604051631b9b8aa760e01b815260048101919091526000916001600160a01b031690631b9b8aa790602401602060405180830381865afa1580156126f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612718919061365e565b9050806127655760405162461bcd60e51b815260206004820152601b60248201527a11549493d497d35154d4d051d157d05457d393d517d3515491d151602a1b60448201526064016108bc565b6000606854600561277691906137d7565b6080546065546067546069546040516305fdea7f60e11b8152600481019390935260248301919091526044820152606481018390529192506000916001600160a01b0390911690630bfbd4fe90608401600060405180830381865afa1580156127e3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261280b9190810190613b19565b905060016000612819611236565b9050816128745760405162461bcd60e51b815260206004820152602360248201527f4552524f525f494e56414c49445f50524f434553535f4d4553534147455f505260448201526227a7a360e91b60648201526084016108bc565b60788790556074805490600061288983613c31565b91905055505050505050505050565b606f5460ff166128ba5760405162461bcd60e51b81526004016108bc906136ae565b607c60009054906101000a90046001600160a01b03166001600160a01b03166369e7c5866040518163ffffffff1660e01b8152600401602060405180830381865afa15801561290d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129319190613605565b1561294e5760405162461bcd60e51b81526004016108bc90613677565b607c60009054906101000a90046001600160a01b03166001600160a01b031663b6a64acd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c59190613605565b15612a125760405162461bcd60e51b815260206004820152601e60248201527f4552524f525f53544154455f41515f53554254524545535f4d4552474544000060448201526064016108bc565b607d60009054906101000a90046001600160a01b03166001600160a01b031663dda89a6e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a89919061365e565b600114612ad55760405162461bcd60e51b815260206004820152601a6024820152794552524f525f4d4553534147455f41515f4e4f545f454d50545960301b60448201526064016108bc565b6086805460ff19169055612ae8836114f3565b6000604051806101400160405280600080516020613d09833981519152815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250905060006040518060400160405280600080516020613ce98339815191528152602001600080516020613d4983398151915281525090506000604051806040016040528060016002811115612b9e57612b9e613c4c565b815260200184905260708054600190810190915560728054909101905560858690559050612bcc8542613c62565b60845560698690558351608181905560208501516082819055604051635bb9399560e01b815273__$c6850fb4e0ee9ead61bcd830cbea02ad6d$__92635bb9399592612c2392600401918252602082015260400190565b602060405180830381865af4158015612c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c64919061365e565b60735560006074556070546040517f76b880f3c8580b5bb05765c3b2160a2860692566e7f8cce8c58d23e77f3130c291612ca19130908890613c7a565b60405180910390a1600080516020613d698339815191528183604051612cc892919061383c565b60405180910390a1505050505050565b612ce0612d7b565b6001600160a01b038116612d455760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108bc565b612d4e81612dda565b50565b612d59612d7b565b608080546001600160a01b0319166001600160a01b0392909216919091179055565b33612d8461201e565b6001600160a01b0316146116785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108bc565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16612e535760405162461bcd60e51b81526004016108bc90613c9d565b611678600054610100900460ff16612e7d5760405162461bcd60e51b81526004016108bc90613c9d565b61167833612dda565b6040518060a001604052806005906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b600060208284031215612ef257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715612f3157612f31612ef9565b60405290565b60405160a081016001600160401b0381118282101715612f3157612f31612ef9565b604051601f8201601f191681016001600160401b0381118282101715612f8157612f81612ef9565b604052919050565b600060408284031215612f9b57600080fd5b612fa3612f0f565b9050813581526020820135602082015292915050565b600082601f830112612fca57600080fd5b81356001600160401b03811115612fe357612fe3612ef9565b612ff6601f8201601f1916602001612f59565b81815284602083860101111561300b57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006080848603121561303d57600080fd5b6130478585612f89565b925060408401356001600160401b038082111561306357600080fd5b61306f87838801612fb9565b9350606086013591508082111561308557600080fd5b5061309286828701612fb9565b9150509250925092565b60006101608083850312156130b057600080fd5b6130b8612f0f565b915082358252602084603f8501126130cf57600080fd5b60405161014081016001600160401b03811182821017156130f2576130f2612ef9565b60405291840191808684111561310757600080fd5b8286015b84811015613122578035825290830190830161310b565b5050908301525092915050565b6000806101a0838503121561314357600080fd5b61314d848461309c565b915061315d846101608501612f89565b90509250929050565b6000806000806040858703121561317c57600080fd5b84356001600160401b038082111561319357600080fd5b818701915087601f8301126131a757600080fd5b8135818111156131b657600080fd5b886020610160830285010111156131cc57600080fd5b6020928301965094509086013590808211156131e757600080fd5b818701915087601f8301126131fb57600080fd5b81358181111561320a57600080fd5b8860208260061b850101111561321f57600080fd5b95989497505060200194505050565b60006080828403121561324057600080fd5b604051606081016001600160401b038111828210171561326257613262612ef9565b60405261326f8484612f89565b815260408301356020820152606083013560408201528091505092915050565b60006001600160401b038211156132a8576132a8612ef9565b5060051b60200190565b6001600160a01b0381168114612d4e57600080fd5b80356132d2816132b2565b919050565b60008060008060008060008060006101208a8c0312156132f657600080fd5b893598506020808b0135985060408b0135975060608b0135965060808b01356001600160401b0381111561332957600080fd5b8b01601f81018d1361333a57600080fd5b803561334d6133488261328f565b612f59565b81815260059190911b8201830190838101908f83111561336c57600080fd5b928401925b8284101561338a57833582529284019290840190613371565b809950505050505061339e60a08b016132c7565b93506133ac60c08b016132c7565b92506133ba60e08b016132c7565b91506133c96101008b016132c7565b90509295985092959850929598565b600080604083850312156133eb57600080fd5b50508035926020909101359150565b6000806020838503121561340d57600080fd5b82356001600160401b038082111561342457600080fd5b818501915085601f83011261343857600080fd5b81358181111561344757600080fd5b8660208260051b850101111561345c57600080fd5b60209290920196919550909350505050565b6000815180845260005b8181101561349457602081850181015186830182015201613478565b818111156134a6576000602083870101525b50601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561351057603f198886030184526134fe85835161346e565b945092850192908501906001016134e2565b5092979650505050505050565b600080600061014080858703121561353457600080fd5b84359350602080860135935086605f87011261354f57600080fd5b60405161010081016001600160401b038111828210171561357257613572612ef9565b60405291860191808884111561358757600080fd5b604088015b848110156135a3578035825290830190830161358c565b50508093505050509250925092565b6000806000608084860312156135c757600080fd5b83359250602084013591506135df8560408601612f89565b90509250925092565b6000602082840312156135fa57600080fd5b8135611867816132b2565b60006020828403121561361757600080fd5b8151801515811461186757600080fd5b6020808252601f908201527f4552524f525f4d4553534147455f41515f414c52454144595f4d455247454400604082015260600190565b60006020828403121561367057600080fd5b5051919050565b6020808252601d908201527f4552524f525f53544154455f41515f414c52454144595f4d4552474544000000604082015260600190565b602080825260159082015274135050d24e881b9bdd081a5b9a5d1a585b1a5cd959605a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561372e578160001904821115613714576137146136dd565b8085161561372157918102915b93841c93908002906136f8565b509250929050565b600082613745575060016114ed565b81613752575060006114ed565b816001811461376857600281146137725761378e565b60019150506114ed565b60ff841115613783576137836136dd565b50506001821b6114ed565b5060208310610133831016604e8410600b84101617156137b1575081810a6114ed565b6137bb83836136f3565b80600019048211156137cf576137cf6136dd565b029392505050565b60006118678383613736565b6001600160a01b03831681526040602082018190526000906122759083018461346e565b80518252602090810151910152565b84815260a0810161382a6020830186613807565b60608201939093526080015292915050565b825181526020808401516101a08301919081840160005b600a81101561387057825182529183019190830190600101613853565b50505050611867610160830184613807565b634e487b7160e01b600052601260045260246000fd5b6000826138a7576138a7613882565b500690565b6000826138bb576138bb613882565b500490565b60008160001904831182151516156138da576138da6136dd565b500290565b6000828210156138f1576138f16136dd565b500390565b634e487b7160e01b600052603260045260246000fd5b60a08101818360005b6005811015613934578151835260209283019290910190600101613915565b50505092915050565b60608101818360005b6003811015613934578151835260209283019290910190600101613946565b6000610160828403121561397857600080fd5b611867838361309c565b60006040828403121561399457600080fd5b6118678383612f89565b600060ff821660ff8114156139b5576139b56136dd565b60010192915050565b60808101818360005b60048110156139345781518352602092830192909101906001016139c7565b6020808252601290820152710929c869ea4a48a86a840a6aa84888aa0a8960731b604082015260600190565b60408101818360005b6002811015613934578151835260209283019290910190600101613a1b565b600060408284031215613a4c57600080fd5b613a54612f0f565b9050815181526020820151602082015292915050565b600082601f830112613a7b57600080fd5b604080519081016001600160401b0381118282101715613a9d57613a9d612ef9565b8060405250806040840185811115613ab457600080fd5b845b81811015613ace578051835260209283019201613ab6565b509195945050505050565b600060808284031215613aeb57600080fd5b613af3612f0f565b9050613aff8383613a6a565b8152613b0e8360408401613a6a565b602082015292915050565b60006020808385031215613b2c57600080fd5b82516001600160401b0380821115613b4357600080fd5b908401906101e08287031215613b5857600080fd5b613b60612f37565b613b6a8784613a3a565b81526040613b7a88828601613ad9565b85830152613b8b8860c08601613ad9565b81830152613b9d886101408601613ad9565b60608301526101c084015183811115613bb557600080fd5b80850194505087601f850112613bca57600080fd5b83519250613bda6133488461328f565b83815260069390931b84018501928581019089851115613bf957600080fd5b948601945b84861015613c1f57613c108a87613a3a565b82529482019490860190613bfe565b60808401525090979650505050505050565b6000600019821415613c4557613c456136dd565b5060010190565b634e487b7160e01b600052602160045260246000fd5b60008219821115613c7557613c756136dd565b500190565b8381526001600160a01b0383166020820152608081016122756040830184613807565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe171e826ad4a870fd925e0bf0e87884e70e080879c2205ef10114f28a3b6f6dd712817f4161f2f5ded33f26c55735a77e80e4f8975483c8c2704745128417f71130644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000012bd407d897fbbca9f88adfd2d15252e69de8c1564eb4d3d27162e259172f1a1de2067f06dd7b8159b21a5490f8663f6bb031d9b35ed6d298b5489674cb9cda4ba2646970667358221220cc66c04d1d0fef90174f5ddc9fa31265ed24c1ec1a50f469ebafaed591bffb2764736f6c634300080a0033171e826ad4a870fd925e0bf0e87884e70e080879c2205ef10114f28a3b6f6dd72bd407d897fbbca9f88adfd2d15252e69de8c1564eb4d3d27162e259172f1a1d"; + +type JubjubConstructorParams = + | [linkLibraryAddresses: JubjubLibraryAddresses, signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: JubjubConstructorParams +): xs is ConstructorParameters => { + return ( + typeof xs[0] === "string" || + (Array.isArray as (arg: any) => arg is readonly any[])(xs[0]) || + "_isInterface" in xs[0] + ); +}; + +export class Jubjub__factory extends ContractFactory { + constructor(...args: JubjubConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + const [linkLibraryAddresses, signer] = args; + super(_abi, Jubjub__factory.linkBytecode(linkLibraryAddresses), signer); + } + } + + static linkBytecode(linkLibraryAddresses: JubjubLibraryAddresses): string { + let linkedBytecode = _bytecode; + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$56e03346d0918fb20a2db08690fd2c2075\\$__", "g"), + linkLibraryAddresses["contracts/poseidon/PoseidonT5.sol:PoseidonT5"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$e63b1c9f9b66f613a0dd27ec595fdb417f\\$__", "g"), + linkLibraryAddresses["contracts/poseidon/PoseidonT6.sol:PoseidonT6"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$8f0718d15a58b4353249f9bf6422c5f00e\\$__", "g"), + linkLibraryAddresses["contracts/poseidon/PoseidonT4.sol:PoseidonT4"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$c6850fb4e0ee9ead61bcd830cbea02ad6d\\$__", "g"), + linkLibraryAddresses["contracts/poseidon/PoseidonT3.sol:PoseidonT3"] + .replace(/^0x/, "") + .toLowerCase() + ); + + return linkedBytecode; + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): Jubjub { + return super.attach(address) as Jubjub; + } + override connect(signer: Signer): Jubjub__factory { + return super.connect(signer) as Jubjub__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): JubjubInterface { + return new utils.Interface(_abi) as JubjubInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): Jubjub { + return new Contract(address, _abi, signerOrProvider) as Jubjub; + } +} + +export interface JubjubLibraryAddresses { + ["contracts/poseidon/PoseidonT5.sol:PoseidonT5"]: string; + ["contracts/poseidon/PoseidonT6.sol:PoseidonT6"]: string; + ["contracts/poseidon/PoseidonT4.sol:PoseidonT4"]: string; + ["contracts/poseidon/PoseidonT3.sol:PoseidonT3"]: string; +} diff --git a/packages/contracts/typechain-types/factories/contracts/MessageTree__factory.ts b/packages/contracts/typechain-types/factories/contracts/MessageTree__factory.ts new file mode 100644 index 00000000..812ef81e --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/MessageTree__factory.ts @@ -0,0 +1,499 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BigNumberish, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../common"; +import type { + MessageTree, + MessageTreeInterface, +} from "../../contracts/MessageTree"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "_subDepth", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [], + name: "MAX_DEPTH", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "calcMinHeight", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "currentSubtreeIndex", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_leaf", + type: "uint256", + }, + ], + name: "enqueue", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "fill", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_depth", + type: "uint256", + }, + ], + name: "getMainRoot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSmallSRTroot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSrIndices", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_index", + type: "uint256", + }, + ], + name: "getSubRoot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_level", + type: "uint256", + }, + { + internalType: "uint256", + name: "_leaf", + type: "uint256", + }, + ], + name: "hashLevelLeaf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_subRoot", + type: "uint256", + }, + ], + name: "insertSubTree", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "mainRoots", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_depth", + type: "uint256", + }, + ], + name: "merge", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_numSrQueueOps", + type: "uint256", + }, + ], + name: "mergeSubRoots", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "numLeaves", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "smallSRTroot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "subDepth", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "subRoots", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "subTreesMerged", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "treeMerged", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x60e06040523480156200001157600080fd5b506040516200258f3803806200258f833981016040819052620000349162000673565b80806005600082116200009e5760405162461bcd60e51b815260206004820152602760248201527f41636351756575653a205f7375624465707468206d757374206265206d6f72656044820152660207468616e20360cc1b60648201526084015b60405180910390fd5b6020821115620001085760405162461bcd60e51b815260206004820152602e60248201527f41636351756575653a206f6e6c7920737570706f72747320757020746f204d4160448201526d585f4445505448206c6576656c7360901b606482015260840162000095565b8060021480620001185750806005145b6200017c5760405162461bcd60e51b815260206004820152602d60248201527f41636351756575653a206f6e6c7920737570706f727473205f686173684c656e60448201526c677468206f662032206f72203560981b606482015260840162000095565b6065805460ff191660028314179055608082905260a0819052620001a18282620007a2565b60c05250507f0ef71f46e11a513c599eed9dd03576c33439bcfb1cee155316f90541e41649ba6101d75550507f0404a2ed0a1df2006441895d9a65ffffdd4968cb5f555fe72a6da7aaec83e1a06101d8557f0b1c3d09dd575749a374a9dc1ee32af8c2312e24ad33a3e40fce8120b0f25fe36101d9557f1f60ed72fc1915366d2e52cfc7ddc0ff854c7aee9abbc07d1ca88ada842354dc6101da557f2ca1efc603fc121baf791319195ee3ab7fa075cee664d008f9ab2870f50283606101db557f2a0381fc4fb108733dfc58c355f2de753bcde61bd988eaa7d33fc967262be5ad6101dc557f12c6c7cce0332367373dafc95d75b98dd58980410434929dff09466a4ba262db6101dd557f2f212d3cc7e7334c4a10ced1be011b9cd70f73cca5522fc4137a51be8a17d18e6101de557f0968ef20d515d8d743b2cf66603f8b86f3fdeee932fdc911774bb8699566e11c6101df557f2e3604981890fb676c3dac1e14c5c201573f99d1b9e67025109baf274b10e9dd6101e0557f147d317fd4b7a1dd6cb961cfba444466b3c431ea638c8df74a89fc591d1a3a516101e1557f10ea2b72952b619afd5b9bc50561df8de0c6e1ba9b5ad66b179c39c420304a756101e2557f1c49f7b357d244d9144676ad23f79465ef5b88ef0f91762a3d35997688af9a5a6101e3557f05ca0cfef8158efc5c4af44122e2765179b5463618d5c5ac6185c192332cade96101e4557f0ae1595634e8a2e23620f33f9b2b5a23387a28f5833814646900110842f3a1096101e5557f08be8c2a6a099d9cdc96f9197af6ad99595d73419eb0694eaea432fa18baa2036101e6557f207f689ce35cf857ee6e68c42d31bb2191d1e84d7a295ccd63995ca7369d20eb6101e7557f2a6f6b7e4a2cd1a6466ed17debb0a27904e99adbd72be85566a87340f41efd056101e8557f0f0725795350566920bbf56d3f22c4d38e832e638c9cb91811f83194e9dd74be6101e9557f02cd50632e5c5b00a9a93f434797725ec0f85f11ba1b6a844f0cd10c70df63926101ea557f08868b85d2fa4c17eec0a7d8bca4671a00474bff80e801981437b77aa11d10b56101eb557f294a84b7b46ea0a781877a2c0efd1ee56758d9ee55722721867efe53f46452866101ec557f02cb8070979a018bb919f0d1a25d5ad3d5a376c4cf66f36d33434d221ca77e886101ed557f05dfce8303f471d776762f2ddd37f05191b8bf5064d8d28e892cd4ec21e7aab46101ee557f28a47617aa1e26bf42fd3b26e88aa717fd759bb92b22faaf5ad82090680b52316101ef557f1de9253f5fa546603817abd83d1a13c8562f2bf6a0069a546fe546ca0c03c1706101f0557f1cb9bd316e341b873dbbef94fd699c6e3a638451de2817db1620235db2b6c39e6101f1557f0654785b2917d7c659a95738add3d8eb51cbbefc0f521c2640bc74b0fec581626101f2557f2eed74eacf5de60a758f815cb5e73015455c38408143fc25810d03e1ec9e35246101f3557f16bea3363deb4753db67be8b19110b169ae39f33113a92773c41a8b025ca5a936101f4557f2b0dd3b7e0a7e234a4a1b48dd0e9083dc8bfc8cd7f72abdb93a1b8e5ef3e22ed6101f5557f0bc1ca795d5a059b1dc0c51f72c46f2288cb139ebf09f38ac3e8bca0485ed4976101f6557f249ca1610a7f80bbf422388c18ef9777fcdab26ee718e2b39e4011973a9023306101f755620007b7565b6000602082840312156200068657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006e4578160001904821115620006c857620006c86200068d565b80851615620006d657918102915b93841c9390800290620006a8565b509250929050565b600082620006fd575060016200079c565b816200070c575060006200079c565b8160018114620007255760028114620007305762000750565b60019150506200079c565b60ff8411156200074457620007446200068d565b50506001821b6200079c565b5060208310610133831016604e8410600b841016171562000775575081810a6200079c565b620007818383620006a3565b80600019048211156200079857620007986200068d565b0290505b92915050565b6000620007b08383620006ec565b9392505050565b60805160a05160c051611d236200086c600039600081816103f901528181610bd501528181610cd701528181610e960152610f960152600081816102fc0152818161062a015281816108b701528181610dca015281816111cb0152818161137001526116b001526000818161022601528181610426015281816104870152818161060001528181610e0401528181610ecc01528181610f16015281816111430152818161122201526115eb0152611d236000f3fe608060405234801561001057600080fd5b50600436106101285760003560e01c80631b9b8aa71461012d5780631ffc735d1461015357806324a47aeb146101665780633bfa6fce146101795780633e1a8cc1146101815780634d60dea0146101895780634ee3ab51146101925780635bf1fa4d1461019c57806360fd4010146101af57806369e7c586146101d0578063715018a6146101f35780638129fc1c146101fd57806381d6a24a146102055780638858718e146102215780638da5cb5b14610248578063a27154ba14610268578063b6a64acd14610270578063c00bdbcc1461027e578063c15da65b14610291578063d9c55ce1146102a4578063dda89a6e146102ac578063e93fb4d4146102b6578063ed3adab3146102c9578063f2fde38b146102dc575b600080fd5b61014061013b3660046119de565b6102ef565b6040519081526020015b60405180910390f35b6101406101613660046119de565b6103a9565b6101406101743660046119de565b6104d6565b6101406108a9565b6101406108f7565b61014060665481565b6101406101d45481565b6101406101aa3660046119f7565b610953565b6101406101bd3660046119de565b6101b16020526000908152604090205481565b6101d3546101e390610100900460ff1681565b604051901515815260200161014a565b6101fb610a6f565b005b6101fb610a83565b6101d5546066546040805192835260208301919091520161014a565b6101407f000000000000000000000000000000000000000000000000000000000000000081565b610250610b94565b6040516001600160a01b03909116815260200161014a565b610140602081565b6101d3546101e39060ff1681565b6101fb61028c3660046119de565b610ba3565b6101fb61029f3660046119de565b610c1f565b6101fb610e8c565b6101406101d65481565b6101406102c43660046119de565b610fd3565b6101406102d73660046119de565b611054565b6101fb6102ea366004611a19565b61106c565b6101d654600090610320837f0000000000000000000000000000000000000000000000000000000000000000611b43565b101561038d5760405162461bcd60e51b815260206004820152603160248201527f41636351756575653a206765744d61696e526f6f743a205f6465707468206d756044820152700e6e840c4ca40d0d2ced040cadcdeeaced607b1b60648201526084015b60405180910390fd5b6101b282602181106103a1576103a1611b4f565b015492915050565b60006103b36110e2565b6101d6546103c2836000611141565b6103cd816001611b65565b6101d6556103de6101b26000611932565b60006101d4556101d3805460ff191690556101d65461041e907f000000000000000000000000000000000000000000000000000000000000000090611b7d565b6104ce5760677f00000000000000000000000000000000000000000000000000000000000000006021811061045557610455611b4f565b60040201546066805460009081526101b1602052604081209290925580549161047d83611b9f565b90915550606790507f0000000000000000000000000000000000000000000000000000000000000000602181106104b6576104b6611b4f565b6004020160008091018190556104ce9060eb90611932565b90505b919050565b60006104e06110e2565b6000821161053c5760405162461bcd60e51b8152602060048201526024808201527f41636351756575653a205f6465707468206d757374206265206d6f72652074686044820152630616e20360e41b6064820152608401610384565b6101d35460ff1661059e5760405162461bcd60e51b81526020600482015260386024820152600080516020611cce83398151915260448201527764206265666f72652063616c6c696e67206d65726765282960401b6064820152608401610384565b60208211156105fe5760405162461bcd60e51b815260206004820152602660248201527f41636351756575653a205f6465707468206d757374206265206c7465204d41586044820152650be888aa0a8960d31b6064820152608401610384565b7f00000000000000000000000000000000000000000000000000000000000000005b6101d65461064e827f0000000000000000000000000000000000000000000000000000000000000000611b43565b106106585761066a565b8061066281611b9f565b915050610620565b808310156106cd5760405162461bcd60e51b815260206004820152602a60248201527f41636351756575653a205f6465707468206d7573742062652067746520746865604482015269040a6a4a840c8cae0e8d60b31b6064820152608401610384565b8083141561070a576101d4546101b284602181106106ed576106ed611b4f565b015550506101d3805461ff0019166101001790556101d454919050565b6101d454815b84811015610878576000610723826112ab565b60655490915060ff16156107c357610739611941565b838152602081018290526040516362a361bb60e01b815273__$c6e409f5c6bff7020676808cc3963e859e$__906362a361bb9061077a908490600401611bba565b602060405180830381865af4158015610797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bb9190611beb565b935050610865565b6107cb61195f565b838152602081018290526040808201839052606082018390526080820183905251639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790610820908490600401611c04565b602060405180830381865af415801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108619190611beb565b9350505b508061087081611b9f565b915050610710565b50806101b2856021811061088e5761088e611b4f565b01556101d3805461ff00191661010017905591506104d19050565b600060015b6066546108db827f0000000000000000000000000000000000000000000000000000000000000000611b43565b106108e557919050565b806108ef81611b9f565b9150506108ae565b6101d35460009060ff1661094b5760405162461bcd60e51b81526020600482015260276024820152600080516020611cce8339815191526044820152661908199a5c9cdd60ca1b6064820152608401610384565b506101d45490565b600061095d61195f565b6067846021811061097057610970611b4f565b600402015481526067846021811061098a5761098a611b4f565b60040201600101548160016020020152606784602181106109ad576109ad611b4f565b60040201600201548160026020020152606784602181106109d0576109d0611b4f565b60040201600301548160036020020152828160046020020152604051639cfced9760e01b815260009073__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790610a23908590600401611c04565b602060405180830381865af4158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a649190611beb565b925050505b92915050565b610a776110e2565b610a8160006112c1565b565b600054610100900460ff1615808015610aa35750600054600160ff909116105b80610abd5750303b158015610abd575060005460ff166001145b610b205760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610384565b6000805460ff191660011790558015610b43576000805461ff0019166101001790555b610b4b611313565b8015610b91576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6033546001600160a01b031690565b610bab6110e2565b6066805460009081526101b16020526040812083905581549190610bce83611b9f565b91905055507f00000000000000000000000000000000000000000000000000000000000000006101d66000828254610c069190611b65565b909155505060006101d455506101d3805460ff19169055565b610c276110e2565b6101d35460ff1615610c855760405162461bcd60e51b815260206004820152602160248201527f41636351756575653a20737562747265657320616c7265616479206d657267656044820152601960fa1b6064820152608401610384565b60006101d65411610cd55760405162461bcd60e51b815260206004820152601a60248201527941636351756575653a206e6f7468696e6720746f206d6572676560301b6044820152606401610384565b7f00000000000000000000000000000000000000000000000000000000000000006101d654610d049190611b7d565b15610d1157610d11610e8c565b60665460011415610d3b57610d266000610fd3565b6101d4556101d3805460ff1916600117905550565b6000610d456108a9565b6101d5549091506000905b606654811015610dc1578315801590610d6857508382145b15610d735750505050565b610d8a610d826101d554610fd3565b600085611342565b6101d58054906000610d9b83611b9f565b91905055508180610dab90611b9f565b9250508080610db990611b9f565b915050610d50565b506000610dee837f0000000000000000000000000000000000000000000000000000000000000000611b43565b90506066546101d5541415610e58576000610e287f00000000000000000000000000000000000000000000000000000000000000006112ab565b6066549091505b82811015610e5557610e4382600087611342565b80610e4d81611b9f565b915050610e2f565b50505b61010c8360218110610e6c57610e6c611b4f565b60040201600001546101d45550506101d3805460ff191660011790555050565b610e946110e2565b7f00000000000000000000000000000000000000000000000000000000000000006101d654610ec39190611b7d565b610f0857610ef07f00000000000000000000000000000000000000000000000000000000000000006112ab565b60665460009081526101b16020526040902055610f79565b610f1260006115e9565b60677f000000000000000000000000000000000000000000000000000000000000000060218110610f4557610f45611b4f565b600402015460665460009081526101b16020526040812091909155610f6c9060679061197d565b610f796101b26000611932565b60006066546001610f8a9190611b65565b60668190559050610fbb7f000000000000000000000000000000000000000000000000000000000000000082611c2c565b6101d6555060006101d4556101d3805460ff19169055565b600081606654116110405760405162461bcd60e51b815260206004820152603160248201527f41636351756575653a205f696e646578206d75737420726566657220746f206160448201527020636f6d706c657465207375627472656560781b6064820152608401610384565b5060009081526101b1602052604090205490565b6101b2816021811061106557600080fd5b0154905081565b6110746110e2565b6001600160a01b0381166110d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610384565b610b91816112c1565b336110eb610b94565b6001600160a01b031614610a815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b7f00000000000000000000000000000000000000000000000000000000000000008111156111ab5760405162461bcd60e51b81526020600482015260176024820152761058d8d45d595d594e881a5b9d985b1a59081b195d995b604a1b6044820152606401610384565b600060eb82602181106111c0576111c0611b4f565b015490506111ef60017f0000000000000000000000000000000000000000000000000000000000000000611c4b565b811461127457826067836021811061120957611209611b4f565b60040201826004811061121e5761121e611b4f565b01557f0000000000000000000000000000000000000000000000000000000000000000821461126f5760eb826021811061125a5761125a611b4f565b01805490600061126983611b9f565b91905055505b505050565b61127e82846117c4565b925060eb826021811061129357611293611b4f565b6000910155816112a281611b9f565b925050506111ab565b60006101d782602181106103a1576103a1611b4f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661133a5760405162461bcd60e51b815260040161038490611c62565b610a81611902565b8082111561134f57505050565b6000610190836021811061136557611365611b4f565b0154905061139460017f0000000000000000000000000000000000000000000000000000000000000000611c4b565b81146113f3578361010c84602181106113af576113af611b4f565b6004020182600481106113c4576113c4611b4f565b015561019083602181106113da576113da611b4f565b0180549060006113e983611b9f565b91905055506115e3565b60655460009060ff16156114ae57611409611941565b61010c856021811061141d5761141d611b4f565b600490810291909101548252602082018790526040516362a361bb60e01b815273__$c6e409f5c6bff7020676808cc3963e859e$__916362a361bb9161146591859101611bba565b602060405180830381865af4158015611482573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a69190611beb565b9150506115b3565b6114b661195f565b60005b838160ff16101561151e5761010c86602181106114d8576114d8611b4f565b600402018160ff16600481106114f0576114f0611b4f565b0154828260ff166005811061150757611507611b4f565b60200201528061151681611cad565b9150506114b9565b508581846005811061153257611532611b4f565b6020020152604051639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced979061156e908490600401611c04565b602060405180830381865af415801561158b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115af9190611beb565b9150505b61019084602181106115c7576115c7611b4f565b60009101556115e1816115db866001611b65565b85611342565b505b50505050565b7f0000000000000000000000000000000000000000000000000000000000000000811015610b9157600060eb826021811061162657611626611b4f565b01549050801561179957600061163a61195f565b6000611645856112ab565b905060005b848160ff1610156116ae576067866021811061166857611668611b4f565b600402018160ff166004811061168057611680611b4f565b0154838260ff166005811061169757611697611b4f565b6020020152806116a681611cad565b91505061164a565b7f00000000000000000000000000000000000000000000000000000000000000008160ff1610156117065781838260ff16600581106116ef576116ef611b4f565b6020020152806116fe81611cad565b9150506116ae565b604051639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced979061173d908690600401611c04565b602060405180830381865af415801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190611beb565b93506117948461178f886001611b65565b611141565b505050505b60eb82602181106117ac576117ac611b4f565b6000910155816117bb81611b9f565b925050506115e9565b60006117ce61195f565b606784602181106117e1576117e1611b4f565b60040201548152606784602181106117fb576117fb611b4f565b600402016001015481600160200201526067846021811061181e5761181e611b4f565b600402016002015481600260200201526067846021811061184157611841611b4f565b60040201600301548160036020020152828160046020020152604051639cfced9760e01b815260009073__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790611894908590600401611c04565b602060405180830381865af41580156118b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d59190611beb565b9050606785602181106118ea576118ea611b4f565b6004020160006118fa919061198c565b949350505050565b600054610100900460ff166119295760405162461bcd60e51b815260040161038490611c62565b610a81336112c1565b50610b919060218101906119a8565b60405180604001604052806002906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b50610b919060848101906119c1565b5060008155600101600081556001016000815560010160009055565b5b808211156119bd57600081556001016119a9565b5090565b808211156119bd5760006119d5828261198c565b506004016119c1565b6000602082840312156119f057600080fd5b5035919050565b60008060408385031215611a0a57600080fd5b50508035926020909101359150565b600060208284031215611a2b57600080fd5b81356001600160a01b0381168114611a4257600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611a9a578160001904821115611a8057611a80611a49565b80851615611a8d57918102915b93841c9390800290611a64565b509250929050565b600082611ab157506001610a69565b81611abe57506000610a69565b8160018114611ad45760028114611ade57611afa565b6001915050610a69565b60ff841115611aef57611aef611a49565b50506001821b610a69565b5060208310610133831016604e8410600b8410161715611b1d575081810a610a69565b611b278383611a5f565b8060001904821115611b3b57611b3b611a49565b029392505050565b6000611a428383611aa2565b634e487b7160e01b600052603260045260246000fd5b60008219821115611b7857611b78611a49565b500190565b600082611b9a57634e487b7160e01b600052601260045260246000fd5b500690565b6000600019821415611bb357611bb3611a49565b5060010190565b60408101818360005b6002811015611be2578151835260209283019290910190600101611bc3565b50505092915050565b600060208284031215611bfd57600080fd5b5051919050565b60a08101818360005b6005811015611be2578151835260209283019290910190600101611c0d565b6000816000190483118215151615611c4657611c46611a49565b500290565b600082821015611c5d57611c5d611a49565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060ff821660ff811415611cc457611cc4611a49565b6001019291505056fe41636351756575653a207375627472656573206d757374206265206d65726765a2646970667358221220f80649095d1eb7e10092d74b15b65a36f51aba410679d6ea18218150930d38ee64736f6c634300080a0033"; + +type MessageTreeConstructorParams = + | [linkLibraryAddresses: MessageTreeLibraryAddresses, signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: MessageTreeConstructorParams +): xs is ConstructorParameters => { + return ( + typeof xs[0] === "string" || + (Array.isArray as (arg: any) => arg is readonly any[])(xs[0]) || + "_isInterface" in xs[0] + ); +}; + +export class MessageTree__factory extends ContractFactory { + constructor(...args: MessageTreeConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + const [linkLibraryAddresses, signer] = args; + super( + _abi, + MessageTree__factory.linkBytecode(linkLibraryAddresses), + signer + ); + } + } + + static linkBytecode( + linkLibraryAddresses: MessageTreeLibraryAddresses + ): string { + let linkedBytecode = _bytecode; + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$c6e409f5c6bff7020676808cc3963e859e\\$__", "g"), + linkLibraryAddresses["contracts/AccQueue.sol:PoseidonT3"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$cedc09603cb2be64c780c22aabaab86809\\$__", "g"), + linkLibraryAddresses["contracts/AccQueue.sol:PoseidonT6"] + .replace(/^0x/, "") + .toLowerCase() + ); + + return linkedBytecode; + } + + override deploy( + _subDepth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(_subDepth, overrides || {}) as Promise; + } + override getDeployTransaction( + _subDepth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(_subDepth, overrides || {}); + } + override attach(address: string): MessageTree { + return super.attach(address) as MessageTree; + } + override connect(signer: Signer): MessageTree__factory { + return super.connect(signer) as MessageTree__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): MessageTreeInterface { + return new utils.Interface(_abi) as MessageTreeInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): MessageTree { + return new Contract(address, _abi, signerOrProvider) as MessageTree; + } +} + +export interface MessageTreeLibraryAddresses { + ["contracts/AccQueue.sol:PoseidonT3"]: string; + ["contracts/AccQueue.sol:PoseidonT6"]: string; +} diff --git a/packages/contracts/typechain-types/factories/contracts/StateTree__factory.ts b/packages/contracts/typechain-types/factories/contracts/StateTree__factory.ts new file mode 100644 index 00000000..c6f4cf1d --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/StateTree__factory.ts @@ -0,0 +1,494 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BigNumberish, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../common"; +import type { StateTree, StateTreeInterface } from "../../contracts/StateTree"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "_subDepth", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [], + name: "MAX_DEPTH", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "calcMinHeight", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "currentSubtreeIndex", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_leaf", + type: "uint256", + }, + ], + name: "enqueue", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "fill", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_depth", + type: "uint256", + }, + ], + name: "getMainRoot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSmallSRTroot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getSrIndices", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_index", + type: "uint256", + }, + ], + name: "getSubRoot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_level", + type: "uint256", + }, + { + internalType: "uint256", + name: "_leaf", + type: "uint256", + }, + ], + name: "hashLevelLeaf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_subRoot", + type: "uint256", + }, + ], + name: "insertSubTree", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "mainRoots", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_depth", + type: "uint256", + }, + ], + name: "merge", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_numSrQueueOps", + type: "uint256", + }, + ], + name: "mergeSubRoots", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "numLeaves", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "smallSRTroot", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "subDepth", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "subRoots", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "subTreesMerged", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "treeMerged", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x60e06040523480156200001157600080fd5b506040516200258f3803806200258f833981016040819052620000349162000673565b80806005600082116200009e5760405162461bcd60e51b815260206004820152602760248201527f41636351756575653a205f7375624465707468206d757374206265206d6f72656044820152660207468616e20360cc1b60648201526084015b60405180910390fd5b6020821115620001085760405162461bcd60e51b815260206004820152602e60248201527f41636351756575653a206f6e6c7920737570706f72747320757020746f204d4160448201526d585f4445505448206c6576656c7360901b606482015260840162000095565b8060021480620001185750806005145b6200017c5760405162461bcd60e51b815260206004820152602d60248201527f41636351756575653a206f6e6c7920737570706f727473205f686173684c656e60448201526c677468206f662032206f72203560981b606482015260840162000095565b6065805460ff191660028314179055608082905260a0819052620001a18282620007a2565b60c05250507f0ef71f46e11a513c599eed9dd03576c33439bcfb1cee155316f90541e41649ba6101d75550507f0404a2ed0a1df2006441895d9a65ffffdd4968cb5f555fe72a6da7aaec83e1a06101d8557f0b1c3d09dd575749a374a9dc1ee32af8c2312e24ad33a3e40fce8120b0f25fe36101d9557f1f60ed72fc1915366d2e52cfc7ddc0ff854c7aee9abbc07d1ca88ada842354dc6101da557f2ca1efc603fc121baf791319195ee3ab7fa075cee664d008f9ab2870f50283606101db557f2a0381fc4fb108733dfc58c355f2de753bcde61bd988eaa7d33fc967262be5ad6101dc557f12c6c7cce0332367373dafc95d75b98dd58980410434929dff09466a4ba262db6101dd557f2f212d3cc7e7334c4a10ced1be011b9cd70f73cca5522fc4137a51be8a17d18e6101de557f0968ef20d515d8d743b2cf66603f8b86f3fdeee932fdc911774bb8699566e11c6101df557f2e3604981890fb676c3dac1e14c5c201573f99d1b9e67025109baf274b10e9dd6101e0557f147d317fd4b7a1dd6cb961cfba444466b3c431ea638c8df74a89fc591d1a3a516101e1557f10ea2b72952b619afd5b9bc50561df8de0c6e1ba9b5ad66b179c39c420304a756101e2557f1c49f7b357d244d9144676ad23f79465ef5b88ef0f91762a3d35997688af9a5a6101e3557f05ca0cfef8158efc5c4af44122e2765179b5463618d5c5ac6185c192332cade96101e4557f0ae1595634e8a2e23620f33f9b2b5a23387a28f5833814646900110842f3a1096101e5557f08be8c2a6a099d9cdc96f9197af6ad99595d73419eb0694eaea432fa18baa2036101e6557f207f689ce35cf857ee6e68c42d31bb2191d1e84d7a295ccd63995ca7369d20eb6101e7557f2a6f6b7e4a2cd1a6466ed17debb0a27904e99adbd72be85566a87340f41efd056101e8557f0f0725795350566920bbf56d3f22c4d38e832e638c9cb91811f83194e9dd74be6101e9557f02cd50632e5c5b00a9a93f434797725ec0f85f11ba1b6a844f0cd10c70df63926101ea557f08868b85d2fa4c17eec0a7d8bca4671a00474bff80e801981437b77aa11d10b56101eb557f294a84b7b46ea0a781877a2c0efd1ee56758d9ee55722721867efe53f46452866101ec557f02cb8070979a018bb919f0d1a25d5ad3d5a376c4cf66f36d33434d221ca77e886101ed557f05dfce8303f471d776762f2ddd37f05191b8bf5064d8d28e892cd4ec21e7aab46101ee557f28a47617aa1e26bf42fd3b26e88aa717fd759bb92b22faaf5ad82090680b52316101ef557f1de9253f5fa546603817abd83d1a13c8562f2bf6a0069a546fe546ca0c03c1706101f0557f1cb9bd316e341b873dbbef94fd699c6e3a638451de2817db1620235db2b6c39e6101f1557f0654785b2917d7c659a95738add3d8eb51cbbefc0f521c2640bc74b0fec581626101f2557f2eed74eacf5de60a758f815cb5e73015455c38408143fc25810d03e1ec9e35246101f3557f16bea3363deb4753db67be8b19110b169ae39f33113a92773c41a8b025ca5a936101f4557f2b0dd3b7e0a7e234a4a1b48dd0e9083dc8bfc8cd7f72abdb93a1b8e5ef3e22ed6101f5557f0bc1ca795d5a059b1dc0c51f72c46f2288cb139ebf09f38ac3e8bca0485ed4976101f6557f249ca1610a7f80bbf422388c18ef9777fcdab26ee718e2b39e4011973a9023306101f755620007b7565b6000602082840312156200068657600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006e4578160001904821115620006c857620006c86200068d565b80851615620006d657918102915b93841c9390800290620006a8565b509250929050565b600082620006fd575060016200079c565b816200070c575060006200079c565b8160018114620007255760028114620007305762000750565b60019150506200079c565b60ff8411156200074457620007446200068d565b50506001821b6200079c565b5060208310610133831016604e8410600b841016171562000775575081810a6200079c565b620007818383620006a3565b80600019048211156200079857620007986200068d565b0290505b92915050565b6000620007b08383620006ec565b9392505050565b60805160a05160c051611d236200086c600039600081816103f901528181610bd501528181610cd701528181610e960152610f960152600081816102fc0152818161062a015281816108b701528181610dca015281816111cb0152818161137001526116b001526000818161022601528181610426015281816104870152818161060001528181610e0401528181610ecc01528181610f16015281816111430152818161122201526115eb0152611d236000f3fe608060405234801561001057600080fd5b50600436106101285760003560e01c80631b9b8aa71461012d5780631ffc735d1461015357806324a47aeb146101665780633bfa6fce146101795780633e1a8cc1146101815780634d60dea0146101895780634ee3ab51146101925780635bf1fa4d1461019c57806360fd4010146101af57806369e7c586146101d0578063715018a6146101f35780638129fc1c146101fd57806381d6a24a146102055780638858718e146102215780638da5cb5b14610248578063a27154ba14610268578063b6a64acd14610270578063c00bdbcc1461027e578063c15da65b14610291578063d9c55ce1146102a4578063dda89a6e146102ac578063e93fb4d4146102b6578063ed3adab3146102c9578063f2fde38b146102dc575b600080fd5b61014061013b3660046119de565b6102ef565b6040519081526020015b60405180910390f35b6101406101613660046119de565b6103a9565b6101406101743660046119de565b6104d6565b6101406108a9565b6101406108f7565b61014060665481565b6101406101d45481565b6101406101aa3660046119f7565b610953565b6101406101bd3660046119de565b6101b16020526000908152604090205481565b6101d3546101e390610100900460ff1681565b604051901515815260200161014a565b6101fb610a6f565b005b6101fb610a83565b6101d5546066546040805192835260208301919091520161014a565b6101407f000000000000000000000000000000000000000000000000000000000000000081565b610250610b94565b6040516001600160a01b03909116815260200161014a565b610140602081565b6101d3546101e39060ff1681565b6101fb61028c3660046119de565b610ba3565b6101fb61029f3660046119de565b610c1f565b6101fb610e8c565b6101406101d65481565b6101406102c43660046119de565b610fd3565b6101406102d73660046119de565b611054565b6101fb6102ea366004611a19565b61106c565b6101d654600090610320837f0000000000000000000000000000000000000000000000000000000000000000611b43565b101561038d5760405162461bcd60e51b815260206004820152603160248201527f41636351756575653a206765744d61696e526f6f743a205f6465707468206d756044820152700e6e840c4ca40d0d2ced040cadcdeeaced607b1b60648201526084015b60405180910390fd5b6101b282602181106103a1576103a1611b4f565b015492915050565b60006103b36110e2565b6101d6546103c2836000611141565b6103cd816001611b65565b6101d6556103de6101b26000611932565b60006101d4556101d3805460ff191690556101d65461041e907f000000000000000000000000000000000000000000000000000000000000000090611b7d565b6104ce5760677f00000000000000000000000000000000000000000000000000000000000000006021811061045557610455611b4f565b60040201546066805460009081526101b1602052604081209290925580549161047d83611b9f565b90915550606790507f0000000000000000000000000000000000000000000000000000000000000000602181106104b6576104b6611b4f565b6004020160008091018190556104ce9060eb90611932565b90505b919050565b60006104e06110e2565b6000821161053c5760405162461bcd60e51b8152602060048201526024808201527f41636351756575653a205f6465707468206d757374206265206d6f72652074686044820152630616e20360e41b6064820152608401610384565b6101d35460ff1661059e5760405162461bcd60e51b81526020600482015260386024820152600080516020611cce83398151915260448201527764206265666f72652063616c6c696e67206d65726765282960401b6064820152608401610384565b60208211156105fe5760405162461bcd60e51b815260206004820152602660248201527f41636351756575653a205f6465707468206d757374206265206c7465204d41586044820152650be888aa0a8960d31b6064820152608401610384565b7f00000000000000000000000000000000000000000000000000000000000000005b6101d65461064e827f0000000000000000000000000000000000000000000000000000000000000000611b43565b106106585761066a565b8061066281611b9f565b915050610620565b808310156106cd5760405162461bcd60e51b815260206004820152602a60248201527f41636351756575653a205f6465707468206d7573742062652067746520746865604482015269040a6a4a840c8cae0e8d60b31b6064820152608401610384565b8083141561070a576101d4546101b284602181106106ed576106ed611b4f565b015550506101d3805461ff0019166101001790556101d454919050565b6101d454815b84811015610878576000610723826112ab565b60655490915060ff16156107c357610739611941565b838152602081018290526040516362a361bb60e01b815273__$c6e409f5c6bff7020676808cc3963e859e$__906362a361bb9061077a908490600401611bba565b602060405180830381865af4158015610797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bb9190611beb565b935050610865565b6107cb61195f565b838152602081018290526040808201839052606082018390526080820183905251639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790610820908490600401611c04565b602060405180830381865af415801561083d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108619190611beb565b9350505b508061087081611b9f565b915050610710565b50806101b2856021811061088e5761088e611b4f565b01556101d3805461ff00191661010017905591506104d19050565b600060015b6066546108db827f0000000000000000000000000000000000000000000000000000000000000000611b43565b106108e557919050565b806108ef81611b9f565b9150506108ae565b6101d35460009060ff1661094b5760405162461bcd60e51b81526020600482015260276024820152600080516020611cce8339815191526044820152661908199a5c9cdd60ca1b6064820152608401610384565b506101d45490565b600061095d61195f565b6067846021811061097057610970611b4f565b600402015481526067846021811061098a5761098a611b4f565b60040201600101548160016020020152606784602181106109ad576109ad611b4f565b60040201600201548160026020020152606784602181106109d0576109d0611b4f565b60040201600301548160036020020152828160046020020152604051639cfced9760e01b815260009073__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790610a23908590600401611c04565b602060405180830381865af4158015610a40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a649190611beb565b925050505b92915050565b610a776110e2565b610a8160006112c1565b565b600054610100900460ff1615808015610aa35750600054600160ff909116105b80610abd5750303b158015610abd575060005460ff166001145b610b205760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610384565b6000805460ff191660011790558015610b43576000805461ff0019166101001790555b610b4b611313565b8015610b91576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6033546001600160a01b031690565b610bab6110e2565b6066805460009081526101b16020526040812083905581549190610bce83611b9f565b91905055507f00000000000000000000000000000000000000000000000000000000000000006101d66000828254610c069190611b65565b909155505060006101d455506101d3805460ff19169055565b610c276110e2565b6101d35460ff1615610c855760405162461bcd60e51b815260206004820152602160248201527f41636351756575653a20737562747265657320616c7265616479206d657267656044820152601960fa1b6064820152608401610384565b60006101d65411610cd55760405162461bcd60e51b815260206004820152601a60248201527941636351756575653a206e6f7468696e6720746f206d6572676560301b6044820152606401610384565b7f00000000000000000000000000000000000000000000000000000000000000006101d654610d049190611b7d565b15610d1157610d11610e8c565b60665460011415610d3b57610d266000610fd3565b6101d4556101d3805460ff1916600117905550565b6000610d456108a9565b6101d5549091506000905b606654811015610dc1578315801590610d6857508382145b15610d735750505050565b610d8a610d826101d554610fd3565b600085611342565b6101d58054906000610d9b83611b9f565b91905055508180610dab90611b9f565b9250508080610db990611b9f565b915050610d50565b506000610dee837f0000000000000000000000000000000000000000000000000000000000000000611b43565b90506066546101d5541415610e58576000610e287f00000000000000000000000000000000000000000000000000000000000000006112ab565b6066549091505b82811015610e5557610e4382600087611342565b80610e4d81611b9f565b915050610e2f565b50505b61010c8360218110610e6c57610e6c611b4f565b60040201600001546101d45550506101d3805460ff191660011790555050565b610e946110e2565b7f00000000000000000000000000000000000000000000000000000000000000006101d654610ec39190611b7d565b610f0857610ef07f00000000000000000000000000000000000000000000000000000000000000006112ab565b60665460009081526101b16020526040902055610f79565b610f1260006115e9565b60677f000000000000000000000000000000000000000000000000000000000000000060218110610f4557610f45611b4f565b600402015460665460009081526101b16020526040812091909155610f6c9060679061197d565b610f796101b26000611932565b60006066546001610f8a9190611b65565b60668190559050610fbb7f000000000000000000000000000000000000000000000000000000000000000082611c2c565b6101d6555060006101d4556101d3805460ff19169055565b600081606654116110405760405162461bcd60e51b815260206004820152603160248201527f41636351756575653a205f696e646578206d75737420726566657220746f206160448201527020636f6d706c657465207375627472656560781b6064820152608401610384565b5060009081526101b1602052604090205490565b6101b2816021811061106557600080fd5b0154905081565b6110746110e2565b6001600160a01b0381166110d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610384565b610b91816112c1565b336110eb610b94565b6001600160a01b031614610a815760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b7f00000000000000000000000000000000000000000000000000000000000000008111156111ab5760405162461bcd60e51b81526020600482015260176024820152761058d8d45d595d594e881a5b9d985b1a59081b195d995b604a1b6044820152606401610384565b600060eb82602181106111c0576111c0611b4f565b015490506111ef60017f0000000000000000000000000000000000000000000000000000000000000000611c4b565b811461127457826067836021811061120957611209611b4f565b60040201826004811061121e5761121e611b4f565b01557f0000000000000000000000000000000000000000000000000000000000000000821461126f5760eb826021811061125a5761125a611b4f565b01805490600061126983611b9f565b91905055505b505050565b61127e82846117c4565b925060eb826021811061129357611293611b4f565b6000910155816112a281611b9f565b925050506111ab565b60006101d782602181106103a1576103a1611b4f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661133a5760405162461bcd60e51b815260040161038490611c62565b610a81611902565b8082111561134f57505050565b6000610190836021811061136557611365611b4f565b0154905061139460017f0000000000000000000000000000000000000000000000000000000000000000611c4b565b81146113f3578361010c84602181106113af576113af611b4f565b6004020182600481106113c4576113c4611b4f565b015561019083602181106113da576113da611b4f565b0180549060006113e983611b9f565b91905055506115e3565b60655460009060ff16156114ae57611409611941565b61010c856021811061141d5761141d611b4f565b600490810291909101548252602082018790526040516362a361bb60e01b815273__$c6e409f5c6bff7020676808cc3963e859e$__916362a361bb9161146591859101611bba565b602060405180830381865af4158015611482573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a69190611beb565b9150506115b3565b6114b661195f565b60005b838160ff16101561151e5761010c86602181106114d8576114d8611b4f565b600402018160ff16600481106114f0576114f0611b4f565b0154828260ff166005811061150757611507611b4f565b60200201528061151681611cad565b9150506114b9565b508581846005811061153257611532611b4f565b6020020152604051639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced979061156e908490600401611c04565b602060405180830381865af415801561158b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115af9190611beb565b9150505b61019084602181106115c7576115c7611b4f565b60009101556115e1816115db866001611b65565b85611342565b505b50505050565b7f0000000000000000000000000000000000000000000000000000000000000000811015610b9157600060eb826021811061162657611626611b4f565b01549050801561179957600061163a61195f565b6000611645856112ab565b905060005b848160ff1610156116ae576067866021811061166857611668611b4f565b600402018160ff166004811061168057611680611b4f565b0154838260ff166005811061169757611697611b4f565b6020020152806116a681611cad565b91505061164a565b7f00000000000000000000000000000000000000000000000000000000000000008160ff1610156117065781838260ff16600581106116ef576116ef611b4f565b6020020152806116fe81611cad565b9150506116ae565b604051639cfced9760e01b815273__$cedc09603cb2be64c780c22aabaab86809$__90639cfced979061173d908690600401611c04565b602060405180830381865af415801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190611beb565b93506117948461178f886001611b65565b611141565b505050505b60eb82602181106117ac576117ac611b4f565b6000910155816117bb81611b9f565b925050506115e9565b60006117ce61195f565b606784602181106117e1576117e1611b4f565b60040201548152606784602181106117fb576117fb611b4f565b600402016001015481600160200201526067846021811061181e5761181e611b4f565b600402016002015481600260200201526067846021811061184157611841611b4f565b60040201600301548160036020020152828160046020020152604051639cfced9760e01b815260009073__$cedc09603cb2be64c780c22aabaab86809$__90639cfced9790611894908590600401611c04565b602060405180830381865af41580156118b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d59190611beb565b9050606785602181106118ea576118ea611b4f565b6004020160006118fa919061198c565b949350505050565b600054610100900460ff166119295760405162461bcd60e51b815260040161038490611c62565b610a81336112c1565b50610b919060218101906119a8565b60405180604001604052806002906020820280368337509192915050565b6040518060a001604052806005906020820280368337509192915050565b50610b919060848101906119c1565b5060008155600101600081556001016000815560010160009055565b5b808211156119bd57600081556001016119a9565b5090565b808211156119bd5760006119d5828261198c565b506004016119c1565b6000602082840312156119f057600080fd5b5035919050565b60008060408385031215611a0a57600080fd5b50508035926020909101359150565b600060208284031215611a2b57600080fd5b81356001600160a01b0381168114611a4257600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611a9a578160001904821115611a8057611a80611a49565b80851615611a8d57918102915b93841c9390800290611a64565b509250929050565b600082611ab157506001610a69565b81611abe57506000610a69565b8160018114611ad45760028114611ade57611afa565b6001915050610a69565b60ff841115611aef57611aef611a49565b50506001821b610a69565b5060208310610133831016604e8410600b8410161715611b1d575081810a610a69565b611b278383611a5f565b8060001904821115611b3b57611b3b611a49565b029392505050565b6000611a428383611aa2565b634e487b7160e01b600052603260045260246000fd5b60008219821115611b7857611b78611a49565b500190565b600082611b9a57634e487b7160e01b600052601260045260246000fd5b500690565b6000600019821415611bb357611bb3611a49565b5060010190565b60408101818360005b6002811015611be2578151835260209283019290910190600101611bc3565b50505092915050565b600060208284031215611bfd57600080fd5b5051919050565b60a08101818360005b6005811015611be2578151835260209283019290910190600101611c0d565b6000816000190483118215151615611c4657611c46611a49565b500290565b600082821015611c5d57611c5d611a49565b500390565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060ff821660ff811415611cc457611cc4611a49565b6001019291505056fe41636351756575653a207375627472656573206d757374206265206d65726765a264697066735822122035d3c327cb697e983233470463d98dc00de7c855eb5feb0e729abb045039bd0564736f6c634300080a0033"; + +type StateTreeConstructorParams = + | [linkLibraryAddresses: StateTreeLibraryAddresses, signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: StateTreeConstructorParams +): xs is ConstructorParameters => { + return ( + typeof xs[0] === "string" || + (Array.isArray as (arg: any) => arg is readonly any[])(xs[0]) || + "_isInterface" in xs[0] + ); +}; + +export class StateTree__factory extends ContractFactory { + constructor(...args: StateTreeConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + const [linkLibraryAddresses, signer] = args; + super( + _abi, + StateTree__factory.linkBytecode(linkLibraryAddresses), + signer + ); + } + } + + static linkBytecode(linkLibraryAddresses: StateTreeLibraryAddresses): string { + let linkedBytecode = _bytecode; + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$c6e409f5c6bff7020676808cc3963e859e\\$__", "g"), + linkLibraryAddresses["contracts/AccQueue.sol:PoseidonT3"] + .replace(/^0x/, "") + .toLowerCase() + ); + + linkedBytecode = linkedBytecode.replace( + new RegExp("__\\$cedc09603cb2be64c780c22aabaab86809\\$__", "g"), + linkLibraryAddresses["contracts/AccQueue.sol:PoseidonT6"] + .replace(/^0x/, "") + .toLowerCase() + ); + + return linkedBytecode; + } + + override deploy( + _subDepth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(_subDepth, overrides || {}) as Promise; + } + override getDeployTransaction( + _subDepth: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(_subDepth, overrides || {}); + } + override attach(address: string): StateTree { + return super.attach(address) as StateTree; + } + override connect(signer: Signer): StateTree__factory { + return super.connect(signer) as StateTree__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): StateTreeInterface { + return new utils.Interface(_abi) as StateTreeInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): StateTree { + return new Contract(address, _abi, signerOrProvider) as StateTree; + } +} + +export interface StateTreeLibraryAddresses { + ["contracts/AccQueue.sol:PoseidonT3"]: string; + ["contracts/AccQueue.sol:PoseidonT6"]: string; +} diff --git a/packages/contracts/typechain-types/factories/contracts/VkRegistry__factory.ts b/packages/contracts/typechain-types/factories/contracts/VkRegistry__factory.ts new file mode 100644 index 00000000..30a1c519 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/VkRegistry__factory.ts @@ -0,0 +1,1398 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../common"; +import type { + VkRegistry, + VkRegistryInterface, +} from "../../contracts/VkRegistry"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "ProcessVkSet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "SubsidyVkSet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "TallyVkSet", + type: "event", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageBatchSize", + type: "uint256", + }, + ], + name: "genProcessVkSig", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "genSubsidyVkSig", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "genTallyVkSig", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageBatchSize", + type: "uint256", + }, + ], + name: "getProcessVk", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "getProcessVkBySig", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "getSubsidyVk", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "getSubsidyVkBySig", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "getTallyVk", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "getTallyVkBySig", + outputs: [ + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageBatchSize", + type: "uint256", + }, + ], + name: "hasProcessVk", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "hasSubsidyVk", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + ], + name: "hasTallyVk", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "isProcessVkSet", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "isSubsidyVkSet", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_sig", + type: "uint256", + }, + ], + name: "isTallyVkSet", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "_subsidyVk", + type: "tuple", + }, + ], + name: "setSubsidyKeys", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_stateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_intStateTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_voteOptionTreeDepth", + type: "uint256", + }, + { + internalType: "uint256", + name: "_messageBatchSize", + type: "uint256", + }, + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "_processVk", + type: "tuple", + }, + { + components: [ + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point", + name: "alpha1", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "beta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "gamma2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256[2]", + name: "x", + type: "uint256[2]", + }, + { + internalType: "uint256[2]", + name: "y", + type: "uint256[2]", + }, + ], + internalType: "struct Pairing.G2Point", + name: "delta2", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "x", + type: "uint256", + }, + { + internalType: "uint256", + name: "y", + type: "uint256", + }, + ], + internalType: "struct Pairing.G1Point[]", + name: "ic", + type: "tuple[]", + }, + ], + internalType: "struct VkRegistry.VerifyingKey", + name: "_tallyVk", + type: "tuple", + }, + ], + name: "setVerifyingKeys", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61194c8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100fc5760003560e01c80630bfbd4fe14610101578063141a87641461012a57806317b7f8101461014b5780631afe11ef1461012a578063257752d31461017e57806326960517146101a157806341951d4f146101b45780634f1b0e5f146101c9578063715018a6146101dc5780638bc1a599146101e45780638da5cb5b146101f7578063935a2bc514610217578063a76191861461023a578063abc61c6b1461024d578063b2e3953014610260578063ba2ff7ab14610273578063c7c8beec14610286578063db9f755b14610299578063f1a510b0146102ac578063f2fde38b146102bf575b600080fd5b61011461010f3660046113a8565b6102d2565b6040516101219190611425565b60405180910390f35b61013d6101383660046114d8565b6102fd565b604051908152602001610121565b61016e610159366004611504565b60009081526004602052604090205460ff1690565b6040519015158152602001610121565b61016e61018c366004611504565b60009081526002602052604090205460ff1690565b61016e6101af3660046114d8565b610324565b6101c76101c2366004611796565b61034d565b005b61016e6101d73660046113a8565b610556565b6101c7610581565b6101146101f2366004611504565b610595565b6101ff610822565b6040516001600160a01b039091168152602001610121565b61016e610225366004611504565b60009081526006602052604090205460ff1690565b61016e6102483660046114d8565b610831565b6101c761025b3660046117ef565b61085a565b61013d61026e3660046113a8565b610c47565b610114610281366004611504565b610c7e565b6101146102943660046114d8565b610eef565b6101146102a7366004611504565b610f0b565b6101146102ba3660046114d8565b611179565b6101c76102cd366004611882565b611199565b6102da6112c1565b60006102e886868686610c47565b90506102f381610c7e565b9695505050505050565b600081610312604085901b608087901b6118c8565b61031c91906118c8565b949350505050565b6000806103328585856102fd565b60009081526004602052604090205460ff1695945050505050565b610355611212565b60006103628585856102fd565b60008181526006602052604090205490915060ff16156103d45760405162461bcd60e51b815260206004820152602260248201527f566b52656769737472793a207375627369647920766b20616c72656164792073604482015261195d60f21b60648201526084015b60405180910390fd5b6000818152600560209081526040909120835180518255820151600182015590830151805160028084019161040b91839190611312565b5060208201516104219060028084019190611312565b50505060408301518051600683019061043d9082906002611312565b5060208201516104539060028084019190611312565b50505060608301518051600a83019061046f9082906002611312565b5060208201516104859060028084019190611312565b5090505060005b8360800151518160ff1610156104fa5781600e0184608001518260ff16815181106104b9576104b96118e0565b6020908102919091018101518254600181810185556000948552938390208251600290920201908155910151910155806104f2816118f6565b91505061048c565b5060008281526006602052604090819020805460ff19166001179055517f85392fd56cfeb44bd3078be9ad4b18cbcc4ad1256a9fe8922ef360ef1ed26927906105469084815260200190565b60405180910390a1505050505050565b60008061056586868686610c47565b60009081526002602052604090205460ff169695505050505050565b610589611212565b6105936000611271565b565b61059d6112c1565b60008281526006602052604090205460ff1661060d5760405162461bcd60e51b815260206004820152602960248201527f566b52656769737472793a207375627369647920766572696679696e67206b656044820152681e481b9bdd081cd95d60ba1b60648201526084016103cb565b600082815260056020908152604091829020825160e081018452815460a08201908152600183015460c08301528152835160808101808652919492938501929091600280860192849290830191849182845b81548152602001906001019080831161065f57505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610695575050509190925250505081526040805160808101808352602090930192909160068501918391820190839060029082845b8154815260200190600101908083116106d957505050918352505060408051808201918290526020909201919060028481019182845b81548152602001906001019080831161070f5750505091909252505050815260408051608081018083526020909301929091600a8501918391820190839060029082845b81548152602001906001019080831161075357505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610789575050505050815250508152602001600e8201805480602002602001604051908101604052809291908181526020016000905b82821015610814578382906000526020600020906002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906107ce565b505050915250909392505050565b6000546001600160a01b031690565b60008061083f8585856102fd565b60009081526006602052604090205460ff1695945050505050565b610862611212565b600061087088878787610c47565b60008181526002602052604090205490915060ff16156108dd5760405162461bcd60e51b815260206004820152602260248201527f566b52656769737472793a2070726f6365737320766b20616c72656164792073604482015261195d60f21b60648201526084016103cb565b60006108ea8989886102fd565b60008181526004602052604090205490915060ff161561094c5760405162461bcd60e51b815260206004820181905260248201527f566b52656769737472793a2074616c6c7920766b20616c72656164792073657460448201526064016103cb565b60008281526001602081815260409092208651805182558301519181019190915590850151805160028084019161098591839190611312565b50602082015161099b9060028084019190611312565b5050506040850151805160068301906109b79082906002611312565b5060208201516109cd9060028084019190611312565b50505060608501518051600a8301906109e99082906002611312565b5060208201516109ff9060028084019190611312565b5090505060005b8560800151518160ff161015610a745781600e0186608001518260ff1681518110610a3357610a336118e0565b602090810291909101810151825460018181018555600094855293839020825160029092020190815591015191015580610a6c816118f6565b915050610a06565b506000838152600260208181526040808420805460ff19166001908117909155868552600383529320875180518255820151938101939093558601518051909183810191610ac491839190611312565b506020820151610ada9060028084019190611312565b505050604085015180516006830190610af69082906002611312565b506020820151610b0c9060028084019190611312565b50505060608501518051600a830190610b289082906002611312565b506020820151610b3e9060028084019190611312565b5090505060005b8560800151518160ff161015610bb35781600e0186608001518260ff1681518110610b7257610b726118e0565b602090810291909101810151825460018181018555600094855293839020825160029092020190815591015191015580610bab816118f6565b915050610b45565b5060008381526004602052604090819020805460ff19166001179055517f8f43c6d3469daf791f866fe1e4abbf6f0d05622995407c31724c500801558a3590610bff9085815260200190565b60405180910390a16040518481527f865b6bc6650679c23b8967ee4ae722034eb0634534e4963caf7cf662a6f3731c9060200160405180910390a15050505050505050505050565b600082604085901b610c61608088901b60c086901b6118c8565b610c6b91906118c8565b610c7591906118c8565b95945050505050565b610c866112c1565b60008281526002602052604090205460ff16610cf65760405162461bcd60e51b815260206004820152602960248201527f566b52656769737472793a2070726f6365737320766572696679696e67206b656044820152681e481b9bdd081cd95d60ba1b60648201526084016103cb565b600082815260016020818152604092839020835160e081018552815460a082019081529382015460c08201529283528351608081018086526002808401805497840197885295969395948701949293849290918491600389016060860180831161065f5750505091835250506040805180820191829052600284810180548352602094850194929390926003870190850180831161069557505050919092525050508152604080516080810180835260068501805493830193845260209094019391928391839060029060078901606086018083116106d95750505091835250506040805180820191829052600284810180548352602094850194929390926003870190850180831161070f575050509190925250505081526040805160808101808352600a85018054938301938452602090940193919283918390600290600b89016060860180831161075357505050918352505060408051808201918290526002848101805483526020948501949293909260038701908501808311610789575050505050815250508152602001600e82018054806020026020016040519081016040528092919081815260200160009082821015610814578382906000526020600020906002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906107ce565b610ef76112c1565b6000610f048585856102fd565b9050610c75815b610f136112c1565b60008281526004602052604090205460ff16610f815760405162461bcd60e51b815260206004820152602760248201527f566b52656769737472793a2074616c6c7920766572696679696e67206b6579206044820152661b9bdd081cd95d60ca1b60648201526084016103cb565b600082815260036020818152604092839020835160e081018552815460a08201908152600183015460c0830152815284516080810180875260028085018054988401988952939794969588019592948593909285929189016060860180831161065f5750505091835250506040805180820191829052600284810180548352602094850194929390926003870190850180831161069557505050919092525050508152604080516080810180835260068501805493830193845260209094019391928391839060029060078901606086018083116106d95750505091835250506040805180820191829052600284810180548352602094850194929390926003870190850180831161070f575050509190925250505081526040805160808101808352600a85018054938301938452602090940193919283918390600290600b89016060860180831161075357505050918352505060408051808201918290526002848101805483526020948501949293909260038701908501808311610789575050505050815250508152602001600e82018054806020026020016040519081016040528092919081815260200160009082821015610814578382906000526020600020906002020160405180604001604052908160008201548152602001600182015481525050815260200190600101906107ce565b6111816112c1565b600061118e8585856102fd565b9050610c7581610595565b6111a1611212565b6001600160a01b0381166112065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103cb565b61120f81611271565b50565b3361121b610822565b6001600160a01b0316146105935760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103cb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805160e08101909152600060a0820181815260c08301919091528152602081016112eb611350565b81526020016112f8611350565b8152602001611305611350565b8152602001606081525090565b8260028101928215611340579160200282015b82811115611340578251825591602001919060010190611325565b5061134c929150611375565b5090565b604051806040016040528061136361138a565b815260200161137061138a565b905290565b5b8082111561134c5760008155600101611376565b60405180604001604052806002906020820280368337509192915050565b600080600080608085870312156113be57600080fd5b5050823594602084013594506040840135936060013592509050565b8060005b60028110156113fd5781518452602093840193909101906001016113de565b50505050565b61140e8282516113da565b602081015161142060408401826113da565b505050565b6020808252825180518383015281015160408301526000906102008301818501516114536060860182611403565b5060408086015161146760e0870182611403565b50606086015161147b610160870182611403565b5060808601516101e0868101528051928390528301916000906102208701905b808310156114cc576114b882865180518252602090810151910152565b93850193600192909201919083019061149b565b50979650505050505050565b6000806000606084860312156114ed57600080fd5b505081359360208301359350604090920135919050565b60006020828403121561151657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156115555761155561151d565b60405290565b60405160a081016001600160401b03811182821017156115555761155561151d565b604051601f8201601f191681016001600160401b03811182821017156115a5576115a561151d565b604052919050565b6000604082840312156115bf57600080fd5b6115c7611533565b9050813581526020820135602082015292915050565b600082601f8301126115ee57600080fd5b604080519081016001600160401b03811182821017156116105761161061151d565b806040525080604084018581111561162757600080fd5b845b81811015611641578035835260209283019201611629565b509195945050505050565b60006080828403121561165e57600080fd5b611666611533565b905061167283836115dd565b815261168183604084016115dd565b602082015292915050565b60006101e0828403121561169f57600080fd5b6116a761155b565b90506116b383836115ad565b815260406116c38482850161164c565b602081818501526116d78660c0870161164c565b838501526116e986610140870161164c565b60608501526101c085013591506001600160401b038083111561170b57600080fd5b828601925086601f84011261171f57600080fd5b8235818111156117315761173161151d565b61173f838260051b0161157d565b818152838101925060069190911b84018301908882111561175f57600080fd5b938301935b818510156117855761177689866115ad565b83529385019391830191611764565b608087015250939695505050505050565b600080600080608085870312156117ac57600080fd5b84359350602085013592506040850135915060608501356001600160401b038111156117d757600080fd5b6117e38782880161168c565b91505092959194509250565b600080600080600080600060e0888a03121561180a57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a08801356001600160401b038082111561184457600080fd5b6118508b838c0161168c565b935060c08a013591508082111561186657600080fd5b506118738a828b0161168c565b91505092959891949750929550565b60006020828403121561189457600080fd5b81356001600160a01b03811681146118ab57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600082198211156118db576118db6118b2565b500190565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff81141561190d5761190d6118b2565b6001019291505056fea2646970667358221220e499b926609cde39ff8b3ec0b82481e1d1ede5da5396d74a3bdfcdddb82acca764736f6c634300080a0033"; + +type VkRegistryConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: VkRegistryConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class VkRegistry__factory extends ContractFactory { + constructor(...args: VkRegistryConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): VkRegistry { + return super.attach(address) as VkRegistry; + } + override connect(signer: Signer): VkRegistry__factory { + return super.connect(signer) as VkRegistry__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): VkRegistryInterface { + return new utils.Interface(_abi) as VkRegistryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): VkRegistry { + return new Contract(address, _abi, signerOrProvider) as VkRegistry; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/ConstantInitialVoiceCreditProxy__factory.ts b/packages/contracts/typechain-types/factories/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/ConstantInitialVoiceCreditProxy__factory.ts new file mode 100644 index 00000000..67c33823 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/ConstantInitialVoiceCreditProxy__factory.ts @@ -0,0 +1,116 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BigNumberish, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../common"; +import type { + ConstantInitialVoiceCreditProxy, + ConstantInitialVoiceCreditProxyInterface, +} from "../../../../contracts/flavors/ConstantInitialVoiceCreditProxy.sol/ConstantInitialVoiceCreditProxy"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "_balance", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + name: "getVoiceCredits", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b506040516101d23803806101d283398101604081905261002f91610037565b600055610050565b60006020828403121561004957600080fd5b5051919050565b6101738061005f6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b36543a914610030575b600080fd5b61004661003e36600461006e565b505060005490565b60405190815260200160405180910390f35b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561008157600080fd5b82356001600160a01b038116811461009857600080fd5b915060208301356001600160401b03808211156100b457600080fd5b818501915085601f8301126100c857600080fd5b8135818111156100da576100da610058565b604051601f8201601f19908116603f0116810190838211818310171561010257610102610058565b8160405282815288602084870101111561011b57600080fd5b826020860160208301376000602084830101528095505050505050925092905056fea264697066735822122026e8e89f3ba02877b889f8a77a3ff8c399f623fb771f05dc6d67d3954942dc6264736f6c634300080a0033"; + +type ConstantInitialVoiceCreditProxyConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ConstantInitialVoiceCreditProxyConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ConstantInitialVoiceCreditProxy__factory extends ContractFactory { + constructor(...args: ConstantInitialVoiceCreditProxyConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + _balance: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _balance, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _balance: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(_balance, overrides || {}); + } + override attach(address: string): ConstantInitialVoiceCreditProxy { + return super.attach(address) as ConstantInitialVoiceCreditProxy; + } + override connect(signer: Signer): ConstantInitialVoiceCreditProxy__factory { + return super.connect(signer) as ConstantInitialVoiceCreditProxy__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ConstantInitialVoiceCreditProxyInterface { + return new utils.Interface( + _abi + ) as ConstantInitialVoiceCreditProxyInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ConstantInitialVoiceCreditProxy { + return new Contract( + address, + _abi, + signerOrProvider + ) as ConstantInitialVoiceCreditProxy; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/InitialVoiceCreditProxy__factory.ts b/packages/contracts/typechain-types/factories/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/InitialVoiceCreditProxy__factory.ts new file mode 100644 index 00000000..82d63431 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/InitialVoiceCreditProxy__factory.ts @@ -0,0 +1,54 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + InitialVoiceCreditProxy, + InitialVoiceCreditProxyInterface, +} from "../../../../contracts/flavors/ConstantInitialVoiceCreditProxy.sol/InitialVoiceCreditProxy"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "bytes", + name: "_data", + type: "bytes", + }, + ], + name: "getVoiceCredits", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class InitialVoiceCreditProxy__factory { + static readonly abi = _abi; + static createInterface(): InitialVoiceCreditProxyInterface { + return new utils.Interface(_abi) as InitialVoiceCreditProxyInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): InitialVoiceCreditProxy { + return new Contract( + address, + _abi, + signerOrProvider + ) as InitialVoiceCreditProxy; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/index.ts b/packages/contracts/typechain-types/factories/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/index.ts new file mode 100644 index 00000000..3e01a15b --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { ConstantInitialVoiceCreditProxy__factory } from "./ConstantInitialVoiceCreditProxy__factory"; +export { InitialVoiceCreditProxy__factory } from "./InitialVoiceCreditProxy__factory"; diff --git a/packages/contracts/typechain-types/factories/contracts/flavors/F.sol/FreeForAllGatekeeper__factory.ts b/packages/contracts/typechain-types/factories/contracts/flavors/F.sol/FreeForAllGatekeeper__factory.ts new file mode 100644 index 00000000..e0d7cf4a --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/flavors/F.sol/FreeForAllGatekeeper__factory.ts @@ -0,0 +1,85 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../common"; +import type { + FreeForAllGatekeeper, + FreeForAllGatekeeperInterface, +} from "../../../../contracts/flavors/F.sol/FreeForAllGatekeeper"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + name: "register", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b5061015f806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806324b8fbf614610030575b600080fd5b61004261003e36600461005a565b5050565b005b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561006d57600080fd5b82356001600160a01b038116811461008457600080fd5b915060208301356001600160401b03808211156100a057600080fd5b818501915085601f8301126100b457600080fd5b8135818111156100c6576100c6610044565b604051601f8201601f19908116603f011681019083821181831017156100ee576100ee610044565b8160405282815288602084870101111561010757600080fd5b826020860160208301376000602084830101528095505050505050925092905056fea2646970667358221220ec82d9283bae10f5485f9841f1fb41ff075cc8288e2ac786382960c73ab5d62564736f6c634300080a0033"; + +type FreeForAllGatekeeperConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: FreeForAllGatekeeperConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class FreeForAllGatekeeper__factory extends ContractFactory { + constructor(...args: FreeForAllGatekeeperConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): FreeForAllGatekeeper { + return super.attach(address) as FreeForAllGatekeeper; + } + override connect(signer: Signer): FreeForAllGatekeeper__factory { + return super.connect(signer) as FreeForAllGatekeeper__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): FreeForAllGatekeeperInterface { + return new utils.Interface(_abi) as FreeForAllGatekeeperInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): FreeForAllGatekeeper { + return new Contract( + address, + _abi, + signerOrProvider + ) as FreeForAllGatekeeper; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/flavors/F.sol/index.ts b/packages/contracts/typechain-types/factories/contracts/flavors/F.sol/index.ts new file mode 100644 index 00000000..26884461 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/flavors/F.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { FreeForAllGatekeeper__factory } from "./FreeForAllGatekeeper__factory"; diff --git a/packages/contracts/typechain-types/factories/contracts/flavors/IInitialVoiceCreditProxy__factory.ts b/packages/contracts/typechain-types/factories/contracts/flavors/IInitialVoiceCreditProxy__factory.ts new file mode 100644 index 00000000..9109f064 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/flavors/IInitialVoiceCreditProxy__factory.ts @@ -0,0 +1,54 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IInitialVoiceCreditProxy, + IInitialVoiceCreditProxyInterface, +} from "../../../contracts/flavors/IInitialVoiceCreditProxy"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "bytes", + name: "_data", + type: "bytes", + }, + ], + name: "getVoiceCredits", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class IInitialVoiceCreditProxy__factory { + static readonly abi = _abi; + static createInterface(): IInitialVoiceCreditProxyInterface { + return new utils.Interface(_abi) as IInitialVoiceCreditProxyInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IInitialVoiceCreditProxy { + return new Contract( + address, + _abi, + signerOrProvider + ) as IInitialVoiceCreditProxy; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/flavors/ISignUpGatekeeper__factory.ts b/packages/contracts/typechain-types/factories/contracts/flavors/ISignUpGatekeeper__factory.ts new file mode 100644 index 00000000..9dc1b9e5 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/flavors/ISignUpGatekeeper__factory.ts @@ -0,0 +1,44 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + ISignUpGatekeeper, + ISignUpGatekeeperInterface, +} from "../../../contracts/flavors/ISignUpGatekeeper"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "bytes", + name: "_data", + type: "bytes", + }, + ], + name: "register", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class ISignUpGatekeeper__factory { + static readonly abi = _abi; + static createInterface(): ISignUpGatekeeperInterface { + return new utils.Interface(_abi) as ISignUpGatekeeperInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ISignUpGatekeeper { + return new Contract(address, _abi, signerOrProvider) as ISignUpGatekeeper; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/flavors/NFTSignup.sol/InitialVoiceCreditProxy__factory.ts b/packages/contracts/typechain-types/factories/contracts/flavors/NFTSignup.sol/InitialVoiceCreditProxy__factory.ts new file mode 100644 index 00000000..21b04a5c --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/flavors/NFTSignup.sol/InitialVoiceCreditProxy__factory.ts @@ -0,0 +1,54 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + InitialVoiceCreditProxy, + InitialVoiceCreditProxyInterface, +} from "../../../../contracts/flavors/NFTSignup.sol/InitialVoiceCreditProxy"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "bytes", + name: "_data", + type: "bytes", + }, + ], + name: "getVoiceCredits", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class InitialVoiceCreditProxy__factory { + static readonly abi = _abi; + static createInterface(): InitialVoiceCreditProxyInterface { + return new utils.Interface(_abi) as InitialVoiceCreditProxyInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): InitialVoiceCreditProxy { + return new Contract( + address, + _abi, + signerOrProvider + ) as InitialVoiceCreditProxy; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/flavors/NFTSignup.sol/NFTSignup__factory.ts b/packages/contracts/typechain-types/factories/contracts/flavors/NFTSignup.sol/NFTSignup__factory.ts new file mode 100644 index 00000000..7542e81d --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/flavors/NFTSignup.sol/NFTSignup__factory.ts @@ -0,0 +1,390 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BigNumberish, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../common"; +import type { + NFTSignup, + NFTSignupInterface, +} from "../../../../contracts/flavors/NFTSignup.sol/NFTSignup"; + +const _abi = [ + { + inputs: [ + { + internalType: "contract SignUpNFT", + name: "_token", + type: "address", + }, + { + internalType: "uint256", + name: "_balance", + type: "uint256", + }, + { + internalType: "address", + name: "_operator", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "_recipientId", + type: "bytes32", + }, + { + indexed: false, + internalType: "address", + name: "_recipient", + type: "address", + }, + { + indexed: false, + internalType: "string", + name: "_metadata", + type: "string", + }, + { + indexed: false, + internalType: "uint256", + name: "_index", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "_timestamp", + type: "uint256", + }, + ], + name: "RecipientAdded", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "_recipientId", + type: "bytes32", + }, + { + indexed: false, + internalType: "uint256", + name: "_timestamp", + type: "uint256", + }, + ], + name: "RecipientRemoved", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "_recipient", + type: "address", + }, + { + internalType: "string", + name: "_metadata", + type: "string", + }, + ], + name: "addRecipient", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "balance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "controller", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_index", + type: "uint256", + }, + { + internalType: "uint256", + name: "_startTime", + type: "uint256", + }, + { + internalType: "uint256", + name: "_endTime", + type: "uint256", + }, + ], + name: "getRecipientAddress", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getRecipientCount", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "maxRecipients", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "nft", + outputs: [ + { + internalType: "contract SignUpNFT", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "operator", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "bytes", + name: "_data", + type: "bytes", + }, + ], + name: "register", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_recipientId", + type: "bytes32", + }, + ], + name: "removeRecipient", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_maxRecipients", + type: "uint256", + }, + ], + name: "setMaxRecipients", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b5060405161126a38038061126a83398101604081905261002f916100ec565b8061003933610084565b600180546001600160a01b039283166001600160a01b03199182161790915560068054938316938216939093179092556007929092556008805493909216921691909117905561012f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100e957600080fd5b50565b60008060006060848603121561010157600080fd5b835161010c816100d4565b602085015160408601519194509250610124816100d4565b809150509250925092565b61112c8061013e6000396000f3fe608060405234801561001057600080fd5b50600436106100ba5760003560e01c8063148ec9ab146100bf57806324b8fbf6146100e757806347ccca02146100fc578063570ca7351461012757806362564ed41461013a578063715018a61461014d578063739b53841461015557806388a13072146101685780638da5cb5b1461017f578063af99b63f14610187578063b69ef8a81461018f578063d7c9ebdd14610198578063f2fde38b146101ab578063f77c4791146101be575b600080fd5b6100d26100cd366004610dab565b6101d1565b60405190151581526020015b60405180910390f35b6100fa6100f5366004610def565b610275565b005b60085461010f906001600160a01b031681565b6040516001600160a01b0390911681526020016100de565b60065461010f906001600160a01b031681565b61010f610148366004610eb2565b6104bf565b6100fa610640565b6100fa610163366004610ede565b610654565b61017160025481565b6040519081526020016100de565b61010f6107b1565b6101716107c0565b61017160075481565b6100fa6101a6366004610dab565b6107d7565b6100fa6101b9366004610f62565b610825565b60015461010f906001600160a01b031681565b6000600254821015610252576040805162461bcd60e51b81526020600482015260248101919091527f526563697069656e7452656769737472793a204d6178206e756d626572206f6660448201527f20726563697069656e74732063616e206e6f742062652064656372656173656460648201526084015b60405180910390fd5b6001546001600160a01b0316331461026c57506000919050565b50600255600190565b6006546001600160a01b031633146103085760405162461bcd60e51b815260206004820152604a60248201527f5369676e5570546f6b656e476174656b65657065723a206f6e6c79207370656360448201527f6966696564204d41434920696e7374616e63652063616e2063616c6c207468696064820152693990333ab731ba34b7b760b11b608482015260a401610249565b60008180602001905181019061031e9190610f7f565b6008546040516331a9108f60e11b8152600481018390529192506000916001600160a01b03868116921690636352211e90602401602060405180830381865afa15801561036f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103939190610f98565b6001600160a01b03161490506001811461040f5760405162461bcd60e51b815260206004820152603760248201527f5369676e5570546f6b656e476174656b65657065723a20746869732075736572604482015276103237b2b9903737ba1037bbb7103a3432903a37b5b2b760491b6064820152608401610249565b60008281526009602052604090205460ff1680156104a05760405162461bcd60e51b815260206004820152604260248201527f5369676e5570546f6b656e476174656b65657065723a207468697320746f6b6560448201527f6e2068617320616c7265616479206265656e207573656420746f207369676e20606482015261075760f41b608482015260a401610249565b50506000908152600960205260409020805460ff191660011790555050565b60008315806104cf575060055484115b156104dc57506000610639565b600060056104eb600187610fcb565b815481106104fb576104fb610fe2565b9060005260206000200180548060200260200160405190810160405280929190818152602001828054801561054f57602002820191906000526020600020905b81548152602001906001019080831161053b575b5050505050905080516000141561056a576000915050610639565b80516000905b801561063457600083610584600184610fcb565b8151811061059457610594610fe2565b60209081029190910181015160008181526003808452604091829020825160808101845281546001600160a01b031681526001820154958101959095526002810154928501839052015460608401529092508710156105f4575050610622565b60608101511580159061060b575087816060015111155b1561061d578395505050505050610639565b519250505b8061062c81610ff8565b915050610570565b509150505b9392505050565b61064861089e565b61065260006108fd565b565b61065c61089e565b6001600160a01b0383166106c75760405162461bcd60e51b815260206004820152602c60248201527f526563697069656e7452656769737472793a20526563697069656e742061646460448201526b72657373206973207a65726f60a01b6064820152608401610249565b8061072d5760405162461bcd60e51b815260206004820152603060248201527f526563697069656e7452656769737472793a204d6574616461746120696e666f60448201526f20697320656d70747920737472696e6760801b6064820152608401610249565b60008383836040516020016107449392919061100f565b6040516020818303038152906040528051906020012090506000610768828661094d565b9050817fddc3968b1ce25baf13504e6d2de09bbf72f4b32b9d80e2f4914842f0f9217b0d86868685426040516107a2959493929190611037565b60405180910390a25050505050565b6000546001600160a01b031690565b6004546005546000916107d291610fcb565b905090565b6107df61089e565b6107e881610c29565b807fc678e7ee92280740c8b3be4826e92b29fb5477e2ddc3eb2e9ca45f74daa4972e4260405161081a91815260200190565b60405180910390a250565b61082d61089e565b6001600160a01b0381166108925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610249565b61089b816108fd565b50565b336108a76107b1565b6001600160a01b0316146106525760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610249565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600254116109a45760405162461bcd60e51b815260206004820152602d60248201526000805160206110b783398151915260448201526c1a5d081a5cc81b9bdd081cd95d609a1b6064820152608401610249565b60008381526003602052604090206001015415610a095760405162461bcd60e51b815260206004820152602f60248201526000805160206110d783398151915260448201526e1958591e481c9959da5cdd195c9959608a1b6064820152608401610249565b6005546000908190610a1c906001611088565b90506002548111610abb576040805160018082528183019092529192508291600091602080830190803683370190505090508581600081518110610a6257610a62610fe2565b602090810291909101810191909152600580546001810182556000919091528251610ab4927f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090920191840190610d4b565b5050610bbb565b600454610b0b5760405162461bcd60e51b815260206004820152602a60248201526000805160206110b78339815191526044820152691a5d081c995858da195960b21b6064820152608401610249565b6004805460009190610b1f90600190610fcb565b81548110610b2f57610b2f610fe2565b906000526020600020015490506004805480610b4d57610b4d6110a0565b60019003818190600052602060002001600090559055600360008281526020019081526020016000206001015492506005600184610b8b9190610fcb565b81548110610b9b57610b9b610fe2565b600091825260208083209091018054600181018255908352912001869055505b50604080516080810182526001600160a01b0380861682526020808301858152428486019081526000606086018181528b82526003948590529690209451855494166001600160a01b0319909416939093178455516001840155905160028301559151910155905092915050565b600081815260036020526040902060010154610ca35760405162461bcd60e51b815260206004820152603360248201527f526563697069656e7452656769737472793a20526563697069656e74206973206044820152726e6f7420696e2074686520726567697374727960681b6064820152608401610249565b6000818152600360208190526040909120015415610d065760405162461bcd60e51b815260206004820152602c60248201526000805160206110d783398151915260448201526b1958591e481c995b5bdd995960a21b6064820152608401610249565b60008181526003602081905260408220429101556004805460018101825591527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0155565b828054828255906000526020600020908101928215610d86579160200282015b82811115610d86578251825591602001919060010190610d6b565b50610d92929150610d96565b5090565b5b80821115610d925760008155600101610d97565b600060208284031215610dbd57600080fd5b5035919050565b6001600160a01b038116811461089b57600080fd5b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610e0257600080fd5b8235610e0d81610dc4565b915060208301356001600160401b0380821115610e2957600080fd5b818501915085601f830112610e3d57600080fd5b813581811115610e4f57610e4f610dd9565b604051601f8201601f19908116603f01168101908382118183101715610e7757610e77610dd9565b81604052828152886020848701011115610e9057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600060608486031215610ec757600080fd5b505081359360208301359350604090920135919050565b600080600060408486031215610ef357600080fd5b8335610efe81610dc4565b925060208401356001600160401b0380821115610f1a57600080fd5b818601915086601f830112610f2e57600080fd5b813581811115610f3d57600080fd5b876020828501011115610f4f57600080fd5b6020830194508093505050509250925092565b600060208284031215610f7457600080fd5b813561063981610dc4565b600060208284031215610f9157600080fd5b5051919050565b600060208284031215610faa57600080fd5b815161063981610dc4565b634e487b7160e01b600052601160045260246000fd5b600082821015610fdd57610fdd610fb5565b500390565b634e487b7160e01b600052603260045260246000fd5b60008161100757611007610fb5565b506000190190565b606084901b6001600160601b0319168152818360148301376000910160140190815292915050565b6001600160a01b03861681526080602082018190528101849052838560a0830137600060a08583010152600060a0601f19601f87011683010190508360408301528260608301529695505050505050565b6000821982111561109b5761109b610fb5565b500190565b634e487b7160e01b600052603160045260246000fdfe526563697069656e7452656769737472793a20526563697069656e74206c696d526563697069656e7452656769737472793a20526563697069656e7420616c72a2646970667358221220c738a94dd1503600d09bb3b1714778db38d233058748d4a4cd600b0031ba3c0a64736f6c634300080a0033"; + +type NFTSignupConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: NFTSignupConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class NFTSignup__factory extends ContractFactory { + constructor(...args: NFTSignupConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + _token: PromiseOrValue, + _balance: PromiseOrValue, + _operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _token, + _balance, + _operator, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _token: PromiseOrValue, + _balance: PromiseOrValue, + _operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction( + _token, + _balance, + _operator, + overrides || {} + ); + } + override attach(address: string): NFTSignup { + return super.attach(address) as NFTSignup; + } + override connect(signer: Signer): NFTSignup__factory { + return super.connect(signer) as NFTSignup__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): NFTSignupInterface { + return new utils.Interface(_abi) as NFTSignupInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): NFTSignup { + return new Contract(address, _abi, signerOrProvider) as NFTSignup; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/flavors/NFTSignup.sol/SignUpNFT__factory.ts b/packages/contracts/typechain-types/factories/contracts/flavors/NFTSignup.sol/SignUpNFT__factory.ts new file mode 100644 index 00000000..a328c3df --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/flavors/NFTSignup.sol/SignUpNFT__factory.ts @@ -0,0 +1,468 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../common"; +import type { + SignUpNFT, + SignUpNFTInterface, +} from "../../../../contracts/flavors/NFTSignup.sol/SignUpNFT"; + +const _abi = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "approved", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "operator", + type: "address", + }, + { + indexed: false, + internalType: "bool", + name: "approved", + type: "bool", + }, + ], + name: "ApprovalForAll", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "approve", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "getApproved", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "giveToken", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + name: "isApprovedForAll", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "ownerOf", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "safeTransferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "safeTransferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + { + internalType: "bool", + name: "approved", + type: "bool", + }, + ], + name: "setApprovalForAll", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "tokenURI", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x60806040523480156200001157600080fd5b50604080518082018252600b8082526a29b4b3b72ab82a37b5b2b760a91b6020808401828152855180870190965292855284015281519192916200005891600091620000e7565b5080516200006e906001906020840190620000e7565b5050506200008b620000856200009160201b60201c565b62000095565b620001ca565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620000f5906200018d565b90600052602060002090601f01602090048101928262000119576000855562000164565b82601f106200013457805160ff191683800117855562000164565b8280016001018555821562000164579182015b828111156200016457825182559160200191906001019062000147565b506200017292915062000176565b5090565b5b8082111562000172576000815560010162000177565b600181811c90821680620001a257607f821691505b60208210811415620001c457634e487b7160e01b600052602260045260246000fd5b50919050565b6113c380620001da6000396000f3fe608060405234801561001057600080fd5b50600436106100db5760003560e01c806301ffc9a7146100e057806306fdde0314610108578063081812fc1461011d578063095ea7b314610148578063193f974c1461015d57806323b872dd1461017057806342842e0e146101835780636352211e1461019657806370a08231146101a9578063715018a6146101ca5780638da5cb5b146101d257806395d89b41146101da578063a22cb465146101e2578063b88d4fde146101f5578063c87b56dd14610208578063e985e9c51461021b578063f2fde38b1461022e575b600080fd5b6100f36100ee366004610ebf565b610241565b60405190151581526020015b60405180910390f35b610110610293565b6040516100ff9190610f34565b61013061012b366004610f47565b610325565b6040516001600160a01b0390911681526020016100ff565b61015b610156366004610f7c565b61034c565b005b61015b61016b366004610f7c565b610467565b61015b61017e366004610fa6565b61047d565b61015b610191366004610fa6565b6104ae565b6101306101a4366004610f47565b6104c9565b6101bc6101b7366004610fe2565b6104fd565b6040519081526020016100ff565b61015b610583565b610130610597565b6101106105a6565b61015b6101f0366004610ffd565b6105b5565b61015b61020336600461104f565b6105c0565b610110610216366004610f47565b6105f8565b6100f361022936600461112a565b61066c565b61015b61023c366004610fe2565b61069a565b60006001600160e01b031982166380ac58cd60e01b148061027257506001600160e01b03198216635b5e139f60e01b145b8061028d57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102a29061115d565b80601f01602080910402602001604051908101604052809291908181526020018280546102ce9061115d565b801561031b5780601f106102f05761010080835404028352916020019161031b565b820191906000526020600020905b8154815290600101906020018083116102fe57829003601f168201915b5050505050905090565b600061033082610713565b506000908152600460205260409020546001600160a01b031690565b6000610357826104c9565b9050806001600160a01b0316836001600160a01b031614156103ca5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103e657506103e6813361066c565b6104585760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103c1565b6104628383610738565b505050565b61046f6107a6565b6104798282610805565b5050565b6104873382610900565b6104a35760405162461bcd60e51b81526004016103c190611198565b61046283838361095f565b610462838383604051806020016040528060008152506105c0565b6000806104d583610ab1565b90506001600160a01b03811661028d5760405162461bcd60e51b81526004016103c1906111e5565b60006001600160a01b0382166105675760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103c1565b506001600160a01b031660009081526003602052604090205490565b61058b6107a6565b6105956000610acc565b565b6006546001600160a01b031690565b6060600180546102a29061115d565b610479338383610b1e565b6105ca3383610900565b6105e65760405162461bcd60e51b81526004016103c190611198565b6105f284848484610be9565b50505050565b606061060382610713565b600061061a60408051602081019091526000815290565b9050600081511161063a5760405180602001604052806000815250610665565b8061064484610c1c565b604051602001610655929190611217565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a26107a6565b6001600160a01b0381166107075760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103c1565b61071081610acc565b50565b61071c81610cb8565b6107105760405162461bcd60e51b81526004016103c1906111e5565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061076d826104c9565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b336107af610597565b6001600160a01b0316146105955760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c1565b6001600160a01b03821661085b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016103c1565b61086481610cb8565b156108815760405162461bcd60e51b81526004016103c190611246565b61088a81610cb8565b156108a75760405162461bcd60e51b81526004016103c190611246565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b03191684179055518392919060008051602061136e833981519152908290a45050565b60008061090c836104c9565b9050806001600160a01b0316846001600160a01b031614806109335750610933818561066c565b806109575750836001600160a01b031661094c84610325565b6001600160a01b0316145b949350505050565b826001600160a01b0316610972826104c9565b6001600160a01b0316146109985760405162461bcd60e51b81526004016103c19061127c565b6001600160a01b0382166109fa5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103c1565b826001600160a01b0316610a0d826104c9565b6001600160a01b031614610a335760405162461bcd60e51b81526004016103c19061127c565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652600385528386208054600019019055908716808652838620805460010190558686526002909452828520805490921684179091559051849360008051602061136e83398151915291a4505050565b6000908152600260205260409020546001600160a01b031690565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03161415610b7c5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016103c1565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610bf484848461095f565b610c0084848484610cd5565b6105f25760405162461bcd60e51b81526004016103c1906112c1565b60606000610c2983610dd3565b60010190506000816001600160401b03811115610c4857610c48611039565b6040519080825280601f01601f191660200182016040528015610c72576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610cab57610cb0565b610c7c565b509392505050565b600080610cc483610ab1565b6001600160a01b0316141592915050565b60006001600160a01b0384163b15610dc857604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610d19903390899088908890600401611313565b6020604051808303816000875af1925050508015610d54575060408051601f3d908101601f19168201909252610d5191810190611350565b60015b610dae573d808015610d82576040519150601f19603f3d011682016040523d82523d6000602084013e610d87565b606091505b508051610da65760405162461bcd60e51b81526004016103c1906112c1565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610957565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610e125772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310610e3c576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310610e5a57662386f26fc10000830492506010015b6305f5e1008310610e72576305f5e100830492506008015b6127108310610e8657612710830492506004015b60648310610e98576064830492506002015b600a831061028d5760010192915050565b6001600160e01b03198116811461071057600080fd5b600060208284031215610ed157600080fd5b813561066581610ea9565b60005b83811015610ef7578181015183820152602001610edf565b838111156105f25750506000910152565b60008151808452610f20816020860160208601610edc565b601f01601f19169290920160200192915050565b6020815260006106656020830184610f08565b600060208284031215610f5957600080fd5b5035919050565b80356001600160a01b0381168114610f7757600080fd5b919050565b60008060408385031215610f8f57600080fd5b610f9883610f60565b946020939093013593505050565b600080600060608486031215610fbb57600080fd5b610fc484610f60565b9250610fd260208501610f60565b9150604084013590509250925092565b600060208284031215610ff457600080fd5b61066582610f60565b6000806040838503121561101057600080fd5b61101983610f60565b91506020830135801515811461102e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561106557600080fd5b61106e85610f60565b935061107c60208601610f60565b92506040850135915060608501356001600160401b038082111561109f57600080fd5b818701915087601f8301126110b357600080fd5b8135818111156110c5576110c5611039565b604051601f8201601f19908116603f011681019083821181831017156110ed576110ed611039565b816040528281528a602084870101111561110657600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561113d57600080fd5b61114683610f60565b915061115460208401610f60565b90509250929050565b600181811c9082168061117157607f821691505b6020821081141561119257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b60008351611229818460208801610edc565b83519083019061123d818360208801610edc565b01949350505050565b6020808252601c908201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604082015260600190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061134690830184610f08565b9695505050505050565b60006020828403121561136257600080fd5b815161066581610ea956feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122063c0025bbed1041f46b0f1b4307d1265fed9367f5f1a6e78b96d5b662ba9e14264736f6c634300080a0033"; + +type SignUpNFTConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: SignUpNFTConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class SignUpNFT__factory extends ContractFactory { + constructor(...args: SignUpNFTConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): SignUpNFT { + return super.attach(address) as SignUpNFT; + } + override connect(signer: Signer): SignUpNFT__factory { + return super.connect(signer) as SignUpNFT__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): SignUpNFTInterface { + return new utils.Interface(_abi) as SignUpNFTInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): SignUpNFT { + return new Contract(address, _abi, signerOrProvider) as SignUpNFT; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/flavors/NFTSignup.sol/index.ts b/packages/contracts/typechain-types/factories/contracts/flavors/NFTSignup.sol/index.ts new file mode 100644 index 00000000..77298b79 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/flavors/NFTSignup.sol/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { InitialVoiceCreditProxy__factory } from "./InitialVoiceCreditProxy__factory"; +export { NFTSignup__factory } from "./NFTSignup__factory"; +export { SignUpNFT__factory } from "./SignUpNFT__factory"; diff --git a/packages/contracts/typechain-types/factories/contracts/flavors/SimpleHackathon__factory.ts b/packages/contracts/typechain-types/factories/contracts/flavors/SimpleHackathon__factory.ts new file mode 100644 index 00000000..e94accdd --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/flavors/SimpleHackathon__factory.ts @@ -0,0 +1,362 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BigNumberish, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + SimpleHackathon, + SimpleHackathonInterface, +} from "../../../contracts/flavors/SimpleHackathon"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "_balance", + type: "uint256", + }, + { + internalType: "address", + name: "_operator", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "_recipientId", + type: "bytes32", + }, + { + indexed: false, + internalType: "address", + name: "_recipient", + type: "address", + }, + { + indexed: false, + internalType: "string", + name: "_metadata", + type: "string", + }, + { + indexed: false, + internalType: "uint256", + name: "_index", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "_timestamp", + type: "uint256", + }, + ], + name: "RecipientAdded", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "_recipientId", + type: "bytes32", + }, + { + indexed: false, + internalType: "uint256", + name: "_timestamp", + type: "uint256", + }, + ], + name: "RecipientRemoved", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "_recipient", + type: "address", + }, + { + internalType: "string", + name: "_metadata", + type: "string", + }, + ], + name: "addRecipient", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "controller", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_index", + type: "uint256", + }, + { + internalType: "uint256", + name: "_startTime", + type: "uint256", + }, + { + internalType: "uint256", + name: "_endTime", + type: "uint256", + }, + ], + name: "getRecipientAddress", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getRecipientCount", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + name: "getVoiceCredits", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "maxRecipients", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "_user", + type: "address", + }, + { + internalType: "bytes", + name: "_data", + type: "bytes", + }, + ], + name: "register", + outputs: [], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_recipientId", + type: "bytes32", + }, + ], + name: "removeRecipient", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_maxRecipients", + type: "uint256", + }, + ], + name: "setMaxRecipients", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b506040516110ae3803806110ae83398101604081905261002f916100c0565b8061003933610070565b600180546001600160a01b039283166001600160a01b031991821617909155600780549390921692169190911790556006556100fd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100d357600080fd5b825160208401519092506001600160a01b03811681146100f257600080fd5b809150509250929050565b610fa28061010c6000396000f3fe608060405234801561001057600080fd5b50600436106100a45760003560e01c8063148ec9ab146100a957806324b8fbf6146100d157806362564ed4146100e6578063715018a614610111578063739b53841461011957806388a130721461012c5780638da5cb5b14610143578063af99b63f1461014b578063b36543a914610153578063d7c9ebdd14610169578063f2fde38b1461017c578063f77c47911461018f575b600080fd5b6100bc6100b7366004610c56565b6101a2565b60405190151581526020015b60405180910390f35b6100e46100df366004610ca1565b610246565b005b6100f96100f4366004610d62565b61036a565b6040516001600160a01b0390911681526020016100c8565b6100e46104eb565b6100e4610127366004610d8e565b6104ff565b61013560025481565b6040519081526020016100c8565b6100f961065c565b61013561066b565b610135610161366004610ca1565b505060065490565b6100e4610177366004610c56565b610682565b6100e461018a366004610e10565b6106d0565b6001546100f9906001600160a01b031681565b6000600254821015610223576040805162461bcd60e51b81526020600482015260248101919091527f526563697069656e7452656769737472793a204d6178206e756d626572206f6660448201527f20726563697069656e74732063616e206e6f742062652064656372656173656460648201526084015b60405180910390fd5b6001546001600160a01b0316331461023d57506000919050565b50600255600190565b6007546001600160a01b031633146102dd5760405162461bcd60e51b815260206004820152604e60248201527f5369676e5570546f6b656e476174656b65657065723a206f6e6c79207370656360448201527f6966696564206f70657261746f7220696e7374616e63652063616e2063616c6c60648201526d103a3434b990333ab731ba34b7b760911b608482015260a40161021a565b6102e561065c565b6001600160a01b0316826001600160a01b0316146103665760405162461bcd60e51b815260206004820152603860248201527f5369676e5570546f6b656e476174656b65657065723a206f6e6c79206f776e65604482015277391031b0b71031b0b636103a3434b990333ab731ba34b7b760411b606482015260840161021a565b5050565b600083158061037a575060055484115b15610387575060006104e4565b60006005610396600187610e41565b815481106103a6576103a6610e58565b906000526020600020018054806020026020016040519081016040528092919081815260200182805480156103fa57602002820191906000526020600020905b8154815260200190600101908083116103e6575b505050505090508051600014156104155760009150506104e4565b80516000905b80156104df5760008361042f600184610e41565b8151811061043f5761043f610e58565b60209081029190910181015160008181526003808452604091829020825160808101845281546001600160a01b0316815260018201549581019590955260028101549285018390520154606084015290925087101561049f5750506104cd565b6060810151158015906104b6575087816060015111155b156104c85783955050505050506104e4565b519250505b806104d781610e6e565b91505061041b565b509150505b9392505050565b6104f3610749565b6104fd60006107a8565b565b610507610749565b6001600160a01b0383166105725760405162461bcd60e51b815260206004820152602c60248201527f526563697069656e7452656769737472793a20526563697069656e742061646460448201526b72657373206973207a65726f60a01b606482015260840161021a565b806105d85760405162461bcd60e51b815260206004820152603060248201527f526563697069656e7452656769737472793a204d6574616461746120696e666f60448201526f20697320656d70747920737472696e6760801b606482015260840161021a565b60008383836040516020016105ef93929190610e85565b604051602081830303815290604052805190602001209050600061061382866107f8565b9050817fddc3968b1ce25baf13504e6d2de09bbf72f4b32b9d80e2f4914842f0f9217b0d868686854260405161064d959493929190610ead565b60405180910390a25050505050565b6000546001600160a01b031690565b60045460055460009161067d91610e41565b905090565b61068a610749565b61069381610ad4565b807fc678e7ee92280740c8b3be4826e92b29fb5477e2ddc3eb2e9ca45f74daa4972e426040516106c591815260200190565b60405180910390a250565b6106d8610749565b6001600160a01b03811661073d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161021a565b610746816107a8565b50565b3361075261065c565b6001600160a01b0316146104fd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161021a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806002541161084f5760405162461bcd60e51b815260206004820152602d6024820152600080516020610f2d83398151915260448201526c1a5d081a5cc81b9bdd081cd95d609a1b606482015260840161021a565b600083815260036020526040902060010154156108b45760405162461bcd60e51b815260206004820152602f6024820152600080516020610f4d83398151915260448201526e1958591e481c9959da5cdd195c9959608a1b606482015260840161021a565b60055460009081906108c7906001610efe565b9050600254811161096657604080516001808252818301909252919250829160009160208083019080368337019050509050858160008151811061090d5761090d610e58565b60209081029190910181019190915260058054600181018255600091909152825161095f927f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090920191840190610bf6565b5050610a66565b6004546109b65760405162461bcd60e51b815260206004820152602a6024820152600080516020610f2d8339815191526044820152691a5d081c995858da195960b21b606482015260840161021a565b60048054600091906109ca90600190610e41565b815481106109da576109da610e58565b9060005260206000200154905060048054806109f8576109f8610f16565b60019003818190600052602060002001600090559055600360008281526020019081526020016000206001015492506005600184610a369190610e41565b81548110610a4657610a46610e58565b600091825260208083209091018054600181018255908352912001869055505b50604080516080810182526001600160a01b0380861682526020808301858152428486019081526000606086018181528b82526003948590529690209451855494166001600160a01b0319909416939093178455516001840155905160028301559151910155905092915050565b600081815260036020526040902060010154610b4e5760405162461bcd60e51b815260206004820152603360248201527f526563697069656e7452656769737472793a20526563697069656e74206973206044820152726e6f7420696e2074686520726567697374727960681b606482015260840161021a565b6000818152600360208190526040909120015415610bb15760405162461bcd60e51b815260206004820152602c6024820152600080516020610f4d83398151915260448201526b1958591e481c995b5bdd995960a21b606482015260840161021a565b60008181526003602081905260408220429101556004805460018101825591527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0155565b828054828255906000526020600020908101928215610c31579160200282015b82811115610c31578251825591602001919060010190610c16565b50610c3d929150610c41565b5090565b5b80821115610c3d5760008155600101610c42565b600060208284031215610c6857600080fd5b5035919050565b80356001600160a01b0381168114610c8657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610cb457600080fd5b610cbd83610c6f565b915060208301356001600160401b0380821115610cd957600080fd5b818501915085601f830112610ced57600080fd5b813581811115610cff57610cff610c8b565b604051601f8201601f19908116603f01168101908382118183101715610d2757610d27610c8b565b81604052828152886020848701011115610d4057600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600060608486031215610d7757600080fd5b505081359360208301359350604090920135919050565b600080600060408486031215610da357600080fd5b610dac84610c6f565b925060208401356001600160401b0380821115610dc857600080fd5b818601915086601f830112610ddc57600080fd5b813581811115610deb57600080fd5b876020828501011115610dfd57600080fd5b6020830194508093505050509250925092565b600060208284031215610e2257600080fd5b6104e482610c6f565b634e487b7160e01b600052601160045260246000fd5b600082821015610e5357610e53610e2b565b500390565b634e487b7160e01b600052603260045260246000fd5b600081610e7d57610e7d610e2b565b506000190190565b606084901b6001600160601b0319168152818360148301376000910160140190815292915050565b6001600160a01b03861681526080602082018190528101849052838560a0830137600060a08583010152600060a0601f19601f87011683010190508360408301528260608301529695505050505050565b60008219821115610f1157610f11610e2b565b500190565b634e487b7160e01b600052603160045260246000fdfe526563697069656e7452656769737472793a20526563697069656e74206c696d526563697069656e7452656769737472793a20526563697069656e7420616c72a26469706673582212201b191efbaf49f81b8f4d789493cd321e0c0cdcaa44d4240d3c2f5a4e4b0127cb64736f6c634300080a0033"; + +type SimpleHackathonConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: SimpleHackathonConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class SimpleHackathon__factory extends ContractFactory { + constructor(...args: SimpleHackathonConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + _balance: PromiseOrValue, + _operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _balance, + _operator, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _balance: PromiseOrValue, + _operator: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(_balance, _operator, overrides || {}); + } + override attach(address: string): SimpleHackathon { + return super.attach(address) as SimpleHackathon; + } + override connect(signer: Signer): SimpleHackathon__factory { + return super.connect(signer) as SimpleHackathon__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): SimpleHackathonInterface { + return new utils.Interface(_abi) as SimpleHackathonInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): SimpleHackathon { + return new Contract(address, _abi, signerOrProvider) as SimpleHackathon; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/flavors/index.ts b/packages/contracts/typechain-types/factories/contracts/flavors/index.ts new file mode 100644 index 00000000..c2f94532 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/flavors/index.ts @@ -0,0 +1,9 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as constantInitialVoiceCreditProxySol from "./ConstantInitialVoiceCreditProxy.sol"; +export * as fSol from "./F.sol"; +export * as nftSignupSol from "./NFTSignup.sol"; +export { IInitialVoiceCreditProxy__factory } from "./IInitialVoiceCreditProxy__factory"; +export { ISignUpGatekeeper__factory } from "./ISignUpGatekeeper__factory"; +export { SimpleHackathon__factory } from "./SimpleHackathon__factory"; diff --git a/packages/contracts/typechain-types/factories/contracts/index.ts b/packages/contracts/typechain-types/factories/contracts/index.ts new file mode 100644 index 00000000..f0b1d961 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/index.ts @@ -0,0 +1,13 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as accQueueSol from "./AccQueue.sol"; +export * as flavors from "./flavors"; +export * as poseidon from "./poseidon"; +export * as recipientRegistry from "./recipientRegistry"; +export * as utils from "./utils"; +export { Jubjub__factory } from "./Jubjub__factory"; +export { JubjubFactory__factory } from "./JubjubFactory__factory"; +export { MessageTree__factory } from "./MessageTree__factory"; +export { StateTree__factory } from "./StateTree__factory"; +export { VkRegistry__factory } from "./VkRegistry__factory"; diff --git a/packages/contracts/typechain-types/factories/contracts/poseidon/PoseidonT3__factory.ts b/packages/contracts/typechain-types/factories/contracts/poseidon/PoseidonT3__factory.ts new file mode 100644 index 00000000..ea92b871 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/poseidon/PoseidonT3__factory.ts @@ -0,0 +1,106 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + PoseidonT3, + PoseidonT3Interface, +} from "../../../contracts/poseidon/PoseidonT3"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256[2]", + name: "", + type: "uint256[2]", + }, + ], + name: "hash2", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_left", + type: "uint256", + }, + { + internalType: "uint256", + name: "_right", + type: "uint256", + }, + ], + name: "hashLeftRight", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, +] as const; + +const _bytecode = + "0x61250e61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80635bb939951461004557806362a361bb1461006a575b600080fd5b6100586100533660046122c9565b61007d565b60405190815260200160405180910390f35b6100586100783660046122eb565b6100a2565b60006100876122ab565b8381526020810183905261009a816100a2565b949350505050565b600061047d565b6000805160206124198339815191528160005108600080516020612419833981519152836020510860008051602061241983398151915285608051086000805160206124198339815191528384096000805160206124198339815191528460008051602061241983398151915283840909935050600080516020612419833981519152806000805160206124398339815191528309600080516020612419833981519152806000805160206123b9833981519152860960008051602061241983398151915260008051602061245983398151915288090808600052600080516020612419833981519152806000805160206123f98339815191528309600080516020612419833981519152806000805160206124b98339815191528609600080516020612419833981519152600080516020612379833981519152880908086020526000805160206124198339815191528060008051602061247983398151915283096000805160206124198339815191528060008051602061239983398151915286096000805160206124198339815191526000805160206123d983398151915288090808608052505050505050565b6000805160206124198339815191528160005108600080516020612419833981519152836020510860008051602061241983398151915285608051086000805160206124198339815191528384096000805160206124198339815191528460008051602061241983398151915283840909935060008051602061241983398151915283840990506000805160206124198339815191528360008051602061241983398151915283840909925060008051602061241983398151915282830990506000805160206124198339815191528260008051602061241983398151915283840909915050600080516020612419833981519152806000805160206124398339815191528309600080516020612419833981519152806000805160206123b9833981519152860960008051602061241983398151915260008051602061245983398151915288090808600052600080516020612419833981519152806000805160206123f98339815191528309600080516020612419833981519152806000805160206124b98339815191528609600080516020612419833981519152600080516020612379833981519152880908086020526000805160206124198339815191528060008051602061247983398151915283096000805160206124198339815191528060008051602061239983398151915286096000805160206124198339815191526000805160206123d983398151915288090808608052505050505050565b60006000805160206124198339815191527ef1445235f2148c5986587169fc1bcd887b08d4d00868df5696fff40956e864608051086000805160206124198339815191527f08dff3487e8ac99e1f29a058d0fa80b930c728730b7ab36ce879f3890ecf73f560a0510860008051602061241983398151915260008051602061249983398151915260c05108606052600080516020612419833981519152828309925060008051602061241983398151915282600080516020612419833981519152858609099150600080516020612419833981519152818209925060008051602061241983398151915281600080516020612419833981519152858609099050600080516020612419833981519152806000805160206124398339815191528309600080516020612419833981519152806000805160206123b983398151915286097f2229fe5e63f56eef4bfba02c26292de10ac2b2b045e6184acff16e4660c05f6b0808600052600080516020612419833981519152806000805160206123f98339815191528309600080516020612419833981519152806000805160206124b983398151915286097f2949435275a29cdbffe3e4101a45669873f9408a5d11e21b4ec6edf8501eee4d08086020526000805160206124198339815191528060008051602061247983398151915283096000805160206124198339815191528060008051602061239983398151915286097f20c290a7269657965092ef5700a447f5bc2c41dfca932f527cb2600ac9bcfefb080860805250506107107f0319d062072bef7ecca5eac06f97d4d55952c175ab6b03eae64b44c7dbf11cfa7f2b2ae1acf68b7b8d2416bebf3d4f6234b763fe04b8043ee48b8327bebca16cf260008051602061249983398151915261025a565b61077b7f234ec45ca27727c2e74abd2b2a1494cd6efbd43e340587d6b8fb9e31e65cc6327f2727673b2ccbc903f181bf38e1c1d40d2033865200c352bc150928adddf9cb787f28813dcaebaeaa828a376df87af4a63bc8b7bf27ad49c6298ef7b387bf28526d61025a565b6107e67f1bcd95ffc211fbca600f705fad3fb567ea4eb378f62e1fec97805518a47e4d9c7f0dc8fad6d9e4b35f5ed9a3d186b79ce38e0e8a8d1b58b132d701d4eecf68d1f67f15b52534031ae18f7f862cb2cf7cf760ab10a8150a337b1ccd99ff6e8797d42861025a565b6108517f1d9655f652309014d29e00ef35a2089bfff8dc1c816f0dc9ca34bdb5460c87057f1f6d48149b8e7f7d9b257d8ed5fbbaf42932498075fed0ace88a9eb81f5627f67f10520b0ab721cadfe9eff81b016fc34dc76da36c2578937817cb978d069de5596100a9565b6108bc7f099952b414884454b21200d7ffafdd5f0c9a9dcc06f2708e9fc1d8209b5c75b97f0672d995f8fff640151b3d290cedaf148690a10a8c8424a7f6ec282b6e4be8287f04df5a56ff95bcafb051f7b1cd43a99ba731ff67e47032058fe3d4185697cc7d6100a9565b6109277f119b1590f13307af5a1ee651020c07c749c15d60683a8050b963d0a8e4b2bdd17f0b8badee690adb8eb0bd74712b7999af82de55707251ad7716077cb93c464ddc7f052cba2255dfd00c7c483143ba8d469448e43586a9b4cd9183fd0e843a6b9fa66100a9565b6109917e5032551e6378c450cfe129a404b3764218cadedac14e2b92d2cd73111bf0f97f2cc6182c5e14546e3cf1951f173912355374efb83d80898abe69cb317c9ea5657f03150b7cd6d5d17b2529d36be0f67b832c4acfc884ef4ee5ce15be0bfb4a8d096100a9565b6109fc7f0a7b1db13042d396ba05d818a319f25252bcf35ef3aeed91ee1f09b2590fc65b7f05c8f4f4ebd4a6e3c980d31674bfbe6323037f21b34ae5a4e80c2d4c24d602807f233237e3289baa34bb147e972ebcb9516469c399fcc069fb88f9da2cc28276b56100a9565b610a677f12c0339ae08374823fabb076707ef479269f3e4d6cb104349015ee046dc93fc07f1ac9b0417abcc9a1935107e9ffc91dc3ec18f2c4dbe7f22976a760bb5c50c4607f2a73b71f9b210cf5b14296572c9d32dbf156e2b086ff47dc5df542365a404ec06100a9565b610ad27f05a6811f8556f014e92674661e217e9bd5206c5c93a07dc145fdb176a716346f7f037c2849e191ca3edb1c5e49f6e8b8917c843e379366f2ea32ab3aa88d7f84487f0b7475b102a165ad7f5b18db4e1e704f52900aa3253baac68246682e56e9a28e6100a9565b610b3d7f2e0ba8d94d9ecf4a94ec2050c7371ff1bb50f27799a84b6d4a2a6f2a0982c8877f20439a0c84b322eb45a3857afc18f5826e8c7382c8a1585c507be199981fd22f7f29a795e7d98028946e947b75d54e9f044076e87a7b2883b47b675ef5f38bd66e6100a9565b610ba87f028a305847c683f646fca925c163ff5ae74f348d62c2b670f1426cef9403da537f0c64cbecb1c734b857968dbbdcf813cdf8611659323dbcbfc84323623be9caf17f143fd115ce08fb27ca38eb7cce822b4517822cd2109048d2e6d0ddcca17d71c86100a9565b610c127f2ed5f0c91cbd9749187e2fade687e05ee2491b349c039a0bba8a9f4023a0bb387e81c95bc43384e663d79270c956ce3b8925b4f6d033b078b96384f50579400e7f2e4ef510ff0b6fda5fa940ab4c4380f26a6bcb64d89427b824d6755b5db9e30c6100a9565b610c7d7f10b4e7f3ab5df003049514459b6e18eec46bb2213e8e131e170887b47ddcb96c7f1c3f20fd55409a53221b7c4d49a356b9f0a1119fb2067b41a7529094424ec6ad7f30509991f88da3504bbf374ed5aae2f03448a22c76234c8c990f01f33a7352066100a9565b610ce87f07533ec850ba7f98eab9303cace01b4b9e4f2e8b82708cfa9c2fe45a0ae146a07f1c74ee64f15e1db6feddbead56d6d55dba431ebc396c9af95cad0f1315bd5c917f2a1982979c3ff7f43ddd543d891c2abddd80f804c077d775039aa3502e43adef6100a9565b610d537f2d477e3862d07708a79e8aae946170bc9775a4201318474ae665b0b1b7e2730e7f2f17c0559b8fe79608ad5ca193d62f10bce8384c815f0906743d6930836d4a9e7f21576b438e500449a151e4eeaf17b154285c68f42d42c1808a11abf3764c07506100a9565b610dbe7f2c8fbcb2dd8573dc1dbaf8f4622854776db2eece6d85c4cf4254e7c35e03b07a7f2b4cb233ede9ba48264ecd2c8ae50d1ad7a8596a87f29f8a7777a700923933117f162f5243967064c390e095577984f291afba2266c38f5abcd89be0f5b2747eab6100a9565b610e297f0c4cb9dc3c4fd8174f1149b3c63c3c2f9ecb827cd7dc25534ff8fb75bc79c5027f204b0c397f4ebe71ebc2d8b3df5b913df9e6ac02b68d31324cd49af5c45655297f1d6f347725e4816af2ff453f0cd56b199e1b61e9f601e9ade5e88db870949da96100a9565b610e947f066d04b24331d71cd0ef8054bc60c4ff05202c126a233c1a8242ace360b8a30a7f1a96177bcf4d8d89f759df4ec2f3cde2eaaa28c177cc0fa13a9816d49a38d2ef7f174ad61a1448c899a25416474f4930301e5c49475279e0639a616ddc45bc7b546100a9565b610eff7f1121552fca26061619d24d843dc82769c1b04fcec26f55194c2e3e869acc6a9a7f13ab2d136ccf37d447e9f2e14a7cedc95e727f8446f6d9d7e55afc01219fd6497f2a4c4fc6ec0b0cf52195782871c6dd3b381cc65f72e02ad527037a62aa1bd8046100a9565b610f697f29f536dcb9dd7682245264659e15d88e395ac3d4dde92d8c46448db979eeba897f0e25483e45a665208b261d8ba74051e6400c776d652595d9845aca35d8a397d37eef653322b13d6c889bc81715c37d77a6cd267d595c4a8909a5546c7c97cff16100a9565b610fd47f151aff5f38b20a0fc0473089aaf0206b83e8e68a764507bfd3d0ab4be74319c57f1c8361c78eb5cf5decfb7a2d17b5c409f2ae2999a46762e8ee416240a8cb9af17f2a56ef9f2c53febadfda33575dbdbd885a124e2780bbea170e456baace0fa5be6100a9565b61103f7f01a5c536273c2d9df578bfbd32c17b7a2ce3664c2a52032c9321ceb1c4e8a8e47f13b37bd80f4d27fb10d84331f6fb6d534b81c61ed15776449e801b7ddc9c29677f04c6187e41ed881dc1b239c88f7f9d43a9f52fc8c8b6cdd1e76e47615b51f1006100a9565b6110aa7f041294d2cc484d228f5784fe7919fd2bb925351240a04b711514c9c80b65af1d7f1d4d8ec291e720db200fe6d686c0d613acaf6af4e95d3bf69f7ed516a597b6467f2ab3561834ca73835ad05f5d7acb950b4a9a2c666b9726da832239065b7c3b026100a9565b6111157f0955e49e6610c94254a4f84cfbab344598f0e71eaff4a7dd81ed95b50839c82e7f0b339d8acca7d4f83eedd84093aef51050b3684c88f8b0b04524563bc6ea4da47f154ac98e01708c611c4fa715991f004898f57939d126e392042971dd90e81fc66100a9565b6111807f04f6eeca1751f7308ac59eff5beb261e4bb563583ede7bc92a738223d6f76e137f0f18f5a0ecd1423c496f3820c549c27838e5790e2bd0a196ac917c7ff32077fb7f06746a6156eba54426b9e22206f15abca9a6f41e6f535c6f3525401ea06546266100a9565b6111eb7f2147b424fc48c80a88ee52b91169aacea989f6446471150994257b2fb01c63e97f123769dd49d5b054dcd76b89804b1bcb8e1392b385716a5d83feb65d437f29ef7f2b56973364c4c4f5c1a3ec4da3cdce038811eb116fb3e45bc1768d26fc0b37586100a9565b6112567f21e4f4ea5f35f85bad7ea52ff742c9e8a642756b6af44203dd8a1f35c1a900357f12373a8251fea004df68abcf0f7786d4bceff28c5dbbe0c3944f685cc0a0b1f27f0fdc1f58548b85701a6c5505ea332a29647e6f34ad4243c2ea54ad897cebe54d6100a9565b6112c17f07ea5e8537cf5dd08886020e23a7f387d468d5525be66f853b672cc96a88969a7f1efbe46dd7a578b4f66f9adbc88b4378abc21566e1a0453ca13a4159cac04ac27f16243916d69d2ca3dfb4722224d4c462b57366492f45e90d8a81934f1bc3b1476100a9565b61132c7f04a12ededa9dfd689672f8c67fee31636dcd8e88d01d49019bd90b33eb33db697f20f057712cc21654fbfe59bd345e8dac3f7818c701b9c7882d9d57b72a32e83f7f05a8c4f9968b8aa3b7b478a30f9a5b63650f19a75e7ce11ca9fe16c0b76c00bc6100a9565b6113977f1ed7cc76edf45c7c404241420f729cf394e5942911312a0d6972b8bd53aff2b87f2feed17b84285ed9b8a5c8c5e95a41f66e096619a7703223176c41ee433de4d17f27e88d8c15f37dcee44f1e5425a51decbd136ce5091a6767e49ec9544ccd101a6100a9565b6114027f25851c3c845d4790f9ddadbdb6057357832e2e7a49775f71ec75a96554d67c777f1aac285387f65e82c895fc6887ddf40577107454c6ec0317284f033f27d0c7857f15742e99b9bfa323157ff8c586f5660eac6783476144cdcadf2874be45466b1a6100a9565b61146c7e2e6f8d6520cd4713e335b8c0b6d2e647e9a98e12f4cd2558828b5ef6cb4c9b7f2411d57a4813b9980efa7e31a1db5966dcf64f36044277502f15485f28c717277f15a5821565cc2ec2ce78457db197edf353b7ebba2c5523370ddccc3d9f146a676100a9565b6114d67f0a2f53768b8ebf6a86913b0e57c04e011ca408648a4743a87d77adbf0c9c35127eb9831b948525595ee02724471bcd182e9521f6b7bb68f1e93be4febb0d3cbe7f2ff7bc8f4380cde997da00b616b0fcd1af8f0e91e2fe1ed7398834609e0315d26100a9565b6115407f170a4f55536f7dc970087c7c10d6fad760c952172dd54dd99d1045e4ec34a8087f171d5620b87bfb1328cf8c02ab3f0c9a397196aa6a542c2350eb512a2b2bcda97e248156142fd0373a479f91ff239e960f599ff7e94be69b7f2a290305e1198d6100a9565b6115ab7f1dd269799b660fad58f7f4892dfb0b5afeaad869a9c4b44f9c9e1c43bdaf8f097f1e9bc179a4fdd758fdd1bb1945088d47e70d114a03f6a0e8b5ba650369e649737f29aba33f799fe66c2ef3134aea04336ecc37e38c1cd211ba482eca17e2dbfae16100a9565b6116167f11609e06ad6c8fe2f287f3036037e8851318e8b08a0359a03b304ffca62e82847f0ef042e454771c533a9f57a55c503fcefd3150f52ed94a7cd5ba93b9c7dacefd7f22cdbc8b70117ad1401181d02e15459e7ccd426fe869c7c95d1dd2cb0f24af386100a9565b6116817f3006eb4ffc7a85819a6da492f3a8ac1df51aee5b17b8e89d74bf01cf5f71e9ad7f2de52989431a859593413026354413db177fbf4cd2ac0b56f855a888357ee4667f1166d9e554616dba9e753eea427c17b7fecd58c076dfe42708b08f5b783aa9af6100a9565b6116ec7f1835b786e2e8925e188bea59ae363537b51248c23828f047cff784b97b3fd8007f119e684de476155fe5a6b41a8ebc85db8718ab27889e85e781b214bace4827c37f2af41fbb61ba8a80fdcf6fff9e3f6f422993fe8f0a4639f962344c82251450866100a9565b6117577f0b6f88a3577199526158e61ceea27be811c16df7774dd8519e079564f61fd13b7f083efd7a27d1751094e80fefaf78b000864c82eb571187724a761f88c22cc4e77f28201a34c594dfa34d794996c6433a20d152bac2a7905c926c40e285ab32eeb66100a9565b6117c27f0b520211f904b5e7d09b5d961c6ace7734568c547dd6858b364ce5e47951f1787f2af33e3f866771271ac0c9b3ed2e1142ecd3e74b939cd40d00d937ab84c985917f0ec868e6d15e51d9644f66e1d6471a94589511ca00d29e1014390e6ee4254f5b6100a9565b61182d7f0171eb95dfbf7d1eaea97cd385f780150885c16235a2a6a8da92ceb01e5042337f1f790d4d7f8cf094d980ceb37c2453e957b54a9991ca38bbe0061d1ed6e562d47f0b2d722d0919a1aad8db58f10062a92ea0c56ac4270e822cca228620188a1d406100a9565b6118987f2f1459b65dee441b64ad386a91e8310f282c5a92a89e19921623ef8249711bc07f1162fb28689c27154e5a8228b4e72b377cbcafa589e283c35d3803054407a18d7f0c2d0e3b5fd57549329bf6885da66b9b790b40defd2c8650762305381b1688736100a9565b6119037f1f7735706ffe9fc586f976d5bdf223dc680286080b10cea00b9b5de315f9650e7f01ca8be73832b8d0681487d27d157802d741a6f36cdc2a0576881f93264788757f1e6ff3216b688c3d996d74367d5cd4c1bc489d46754eb712c243f70d1b53cfbb6100a9565b61196e7f2bc1ae8b8ddbb81fcaac2d44555ed5685d142633e9df905f66d9401093082d597f23f0bee001b1029d5255075ddc957f833418cad4f52b6c3f8ce16c235572575b7f2522b60f4ea3307640a0c2dce041fba921ac10a3d5f096ef4745ca838285f0196100a9565b6119d97f15871a5cddead976804c803cbaef255eb4815a5e96df8b006dcbbc2767f889487f2360a8eb0cc7defa67b72998de90714e17e75b174a52ee4acb126c8cd995f0a87f0f9406b8296564a37304507b8dba3ed162371273a07b1fc98011fcd6ad72205f6100a9565b611a447f1859954cfeb8695f3e8b635dcb345192892cd11223443ba7b4166e8876c0d1427f2a394a43934f86982f9be56ff4fab1703b2e63c8ad334834e4309805e777ae0f7f193a56766998ee9e0a8652dd2f3b1da0362f4f54f72379544f957ccdeefb420f6100a9565b611aaf7f058cbe8a9a5027bdaa4efb623adead6275f08686f1c08984a9d7c5bae9b4f1c07f0fdb253dee83869d40c335ea64de8c5bb10eb82db08b5e8b1f5e5552bfd05f237f04e1181763050e58013444dbcb99f1902b11bc25d90bbdca408d3819f4fed32b6100a9565b611b1a7f23f7bfc8720dc296fff33b41f98ff83c6fcab4605db2eb5aaa5bc137aeb70a587f03464990f045c6ee0819ca51fd11b0be7f61b8eb99f14b77e1e6634601d9e8b57f1382edce9971e186497eadb1aeb1f52b23b4b83bef023ab0d15228b4cceca59a6100a9565b611b857f118872dc832e0eb5476b56648e867ec8b09340f7a7bcb1b4962f0ff9ed1f9d017f06ec54c80381c052b58bf23b312ffd3ce2c4eba065420af8f4c23ed0075fd07b7f0a59a158e3eec2117e6e94e7f0e9decf18c3ffd5e1531a9219636158bbaf62f26100a9565b611bf07f04ef51591c6ead97ef42f287adce40d93abeb032b922f66ffb7e9a5a7450544d7f169a177f63ea681270b1c6877a73d21bde143942fb71dc55fd8a49f19f10c77b7f13d69fa127d834165ad5c7cba7ad59ed52e0b0f0e42d7fea95e1906b520921b16100a9565b611c5b7f10998e42dfcd3bbf1c0714bc73eb1bf40443a3fa99bef4a31fd31be182fcc7927f30102d28636abd5fe5f2af412ff6004f75cc360d3205dd2da002813d3e2ceeb27f256e175a1dc079390ecd7ca703fb2e3b19ec61805d4f03ced5f45ee6dd0f69ec6100a9565b611cc67f29383c01ebd3b6ab0c017656ebe658b6a328ec77bc33626e29e2e95b33ea61117f18168afd34f2d915d0368ce80b7b3347d1c7a561ce611425f2664d7aa51f0b5d7f193edd8e9fcf3d7625fa7d24b598a1d89f3362eaf4d582efecad76f879e368606100a9565b611d317f16d685252078c133dc0d3ecad62b5c8830f95bb2e54b59abdffbf018d96fa3367f0beb5e07d1b27145f575f1395a55bf132f90c25b40da7b3864d0242dcb1117fb7f10646d2f2603de39a1f4ae5e7771a64a702db6e86fb76ab600bf573f9010c7116100a9565b611d9c7f0980fb233bd456c23974d50e0ebfde4726a423eada4e8f6ffbc7592e3f1b93d67f1a679f5d36eb7b5c8ea12a4c2dedc8feb12dffeec450317270a6f19b34cf18607f0a6abd1d833938f33c74154e0404b4b40a555bbbec21ddfafd672dd62047f01a6100a9565b611e077f1a730d372310ba82320345a29ac4238ed3f07a8a2b4e121bb50ddb9af407f4517f0ada10a90c7f0520950f7d47a60d5e6a493f09787f1564e5d09203db47de1a0b7f161b42232e61b84cbf1810af93a38fc0cece3d5628c9282003ebacb5c312c72b6100a9565b611e727f2cd9ed31f5f8691c8e39e4077a74faa0f400ad8b491eb3f7b47b27fa3fd1cf777f1c7c8824f758753fa57c00789c684217b930e95313bcb73e6e7b8649a4968f707f2c8120f268ef054f817064c369dda7ea908377feaba5c4dffbda10ef58e8c5566100a9565b611edd7f188d9c528025d4c2b67660c6b771b90f7c7da6eaa29d3f268a6dd223ec6fc6307f09945a5d147a4f66ceece6405dddd9d0af5a2c5103529407dff1ea58f180426d7f23ff4f9d46813457cf60d92f57618399a5e022ac321ca550854ae23918a22eea6100a9565b611f487f1da6d09885432ea9a06d9f37f873d985dae933e351466b2904284da3320d8acc7f15af1169396830a91600ca8102c35c426ceae5461e3f95d89d829518d30afd787f3050e37996596b7f81f68311431d8734dba7d926d3633595e0c0d8ddf4f0f47f6100a9565b611fb37f096d6790d05bb759156a952ba263d672a2d7f9c788f4c831a29dace4c0f8be5f7f202d7dd1da0f6b4b0325c8b3307742f01e15612ec8e9304a7cb0319e01d32d607f2796ea90d269af29f5f8acf33921124e4e4fad3dbe658945e546ee411ddaa9cb6100a9565b61201e7f21e5241e12564dd6fd9f1cdd2a0de39eedfefc1466cc568ec5ceb745a0506edc7f1b162f83d917e93edb3308c29802deb9d8aa690113b2e14864ccf6e18e4165f17f054efa1f65b0fce283808965275d877b438da23ce5b13e1963798cb1447d25a461025a565b6120897f1671522374606992affb0dd7f71b12bec4236aede6290546bcef7e1f515c23207f0f21177e302a771bbae6d8d1ecb373b62c99af346220ac0129c53f666eb241007f1cfb5662e8cf5ac9226a80ee17b36abecb73ab5f87e161927b4349e10e4bdf0861025a565b6120f47f102adf8ef74735a27e9128306dcbc3c99f6f7291cd406578ce14ea2adaba68f87f193c0e04e0bd298357cb266c1506080ed36edce85c648cc085e8c57b1ab54bba7f0fa3ec5b9488259c2eb4cf24501bfad9be2ec9e42c5cc8ccd419d2a692cad87061025a565b6000805160206124198339815191527f0fe0af7858e49859e2a54d6f1ad945b1316aa24bfbdd23ae40a6d0cb70c3eab1600051086000805160206124198339815191527f216f6717bbc7dedb08536a2220843f4e2da5f1daa9ebdefde8a5ea7344798d22602051086000805160206124198339815191527f1da55cc900f0d21f4a3e694391918a1b3c23b2ac773c6b3ef88e2e422832516160805108600080516020612419833981519152838409935060008051602061241983398151915283600080516020612419833981519152868709099250600080516020612419833981519152828309935060008051602061241983398151915282600080516020612419833981519152868709099150600080516020612419833981519152818209935060008051602061241983398151915281600080516020612419833981519152868709099050600080516020612419833981519152806000805160206124398339815191528309600080516020612419833981519152806000805160206123b983398151915286096000805160206124198339815191526000805160206124598339815191528809080860005250505060206000f35b60405180604001604052806002906020820280368337509192915050565b600080604083850312156122dc57600080fd5b50508035926020909101359150565b6000604082840312156122fd57600080fd5b82601f83011261230c57600080fd5b604080519081016001600160401b038111828210171561233c57634e487b7160e01b600052604160045260246000fd5b806040525080604084018581111561235357600080fd5b845b8181101561236d578035835260209283019201612355565b50919594505050505056fe2969f27eed31a480b9c36c764379dbca2cc8fdd1415c3dded62940bcde0bd771176cc029695ad02582a70eff08a6fd99d057e12e58e7d7b6b16cdfabc8ee291116ed41e13bb9c0c66ae119424fddbcbc9314dc9fdbdeea55d6c64543dc4903e0143021ec686a3f330d5f9e654638065ce6cd79e28c5b3753326244ee65a1b1a7101071f0032379b697315876690f053d148d4e109f5fb065c8aacc55a0f89bfa30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000012b90bba00fca0589f617e7dcbfe82e0df706ab640ceb247b791a93b74e36736d109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b19a3fc0a56702bf417ba7fee3802593fa644470307043f7773279cd71d25d5e02f27be690fdaee46c3ce28f7532b13c856c35342c84bda6e20966310fadc01d02e2419f9ec02ec394c9871c832963dc1b89d743c8c7b964029b2311687b1fe23a2646970667358221220ece2f0bcb04f57d4e3e8f6ad742c3ca20406ffff526c867d627f32e70ac3285064736f6c634300080a0033"; + +type PoseidonT3ConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: PoseidonT3ConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class PoseidonT3__factory extends ContractFactory { + constructor(...args: PoseidonT3ConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): PoseidonT3 { + return super.attach(address) as PoseidonT3; + } + override connect(signer: Signer): PoseidonT3__factory { + return super.connect(signer) as PoseidonT3__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): PoseidonT3Interface { + return new utils.Interface(_abi) as PoseidonT3Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): PoseidonT3 { + return new Contract(address, _abi, signerOrProvider) as PoseidonT3; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/poseidon/PoseidonT4__factory.ts b/packages/contracts/typechain-types/factories/contracts/poseidon/PoseidonT4__factory.ts new file mode 100644 index 00000000..fe372378 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/poseidon/PoseidonT4__factory.ts @@ -0,0 +1,82 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + PoseidonT4, + PoseidonT4Interface, +} from "../../../contracts/poseidon/PoseidonT4"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256[3]", + name: "", + type: "uint256[3]", + }, + ], + name: "hash3", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, +] as const; + +const _bytecode = + "0x61312d61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063bea140b31461003a575b600080fd5b61004d610048366004612e2c565b61005f565b60405190815260200160405180910390f35b600061067d565b6000805160206130188339815191528160005108600080516020613018833981519152836020510860008051602061301883398151915285608051086000805160206130188339815191528760a05108600080516020613018833981519152848509600080516020613018833981519152856000805160206130188339815191528384090994505060008051602061301883398151915280600080516020612f188339815191528309600080516020613018833981519152806000805160206130d88339815191528609600080516020613018833981519152806000805160206130b88339815191528909600080516020613018833981519152600080516020612ef88339815191528b0908080860005260008051602061301883398151915280600080516020612ed8833981519152830960008051602061301883398151915280600080516020612ff8833981519152860960008051602061301883398151915280600080516020612fb883398151915289096000805160206130188339815191526000805160206130388339815191528b0908080860205260008051602061301883398151915280600080516020612f38833981519152830960008051602061301883398151915280600080516020613078833981519152860960008051602061301883398151915280600080516020612eb88339815191528909600080516020613018833981519152600080516020612f788339815191528b0908080860805260008051602061301883398151915280600080516020612fd8833981519152830960008051602061301883398151915280600080516020613098833981519152860960008051602061301883398151915280600080516020612f5883398151915289096000805160206130188339815191526000805160206130588339815191528b0908080860a0525050505050505050565b6000805160206130188339815191528160005108600080516020613018833981519152836020510860008051602061301883398151915285608051086000805160206130188339815191528760a05108600080516020613018833981519152848509600080516020613018833981519152856000805160206130188339815191528384090994506000805160206130188339815191528485099050600080516020613018833981519152846000805160206130188339815191528384090993506000805160206130188339815191528384099050600080516020613018833981519152836000805160206130188339815191528384090992506000805160206130188339815191528283099050600080516020613018833981519152826000805160206130188339815191528384090991505060008051602061301883398151915280600080516020612f188339815191528309600080516020613018833981519152806000805160206130d88339815191528609600080516020613018833981519152806000805160206130b88339815191528909600080516020613018833981519152600080516020612ef88339815191528b0908080860005260008051602061301883398151915280600080516020612ed8833981519152830960008051602061301883398151915280600080516020612ff8833981519152860960008051602061301883398151915280600080516020612fb883398151915289096000805160206130188339815191526000805160206130388339815191528b0908080860205260008051602061301883398151915280600080516020612f38833981519152830960008051602061301883398151915280600080516020613078833981519152860960008051602061301883398151915280600080516020612eb88339815191528909600080516020613018833981519152600080516020612f788339815191528b0908080860805260008051602061301883398151915280600080516020612fd8833981519152830960008051602061301883398151915280600080516020613098833981519152860960008051602061301883398151915280600080516020612f5883398151915289096000805160206130188339815191526000805160206130588339815191528b0908080860a0525050505050505050565b60006000805160206130188339815191527f265ddfe127dd51bd7239347b758f0a1320eb2cc7450acc1dad47f80c8dcf34d6608051086000805160206130188339815191527f199750ec472f1809e0f66a545e1e51624108ac845015c2aa3dfc36bab497d8aa60a051086000805160206130188339815191527f157ff3fe65ac7208110f06a5f74302b14d743ea25067f0ffd032f787c7f1cdf860c05108600080516020613018833981519152600080516020612f9883398151915260e0510860a05260008051602061301883398151915283840993506000805160206130188339815191528360008051602061301883398151915286870909925060008051602061301883398151915282830993506000805160206130188339815191528260008051602061301883398151915286870909915060008051602061301883398151915281820993506000805160206130188339815191528160008051602061301883398151915286870909905060008051602061301883398151915280600080516020612f188339815191528309600080516020613018833981519152806000805160206130d88339815191528609600080516020613018833981519152806000805160206130b883398151915289097f211184aac7468125da9b5527788aed6331caa8335774fe66f16acc6c66c456d708080860005260008051602061301883398151915280600080516020612ed8833981519152830960008051602061301883398151915280600080516020612ff8833981519152860960008051602061301883398151915280600080516020612fb883398151915289097f19764435729b98150ca53b559b7b1bdd91692d645e831f4a30d30d510792687a08080860205260008051602061301883398151915280600080516020612f38833981519152830960008051602061301883398151915280600080516020613078833981519152860960008051602061301883398151915280600080516020612eb883398151915289097f21f642c132b82c867835f1753eecedd4679085e8c78f6a0ae4a8cd81e9834bdf08080860805260008051602061301883398151915280600080516020612fd8833981519152830960008051602061301883398151915280600080516020613098833981519152860960008051602061301883398151915280600080516020612f5883398151915289097f26bc2b5c607af61196105d955bd3d9b2cf795edcf9e39d1e508c542ca85d6be308080860a052505050610a907f13da07dc64d428369873e97160234641f8beb56fdd05e5f3563fa39d9c22df4e7f251ad47cb15c4f1105f109ae5e944f1ba9d9e7806d667ffec6fe723002e0b9967f0e35fb89981890520d4aef2b6d6506c3cb2f0b6973c24fa82731345ffa2d1f1e600080516020612f9883398151915261031c565b610b1c7f04dba94a7b0ce9e221acad41472b6bbe3aec507f5eb3d33f463672264c9f789b7f0ed69e5e383a688f209d9a561daa79612f3f78d0467ad45485df07093f3675497f011f16b1c63a854f01992e3956f42d8b04eb650c6d535eb0203dec74befdca067f0c009b84e650e6d23dc00c7dccef7483a553939689d350cd46e7b89055fd473861031c565b610ba87f0a1ca941f057037526ea200f489be8d4c37c85bbcce6a2aeec91bd69414324477f28bf7459c9b2f4c6d8e7d06a4ee3a47f7745d4271038e5157a32fdf7ede0d6a17f259a666f129eea198f8a1c502fdb38fa39b1f075569564b6e54a485d1182323f7f0a3f2637d840f3a16eb094271c9d237b6036757d4bb50bf7ce732ff1d4fa28e861031c565b610c347f1cb55cad7bd133de18a64c5c47b9c97cbe4d8b7bf9e095864471537e6a4ae2c57f26e1ba52ad9285d97dd3ab52f8e840085e8fa83ff1e8f1877b074867cd2dee757f123106a93cd17578d426e8128ac9d90aa9e8a00708e296e084dd57e69caaf8117f0c6f8f958be0e93053d7fd4fc54512855535ed1539f051dcb43a26fd926361cf610066565b610cc07f2539de1785b735999fb4dac35ee17ed0ef995d05ab2fc5faeaa69ae87bcec0a57f2b1e809ac1d10ab29ad5f20d03a57dfebadfe5903f58bafed7c508dd2287ae8c7f011003e32f6d9c66f5852f05474a4def0cda294a0eb4e9b9b12b9bb4512e55747f1dcd73e46acd8f8e0e2c7ce04bde7f6d2a53043d5060a41c7143f08e6e9055d0610066565b610d4c7f179190e5d0e22179e46f8282872abc88db6e2fdc0dee99e69768bd98c5d06bfb7f1eae0ad8ab68b2f06a0ee36eeb0d0c058529097d91096b756d8fdc2fb5a60d857f192089c4974f68e95408148f7c0632edbb09e6a6ad1a1c2f3f0305f5d03b527b7f0c246c5a2ef8ee0126497f222b3e0a0ef4e1c3d41c86d46e43982cb11d77951d610066565b610dd87f10ba3a0e01df92e87f301c4b716d8a394d67f4bf42a75c10922910a78f6b5b877f064760623c25c8cf753d238055b444532be13557451c087de09efd454b23fd597f225d394e42207599403efd0c2464a90d52652645882aac35b10e590e6e691e087f29bb9e2c9076732576e9a81c7ac4b83214528f7db00f31bf6cafe794a9b3cd1c610066565b610e647f2ec93189bd1ab4f69117d0fe980c80ff8785c2961829f701bb74ac1f303b17db7f1d7cb39bafb8c744e148787a2e70230f9d4e917d5713bb050487b5aa7d74070b7f1b94cd61b051b04dd39755ff93821a73ccd6cb11d2491d8aa7f921014de252fb7f0e070bf53f8451b24f9c6e96b0c2a801cb511bc0c242eb9d361b77693f21471c610066565b610ef07f20fc411a114d13992c2705aa034e3f315d78608a0f7de4ccf7a72e494855ad0d7f0761d33c66614aaa570e7f1e8244ca1120243f92fa59e4f900c567bf41f5a59b7f062100eb485db06269655cf186a68532985275428450359adc99cec6960711b87f2db366bfdd36d277a692bb825b86275beac404a19ae07a9082ea46bd83517926610066565b610f7c7f26c0c8fe09eb30b7e27a74dc33492347e5bdff409aa3610254413d3fad795ce57f22734b4c5c3f9493606c4ba9012499bf0f14d13bfcfcccaa16102a29cc2f69e07f23b1822d278ed632a494e58f6df6f5ed038b186d8474155ad87e7dff62b37f4b7f25b5c004a4bdfcb5add9ec4e9ab219ba102c67e8b3effb5fc3a30f317250bc5a610066565b6110087f1a306d439d463b0816fc6fd64cc939318b45eb759ddde4aa106d15d9bd9baaaa7f248d97d7f76283d63bec30e7a5876c11c06fca9b275c671c5e33d95bb7e8d7297f12b6595bdb329b6fb043ba78bb28c3bec2c0a6de46d8c5ad6067c4ebfd4250da7f070dd0ccb6bd7bbae88eac03fa1fbb26196be3083a809829bbd626df348ccad9610066565b6110937f2a6cf5e9aa03d4336349ad6fb8ed2269c7bef54b8822cc76d08495c12efde1877f04d5ee4c3aa78f7d80fde60d716480d3593f74d4f653ae83f4103246db2e8d657e94975717f9a8a8bb35152f24d43294071ce320c829f388bc852183e1e2ce7e7f28a8f8372e3c38daced7c00421cb4621f4f1b54ddc27821b0d62d3d6ec7c56cf610066565b61111e7f159f81ada0771799ec38fca2d4bf65ebb13d3a74f3298db36272c5ca65e92d9a7eb7258ded52bbda2248404d55ee5044798afc3a209193073f7954d4d63b0b647f03fd9ac865a4b2a6d5e7009785817249bff08a7e0726fcb4e1c11d39d199f0b07f2304d31eaab960ba9274da43e19ddeb7f792180808fd6e43baae48d7efcba3f3610066565b6111aa7f0832e5753ceb0ff6402543b1109229c165dc2d73bef715e3f1c6e07c168bb1737f2b1b045def3a166cec6ce768d079ba74b18c844e570e1f826575c1068c94c33f7f1e65f838515e5ff0196b49aa41a2d2568df739bc176b08ec95a79ed82932e30d7f1ef90e67437fbc8550237a75bc28e3bb9000130ea25f0c5471e144cf4264431f610066565b6112367f22ead100e8e482674decdab17066c5a26bb1515355d5461a3dc06cc85327cea97f0493630b7c670b6deb7c84d414e7ce79049f0ec098c3c7c50768bbe29214a53a7f0e2427d38bd46a60dd640b8e362cad967370ebb777bedff40f6a0be27e7ed7057f02f614e9cedfb3dc6b762ae0a37d41bab1b841c2e8b6451bc5a8e3c390b6ad16610066565b6112c27f2f569b8a9a4424c9278e1db7311e889f54ccbf10661bab7fcd18e7c7a7d835057f2fa2a871c15a387cc50f68f6f3c3455b23c00995f05078f672a9864074d412e57f1e32752ada8836ef5837a6cde8ff13dbb599c336349e4c584b4fdc0a0cf6f9d07f25b3e56e655b42cdaae2626ed2554d48583f1ae35626d04de5084e0b6d2a6f16610066565b61134e7f0ef915f0ac120b876abccceb344a1d36bad3f3c5ab91a8ddcbec2e060d8befac7f02fcca2934e046bc623adead873579865d03781ae090ad4a8579d2e7a68003557f227808de93906d5d420246157f2e42b191fe8c90adfe118178ddc723a53190257f044cb455110a8fdd531ade530234c518a7df93f7332ffd2144165374b246b43d610066565b6113da7f25721c4fc15a3f2853b57c338fa538d85f8fbba6c6b9c6090611889b797b9c5f7f1fffb9ec1992d66ba1e77a7b93209af6f8fa76d48acb664796174b5326a31a5c7f0a76225dc04170ae3306c85abab59e608c7f497c20156d4d36c668555decc6e57f1797130f4b7a3e1777eb757bc6f287f6ab0fb85f6be63b09f3b16ef2b1405d38610066565b6114667f21ca859468a746b6aaa79474a37dab49f1ca5a28c748bc7157e1b3345bb0f9597f2106feea546224ea12ef7f39987a46c85c1bc3dc29bdbd7a92cd60acb4d391ce7f13abe3f5239915d39f7e13c2c24970b6df8cf86ce00a22002bc15866e52b5a967f0c817fd42d5f7a41215e3d07ba197216adb4c3790705da95eb63b982bfcaf75a610066565b6114f27f09d3dca9173ed2faceea125157683d18924cadad3f655a60b72f5864961f14557f0558531a4e25470c6157794ca36d0e9647dbfcfe350d64838f5b1a8a2de0d4bf7f0f0e34a64b70a626e464d846674c4c8816c4fb267fe44fe6ea28678cb09490a47f05ccd6255c1e6f0c5cf1f0df934194c62911d14d0321662a8f1a48999e34185b610066565b61157e7f176563472456aaa746b694c60e1823611ef39039b2edc7ff391e6f2293d2c4047f1daf345a58006b736499c583cb76c316d6f78ed6a6dffc82111e11a63fe412df7f2bf07216e2aff0a223a487b1a7094e07e79e7bcc9798c648ee3347dd5329d34b7f0328cbd54e8c0913493f866ed03d218bf23f92d68aaec48617d4c722e5bd4335610066565b61160a7f2debff156e276bb5742c3373f2635b48b8e923d301f372f8e550cfd4034212c77f14bce3549cc3db7428126b4c3a15ae0ff8148c89f13fb35d35734eb5d4ad0def7f226c9b1af95babcf17b2b1f57c7310179c1803dec5ae8f0a1779ed36c817ae2a7f2ef1e0fad9f08e87a3bb5e47d7e33538ca964d2b7d1083d4fb0225035bd3f8db610066565b6116967f0b61811a9210be78b05974587486d58bddc8f51bfdfebbb87afe8b7aa7d3199c7f03152169d4f3d06ec33a79bfac91a02c99aa0200db66d5aa7b835265f9c9c8f37f0c225b7bcd04bf9c34b911262fdc9c1b91bf79a10c0184d89c317c53d7161c297f2d4083cf5a87f5b6fc2395b22e356b6441afe1b6b29c47add7d0432d1d4760c7610066565b6117217e780af2ca1cad6465a2171250fdfc32d6fc241d3214177f3d553ef3631821857f0376b4fae08cb03d3500afec1a1f56acb8e0fde75a2106d7002f59c5611d4daa7f1a44bf0937c722d1376672b69f6c9655ba7ee386fda1112c0757143d1bfa91467f203e000cad298daaf7eba6a5c5921878b8ae48acf7048f16046d637a533b6f78610066565b6117ac7f222c01175718386f2e2e82eb122789e352e105a3b8fa852613bc534433ee428c7e544b8338791518b2c7645a50392798b21f75bb60e3596170067d00141cac167f10dc6e9c006ea38b04b1e03b4bd9490c0d03f98929ca1d7fb56821fd19d3b6e87f10774d9ab80c25bdeb808bedfd72a8d9b75dbe18d5221c87e9d857079bdc31d5610066565b6118387f04a533f236c422d1ff900a368949b0022c7a2ae092f308d82b1dcbbf51f5000d7f06041bdac48205ac87adb87c20a478a71c9950c12a80bc0a55a8e83eaaf047467f062752f86eebe11a009c937e468c335b04554574c2990196508e01fa5860186b7f2840d045e9bc22b259cfb8811b1e0f45b77f7bdb7f7e2b46151a1430f608e3c5610066565b6118c47f14abdec8db9c6dc970291ee638690209b65080781ef9fd13d84c7a726b5f13647f0b0d219346b8574525b1a270e0b4cba5d56c928e3e2c2bd0a1ecaed015aaf6ae7f011c2683ae91eb4dfbc13d6357e8599a9279d1648ff2c95d2f79905bb13920f17f13e31d7a67232fd811d6a955b3d4f25dfe066d1e7dc33df04bde50a2b2d05b2a610066565b6119507f2567a658a81ffb444f240088fa5524c69a9e53eeab6b7f8c41c3479dcf8c644a7f16eb59494a9776cf57866214dbd1473f3f0738a325638d8ba36535e011d582597f278543721f96d1307b6943f9804e7fe56401deb2ef99c4d12704882e7278b6077f1a0b70b4b26fdc28fcd32aa3d266478801eb12202ef47ced988d0376610be106610066565b6119dc7f02db50480a07be0eb2c2e13ed6ef4074c0182d9b668b8e08ffe67692500420257f16bd7d22ff858e5e0882c2c999558d77e7673ad5f1915f9feb679a8115f014cf7f15c091233e60efe0d4bbfce2b36415006a4f017f9a85388ce206b91f99f2c9847f29aa1d7c151e9ad0a7ab39f1abd9cf77ab78e0215a5715a6b882ade840bb13d8610066565b611a687f1498a307e68900065f5e8276f62aef1c37414b84494e1577ad1a6d64341b78ec7f0184bef721888187f645b6fee3667f3c91da214414d89ba5cd301f22b0de89907f1dda05ebc30170bc98cbf2a5ee3b50e8b5f70bc424d39fa4104d37f1cbcf7a427f05e4a220e6a3bc9f7b6806ec9d6cdba186330ef2bf7adb4c13ba866343b73119610066565b611af47f0f53dafd535a9f4473dc266b6fccc6841bbd336963f254c152f89e785f729bbf7f2f77d77786d979b23ba4ce4a4c1b3bd0a41132cd467a86ab29b913b6cf3149d07f09d317cc670251943f6f5862a30d2ea9e83056ce4907bfbbcb1ff31ce5bb96507f25f40f82b31dacc4f4939800b9d2c3eacef737b8fab1f864fe33548ad46bd49d610066565b611b807f24a6073f91addc33a49a1fa306df008801c5ec569609034d2fc50f7f0f4d00567f1ce1580a3452ecf302878c8976b82be96676dd114d1dc8d25527405762f835297f2a902c8980c17faae368d385d52d16be41af95c84eaea3cf893e65d6ce4a8f627f25c1fd72e223045265c3a099e17526fa0e6976e1c00baf16de96de85deef2fa2610066565b611c0c7f2754114281286546b75f09f115fc751b4778303d0405c1b4cc7df0d8e9f639257f06342da370cc0d8c49b77594f6b027c480615d50be36243a99591bc9924ed6f57f23dffae3c423fa7a93468dbccfb029855974be4d0a7b29946796e5b6cd70f15d7f25e52dbd6124530d9fc27fe306d71d4583e07ca554b5d1577f256c68b0be2b74610066565b611c987f17662f7456789739f81cd3974827a887d92a5e05bdf3fe6b9fbccca4524aaebd7f13ccf689d67a3ec9f22cb7cd0ac3a327d377ac5cd0146f048debfd098d3ec7be7f265fe062766d08fab4c78d0d9ef3cabe366f3be0a821061679b4b3d2d77d5f3e7f15c19e8534c5c1a8862c2bc1d119eddeabf214153833d7bdb59ee197f8187cf5610066565b611d247f2ddb2e376f54d64a563840480df993feb4173203c2bd94ad0e602077aef9a03e7f2bc07ea2bfad68e8dc724f5fef2b37c2d34f761935ffd3b739ceec4668f37e887f18137478382aadba441eb97fe27901989c06738165215319939eb17b01fa975c7f21b29c76329b31c8ef18631e515f7f2f82ca6a5cca70cee4e809fd624be7ad5d610066565b611db07f11fe5b18fbbea1a86e06930cb89f7d4a26e186a65945e96574247fddb720f8f57f0b8442bfe9e4a1b4428673b6bd3eea6f9f445697058f134aae908d0279a29f0c7f0d4de47e1aba34269d0c620904f01a56b33fc4b450c0db50bb7f87734c9a1fe57f277eb50f2baa706106b41cb24c602609e8a20f8d72f613708adb25373596c3f7610066565b611e3c7f30185c48b7b2f1d53d4120801b047d087493bce64d4d24aedce2f4836bb84ad47f221b63d66f0b45f9d40c54053a28a06b1d0a4ce41d364797a1a7e0c96529f4217f0b2ca6a999fe6887e0704dad58d03465a96bc9e37d1091f61bc9f9c62bbeb8247f224026f6dfaf71e24d25d8f6d9f90021df5b774dcad4d883170e4ad89c33a0d6610066565b611ec87f1444e8f592bdbfd8025d91ab4982dd425f51682d31472b05e81c43c0f9434b317f0977545836866fa204ca1d853ec0909e3d140770c80ac67dc930c69748d5d4bc7f2716683b32c755fd1bf8235ea162b1f388e1e0090d06162e8e6dfbe4328f3e3b7f23f5d372a3f0e3cba989e223056227d3533356f0faa48f27f8267318632a61f0610066565b611f547f1db1db8aa45283f31168fa66694cf2808d2189b87c8c8143d56c871907b39b877f174b54d9907d8f5c6afd672a738f42737ec338f3a0964c629f7474dd44c5c8d77f22a5c2fa860d11fe34ee47a5cd9f869800f48f4febe29ad6df69816fb1a914d27f26e04b65e9ca8270beb74a1c5cb8fee8be3ffbfe583f7012a00f874e7718fbe3610066565b611fe07f2b30d53ed1759bfb8503da66c92cf4077abe82795dc272b377df57d77c8755267f29c25a22fe2164604552aaea377f448d587ab977fc8227787bd2dc0f36bcf41e7f0b73f613993229f59f01c1cec8760e9936ead9edc8f2814889330a2f2bade4577f1530bf0f46527e889030b8c7b7dfde126f65faf8cce0ab66387341d813d1bfd1610066565b61206c7f0a99b3e178db2e2e432f5cd5bef8fe4483bf5cbf70ed407c08aae24b830ad7257f1ec9daea860971ecdda8ed4f346fa967ac9bc59278277393c68f09fa03b8b95f7f2520e18300afda3f61a40a0b8837293a55ad01071028d4841ffa9ac7063641137f12f6d703b5702aab7b7b7e69359d53a2756c08c85ede7227cf5f0a2916787cd2610066565b6120f87f1049a6c65ff019f0d28770072798e8b7909432bd0c129813a9f179ba627f7d6a7f2737f8ce1d5a67b349590ddbfbd709ed9af54a2a3f2719d33801c9c17bdd9c9e7f08c9c65a4f955e8952d571b191bb0adb49bd8290963203b35d48aab38f8fc3a37f07cda9e63db6e39f086b89b601c2bbe407ee0abac3c817a1317abad7c5778492610066565b6121847f265a5eccd8b92975e33ad9f75bf3426d424a4c6a7794ee3f08c1d100378e545e7f2ec5f2f1928fe932e56c789b8f6bbcb3e8be4057cbd8dbd18a1b352f5cef42ff7f2ff2b6fd22df49d2440b2eaeeefa8c02a6f478cfcf11f1b2a4f7473483885d197f18b4fe968732c462c0ea5a9beb27cecbde8868944fdf64ee60a5122361daeddb610066565b6122107f01a75666f6241f6825d01cc6dcb1622d4886ea583e87299e6aa2fc716fdb6cf57f2c30d5f33bb32c5c22b9979a605bf64d508b705221e6a686330c9625c2afe0b87f094c97d8c194c42e88018004cbbf2bc5fdb51955d8b2d66b76dd98a2dbf604177f2405eaa4c0bde1129d6242bb5ada0e68778e656cfcb366bf20517da1dfd4279c610066565b61229c7f2cf4051e6cab48301a8b2e3bca6099d756bbdf485afa1f549d395bbcbd8064617f27aa8d3e25380c0b1b172d79c6f22eee99231ef5dc69d8dc13a4b5095d0287727f154ade9ca36e268dfeb38461425bb0d8c31219d8fa0dfc75ecd21bf69aa0cc747f0a3290e8398113ea4d12ac091e87be7c6d359ab9a66979fcf47bf2e87d382fcb610066565b6123287f0dc8a2146110c0b375432902999223d5aa1ef6e78e1e5ebcbc1d9ba41dc1c7377f1b362e72a5f847f84d03fd291c3c471ed1c14a15b221680acf11a3f02e46aa957f298beb64f812d25d8b4d9620347ab02332dc4cef113ae60d17a8d7a4c91f83bc7f301e70f729f3c94b1d3f517ddff9f2015131feab8afa5eebb0843d7f84b23e71610066565b6123b47f01001cf512ac241d47ebe2239219bc6a173a8bbcb8a5b987b4eac1f533315b6b7f1b5b2946f7c28975f0512ff8e6ca362f8826edd7ea9c29f382ba8a2a0892fd5d7f0a87391fb1cd8cdf6096b64a82f9e95f0fe46f143b702d74545bb314881098ee7f0a48663b34ce5e1c05dc93092cb69778cb21729a72ddc03a08afa1eb922ff279610066565b6124407f2d9b10c2f2e7ac1afddccffd94a563028bf29b646d020830919f9d5ca1cefe597f19d43ee0c6081c052c9c0df6161eaac1aec356cf435888e79f27f22ff03fa25d7f23c0039a3fab4ad3c2d7cc688164f39e761d5355c05444d99be763a97793a9c47f2fd977c70f645db4f704fa7d7693da727ac093d3fb5f5febc72beb17d8358a32610066565b6124cc7f0f97ae3033ffa01608aafb26ae13cd393ee0e4ec041ba644a3d3ab546e98c9c87f19d2cc5ca549d1d40cebcd37f3ea54f31161ac3993acf3101d2c2bc30eac1eb07f0abc392fe85eda855820592445094022811ee8676ed6f0c3044dfb54a7c10b357f2457ca6c2f2aa30ec47e4aff5a66f5ce2799283e166fc81cdae2f2b9f83e4267610066565b6125587f2e47e15ea4a47ff1a6a853aaf3a644ca38d5b085ac1042fdc4a705a7ce089f4d7f0a1bb075aa37ff0cfe6c8531e55e1770eaba808c8fdb6dbf46f8cab58d9ef1af7f240faf28f11499b916f085f73bc4f22eef8344e576f8ad3d1827820366d5e07b7f16dbc78fd28b7fb8260e404cf1d427a7fa15537ea4e168e88a166496e88cfeca610066565b6125e47f242acd3eb3a2f72baf7c7076dd165adf89f9339c7b971921d9e70863451dd8d17f089cb1b032238f5e4914788e3e3c7ead4fc368020b3ed38221deab1051c377027f18b42d7ffdd2ea4faf235902f057a2740cacccd027233001ed10f96538f0916f7f166e5bf073378348860ca4a9c09d39e1673ab059935f4df35fb14528375772b6610066565b6126707f0529898dc0649907e1d4d5e284b8d1075198c55cad66e8a9bf40f92938e2e9617f1e8e40ac853b7d42f00f2e383982d024f098b9f8fd455953a2fd380c4df7f6b27f17340e71d96f466d61f3058ce092c67d2891fb2bb318613f780c275fe1116c6b7f174fbb104a4ee302bf47f2bd82fce896eac9a068283f326474af860457245c3b610066565b6126fb7eccf13e0cb6f9d81d52951bea990bd5b6c07c5d98e66ff71db6e74d5b87d1587f292643e3ba2026affcb8c5279313bd51a733c93353e9d9c79cb723136526508e7f12c7553698c4bf6f3ceb250ae00c58c2a9f9291efbde4c8421bef44741752ec67f2162754db0baa030bf7de5bb797364dce8c77aa017ee1d7bf65f21c4d4e5df8f610066565b6127877f1b8fd9ff39714e075df124f887bf40b383143374fd2080ba0c0a6b6e8fa5b3e87f0f356841b3f556fce5dbe4680457691c2919e2af53008184d03ee1195d72449e7f14c61c836d55d3df742bdf11c60efa186778e3de0f024c0f13fe53f8d8764e1f7f185d1e20e23b0917dd654128cf2f3aaab6723873cb30fc22b0f86c15ab645b4b610066565b6128137f29a3110463a5aae76c3d152875981d0c1daf2dcd65519ef5ca8929851da8c0087f05d797f1ab3647237c14f9d1df032bc9ff9fe1a0ecd377972ce5fd5a0c0146047f2e6c5e898f5547770e5462ad932fcdd2373fc43820ca2b16b0861421e79155c87f0e86a8c2009c140ca3f873924e2aaa14fc3c8ae04e9df0b3e9103418796f6024610066565b61289f7f1e6aac1c6d3dd3157956257d3d234ef18c91e82589a78169fbb4a8770977dc2f7f1c793ef0dcc51123654ff26d8d863feeae29e8c572eca912d80c8ae36e40fe9b7f1ed0fb06699ba249b2a30621c05eb12ca29cb91aa082c8bfcce9c522889b47dc7f2974da7bc074322273c3a4b91c05354cdc71640a8bbd1f864b732f8163883314610066565b61292a7f0b0d7e69c651910bbef3e68d417e9fa0fbd57f596c8f29831eff8c0174cdb06d7e6e5979da7e7ef53a825aa6fddc3abfc76f200b3740b8b232ef481f5d06297b7f191033d6d85ceaa6fc7a9a23a6fd9996642d772045ece51335d49306728af96c7f1a20ada7576234eee6273dd6fa98b25ed037748080a47d948fcda33256fb6bf5610066565b6129b67f0136df457c80588dd687fb2f3be18691705b87ec5a4cfdc168d31084256b67dc7f16af29695157aba9b8bbe3afeb245feee5a929d9f928b9b81de6dadc78c32aae7f12c1ea892cc31e0d9af8b796d9645872f7f77442d62fd4c8085b2f150f72472a7f25caf5b0c1b93bc516435ec084e2ecd44ac46dbbb033c5112c4b20a25c9cdf9d610066565b612a427f13f9b9a41274129479c5e6138c6c8ee36a670e6bc68c7a49642b645807bfc8247f11aeeb527dc8ce44b4d14aaddca3cfe2f77a1e40fc6da97c249830de1edfde547f03d62fbf82fd1d4313f8e650f587ec06816c28b700bdc50f7e232bd9b5ca9b767f1639a28c5b4c81166aea984fba6e71479e07b1efbc74434db95a285060e7b089610066565b612ace7f2cf0a09a55ca93af8abd068f06a7287fb08b193b608582a27379ce35da915dec7f2bedb66e1ad5a1d571e16e2953f48731f66463c2eb54a245444d1c0a3a25707e7f1b39a00cbc81e427de4bdec58febe8d8b5971752067a612b39fc46a68c5d4db47f0e4772fa3d75179dc8484cd26c7c1f635ddeeed7a939440c506cae8b7ebcd15b61031c565b612b5a7f1aa9d3fe4c644910f76b92b3e13b30d500dae5354e79508c3c49c8aa99e0258b7f2d933ff19217a5545013b12873452bebcc5f9969033f15ec642fb464bd6073687f065610c6f4f92491f423d3071eb83539f7c0d49c1387062e630d7fd283dc33947f2d1bd78fa90e77aa88830cabfef2f8d27d1a512050ba7db0753c8fb863efb38761031c565b612be57eb4567186bc3f7c62a7b56acf4f76207a1f43c2d30d0fe4a627dcdd9bd790787f0c7c382443c6aa787c8718d86747c7f74693ae25b1e55df13f7c3c1dd735db0f7f2b7d524c5172cbbb15db4e00668a8c449f67a2605d9ec03802e3fa136ad0b8fb7f027ef04869e482b1c748638c59111c6b27095fa773e1aca078cea1f1c8450bdd61031c565b6000805160206130188339815191527f1e41fc29b825454fe6d61737fe08b47fb07fe739e4c1e61d0337490883db4fd5600051086000805160206130188339815191527f12507cd556b7bbcc72ee6dafc616584421e1af872d8c0e89002ae8d3ba0653b6602051086000805160206130188339815191527f13d437083553006bcef312e5e6f52a5d97eb36617ef36fe4d77d3e97f71cb5db608051086000805160206130188339815191527f163ec73251f85443687222487dda9a65467d90b22f0b38664686077c6a4486d560a0510860008051602061301883398151915284850994506000805160206130188339815191528460008051602061301883398151915287880909935060008051602061301883398151915283840994506000805160206130188339815191528360008051602061301883398151915287880909925060008051602061301883398151915282830994506000805160206130188339815191528260008051602061301883398151915287880909915060008051602061301883398151915281820994506000805160206130188339815191528160008051602061301883398151915287880909905060008051602061301883398151915280600080516020612f188339815191528309600080516020613018833981519152806000805160206130d88339815191528609600080516020613018833981519152806000805160206130b88339815191528909600080516020613018833981519152600080516020612ef88339815191528b090808086000525050505060206000f35b600060608284031215612e3e57600080fd5b82601f830112612e4d57600080fd5b604051606081016001600160401b0381118282101715612e7d57634e487b7160e01b600052604160045260246000fd5b604052806060840185811115612e9257600080fd5b845b81811015612eac578035835260209283019201612e94565b50919594505050505056fe2e18c8570d20bf5df800739a53da75d906ece318cd224ab6b3a2be979e2d7eab0d745fd00dd167fb86772133640f02ce945004a7bc2c59e8790f725c5d84f0af236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad1d359d245f286c12d50d663bae733f978af08cdbd63017c57b3a75646ff382c103f3e6fab791f16628168e4b14dbaeb657035ee3da6b2ca83f0c2491e0b403eb23810bf82877fc19bff7eefeae3faf4bb8104c32ba4cd701596a15623d01476e2070679e798782ef592a52ca9cef820d497ad2eecbaa7e42f366b3e521c4ed422e49c43c4569dd9c5fd35ac45fca33f10b15c590692f8beefe18f4896ac94902083abff5e10051f078e2827d092e1ae808b4dd3e15ccc3706f38ce4157b6770e00c15fc3a1d5733dd835eae0823e377f8ba4a8b627627cc2bb661c25d20fb52a1a5ad71bbbecd8a97dc49cfdbae303ad24d5c4741eab8b7568a9ff8253a1eb6f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000012a75a171563b807db525be259699ab28fe9bc7fb1f70943ff049bc970e841a0c2f545e578202c9732488540e41f783b68ff0613fd79375f8ba8b3d30958e76770fa86f0f27e4d3dd7f3367ce86f684f1f2e4386d3e5b9f38fa283c6aa723b608014fcd5eb0be6d5beeafc4944034cf321c068ef930f10be2207ed58d2a34cdd6277686494f7644bbc4a9b194e10724eb967f1dc58718e59e3cedc821b2a7ae19023db68784e3f0cc0b85618826a9b3505129c16479973b0a84a4529e66b09c62a26469706673582212200dc6476f1cc5e37aa8028ba3f8492e68dc17e1cef432b6b868c0bda947f6f5d864736f6c634300080a0033"; + +type PoseidonT4ConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: PoseidonT4ConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class PoseidonT4__factory extends ContractFactory { + constructor(...args: PoseidonT4ConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): PoseidonT4 { + return super.attach(address) as PoseidonT4; + } + override connect(signer: Signer): PoseidonT4__factory { + return super.connect(signer) as PoseidonT4__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): PoseidonT4Interface { + return new utils.Interface(_abi) as PoseidonT4Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): PoseidonT4 { + return new Contract(address, _abi, signerOrProvider) as PoseidonT4; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/poseidon/PoseidonT5__factory.ts b/packages/contracts/typechain-types/factories/contracts/poseidon/PoseidonT5__factory.ts new file mode 100644 index 00000000..53dcd93c --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/poseidon/PoseidonT5__factory.ts @@ -0,0 +1,82 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + PoseidonT5, + PoseidonT5Interface, +} from "../../../contracts/poseidon/PoseidonT5"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256[4]", + name: "", + type: "uint256[4]", + }, + ], + name: "hash4", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, +] as const; + +const _bytecode = + "0x6141fc61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c80633dfb88b21461003a575b600080fd5b61004d610048366004613ddb565b61005f565b60405190815260200160405180910390f35b6000610948565b600080516020613fe78339815191528160005108600080516020613fe78339815191528360205108600080516020613fe78339815191528560805108600080516020613fe78339815191528760a05108600080516020613fe78339815191528960c05108600080516020613fe7833981519152858609600080516020613fe783398151915286600080516020613fe783398151915283840909955050600080516020613fe7833981519152806000805160206140878339815191528309600080516020613fe783398151915280600080516020613f478339815191528609600080516020613fe7833981519152806000805160206141078339815191528909600080516020613fe7833981519152806000805160206140278339815191528c09600080516020613fe78339815191526000805160206141478339815191528e0908080808600052600080516020613fe7833981519152806000805160206141a78339815191528309600080516020613fe783398151915280600080516020613f878339815191528609600080516020613fe7833981519152806000805160206140c78339815191528909600080516020613fe7833981519152806000805160206141678339815191528c09600080516020613fe7833981519152600080516020613ee78339815191528e0908080808602052600080516020613fe783398151915280600080516020613ec78339815191528309600080516020613fe7833981519152806000805160206140678339815191528609600080516020613fe7833981519152806000805160206140078339815191528909600080516020613fe783398151915280600080516020613fc78339815191528c09600080516020613fe7833981519152600080516020613e678339815191528e0908080808608052600080516020613fe783398151915280600080516020613e878339815191528309600080516020613fe783398151915280600080516020613fa78339815191528609600080516020613fe783398151915280600080516020613f278339815191528909600080516020613fe7833981519152806000805160206141278339815191528c09600080516020613fe78339815191526000805160206141878339815191528e090808080860a052600080516020613fe783398151915280600080516020613f078339815191528309600080516020613fe783398151915280600080516020613ea78339815191528609600080516020613fe7833981519152806000805160206140478339815191528909600080516020613fe7833981519152806000805160206140e78339815191528c09600080516020613fe78339815191526000805160206140a78339815191528e090808080860c05250505050505050505050565b600080516020613fe78339815191528160005108600080516020613fe78339815191528360205108600080516020613fe78339815191528560805108600080516020613fe78339815191528760a05108600080516020613fe78339815191528960c05108600080516020613fe7833981519152858609600080516020613fe783398151915286600080516020613fe7833981519152838409099550600080516020613fe78339815191528586099050600080516020613fe783398151915285600080516020613fe7833981519152838409099450600080516020613fe78339815191528485099050600080516020613fe783398151915284600080516020613fe7833981519152838409099350600080516020613fe78339815191528384099050600080516020613fe783398151915283600080516020613fe7833981519152838409099250600080516020613fe78339815191528283099050600080516020613fe783398151915282600080516020613fe783398151915283840909915050600080516020613fe7833981519152806000805160206140878339815191528309600080516020613fe783398151915280600080516020613f478339815191528609600080516020613fe7833981519152806000805160206141078339815191528909600080516020613fe7833981519152806000805160206140278339815191528c09600080516020613fe78339815191526000805160206141478339815191528e0908080808600052600080516020613fe7833981519152806000805160206141a78339815191528309600080516020613fe783398151915280600080516020613f878339815191528609600080516020613fe7833981519152806000805160206140c78339815191528909600080516020613fe7833981519152806000805160206141678339815191528c09600080516020613fe7833981519152600080516020613ee78339815191528e0908080808602052600080516020613fe783398151915280600080516020613ec78339815191528309600080516020613fe7833981519152806000805160206140678339815191528609600080516020613fe7833981519152806000805160206140078339815191528909600080516020613fe783398151915280600080516020613fc78339815191528c09600080516020613fe7833981519152600080516020613e678339815191528e0908080808608052600080516020613fe783398151915280600080516020613e878339815191528309600080516020613fe783398151915280600080516020613fa78339815191528609600080516020613fe783398151915280600080516020613f278339815191528909600080516020613fe7833981519152806000805160206141278339815191528c09600080516020613fe78339815191526000805160206141878339815191528e090808080860a052600080516020613fe783398151915280600080516020613f078339815191528309600080516020613fe783398151915280600080516020613ea78339815191528609600080516020613fe7833981519152806000805160206140478339815191528909600080516020613fe7833981519152806000805160206140e78339815191528c09600080516020613fe78339815191526000805160206140a78339815191528e090808080860c05250505050505050505050565b6000600080516020613fe78339815191527f0554d736315b8662f02fdba7dd737fbca197aeb12ea64713ba733f28475128cb60805108600080516020613fe78339815191527f2f83b9df259b2b68bcd748056307c37754907df0c0fb0035f5087c58d5e8c2d460a05108600080516020613fe78339815191527f2ca70e2e8d7f39a12447ac83052451b461f15f8b41a75ef31915208f5aba968360c05108600080516020613fe78339815191527f1cb5f9319be6a45e91b04d7222271c94994196f12ed22c5d4ec719cb83ecfea960e05108600080516020613fe7833981519152600080516020613f67833981519152610100510860e052600080516020613fe78339815191528485099450600080516020613fe783398151915284600080516020613fe7833981519152878809099350600080516020613fe78339815191528384099450600080516020613fe783398151915283600080516020613fe7833981519152878809099250600080516020613fe78339815191528283099450600080516020613fe783398151915282600080516020613fe7833981519152878809099150600080516020613fe78339815191528182099450600080516020613fe783398151915281600080516020613fe7833981519152878809099050600080516020613fe7833981519152806000805160206140878339815191528309600080516020613fe783398151915280600080516020613f478339815191528609600080516020613fe7833981519152806000805160206141078339815191528909600080516020613fe7833981519152806000805160206140278339815191528c097f1282bc78005ba97a80ccae28ce172790ca301e19e52354333993891b9fd27bd408080808600052600080516020613fe7833981519152806000805160206141a78339815191528309600080516020613fe783398151915280600080516020613f878339815191528609600080516020613fe7833981519152806000805160206140c78339815191528909600080516020613fe7833981519152806000805160206141678339815191528c097f25ce673773c90bcab91ecf14a691cbc59aeff5abfff4cfc7c6a85d51a79468fa08080808602052600080516020613fe783398151915280600080516020613ec78339815191528309600080516020613fe7833981519152806000805160206140678339815191528609600080516020613fe7833981519152806000805160206140078339815191528909600080516020613fe783398151915280600080516020613fc78339815191528c097f2933f130a05a81186977481f40b428b2fa98c4a8f2561aad43098fb380f746b708080808608052600080516020613fe783398151915280600080516020613e878339815191528309600080516020613fe783398151915280600080516020613fa78339815191528609600080516020613fe783398151915280600080516020613f278339815191528909600080516020613fe7833981519152806000805160206141278339815191528c097f178f5c848248d8ae30d9d4e6c27ec06995bba97b9d0ab13bb7b63e121958133e0808080860a052600080516020613fe783398151915280600080516020613f078339815191528309600080516020613fe783398151915280600080516020613ea78339815191528609600080516020613fe7833981519152806000805160206140478339815191528909600080516020613fe7833981519152806000805160206140e78339815191528c097f1f52dac6047456323348e214a18a3aad024561b12c7ca045cd2484b9d4ffe3c00808080860c05250505050610f1f7f1e9a96dc8292bb596f52a59538d329229732b25259cf744b6a12d30702d6fba07f0f9d0d5aad2c9555a2be7150392d8d9819b208ae3370f99a0626f9ff5d90e4e37f0f7411b465e600eed8afdd6afca49c3036f33ecbd9a0f97823796b993bbd82f77f224a28e5a35385a7c5198169e405d9ea0fc7da8b93ee13b6d5f7d099e299520e600080516020613f67833981519152610465565b610fcc7f0ac1e91c57d9da919fd6f59d2a40ff8ea3e41e24e247a387adf2584295d61c667f045b9f59b6595e614dc08f222b469b138e886e64bf3c40aa97ea0ae754934d307f01ef8f9dd7c93aac4b7cb80930bd06eb45bd350aff585f10e3d0ef8a782ef7df7f272498fced686c7ac8149fa3f73ef8c2ced64717e3556d5a59f119d629ccb5fc7f08780514ccd90380887d578c45555e593cfe52eab4b945c6c2cd4d528fb3fe3c610465565b6110797f1b041ad5b2f0684258e4dfaeea09be56a3276fdb19f44c015cd0c7eed465e2e37f2212d3a0f5fccaf244ff3547fd823249ad8ab8ba2a18d383dd05c56ee894d8507f2fb5dda8072bb72cbaac2f63e468215e05c9de06758db6a94af34384aedb462b7f26b41802c071ea4c9632647ed059236e50c19c3fb3c96d09d02aae2a0dcd9dbc7f028a1621a94054b0c7f9a421353cd89d0fd67061aee99979d12e68f04e62d134610465565b6111267f06d7626c953ccb72f37141dc34d578e036296c0657674f80739ae1d883e912697f1c46831d9a74529357641c219d721a74a427110032b5e1dd19dde30424be401e7f29d299b80cd4489e4cf75779ed54b48c60b042257b78fc004c1b803381a3bdfd7f2b7b5674aaecc3cbf34d3f275066d549a4f33ae8c15cf827f7936440810ace437f0a01776bb22f4b6b8eccff33e76fded3144fb7e3ac14e846a91e64afb1500eff610066565b6111d37f2aa74f7597f0c9f45f91d7961c3a54fb8890d276612e1246384b1470da24d8cc7f2e6e07c3c95bf7c34dd7a01d00a7ffec42cb3d16a1f72721afacb4c4cfd35db17f26ce38fa636c90630e97f25114a79a2dca56859ef759e53ce7abf22c24e80f277f2e67f7ee5e4aa295f85deed09e400b17be67f1b7ed2ab6adb8ec0619f6fbc5e97f28ffddc86f18c136c54002748e0c410edc5c440a3022cd960f108c71cda2930c610066565b6112807f0e444582d22b4e76c081d34c44c18e424011a34d5476252863ea3c606b551e5c7f1dff6385cb31f1c24637810a4bd1b16fbf5152905be36583da747e79661fc2077f1154f7cf519186bf1aafb14b350eb860f97fd9740926dab93809c284047135047f212bd19df812eaaef4a40600528f3d7da5d3106ff565aa3b11e29f3305e73c047f287d681a46a2faae2c7c090f668ab45b8a71313c1509183e2ec0ca639b7f73fe610066565b61132c7e874c1344a4ad51ff8dcb7cbd2d9743cb72743f0394efe7f4a58ebeb956baa17f13d51c1090a1ad4876d1e555d7fed13da8e5713b25026ebe5fdb4808703243da7f1173b7d112c2a798fd9b9d3751842c75d466c837cf50d73efd049eb4438a22407f12746bbd71791059193bba79cdec448f25b8cf002740112db70f2c6876a9c29d7f0323c9e433ba66c4abab6638328f02f1815773e9c2846323ff72d3aab7e4eff8610066565b6113d97f2999bab1a5f25210519fa6622af53a15a3e240c0da5701cb784fddc0dc23f01f7f094f5534444fae36a4bfc1d5bf3dc05bfbbbc70a6365366dd6745a5067289e437f09b18d9b917a55bca302be1f7f181e0e640b9d73a9ab298c69b435b5fc502f327f0bf964d2dbd25b908708b437a445fc3e984524a59101e6c18bf5eb05a919f1557f22df22131aaab85865ce236b07f244fa0eea48d3546e97d6a32a562074fef08f610066565b6114867f0a21fa1988cf38d877cc1e2ed24c808c725e2d4bcb2d3a007b5987b87085671d7f18a3f736509197d6e4915bdd04d3e5ddb67e2cc5de9a22750768e5524737172c7f186279b003454db01339ff77113bc9eb62603e078e1c6689a6c9582c41a0529f7f07268eaaba08bc19ec16d7e1318a4740565deb1e8e5742f862174b1a6866fccb7f2f6898c07581f6371ca94db73710e88084301bce8a93d13669575a11b03a3d23610066565b6115337f0492bf383c36fa55540303a3b536f85e7b70a58e854ab9b9103d7f5f379abaaa7f2fbea4d65d7ed425a42712e5a721e4eaa627ac5cb0eb878ccc2ee0aed543e9227f0890ba0819ac0a6f86d9865fe7e50ef361c61d3d43b6e65d7a24f651249baa707f164b7062c4671cf08c08b8c3f9806d560b7775b7c902f5788cd28de3e779f1617f15b285cbe26c467f1faf5ef6a64625228328c184a2c43bc00b36a135e785fba2610066565b6115e07f0c8b482dba0ad51be9f255de0c3dbddddf84a630af68d50bbb06983e3d5d58a57f18824a09e6afaf4a36ed2462a86bd0bad798815644f2bbde8813c13457a455507f024154adf0255d47958f7723921474131f2629fadc89496906cd01dc6fa0784e7f12fe5c2029e4b33893d463cb041acad0995b9621e6e49c3b7e380a76e36e6c1c7f05e91fe944e944104e20251c565142d61d6185a9ce85675f6a969d56292dc24e610066565b61168d7f2bd0f940ad936b796d2bc2e048bc979e49be23a4b13598f9fe536a16dc1d81e67f1c0f8697795689cdf70fd2f2c0f93d1a79b39ebc7a1b1c549dbbca7b8e747cd67f0f0d139a0e81e943038cb288d62636764bbb6295f07569885771ec84edc50c407f050ae95f6d2f1519122f5af67b690f31e550773fa8d18bf71cc6d0e911fa402e7f17325fd0ab635871363e0a1667d3b67c5a4fa67fcd6aaf86441392878fdb05e6610066565b61173a7f12f16e2de6d4ad46a98cdb697c6cad5dd5e7e413f741ccf29ff2ea486e59bb287f2bf3086e96c36c7bce415907ad0c40ed6e9661c009679e4e37cb13027c83e5257f193fe3db0ab47d3c5d2ec5e9c5bd9983c9891f2cadc165db6064bbe6fcc1e3057f2e4889d830a67e5a8f96bdd3155a7ca3284fbd307d1f71b0f151be62548e2aea7f27eb1be27c9c4e934778c09a0053337fa06ebb275e096d167ce54d1e96ee62cb610066565b6117e77f2ccc6f431fb7400730a783b66064697a1550c12b08dfeb72830e107da78e34057f2667f7fb5a4fa1246170a745d8a4188cc31adb0eae3325dc9f3f07d4b92b3e2e7f0e2d7e1dc946d70b2749a3b54367b25a71b84fb911aa57ae137fd4b6c21b444a7f21be0e2c4bfd64e56dc47f957806dc5f0a2d9bcc26412e2977df79acc10ba9747f2a72147d230119f3a0262e3653ddd19f33f3d5d6ec6c4bf0ad919b0343b92d2f610066565b6118947f026091fd3d4c44d50a4b310e4ac6f0fa0debdb70775eeb8af630cffb60092d6f7f09fad2269c4a8e93c81e1b9770ea098c92787a4575b2bd73a0bf2af32f86ff3c7f120ccce13d28b75cfd6fb6c9ea13a648bfcfe0d7e6ff8e9610b5e9f971e16b9a7f02977b34eeaa3cb6ad40dd42c9b6fdd7a0d2fbe753af88b36acfcd3ccbc53f2a7f08888a94fc5a2ca34f0201462420001fae6dbee9e8ca0c242ec50621e38e6e5d610066565b6119417f13177839c68a5080d4e746745e43711d3cbc0ca4a108f98d63b2aa681698de607f18cef581222b647e31238e57fead7d5c758ace14c93c4da40191d0c053b519367f098c842322479f7239912b50424685cba2ebe2dc2e4da70ac7557dab65ffa2227f2749475c399aaf39d4e87c2548695b4ef1ffd86590e0827de7201351b7c883f97f29404aa2ba565b77bb7fba9dfb6fc3212543cc56afad6afcb904fd2bca893994610066565b6119ee7f0fc082dfe70728e8450bd2074c3e22e1b022c124d3bffe8b5af88ae6db5085c87f2c323fe16481bf496e439c88341ce25f198971e14487056cfdca4a451a5d86437f01645911c1198b01d64fde34a342a1786497c05969a015439057d2fe75bb281c7f27230eede9cccfc9fa805a30fc548db693d13708c646841d16e028387c7ac0227f020ca696f531e43ec088f56f4b74325626cc4df712c0e5f0a907d88e5f0deffd610066565b611a9b7f21c91a39e145c3bc34d9b694b843f3bf8b7cebf59ddbb0a064642b069997f3d47f160a9981a5c89a57cf8ffbfa57d51049a297b61074422ac134d9b857d6984d357f25698ca5e24a1b799f783c4462a24db655d6ae1bdacd1cb549d6e0bc3ae5069a7f28e420e10df2fbb5af96d621d55423190be351ce8129065a8dd9fd05b3ece9c07f2052c174800db209d8cdca568dcc25b3be9642116ac4c77efe8a488b423521ee610066565b611b487f23b584a56e2117b0774bf67cc0dee33324337350309dff833e491a133bb63b2e7f2cdbc998dfd7affd3d948d0c85bad2e2e37a4a3e07a7d75d0c8a9092ac2bed457f1c675182512620ae27e3b0b917b3a21ca52ef3ef5909b4e1c5b2237cbdab33777f0ab3e6ad0ecf8b8e7c1662a4174c52225d822895e2755544b8dbcea5657ce02c7f1ac8d80dcd5ee876d2b09345ef112345d6eaa029d93f03b6d10975461e41734c610066565b611bf57f1647c72aec6c4388d04f52fc23cd9c08c1dfcf65ce61e165fc28d1f832bd3b2c7f190b1ee1205eb9500c74a3998f2bea36353f1724d6067ed0a0a17de311ef96687f040884cdcfc64bfc7b7127340498d5c443382011b61c9a4b1387d85bc1264e687f0e01e365ba5b3031abc3e720140ae746c9ab5dab987520c460bcd4f1fa5b22db7f1e9e2b310f60ba9f8cb73030a3c9d2a10d133bc6ba4ec1152f3d20de1465e9a5610066565b611ca27f04476d91b7eff2fd85905cbf58651edc320cb15610eaed452c4d4ffa0c740a277f25d0e0f739fb39fc105a88fab0afd810de2461858e956ccccdfabeddb6a25c8f7f04a420e642b11ae94e58862a68f5e32609cd53d0ae29423439b11d04666df4f87f177b9a08343917e1365107a3da3ae7f69d853902bb16bacb3221850252b757af7f2430006346a0145f799880cc4c8736269f5494d89fb48b02842e595b71e4541d610066565b611d4f7f26a363483348b58954ea748a7129a7b0a3dc9068c3cca7b5b3f0ce03b87248847f2396cb501700bbe6c82aad51b0fb79cf8a4d353185d5808203f73f22afbf62f67f25931c0c7371f4f1fc862f306e6e5830ed824388d6b9342697d144f0fab466307f25393ce3b9256d50448a725c5c7cd5ad376f2d435855c10ebf2899cb5c6617be7f1090c0b68b3d7d7b8bc9ca2419eb8dea1c28f6d5e1250cb5e9780fd9ca286fae610066565b611dfc7f304754bb8c57d60732f492c2605184fdc33e46a532bdec80ea7bc5519ede7cef7f2638b57f23b754aec76d109a2f481aa3c22547a11ffc50152d729af632376a907f056ab351691d8bb3703e3055070ac9cc655774c1bb35d57572971ba56ee0cb897f26da28fc097ed77ce4662bde326b2cceac15f7301178581d8d2d02b3b2d910567f27ca107ca204f2a18d6f1535b92c5478c99b893334215f6ba7a0e5b45fcd6897610066565b611ea77f206b0ce2f1b2c5b7c9f37b0045227095f6c6f071ec3bdda76a7ddf4823dd5dd67f0b2449f39746085e86ce45e8eed108ee65a234835a0a6a5ea8996d124dd04d0a7f0afafadcf5b4dd4a4a76b5a1d82415fd10a19fbcfc59078c61f9297eb675d9727eee1f3c66fbc05c43ba295a303c72fab5bca86805ec9419c588e50947761fa37ed1727f8457ee03514f155b5806cbf748ec6857fc554010752ac93a9b7619ac610066565b611f547f090995b79acec240413b8d4c658787e5a4657b9ab00bdb5b1960b1059e113ba37f26b25b7e257f3e97c799024fb019f65c6ca4d8d81b1ae16221a589d68831d7597f0addb1372cee4e164655168c367559e19606c5bd17910aeb37719edfa0ca87627f254dbfac74c49b0b8926752e084e02513b06f1315e6d70e18173e972336e55d37f0feba4fb87834c7cb696e67433628cd6caffc3a4ef20fea852c7e1029459409c610066565b6120017f21d773660adafb8a879986f9aab4890566353a3777d8a3f1eb93abe10bbf1f647f19a70ec6bdfc9098a926efbcc04aa9ee248997e8b2c24af335fd6523e52508797f1deb05180e833e45659052a7ebaf816c7efd12a7f9eec94b7bc7c683f1363d5c7f09e8aba671481197679faf752a0f78e342fe9c491596ab6758f170939785179f7f08dbdc2e21ef11f2c57299687843cea3eb0d8e40e99131f42974178d44f73b7b610066565b6120ae7f14f773e9834c6bdeb8f90e78bf4c24b7203411460112491036621895204d0f127f02e47a35bcc0c3a0bda0b1c0307ad543f4280fcf87f636f853655cf97a628bb07f0fa1a1d6829f0345664a66dc75a657335f336f15f340756cfa12fc850cc8b5137f05af459361eb454d2a300c61e446998d48fa1f897bf219d608c2145c33b111c37f09f1890f72e9dc713e20ba637b89d5d397a6b01fcd667347f6f46617841c3901610066565b61215b7f0d3e2477a7b10beb44709c7746d6824edf625dd60504d5dc93ce662f15c238d67f0f281925cf5ee649b474a6819d116ca3eb4eca246c311ecadc53262a3cff2b537f21833819c3337194a6c0d29a48d4f2676f0e7c79743a306f4cfdb2b26bd11efa7f043dd5f4aa5a76dd4c47f6c65da7ca2320d4c73ad3294738cba686a7e91373c27f102d98cf502ed843255cf19d29bc7d8e642abe7cfd639992ffb091962fc8f7cc610066565b6122077e50e842a1299909123c46eff185c23ad312d03fef1adfecc7e07ecb298fd67f7f0fe6d30de7a82d163023491794f4aca3220db79e8129df3643072d841925554a7f22da66bc62e8f011266efca86a6c810f9ae4c51af6ffeb57f8b3c50df83cc13e7f29e95b492bf2f95f4d09380f98b74e389149d24045811d7a86dd861310463cf87f2cd7f641bedbf66956ff8a01be9cde35d80f80ab51e73b49acbfc3eff5aefc44610066565b6122b47f2e50e2c5b36aa20532407d86b8d22d7d5154080a24972faeb63faf0121ed7f217f0c602fa155be958761eaf739617ab136cf7b807728bf7fe35d4778d311780e547f1bf7d6e489ad8c0cf26eb68cc21ff54158132396dc250aeba4b6fc5fc33727627f2df9ee294edf99e3d8d5883fe0566c24aa66731f34a93280e1d328e67b33c9fa7f2130a3a7b3221222be34cc53a42d7733666f9ddf714ed7c5885cbbdb63108c21610066565b6123617f1aff13c81bda47e80b02962173bba343e18f94bee27c8a57661b1103a720ffe27f0ebf7ad29ca13804e1422e939681155124780ff43e76e929035498130a7f15727f0f5633df1972b9455953d88a63f80647a9ac77c6c0f85d4561972dd8fab8bd147f0b0d52f03c8af7276803ecf2465b885b21337b538eabd2f6b2ab255f376b42a87f17c2510982a7b5825710d6290ec4f782f674995ee8409b42b459123b180332e1610066565b61240e7f02d04e9c21df1dbd88524bdb203691b4cee5530559d6cf0fa05adf61e12fdcbf7f074517e081eb4c1f22d1771200fb07658f7c77654d58440490dd6f557e9e39037f1c408c256490b0a1da08dc464138dfc78cce9a9e16c7705617a4d6dbb20e7e3a7f088230c2794e50c57d75cd6d3c7b9dbe19d1e2f1d3001044b93ad1c3ee6298177f210449dbf5cf3061da2465be85505862d3f31de1a3b58ff35713be57efac6c07610066565b6124bb7f2303a652c949071826b0e9a36c80578697b44e912cce6687012854eda11a18dc7f268c5cfc446d399c4dd319db666a75b5cb655d8c1797e9fa76181cb4216e15627f09199dcafd50ce642eddbeda65206d4f61a73d10852b8114c51b2440192ae0647f2efda77ed35f4af0299f75d6e8a849b54d2ac6bf95368304e6030c18f0cf17b57f2eb7a011b8bce91082e13ebd75de3b58eb9b4650dae9f11aa81db32cf1b67b13610066565b6125687f03545706706eab36afb93b128febd16fb0425e158314197b77795ad3a798d1837f0683597315359040ea03c45d6984c6894f46cbb36d702e3c4fb9847e6304d9447f2c43169439fcd69ead8214997bb069becafcb1ba2c51e5706cb4b43dab2a443d7f1201a87eaf4ae618f02bd82d0a5109049969b5248cfe90f42c278f22615d2b0e7f27c53563b12a6ee2c3f041f31dc45922bc5353eb110868d237073f4efb35fbdf610066565b6126157f16a425e47d1110625054d5a165de413e3bd87d5aa3958fdd6eb7e03e39ba40467f263ab69f13b966f8197394552906b17e6c8617a7bdd5d74a7be3396b7fe013ab7f0fd66e03ba8808ffecb059c899fd80f4140ddd5d2a5c4483107f4e02e355b3937f1ffe6968a4470cd567b0c002281caf996e88f71e759b87e6f338e517f1690c787f1a33c254ec117619d35f1fc051b31728740bed23a6a37870edb393b71a0c0e6b610066565b6126c27f09b5f209a451ac431c051fb12d9a5e4fe40ee1601120947da990fb8e12cb46e17f076c1e88dc540c8d8de54e343df7c429d3295f52c38cffe6b48be86852da97df7f2bcc94ff4fc3c76f3cd5c68915a042e87628249a01b09561bdf24a6cdce5620f7f24df8e8d856c5b5e1bd1cad23d07dda3423c5179329b7a82cb4aa709a94576e57f2dc510a4719ec10cad752f03c673f0e253cc31d13e39e909fcc5f73af9138d9a610066565b61276f7f17022672a016a957bb87e2cfadc8b75fb28905bdb62c82c80b1cb31b411e49c87f100dc7d426debe3007fb7ceac84e4f5468efcb897e7bbee981742839d59e064c7f1a053e6878e900f45f4d67448c471cf3009a44e7a02ea50e4afa44f2592621f57f281c5c688836f6cf912638c38be046cd091681f0a41761720cdd1edf9f2370297f205f17b0d8729e2eaa88d6a44135a6ab64e9424f55b0f1ea0683af75eb677c07610066565b61281c7f2465053ae50b6885801f3f82e302cafbbb4a7581bb4fba60b637febe659e50577f1b4b5e87cfb9262cfec3c0f0542e4c5a4cf278292b4ce3eed996fac6f4d372887f2ebb599fe9136d424bf4abc5342c6c7447b1a853205fcfb5519e5513577090087f15384fe39d73b63302460ae4c2942fac2b41fb65a185536fb85dd24fd75840647f1086db7e2760fc8b71053a87ebe151239fb8b547182b170de0c27203f954f4d2610066565b6128c97f267c76ec81934cc81a132a8b058910a12092520b12a201af03e3202d7b6c1b7e7f0514b0fe5909ea887bedb0295fbbcec355cfb575ff6a97cd9f4ad00ccb57ee9b7f01c9bf7a203ce22b775e3a61ad7e77b6a78348b9f6ec68a412e49bfe32c054157f2bc70dfeb2baab2f6b387cd77be779ac2e5e5519f3d18123ee28d8c2543c71487f114f32edcdea09cd095c5bb5d38f1b97da9f05e18b3708bf6e0ab9d3d54859ef610066565b6129767f1ac668f612b8243c193b33720b8aa54040c476031197131ebdcac9b18bc48f757f26f17873949bc679f7f043956694e422b3cee1de9dd6f6473b932a476455ff1a7f1904aa4d6908544a8b348e9db1981c27009ed8ea171518ae5405d036242b60e97f019f6a8124b19e33af33e5d3873f9c335c6f09a45486cab536dd596ca41d95197f29170e3322b3d8d5c78c84babbb470adf1622493ce83e95cfb151cf757bde5d6610066565b612a237f28e4dcba4b96f12a59b041535e730ac8c35189dc0b85ac033dd38c08bae531f27f1d6b3755331cd0216b6880e42f9880f565cb94b0e0455153a329890588cc916e7f06e3ad6a46900e2d3953370255b68f89b3e523f1fe502642ee226f2d8bd0848f7f030c97e1b8cad1d4fd50d1b4383fbe6674d171f99c63febb5425b395c24fc8197f0996d961a75c0d07196dae45bf624766ccfbf8555be9796da52f81568ef0663d610066565b612ad07f2375839502e09890cb2914e829627e0e0fc98870b2324a8b50329ebdd24749cb7f1bdb062778d7c15da395af2734c25faa0127d2aab4aa71366031a0bb6791ce107f28f1e03baaea9bbc05af5b11937e4f5cb5c9a9c1192063d1998c01c64d483a767f162cd2ca7fe3b5f1444bcec97812019bb6fd85fba6a0536a89643e15b9bb3b527f08b6086046a835508ccf484f2974b6a6b0712a476260376c7a3b3e4bc4a47a14610066565b612b7d7f0ce19f54cdc39f7f3bf35192ac6808211aecea08dfe14cab758d25891fb00bb97f2e49084b336eceaa4f8e2a2e6af08318f42060e574dda341f4a1079b12bcc5a57f211256d16c7269fd6df6f5fcdd1fa788ba3bd050059f53d261b0f5f13731ffe77f1e4fad2dd6b0a6f1f8707f721716c8a446e2fb2c47a5138f3f7f9736079d76947f1fa8662fbcb61fb3ad7c55668dc9423a332dc87cfb2df456e92d33611ed7bb50610066565b612c297f16bcb447ce2d50f3ae25ad080695382e935d2d00184c4acc9370be8aab64139c7f030c00a0933dcdba2a808b2e1b9282f331f04596d8928da7aa6c3c97237037a67f19a7d3a446cb5393dc74560093592b06b1a8b35cd6416a2ecab00173639015fa7f17d79ff06b63ac2a8a9e05ee6af3dbb7ca60e17bfa39b47514a8cd8051579b4c7e11c5d56c390e893cc394221261d8748dc60451e4ae4e1c84a8468bab2c14cb610066565b612cd67f2dca72b2ebcab8c23446e00330b163104195789025413abf664db0f9c84dfa6f7f2ea123856245f6c84738d15dd1481a0c0415ccb351a1e0cee10c48ce97ca7b187f08e6eb4089d37d66d357e00b53d7f30d1052a181f8f2eb14d059025b110c72627f0e86d13917f44050b72a97b2bf610c84002fc28e296d1044dc89212db6a49ff47f12341b46b0150aa25ea4ec8715312997e62124f37cab7b6d39255b7cd66feb1d610066565b612d837f10ffb7aad1f51c7d13b17f4d876d9a1e38f0ba8a4a23d4b50cda32cad851567e7f2f4c50477f7fd9c671799ac5d2e224cdb9164f58351d8aa140ec07e514fae9377f22a63501c5f04b9018719ed99d700ee52f846a715ae67ad75c96b39d688b66917f246a10b7e3e0089947f7c9bda3d54df8e2a60e0cca84ea2ac630a4535afbf7307f06ff9ed50d327e8463329f585ec924b3f2f6b4235f036fa4c64a26cbd42b6a6b610066565b612e2f7e58fa3c8454d63354b2024c3b4a577a180ed99f8f3155cd7e4d617d47d07ffd7f27f19a6532e66b5333db1afd592f66f1d36034b314dad8447656747be27e64c77f2d9e31a10aebc761f8de00d14b1e566d1a39323d6e89b638e940f3ec8a22c3c57f07af84a4d3141e7ac23352e6dc6ea4afa1656f96a33c8978a3e83bdd4ba62b417f0e9cefddc3c2d3bea4d39722532d5420784027352187e7af1a056935c35803ae610066565b612edb7f03f2a6be51ec677f946551b3860ea479fee048ae2078aeb7d1f7958d2c2645f67f1c4a6f52c9fccf7a4138e413ef62a28377977ad7e25e49a3cf030e1cd8f9f5b67f0131adffd8bd7254b1d8c3616bbe3386ec0c9c0d6d25a9a4ec46a6bf183013987e6ac49dd9253edc7f632e57b958ccecd98201471cf1f66589888f12b727c52d7f041627b6715b780967957c080699343eb0414a205d3a175d708964956816a5d5610066565b612f887f0812e7b4d847bc8517d19319772f3c9855e044fd60dbac9a0adc4959b691dfe47f149b9c802182558a4c45d119d3f4cc7fd8587604ca4f0d6e21b06ff30b6a23b67f12fe278aa36544eac9731027090518d434e38ea966a08a6f8d580638ac54c7737f15278463665f74cddc1802febfab02cec9d45fe866c359c738062afb75d64a037f2da770aad2c2eb09391a0cb78ef3a9648a1372d8543119564d7376396b8ddc62610066565b6130357f25479fbfb3a68f982388f2621001101608bdc29f6ff037696d9161f5cd9a4fef7f169515c89ac5479db0ed8fa6fa311b391cc1235270f4cbc5c29e7cbc30e8732a7f15c754d5b14b2c4205c6ba8d2ccd028255b3e792c6afa08b44ee75b62eff9f597f0ebd073ba0537b514deb6029f921029e55e5e4d9a03d6b6ba1304038662d4db87f02ed8d8ddeafe3d9d8df7f28a0bfaa7f555813c7e7503aea2a66973703a0c61b610066565b6130e27f2c714e96e1913b351d969320cc69d5ec13e06a6275e58688af8ee00c4240ee287f163facb34ff572fbf7c946969c1c260873ce12a6a94a3e45b8101d5b948d16417f26029c0c267c799fb833ac8a11e3a3f0147a8ca037221b90013b8bcb37eba6837f045a691066cc66bec9baf2798833a1dfd3a847502aec8d5f5c4e73363d0977997f14475c4bd520451f3c852cb0311a578ca7f8e6e972182196ce09486e94be6071610066565b61318f7f03c11ca79e41fdfe962730c45e699546349031893da2b4fd39804fd6a15ad1b37f2ab89102e2b8d5e638ff97d761da6042e534f1ff47f7917a2ca1a74063b461017f113d58535d892115c5d28b4c19a3609374dbdbadf54195c731416c85d731d46a7f06a69ae795ee9bfe5e5af3e6619a47d26635b34c2a0889fea8c3c068b7dc2c717f1c1661e2a7ce74b75aba84665ecd2bf9ddd6268f06debfe2d52b804eff1d5fa6610066565b61323c7f022ed3a2d9ff31cbf82559fe6a911843b616945e16a568d48c6d33767129682d7f1869f3b763fe8164c96858a1bb9efad5bcdc3eebc409be7c7d34ca50365d832f7f0dc108f2b0a280d2fd5d341310722a2d28c738dddaec9f3d255754448eefd0017f2de32ad15497aef4d504d4deeb53b13c66db790ce486130caa9dc2b57ef5be0d7f27096c672621403888014ddbbbfc9da1f7f67b4d4cfe846c6adf040faaf2669c610066565b6132e97f01cdf8b452d97c2b9be5046e7397e76ff0b6802fa941c7879212e22172c27b2e7f05d4149baac413bed4d8dc8ad778d32c00e789e3fcd72dccc97e5427a368fd5e7f05dbb4406024beabcfce5bf46ec7da38126f740bce8d637b6351dfa7da9025637f0de1ba7a562a8f7acae93263f5f1b4bbec0c0556c91af3db3ea5928c8caeae857f2155d6005210169e3944ed1365bd0e7292fca1f27c19c26610c6aec077d026bc610066565b6133967f0212ac2ab7a6eaaec254955030a970f8062dd4171a726a8bdfb7fd8512ae060d7f20dff1bc30f6db6b434b3a1387e3c8c6a34070e52b601fc13cbe1cdcd59f474e7f16b79c3a6bf316e0ff2c91b289334a4d2b21e95676431918a8081475ab8fad0d7f1040bef4c642d0345d4d59a5a7a3a42ba9e185b75306d9c3568e0fda96aaafc27f1fc6a71867027f56af8085ff81adce33c4d7c5015eced8c71b0a22279d46c07c610066565b6134437f2e208875bc7ac1224808f72c716cd05ee30e3d20380ff6a655975da12736920b7f0e65cd99e84b052f6789530638cb0ad821acc85b6400264dce929ed7c85a45447f0d080a6b6b3b60700d299bd6fa81220de491361c8a6bd19ceb0ee9294b24f0287f0984ca6a5f9185d525ec93c33fea603273be9f3866aa284c5837d9f32d814bfa7f2f29377491474442869a109c9215637cb02dc03134f0044213c8119f6996ae09610066565b6134f07f01c36daaf9f01f1bafee8bd0c779ac3e5da5df7ad45499d0991bd695310eddd97f173f65adec8deee27ba812ad29558e23a0c2324167ef6c91212ee2c28ee987337f1e8d014b86cb5a7da539e10c173f6a75d122a822b8fb366c34c8bd05a20614387f11361ce544e941379222d101e6fac0ce918106a463290a3e3a74c3cea71894597f2989f3ae477c2fd376a0b0ff3d7dfac1ae2e3b894afd29f64a60d1aa8592bad5610066565b61359d7f04218fde366829ed90f79ad5e67997973445cb4cd6bc6f951bad085286cac9717f11d7f8d1f269264282a263fea6d7599d82a04c74c127de9dee7939dd2dcd089e7f191d5c5edaef42d3d02eedbb7ab8562513deb4eb34913a13421726ba8f69455c7f2e5abd2537207cad1860e71ea1188ee4009d33deb4f93aeb20f1c87a3b064d347f1353acb08c05adb4aa9ab1c485bb85fff277d1a3f2fc89944a6f5741f381e562610066565b6136497f0b846e4a390e560f6e1af6dfc3341419545e5abfa323d817fed91e30d42954a67f01b588848b8b47c8b969c145109b4b583d9ec99edfacb7489d16212c7584cd8c7f09a5eefab8b36a80cda446b2b4b59ccd0f39d00966a50beaf19860789015a6e57f038a389baef5d9a7c865b065687a1d9b67681a98cd051634c1dc04dbe3d2b8617e70772f7cf52453048397ca5f47a202027b73b489301c3227b71c730d76d6dd610066565b6136f67f2ba70a102355d549677574167434b3f986872d04a295b5b8b374330f2da202b57f068f8813127299dac349a2b6d57397a50275142b664b802c99e2873dd7ae55a77f0752cd899e52dc4d7f7a08af4cde3ff64b8cc0b1176bb9ec37d41913a7a27b487f2e0374a699197e343e5caa35f1351e9f4c3402fb7c85ecccf72f31d6fe0892547f23a6679c7d9adb660d43a02ddb900040eb1513bc394fc4f985cabfe85ce72fe3610066565b6137a37f29a01efb2f6aa894fd7e6d98c96a0fa0f36f86a7a99aa35c00fa18c1b2df67bf7f142d3983f3dc7f7e19d49911b8670fa70378d5b84150d25ed255baa8114b369c7f0dc6385fdc567be5842a381f6006e2c60cd083a2c649d9f23ac8c9fe61b738717f05c5f20bef1bd82701009a2b448ae881e3a52c2d1a31957296d29e5763e8f4977f2c467af88748abf6a334d1df03b5521309f9099b825dd289b8609e70a0b50828610066565b6138507f1341999a1ed86919f12a6c5260829eee5fd56cf031da8050b7e4c0de896074b47f037640dc1afc0143e1a6298e53cae59fcfabd7016fd6ef1af558f337bab0ea017f0385fb3f89c74dc993510816472474d34c0223e0f733a52fdba56082dbd8757c7f1e807dca81d79581f076677ca0e822767e164f614910264ef177cf4238301dc87f0525ffee737d605138c4a5066644ec630ab9e8afc64555b7d2a1af04eb613a76610066565b6138fd7f085d6a1070f3513d8436bccdabb78750d8e15ea5947f2cdaa7669cf3fae7728b7f29d843c0415d35d9e3b33fadcf274b2ab04b39032adca92ce39b8a86a7c3a6047f2c81814c9453f51cb6eb55c311753e84cbbdcb39bfe696f95575107502acced87f171c0b81e62136e395b38e8e08b3e646d2726101d3afaa02ea1909a6190336967f069eb075866b0af356906d4bafb10ad773afd642efdcc5657b244f65bed8ece7610066565b6139aa7f095c716266f1de59044f97114a4158a3f85ca8a937cfbec63e9b321a812dd36b7f180638ff301a64ca04abd6d0bd7500b6650b65ff33e6be1fd50dbc163a2818777f0a8c2820c56971aae27a952abd33a03d46794eedd686cd8ecfed610e87c02e9a7f201935a58f5c57fc02b60d61a83785bddfd3150e05f1df5d105840b751a163177f11820363ed541daa10a44ba665bf302cdbf1dd4e6706b02c9e2a5cda412fc394610465565b613a577f14814a1e0f492a4ea0d86e527a96482178d624b98da96ee5e583b9324d974efe7f24752b47bc6c6bc8d9bbe48f5fef2f6908701739c5f5b4b3d6c886d4715c79297f265bc95df4a4c4876ff70d7ea2fde2c7ab15f4a6ae0d237cd6ce74ba986c7a7b7f05b86c4bb8ef318b6a7227e4192d149d3c17a9764ccd660de4d50a77f192a91b7f17c31ea02fbc378320d86ffed6c7ca1583b618c5c1a687818d4087a497d73490610465565b613b047f26863e9dd24255d1573bd083959b856c0493fbefe83c819837a151d3bf452cb87f041935607172f68eba65ca60068dfe3b086c2a2d57d09602951214b57e73cf5a7f1aef50a0cee751b59f926af40e8035d19decc9d428ebe4e775c5cc9dce1ce5897f14f7ae770bf7e95f7f706c0d8ab4ed03fa0b880d28c69d031b4592c98610175f7f10def931073b6479bd60577378f29381997c8e041d3cfb3dc7523bca906f00bd610465565b600080516020613fe78339815191527f2036efb6f9830965eb3d7a068bd087c9f5adf251ba62052c652738e63ff8b3af60005108600080516020613fe78339815191527f0c712a975b74dc9d766b639a029969ca30be4f75a753f854b00fa4f1b4f4ee9b60205108600080516020613fe78339815191527f08014dab3cd1667e27afc99bfac1e6807afdff6456492ca3375731d38753969960805108600080516020613fe78339815191527f198d07192db4fac2a82a4a79839d6a2b97c4dd4d37b4e8f3b53009f79b34e6a460a05108600080516020613fe78339815191527f29eb1de42a3ad381b23b4131426897a32709b29d53bb946dfd15784d1f63e57260c05108600080516020613fe78339815191528586099550600080516020613fe783398151915285600080516020613fe7833981519152888909099450600080516020613fe78339815191528485099550600080516020613fe783398151915284600080516020613fe7833981519152888909099350600080516020613fe78339815191528384099550600080516020613fe783398151915283600080516020613fe7833981519152888909099250600080516020613fe78339815191528283099550600080516020613fe783398151915282600080516020613fe7833981519152888909099150600080516020613fe78339815191528182099550600080516020613fe783398151915281600080516020613fe7833981519152888909099050600080516020613fe7833981519152806000805160206140878339815191528309600080516020613fe783398151915280600080516020613f478339815191528609600080516020613fe7833981519152806000805160206141078339815191528909600080516020613fe7833981519152806000805160206140278339815191528c09600080516020613fe78339815191526000805160206141478339815191528e0908080808600052505050505060206000f35b600060808284031215613ded57600080fd5b82601f830112613dfc57600080fd5b604051608081016001600160401b0381118282101715613e2c57634e487b7160e01b600052604160045260246000fd5b604052806080840185811115613e4157600080fd5b845b81811015613e5b578035835260209283019201613e43565b50919594505050505056fe2f69a7198e1fbcc7dea43265306a37ed55b91bff652ad69aa4fa8478970d401d07f017a7ebd56dd086f7cd4fd710c509ed7ef8e300b9a8bb9fb9f28af710251f2d3a1aea2e6d44466808f88c9ba903d3bdcb6b58ba40441ed4ebcf11bbe1e37b2efc2b90d688134849018222e7b8922eaf67ce79816ef468531ec2de53bbd1672a70b9f1d4bbccdbc03e17c1d1dcdb02052903dc6609ea6969f661b2eb74c83914074bb14c982c81c9ad171e4f35fe49b39c4a7a72dbb6d9c98d803bfed65e641c482a25a729f5df20225815034b196098364a11f4d988fb7cc75cf32d8136fa104d0295ab00c85e960111ac25da474366599e575a9b7edf6145f14ba6d3c1c42eb4f99c69f966ebf8a42192de7ff61621c7bb47b93750c2b9ea08d18446c12221888041e6febd546d427c890b1883bb9b626d8cb4dc18dcc4ec8fa75e530a132625ce48a7b39a4252732624e4ab94360812ac2fc9a14a5fb8b607ae9fd8514a001c1edd62645b73ad931ab80e37bbb267ba312b34140e716d6a3747594d305230644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000115b98ce93e47bc64ce2f2c96c69663c439c40c603049466fa7f9a4b228bfc32b25fb50b65acf4fb047cbd3b1c17d97c7fe26ea9ca238d6e348550486e91c776502ecac687ef5b4b568002bd9d1b96b4bef357a69e3e86b5561b9299b82d69c8e12c7e2adfa524e5958f65be2fbac809fcba8458b28e44d9265051de33163cf9c0aaa35e2c84baf117dea3e336cd96a39792b3813954fe9bf3ed5b90f2f69c9772a20e3a4a0e57d92f97c9d6186c6c3ea7c5e55c20146259be2f78c2ccc2e359528c2be2f8264f95f0b53c732134efa338ccd8fdb9ee2b45fb86a894f7db36c371049f8210566b51faafb1e9a5d63c0ee701673aed820d9c4403b01feb727a549293d617d7da72102355f39ebf62f91b06deb5325f367a4556ea1e31ed57678330dec54e6dbf75205fa75ba7992bd34f08b2efe2ecd424a73eda7784320a1a36e251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1281154651c921e746315a9934f1b8a1bba9f92ad8ef4b979115b8e2e991ccd7a0c3f050a6bf5af151981e55e3e1a29a13c3ffa4550bd2514f1afd6c5f721f83014ddb5fada0171db80195b9592d8cf2be810930e3ea4574a350d65e2cbff4941a2646970667358221220ab792df2959dc89eedc83a13edaaaac9ec23e84716e8582d4ac35e6633f152c464736f6c634300080a0033"; + +type PoseidonT5ConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: PoseidonT5ConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class PoseidonT5__factory extends ContractFactory { + constructor(...args: PoseidonT5ConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): PoseidonT5 { + return super.attach(address) as PoseidonT5; + } + override connect(signer: Signer): PoseidonT5__factory { + return super.connect(signer) as PoseidonT5__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): PoseidonT5Interface { + return new utils.Interface(_abi) as PoseidonT5Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): PoseidonT5 { + return new Contract(address, _abi, signerOrProvider) as PoseidonT5; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/poseidon/PoseidonT6__factory.ts b/packages/contracts/typechain-types/factories/contracts/poseidon/PoseidonT6__factory.ts new file mode 100644 index 00000000..ed68e077 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/poseidon/PoseidonT6__factory.ts @@ -0,0 +1,82 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + PoseidonT6, + PoseidonT6Interface, +} from "../../../contracts/poseidon/PoseidonT6"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256[5]", + name: "", + type: "uint256[5]", + }, + ], + name: "hash5", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, +] as const; + +const _bytecode = + "0x614e2d61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c80639cfced971461003a575b600080fd5b61004d61004836600461496c565b61005f565b60405190815260200160405180910390f35b6000610809565b600080516020614bd88339815191528160005108600080516020614bd88339815191528360205108600080516020614bd88339815191528560805108600080516020614bd88339815191528760a05108600080516020614bd88339815191528960c05108600080516020614bd88339815191526101005160e0510861010052600080516020614bd8833981519152858609600080516020614bd883398151915286600080516020614bd8833981519152838409099550610120511561024b57600080516020614bd88339815191528586099050600080516020614bd883398151915285600080516020614bd8833981519152838409099450600080516020614bd88339815191528485099050600080516020614bd883398151915284600080516020614bd8833981519152838409099350600080516020614bd88339815191528384099050600080516020614bd883398151915283600080516020614bd8833981519152838409099250600080516020614bd88339815191528283099050600080516020614bd883398151915282600080516020614bd8833981519152838409099150610100519650600080516020614bd88339815191528788099050600080516020614bd883398151915287600080516020614bd883398151915283840909610100525b600080516020614bd883398151915280600080516020614d188339815191528509600080516020614bd883398151915280600080516020614c388339815191528809600080516020614bd883398151915280600080516020614b188339815191528b09600080516020614bd8833981519152600080516020614c188339815191528d090808089050600080516020614bd883398151915281600080516020614bd883398151915280600080516020614d988339815191526101005109600080516020614bd8833981519152600080516020614dd883398151915287090808600052600080516020614bd883398151915280600080516020614c988339815191528509600080516020614bd883398151915280600080516020614a788339815191528809600080516020614bd883398151915280600080516020614af88339815191528b09600080516020614bd88339815191527f0a514a5c227f4cec95dfa029e8dd124c34895aa46bb27c0911f3780d5015540a8d090808089050600080516020614bd883398151915281600080516020614bd883398151915280600080516020614ab88339815191526101005109600080516020614bd88339815191526000805160206149f883398151915287090808602052600080516020614bd883398151915280600080516020614b788339815191528509600080516020614bd883398151915280600080516020614a188339815191528809600080516020614bd883398151915280600080516020614bb88339815191528b09600080516020614bd88339815191527f278bb49a7b4e44aea46eb0f882cb692801a6e60fdd5b5c23c63cd65ccce4fe0a8d090808089050600080516020614bd883398151915281600080516020614bd883398151915280600080516020614a588339815191526101005109600080516020614bd88339815191527e5761b8c6aecb1a8ca4ea4dfc2c8376064a4a8004ceeda210a55240562ddc1387090808608052600080516020614bd883398151915280600080516020614bf88339815191528509600080516020614bd883398151915280600080516020614db88339815191528809600080516020614bd883398151915280600080516020614b588339815191528b09600080516020614bd88339815191527f0c399e9f67aa40707a203feefb0b958bbdadcec5ca34901d253d026a2419f6a28d090808089050600080516020614bd883398151915281600080516020614bd883398151915280600080516020614b988339815191526101005109600080516020614bd8833981519152600080516020614b388339815191528709080860a052600080516020614bd883398151915280600080516020614c788339815191528509600080516020614bd883398151915280600080516020614cd88339815191528809600080516020614bd883398151915280600080516020614c588339815191528b09600080516020614bd88339815191527f1d6b3d5f6ea369c26f825d2362933eaa31ea35ec0a77c1fbd9e01ca1523e44328d090808089050600080516020614bd883398151915281600080516020614bd883398151915280600080516020614d788339815191526101005109600080516020614bd8833981519152600080516020614cb88339815191528709080860c052600080516020614bd883398151915280600080516020614cf88339815191528509600080516020614bd883398151915280600080516020614a388339815191528809600080516020614bd883398151915280600080516020614d588339815191528b09600080516020614bd88339815191527f24be510095436206dd0abd0b0cbb95c883ab304aa52598b1a69306ec981a688d8d090808089050600080516020614bd883398151915281600080516020614bd883398151915280600080516020614ad88339815191526101005109600080516020614bd8833981519152600080516020614d388339815191528709080860e0525050505050505050505050565b6000600080516020614bd88339815191527f0ab7b291388e5c9e43c0dc1f591fb83ecdb65022e1b70af43b8a7b40c1dff7c360805108600080516020614bd88339815191527f2b7cbb217896f52c9a8c088e654af21e84cde754a3cef5b15c4d5466612d6adf60a05108600080516020614bd88339815191527f2bc6b0ddbe1d701b6570428bdc1ca1bf0da59ff3bbbb95fc2bc71c0c6e67a65c60c05108600080516020614bd88339815191527f123a55a31980384f3d20b2cecbc44ed60c38c11f7d20e9271efab9a905eefd3c60e05108600080516020614bd8833981519152600080516020614a98833981519152610120510861012052600080516020614bd88339815191527f037501cc8c9dc819309a769f4df098e588b01858bc8eb7e279e2883be9fb8c53610100510861010052600080516020614bd88339815191528485099450600080516020614bd883398151915284600080516020614bd8833981519152878809099350600080516020614bd88339815191528384099450600080516020614bd883398151915283600080516020614bd8833981519152878809099250600080516020614bd88339815191528283099450600080516020614bd883398151915282600080516020614bd8833981519152878809099150600080516020614bd88339815191528182099450600080516020614bd883398151915281600080516020614bd8833981519152878809099050610100519450600080516020614bd88339815191528586099450600080516020614bd883398151915261010051600080516020614bd88339815191528788090961010052600080516020614bd883398151915280600080516020614d188339815191528409600080516020614bd883398151915280600080516020614c388339815191528709600080516020614bd883398151915280600080516020614b188339815191528a097f1c75a58d854d4821d299acc8b5bf528d82545baa1fccd11b4af481536dd42d760808089450600080516020614bd883398151915285600080516020614bd883398151915280600080516020614d988339815191526101005109600080516020614bd8833981519152600080516020614dd883398151915286090808600052600080516020614bd883398151915280600080516020614c988339815191528409600080516020614bd883398151915280600080516020614a788339815191528709600080516020614bd883398151915280600080516020614af88339815191528a097f2c64e4fd7d22b7941e97b236fac1a6979275c4dbb22f9707238fb478316e73d90808089450600080516020614bd883398151915285600080516020614bd883398151915280600080516020614ab88339815191526101005109600080516020614bd88339815191526000805160206149f883398151915286090808602052600080516020614bd883398151915280600080516020614b788339815191528409600080516020614bd883398151915280600080516020614a188339815191528709600080516020614bd883398151915280600080516020614bb88339815191528a097f213c4e421d44e697cd674a6d377a752d9bc2ebf497165ce792643bf39fc034f70808089450600080516020614bd883398151915285600080516020614bd883398151915280600080516020614a588339815191526101005109600080516020614bd88339815191527e5761b8c6aecb1a8ca4ea4dfc2c8376064a4a8004ceeda210a55240562ddc1386090808608052600080516020614bd883398151915280600080516020614bf88339815191528409600080516020614bd883398151915280600080516020614db88339815191528709600080516020614bd883398151915280600080516020614b588339815191528a097f02435ad434d1117db1f271503cd65ce1c5c2ac1900e1cd74ae1c6e490593a9340808089450600080516020614bd883398151915285600080516020614bd883398151915280600080516020614b988339815191526101005109600080516020614bd8833981519152600080516020614b388339815191528609080860a052600080516020614bd883398151915280600080516020614c788339815191528409600080516020614bd883398151915280600080516020614cd88339815191528709600080516020614bd883398151915280600080516020614c588339815191528a097f036a710abf9f57bb09aa288687ad8dcbcb9dc74c200d89d83d8e3c41f28e6b2e0808089450600080516020614bd883398151915285600080516020614bd883398151915280600080516020614d788339815191526101005109600080516020614bd8833981519152600080516020614cb88339815191528609080860c052600080516020614bd883398151915280600080516020614cf88339815191528409600080516020614bd883398151915280600080516020614a388339815191528709600080516020614bd883398151915280600080516020614d588339815191528a097f201541d8be11e6a050f6aea51e645577db6ab8ed6d672de377d108c0fc4dad040808089450600080516020614bd883398151915285600080516020614bd883398151915280600080516020614ad88339815191526101005109600080516020614bd8833981519152600080516020614d388339815191528609080860e052505050506001610120527f1c21d92bef197e73b234e4777b60db14e642a56cee71515d54e1ac71cde72bd36101005261108a7f18a01d9ffb747ae0de3e83c707f8b24f682c84f15abf571b34254a03478665e07f28c64d8f5ed7aac004c92029d9e9bf91ba9436d1cce94b9316d111c70a0c17147f2ee8fed3d4d2c71a0429eafd8e5db1718f29e2227985fdf2ad8703c835b9e0317f2c18213489032e85a9c8cb8e9a65839bfaed13e57bc0fae49dbdaebf54f56f93600080516020614a98833981519152610066565b7f06bbcb8e8e180201293e712f4950f1b0bbee808c9d64263c84d9d8ae155cb8926101005261115c7f0532f7ec36e30041b0486986875c913a49bddf2f5af5febe8c31f2f4094ffea57f0d7a614c8991508ab1ce4895813bb1c82f18bf7bfc9e280ccca18079839387f17f13129e3f930aed6d47690331ff09dc5160efa58ddce2c3e6180d45bec3aa3a6f7f0a9b6de833064f93b6adb99af6c005945cb654cb7bd14c8b97af8b60cc1fb3877f0ad404ccbcb1e195897cb60c80981ebb9d66a6677dbbedad8b6455fe62d807b1610066565b7f2f1bdc5254f9220c1a731fc5276964dab26b385fa40b6b04bed9960e2543ba086101005261122e7f19c27d0e52f65ca34f4e31a068e49331c6bfc39d9241f9d4c302041615cf27f17f170c1a732721b12cde7f33e476a39a1aa77a81c06e2eac503847b00d597652db7f1c49c4b9a9f09f7b9ad5f74ebacc710512b8e867bace27cb0dea06e89b96f6317f2be140a60b5b5f2f8edd78a818a969b20c643e419bcf0b577c24a0d0e7acfe987f0f558a4db1a3ac07f61e2e6bee947f73586bf40f211ceb4f687ca5678a9dcb33610066565b6000610120527f17f02dab745fbe3c081321fe5cef845e7b8d070b2514d29b2a7b7d89cc0815da610100526113067f2a5d4764021ca71d78a9674cb6708f1588d2ceaf3578c4111cf8b359eef089cf7f017bfe4284299ae7740b6d0e204951e314a8a5d0452419147978a95b347424447f25f9526526155b83946609f7bb9507dd4925ef871dee916d9144ebb4ece1343c7f1220040715a41ad59f4f410e0c05a42c5fd32ac52fe9d06f88188d71f61e09357f05b42d2fbccbf4d39d2be9339cabe9d0dc6d921e855cd91154b639d28d4a1cf0610066565b7f129fe7fc3efac6a8ab23dba6d886f394da11f5953cf98e28269a0dba2a745dd3610100526113d87f1f2618c2ebe9574508b9c52f0000e33ebfddad1a03fdd6bca6ef7f0093127bef7f10fdc1613bdbf67f38bdde561b2f91e4cc48b59f98d643638fdc0afadbfe126e7f1fe31c5548546c7948fe4ee1bd7412e3280eff7d20cb09aa85f49f27661480177f0f88e295fa2ed81b426c91fa69366a73edf75f39bf18634cd266ec4038829e057f19da62626db7199b65f4adcf57fa4a3dbaa1764a7bd155708ee6f378c89ef013610066565b7e91f96400e4297ea85bb186c17b304e82638e57fd631ff6315976e1a5dd8b86610100526114a97f14da40d0af427a65f1841b5adc96538653368f7254cb5667ddadbbad7a574cd47f13523d173f7e6badb73b63fc1c9bbdbee242c61bc68656493327533a5c1b1dca7f1130e1872d76f2f9369cf59b95edf9ce19f01fa89c9c36b26e09def6786dad3c7f1f2c74ba5c367e370d728e71e15b268851a7bb8b45528cb734956079ac99b0127f15afd4cdf1e4f820c1631d4ab85ca4ba3bafcfee72beade9fae60523102448e3610066565b7f1f8bd2ab8aa840664c4eee198c4684dc4b05772bb2a0869da6722b15f447a1336101005261157b7f1a6c61d795dbaf62f99250b37ec5df88645a1c153791db6312b932dc250e4f627f17a8a50ae72ce707f22bc070eb992851ca914eb94cc68eafbb8a96a714eb82217f1161f10b357775d810ad53bcc4a20d5add2b03251c747deb04ee94c565e58d6b7f14ed47e55c1da1c2f05d3c1a1b2e6c18509fc8336ecfe9db737916e283fa821b7f303329bf9031c5515b9a34d49a64bb6a0267bc7b54a0deca5c450277a002cdcb610066565b7f14bf7889457b20b7a1367b34a3a538217d693b52426aff40a4bb72893b1784ca6101005261164d7f1db4a4d0f238a570b1061c6eec81c02f31ffdd4a7c19e763174f238d048974217f2821378477a02e995005a5635088540945bd333f2d1455f038a219b8c4796b3a7f1dfaaee41bdf94d783aa29fc62b7ec7b55673aa818d305fd42d175a05f2e3d867f035e742ec52f19b36d489c720f467ffad77cd53bc2db5dddb246b23021f79f187f1ffcb852a4f0027a9799f131cd74b98ccfb8cbc06349d8fefcc62f10c8fb3e2f610066565b7f250932e7b0adcf2c84ed4bfb60a36b6b82e55aa94751157b1d45794b081c8aad6101005261171f7f137e2e3e89e71d461f4c9bc3e8f12183262a4d1db55c589b2caeaac01238f58c7f0c6840d1cb0666dc59e89b1865275d8a164b447c5ed64347caee63502c238d5e7f2e36b4e5e9c97b462304e8e2b5f9dc88e1c9f2161ba040673f911123f042ae707f1ddeac5805a7f4ada4d0441ed108e3149d4ce6584f49ae5bdfd46d6766eea3347f2ced52c2bf296f87e57410c3ec9a9483a796d164f6049127109ff0d3a9c08465610066565b7f1632308688c25e790f57d68a5350241242a56305347de4a5009ce46b8cdcb91f610100526117f17f0623f3226b5470b2789b8a53040e44443385e96b9cfa0be4d35015158a4684657f20a7d1c0a27fcce78ffe372f4c58306b166f9456ed46cdeb255e395b7d30d42a7f0caf74563b90525f645a6d2036ecd1306fa1dc680b49d9ce4ed24c97499731787f0d68cbbe77289e78d5cbf51d70f1b75ba215df4e7bd0149d10b2c50f2a4f3b817f170a7292f5634c06dd3bf09ab5c9c4ecd4b00d5ce2f35f972b4555391f16b42d610066565b7f2cf4890650d27240e195f60a4f698eda249b8dd614b23376b50178d2df6d2b8f610100526118c37f0b57b37320127d4c50f269124b0dbdcb2b1f1352241a5d12103283e089c0c7427f30430b03368ebcaa91246960490bcf917d78681463e2e7d744bfb44335dac24d7f0480e7479a66a7cd9ea61c8b28974389908350abc4aafc18cd75e33dd130c1447f1d4d06d19ea1b09cad79086d51bde11725a554fa99559ca2f09f3bb73d728c667f2de4793a6f99cd14e3f6642211f4d0b7bcfa361597c544ffcb5a567e9076f47f610066565b7f25e8da9ae0e42e840e04b230370e782bdb67534844325ba36fc7e5e160c66a74610100526119957f2f58c45e5d659a67d781367241f6c35d8cb46361d97b28947d29421c270594a97f050a76bc32ebd1dfe2be330f304edc7ace7167ab7ba1516f4021c62cf0d4fac27f2f44d64f84de16dc67bd5ead51efb1dc8381c84520c12854dd5ef3a079acd4e07f28e07485ad7d992ed1a58f329ca12adce4ec693ebddbb2952e54d339f2eebda57f1e221c5526898bfd12de86851a0d9703751a2f239008ab5f9b7d3b6911c64184610066565b7f0b1d7cecf3a79b2ad3fa298f6cea7ae95d80c0299ecc918e9f8c9c3d38d59d4061010052611a677f028eeb85d115a904020e0c6148eec6603e9cedabc664abee764aafd455986ba57f17f42ba10942df25cb8a541782a18b6fd31cf965d11178c7b04ac45b4dea5dd37f20dcc6c75fd89259be7f406750b3db679a25a8cd2715d245b9175390ac922c847f288a6778f3a83988a8ed1727f15e93b4cb14f4e3a3bbb91dd6d1facafffd5eef7f2fec734da20fe32003ea04f127f844724f38a368ba10c29544252be796040f7f610066565b7f0df7ca7278a13650b919d85497b2ebb0f71035a7c20430d4131d903ab7f5752161010052611b397f0e30da6490625d33e79cd50176f568f9a2c28c2f449a2bd51a25d15686803a937f2bb737546c4aee7c0cc2ba87c1157e2a77c479ebfb5dc76adbb39cf8697633fd7f2ea120a864f5c4093dd1a962e8f013c7b8ef778b04d2ba5bfc3cab28619ba9e37f06ca647c29727c1962a002177da2d504f4b07a5f7eb57c79b88e6b7abbbdad5c7f0440339c9764cec79c16efdb834a26261db8e3f12ce1cf722d23c0e11ff4cf07610066565b7f2e52328483cb5b7ff2eb4e45b12e51b26232c9bc17b7292954c0a9f6bfa51bb961010052611c0b7f0f20f0e55d93689fe09ec312f6af47627482e4bde0a1602a8e2c8d6e84e8a6ae7f0e1548e942ae9d3e26860699b93727c817a9948616c93ef4accd981b1dc3d78a7f133d9602bd3378d69f681c27b05bdffc98b7d86cca63d73a60caed485784d0877f2255c36a38c8735de45cedf452afa842332d33042f78e60c43c7455421b325bf7f27cc589f5bf585794abace589fb8a74a2f784c0990b80fcaa6944097f870e2d5610066565b7f23dac8ea54082fc131e173ae55e4630cd4ca7c871b2a0a479c1e74e7f191e62c61010052611cdd7f0766bfeeede2ccf3708e1b4ff30714c22c1d434cdbe8f55514babc2dd5d97bef7f2c974d1952557a1aac5f7bae4996616da619b73f441c4e504dc8fe9cfb559e327f0d3a800457d77785636303b8b94f17dcffcb46048872ac9f74ef7f27ee5737057f19e0927715d1cc6d389429947fb3737dad733974c6b2e13e5b3d432519516c747f02b2162d533e059a6eda2abb74712edb3a7860beea95dd8a4abfc957660804f4610066565b7f1f1b2078b60b0fce07824e2a2bc8cae8ee673514b0070a8b45710cc78cbb994261010052611daf7f0e88349998dfe703f1b184524f9c394d6004ccacf9cb952896e8cfdb0b078b687f277934b909e72d3a3475bb1ec766ab7a38ad59b128303fc5002f02a65bdfe7297f0c4fd08fede5d221adb7abf549898c91e5be7e85bf1fd2a611bf182cc2e716557f175dcac76d8a8126139b583ae38853290246e43e783fa6903ec8007f178c00237f17d5fb6c2cb37010e3e358ab2d575376870ed33186b8eae49ad3b47e340a8d7f610066565b7f0815fb8591fe01038cd3a3b38b236f9efca77c618d3bfc6c2a7fa89296c7e64f61010052611e817f217d66db6c7fb3effa508800587d2eb3c6d03d8385132f2fcce7f35f2705cccf7f19dd342533ccc603a99738e3fb5a569b94ef71b3e49f90fb874f6161733072f47f2374a6b2da6f8cab8e5cfe8d805dd3a2dfca1e8b7eba5dc8574021fd1241e3b47f1c4dbdc335cf6764355208b4c9d243d34541d623c669dec2c3ba066bbeaf67737f2eb1559566c536ddbc316f6482d51fa340557657700f5b8a846e812a0ed334d1610066565b7f05b58a3dce57b281a271d69895052d887458a715783e8317e024a61a35ec10bc61010052611f537f09c138c6e0a616a49ff90d43a6b043f3b745b78865856dc4c1a45e2fd84cb3f47f14902c0700eec897ae178ba8caf850d793f1d87512bea0ecea39cf6b1fee233d7f1b72bfd07635d8501b2eff8785a2495bae74c7653cf90e6d5c9f144426836df47f11a5153fce659513ee7cb9974ae6cba581e3b4cd14570c5709fec3d8d3fc82e97f2bb943b40c2bd456a6c17853b1ca88eb0ff36f5974b2ff9a5f5093e9bf63a16f610066565b7e4d303b2dea627b2731be83f93ac34e7d14d178a13800558ca7396395eb118f610100526120247f0f8440ef667c9ae81337ba5d8c927a5347de7296860b211cad1ecbfb5d3598ef7f2e73dd105fa8b2ec931d8cdf29ec679e3a9801a93071a7d5ea30659255f03bc67f0bf18aefcacffabdf4112eddadca6145738b4803b36145bb9516db501a0692e97f061d72f78f1ba9dc6b4d7f7784225d6a81bdfc1b5ad6c24369f9c0560523d9ad7f2be8d29525c0cfdd5e6b3125e3bde3bf558e55fbe867f024457a96765474d037610066565b7f2862b41374f89b695274b33b773f2554916e2bff9ff672545fc2f49563f62767610100526120f67f260af0e0fffcc9772c1631b179344566b47aaada3681eb9034c6f75c3705c1c77f03685c079434e167276c57d3cc79703b7dfdc41c156ea1e8b7f99b6956a553267f2fb360776f0de79d7098ee7aa4123c05ee6b05a8be460a774f3a048e138545bb7f0d123f1e72d26b92bdd8fd73d14286c312ad4c23acb46b2e08c157104409e1747f234541ad72040a70da2996a35269230c94699eef313a4d480508008cbc3d37c1610066565b7f1a84d56a67bfdd3d965abdcd329aa78d4fe93434496f2d103861fd19d66d7260610100526121c87f01832e284a7f4c81614882b6939fc0f185573bd2023e3e505765470bb812b3497f296af4d019cb5df7d959b29d549c3f071202b4eba8b53dc5ee979ed1433779277f140a4a431e2ee79400ed7465978d84773213c628264ff80f21ac7a6b673d09ab7f08e513ade694a0d8ac1f3ebf1a96440d32c713d5058e1224e070348c281f4a6f7f02a9912fe170310227189ea1e691d0362f18b38b400b0eff192ca59513eba8d5610066565b7f23a27809583bd1ea51f436de5443e108f69d44cdf51dc1f03e21948b4980b8766101005261229a7f1e40c0e8257fe4a61005cdcfad148cf7f47d1b5cfddfaa082738695518245f197f2eea4ab08aec775f2148479ea36fbb96936da58ba48bd1d2d3acd48173aaabe77f07edc22a0911ea214425ef542b776db23b0fe5817810d40c72ca98aabd9afa837f010dcf084cc29cb7caecf26aa633bce4ed2b019f2887cee7b1a78f89d3fabe2f7f040cb82847773927d2aefdc07489037a9d1f7631eca75c9fb0dda0cb9dbde143610066565b7f2dcb5cf8896de39f228e157c0c5593f4626fb9bc225206383db20360abf0c9256101005261236c7f1c4b6f9a2ae2b418e6265acba9c96b06184d07028e5fb784f3475ae7772ff0577f0f575d6ee67cbecd98345624e032a37c859a7cbef30b3fddc949cd09784841017f199d52350cc30e8c73821f802096f0e547a13551b27bf6b899396f63ac5cf8e77f11e7abdb6ecbafc2e7d8cdefe9c7b9c50475eb475db3c2caf7f7d67f485775f27f2e4652b044dbfe40e63b6b232fcd5f3f39abfbd2051ee68adc754080d49250a9610066565b7f0be843ae5f9b07e52572178af7dae8ed05d36b12c0607862929355ea74023d9e6101005261243e7f15d63e86beacd93c6083688e5d9c8f3c6947929f9f1f99ab578a4c3a922eff037f0c7f7b82300d3c6ce3f8957ba1e4add54c4c015e20d9765d220571c16ab8680f7f1fab9add9baa4a4f56f23165775c6f2d922a7632a94f96374b7dc852756f54b67f2368e692b72787cb8870ea888e714e006f59d2b4460cfb74c48a8cc73b1d1a5b7f1340abb9f4e113186bdc26cbdf4bcca50b531a107f863ca544575e3cf870f8e1610066565b7f253420007083f1aa863ad4760905c1039ed4111c9f053f27710452f83ce36a90610100526125107f1a4ed24e6e03aebcd6bdb100533dc966597afe15c851b4b863f6e889084c64797f1e014e37e9b117cf3b4870d999f2b55d3534d0a6be98e9e357fa43f01e70a29d7f057e8d19dd999a918da29b0940b383ba9fd15db0b0f64996dff67feb55f9a7427f25439408810e074c0bdd4598b9815fee892bb95ca51029ecf009bffa5b9b96827f1332749c523694cb6935e0963a07e81b05967ce1d950c0b731058ec92a7a0c9a610066565b7f060283d2fe7f23dff513d9110b3dc62448bc48f531ce0c1eab5920bf23290a40610100526125e27f0373cbbc306e1bab9e7077368715e6230b4b2e2e4a1db9c674b8c359a41e91087f1cf8a5c9c76a84b147c8238d9253cd55b47c0c43d82966c4636a28674705fd9a7f2fd925726ab794c88bd75796aa3e7f1e6692f2914cf802267ddf01e37902a0087f28957dd1218ea799fd3411eb19325853adf7ae8ae1281f753302fe7d31dfa7b07f2276a1441971709affe6d2a99320001ec45ec72155c575ddeecac0e32759ab06610066565b7f01b098c91e7b0cbb5c34588077c0ddf95300ddf614935630c0ce3a2627245308610100526126b47f0ad3c1870c6d6ef40eebad52123cd1a2913d9d62e80bfbacae812e082021f9ca7f1bb2dba2199a9ab3bc86ef5f9de7f6c5ca13d60eab42ced68de98fc643800a8d7f1e4365db0790c9c4f445b0653c466ff21db96c38b4076ba8bd68bcb4dea6911d7f0cba7bcbc8224b2a8e4aba17977230a686cd6421dc0ca5346f3446b62439c4c37f0dab465d6d910740f33ef6cc0eadc71bf8119bdfd5a3527dc8bbfadfaa40263c610066565b7f2e3497e4d35fda596c06afa63bc3a0f2e55d4eeba4aceb60e65081ad63aa8b8a610100526127867f2165e1c8027305b1ae0e323571635e5d540d13d710c3f9a390b6913f14d035e37f2704e5b6133d9764d6d3f17d49d833223e3937f80eb9faeabbfba9baf4b4c1b87f1ebbfe8114a41bb809e0b33399241232eb940ad8728c8a516d40ada440dbfdcf7f0d4749d79cc163f17110a404a46fe427c6434f3fe67b7e7b4ccfa6ab95bd7e187f19fd5c0eac14fae7598bd4ceea3b1e2998b0c168493b6d72ae41b576e55b9c3f610066565b7f0e970c19d19748d8c465104d8f02200363f9a41786f02f1827742b20dc0d1727610100526128587f17aea4da4c7bcf0d7588b014eb8b40979dd2725eda4e6ace331982467c7ff2bf7f142aa34f4b2e8ad0df7a21b3e39c00c8b0aa2857094801eaafd72befed077f937f2f53c15e2aded33c47f55a070483e6cc7f3821fbf8aa40677d0552ed9d10d8477f089ece54e47aa5c908e43e5f08737c1436967089006acab1c9cd19eac4a208767f031da4345eecd6db6c0f7b07c7815d7add1fe0546d738f4d79ab5c57aa841edf610066565b7f0816be42745b7dbb4ceffe5b8e24ea60fd8b719deba50037ac7b75948745c6bc6101005261292a7f125bb03af3e2cf18bbe6f5b590eb3bf8d0d1ba63be696483e98f283bc7cd07a37f2ffe4d9c420a59e9cdc7c31ab2bf35187ca147cb898a3942deb3677786036a807f25db1343c24104071023fb6ed34d9909078311e1efe85af0a11b19114fa9e7907f242c0bfbcdaa76f715dbd4ba825c71fcfed671c1b1901fa484c87f810315d0ce7f04bcad9e553795642f59baf714a6bdb432fc45a0a0b77f1aba3a9823476df9b9610066565b7f1cdf8710995f5e03412b4a7f699532f9fd01f0ea167a8dfc1ddf37e2805addef610100526129fc7f1a2a957ec0a723da61c2134bab0bf17beb00e6dcd84690c230dcb9e58da948277f2f8fa5c78c706e3a5d4a03f2a7a3953046d7e94cb88a7ef350e67b5ba0f0debf7f0defc1d8882166ef3ccde53a4f236fba83d384621937cee57e421a513d0d33977f1377978e1b1f6a8925fa8e7b7941bdf8fb59ab9542342419283d8203435c93917f111160f9acf6ec360d1b6a712313a0dbcbe23e64420055471d2ee4c5dedb35d4610066565b7f0271a863a280a32641ffa33510b2edd278c98630359532f3e506b275fd5d20ce61010052612ace7f187a2a3bf79a69fa3e5089ef9f1fd56fdb47c55eece77aa228aa3de1b486bcb17f2c392fbe7d3fde42fca4f9478bb439331258255356f184af6f76f119054117d77f016fb9337708ca638cdfda91bd0daea6b97224ef7b2062672addd1bd18bb89007f0775d996cc2c4456f303a2c1f9007647e11a921d9fea3f7b926143b99d2fa0be7f26fd31471828c36ae36c27b748054b0c0c4fe5239b301699e3765eebecc18946610066565b7f2636e0973c865c1bd974dd78daaa8d0a84cdaf6be1ad47ecf2a0d18f117318f261010052612ba07f0240176ee0e7982eebe92a68d3e3a38c26821acc0f5d058cf8c137bca2d26f1b7f2c26daf996be247acd6dd4acad60d38b5a471e6322188d02c137e7cb484377ec7f21cb752194cf43f3b51942eb0040eba9de2bcfb1c2a3fae97924b710f26832cd7f2a8e26ca8d647d9a6388516ea9dcff89083d539e58168c2a50c6dae30f109f217f1557459c9c74c94aa00e5af69a1e3112fb69537ce897ec0c718958d96516f2ab610066565b7f24d40f462114fe9ee02aafcf74b4fca24e1ae365dc75c3b52bb13cbbb2f21edd61010052612c727f138db8887830565f2693d0e0f02e4e79e144967f0ba53b03519aba764b5c994a7f0444c99e592353e5aecaa302add901c14d8c55270a160afed4429ef5598ad74f7f25c7e97b475be00e8b559a38c452364f4c9c531fecb8ac698f7fd73ce22e71ec7f0ebf89064a3af247ca1f36f6f3570188e271e0b326c4fb26664e89e1454ca1107f19e84f4f25a799496041661dc5d975b681f6e06744cee89b7be5d9fde1744ac0610066565b7f0e1eca5df88ee5f60cfa7e1fe5befbb719fad8211fa9b2d02fcc233190c17f1261010052612d447f200958235281a61ba2c4be0aa3282a18c74b6d262f5de7c2e33d2bb3e893dfec7f2439fd239257f38181c7be3cf513f1bf7235eba94f6b8942a94cbddecf6f62f77f2b8238c1548f9cbe29fd35cf91e7b48f0ebda7e639edf69fe8d5aba7924d53627f248dd79669ec09dbf0350a15d6c75c6a9bdaacefca14d51300978f13d1ab6d1c7f21e65d6d8ee43760bca40e730b5df4c4cf3a8a732db148f4b2951b4c61d68e8c610066565b7f03a35aa3123911cdb4535baed3359f5f6a5205b9c93ef31d35323a47807b8bc961010052612e167f23cb2661b488ee71e4c753ff23ae4bd25d8a44094f66b6532977e22140eba5cb7f0bb743ee34802129c556731aed9d302dcd085313ce572f6242d13832e536b4b47f211e5d2b39d62520a7a627ece8cacbac9f97506def4ec286928ba6c27d463b177f20f3b3f4acafe9f8af3e06661b3a8f778fa2812522b9d70a67402cff8db2b1b47f26b53427f9b3ea2c769d9c660fc60881a169c12732d001b7158ee4b1b842ca24610066565b7f180b11b720622a156849dc6f7f6e7f571659be69682230c5ed9ac339700a7cde61010052612ee87f0cfd7f4215e434c8da17ec3258b0bc605ad1ab2e90aa494351e4ee40bbc491fa7f02a7d7bb970b8a6ed2ee66fabbba956b6da3b100f5b5fb928eef42f9708273c97f1f0026d0bf1f8e1dd5423cc2fec1fb5cdaa1ecdc4c3cb218dbceef77c00d2f937f0cb37839c2c9a7ff79884cbec75f41e9be5e47c76d61538231bd8162996d6f677f27803848a0aed96a93fa943b6635e450217e137f4ade74a62d7917322714b697610066565b7f2350bf35477656899151ad7dde96ea7857e15501447008dab6b3d27c8ffa274f61010052612fba7f2194eb89847d6b0f1897f675f19c0c56b61b13248eff3ca36e34fb9d1c79ee437f26157bceb78e846bbb262f9a1e06d4271bde5a5bce8f0419952f97ffd13eaca87f2e296e57c97a5309acd26febf55ac963a5444c1c5f703ad88a0d7b97b9dd38b17f15931f782b45f7fb656f2cdbd1f7705c353a23fe1d30a5a46a1522ed160df3ad7f04e96a965bce3d3a0a24a4a457c951582c871349ce7eee1aabfe578a94c65011610066565b7f0473ddbd52e737e527364e8eb63207975c38d5fd6cc32b272102b082cd1518fb6101005261308c7f21c47b275d82dde6460d5e769a99421144b1c5a9da59294ade9cbb317103f2497f18ae590073f969696af762ffa4e8f0ebbf97f8cc787e37cddd1f321be3beadbb7f1a749d7964af0b7202913ef204c653f2b4bfb65ceab7b685233ab59ce3bb69257f1b56dcf76fb23cc4a834d455a4065e133571402b7df309d59bc3105d42a8c3017f1a486f0ae591cacdaf09c58a49c4d1795405435340819e003f0469d110b7752b610066565b7f241dcc51ac37808a415dd1e3c281f05aff11789dc0cafdd77a35484e0993f9a46101005261315e7f1e8fd3634c3ff764184d03435f98584b11b5b15aeb9c75262da3f1ea2c2a9e7a7f25e7b1d7470a3c75f13f0b56546c8e09f2d8efeff06ef766f9c783ca869d130d7f039daf6876280b80e873bf2a32fd2834a83c69757badd58a888ef819e926ce287f08ae7616a260cf6657f8f73ac284588d2c5f07ff425d837aa7cdcef63e3e21037f0b12fac95b6d3a881d892657c8424e645ac4e6b00515f902d594574302b26e02610066565b7f1fa195f834a69e62372f60eb497da167646eae14153d803b39dc5d11f5d7800b610100526132307f1aa7e8f4189ca9dff3db2ab7648be0a2392995ce46041e04680dca8ad7232df07f3034fb24366123ec6dcafcad35726dbfb16194c036dcd648fa69439bfcd00cd47f2980400edd1d74e3d69db5458d2ccd5fabdb236ec16a82a4301a0ab59ea4a6e97f17630d62d9a3e510c88a4d43c360f92bc0fa00b66031adec29bd9543fd3a17ee7f1ffc3153c56ef9755932cea2be0573749bdafe1c4fa0781a4b8b4078ce9d7547610066565b7f1e4a8aace15abc1d5b76a9e848431d2c06a78f72b6bebb1293e6c58e5185696d610100526133027f12418bbfd77b63ad5e16864ad9c32ffbfc5a3dd9b78ec2b79329fe5e0a8d29537f2e4c10ec5e65e2f239bbc43c13031df2686ab40fd79a304b05d611b823f23b737f23d92b793648110fc5aeef0633f0c77cacb0dbbca1879b8a6f6e5df445e5f70b7f016556fac9348a735ab50aa089c97151b3caaf0a20a34fb9d9370505a15157297f0f23f1c74d5fbf6195ad5a6aee5e56993c5477e8453f5b93a0d7bafd333036d3610066565b7f188c926255f5b7af3da96355729c2a8670ab4c2c70400481b2ac903740e0c5ab610100526133d47f2c6b1e2cfea78e2c36785e76a8cfb1b057e9471f24f5b391175c3decb01e000f7f20dc664abb20b7456c06629ce37a1ecb1a27a4e8b24e31b48b9c4635aa30323e7f13eab1b4e672ba1b1c1bb901769301f1e5659d03ea10c61de2477ff0ac2214217f012c3780207f395cc21deb0abd951681eea32498ddba6ce897a8f9f0c23570677f0f3e96107decdbd6872c20ea09acf92cdf17a3ee1d1331488092d96176deb755610066565b7f233031847b476bead0118d3db338e89133ec420d673e504ad647259df655571e610100526134a67f11d0bb461bd8af2844f49f0f840c94ef9518b2511344742d1f5438fe3d415ae47f1b16ae0d7c54408cb75fd931f246751f2b0c3dc20d79e82a2531b76c22b4d5df7f26ccabc10eb04327cb5cc3dde2abb36f097086c97e738c133c9f57077e748b097f2b33803d90889706e714f720b5628d26fb60b545a1f3e9ce49a6ae912b0240867f2f9913208e09e3d6e9e6fba6384fd076ab89f2662976e3e30e0870bb30eb54f2610066565b7f217bef2f4f12c6dcc91c2058a23391cb77de53ca6e44dcdc6ea3d36fea326ea6610100526135787f0e0e7d7c5501999b7d16173b59b7cae1f203bef21aebf00251881439ccf930137f0d6ec477761e2efbac4f14b3bf3d5257a99e64c3f25fe104faf988b20fe5ff447f1efc9c9069e5068baac13d2e6645641b7d27e80fc23077161535c44682ee57a97f277f7f9b542f0c2bb5f45bed054f09624536010c3cf9452d2273193327f801d67f1f84e97895bee438eb3c92dc9b1846c9ad29c164387b06aeb6ed1841ed8c4dca610066565b7f226bac7050166e5f6db78cd0b12d36f305b6e8c9a055114ad7709e6f57245b6b6101005261364a7f304262a9eff4040acf43e322d6f52676ae2f853ec2e7a80db00c488cf917c74e7f166ea595375a6786ac527ee9eced73ed6bf550876abcaf3ac92b42c808b00d8f7f20bace63acfcae0b1c9f2bee24b8e9da85ba597d37b0905720c4f15db231b07a7f18733887a6b2b3b4c90d8e4990196e23445e47d7ea5939ebfb89a3ee3d67b4bd7f05780c88adf01531b50f817e3fe44447d29b35aa8a389c71e8cf1226acef68ba610066565b7f1980077457995712c44da7e17713258e3f8eb354bfd80ed9eaf3ecbaf69601056101005261371c7f1544649a2bd73e3ba72f396df91dd65401dd8faf51de325fbaedb9d536ad94fc7f20e88a4d607526dd07fe08a3552a44669129eb87fcc0b13aac8fe8afd93015217f2cb9c24112d35341aceac88360fb528924e58b6ecac321b9fb29e6aa3368ff237f06a0fbf4cd52e93ba5e4c6c4af65db02ee96297f8ad200f2f1cff252e769b5517f26b2f539c573829f6aca91baa954505bc5c3eb4e1df1d638582717fbdf2388cc610066565b7f1f93a532917394c7e22fd17abeea6389c66fd7ae2dd9f02f860f6d96947f0edd610100526137ed7f23670dbaef966881f07f919a2d883128c7b23cf767a477b2b2e0762bc0dbc18b7eaffcd17ba6003c56dfa85571fc29737b225a80d480e7dd7edec01f14f230107f1bd9563506d9544ef3e4830e13545012c579379c2dcc1330416c4ae49bc4ec617f2fec990ef556efe1035a464ff5581e74067445cd54abcaf6b8c0399fe0d24cfc7f25d1d22ff13e7705d3c085f97fc4e4f6914b82ffaa5d2091ec64dac423765ef7610066565b7f08a2c18ba41381348c1acfbf9617716806b462a1691bc2e343b79b8085e376b0610100526138bf7f13d36ad0a4ebeb81969778649659c65cb7d0c41cc519871fdb71a9ea6a0caa567f2738355956298138949e442171d6a4e4b74ef2065740db7cfc3a0b60fd573acb7f2074c8b709705c9888538a7f8a3c4aff647731bd16f8e254fa74ea9f2be7662c7f25c557f45b99781cd37d3bb22931662a67f78b37782c885b456bb96d55e884047f2de42e9f537b7d61b0213771c0e74f555512be07b6a50934734e2c5beb40be37610066565b7f277c4de2363d8b5b456cfc5a7ff8e46ff2ec8daa59855f5ad64bc0521f3ac567610100526139917f0ecbff4846962a975d347ea9a8fc465fb46861557622f2c2564a7e639833c1697f27f5d03bca1c8207f7239a4b2cf73ae559a15aa37e7bdddf3aab05eec5ce55927f1c68ca8f7aa17659075405ef6341b8e69a298b9a4d72f3bb854b309e4ba87a1b7f161924151b5a5ad2d8cac119522a991a906f15e8531dc70567f6b28371cc24e37f059092fc395aed285807bbf557ad9a1041f59c079822b1088457882fee7b612c610066565b7f2667349978401362f6b17939eeb0e64ff55607ebdb35c7071db46bb3e7ba477861010052613a637f0e21117970dcfbd4b1526b253636f377538d3b4faaeb5a8b24bf6200d14cc5917f10b109b864809c4767a133cce6cbad6c88628173b8ea51e8cca85830ca7de5227f230e4adeecb799877f7ce9a58c836b99d533584a195c1d77a313abe1c7d126bd7f06a719c584c74ffbdd7218eb565cb4c8bd86c92e3dfb3c73e1527201aa51234e7f1b11862c52acd351b7a464793f4fbb57fec99f832b63226f95d175c8d2fc08b2610066565b7f2bcb0b0db8b9e3e02b7e9c1c9460fdd9c6cd98562332e648d8a3e0ab9459752061010052613b357f08ff1116b7a227bfdfd4465a67890882b615c8c4c17f28d8d24958edf602ddcb7f132370abddbb0b1dd57f2a520c25336bd7cede94b95bbf5c2151d6d88e641b647f08076f9c4743de6130ff622cf401edd2c92f24bfe114f3c5e724891746315c477f264d9e094aed5f41a60242220a34a284089087b2436a9bfce8174cc9be8c2e207f05000fa5fda505e029a13bfe304c267b0d86c72c039babf6d3ff02ee246be02e610066565b7f2683b425e85a508f96852f14b4220fcfe9f7ad8b17bfefc0e348c47ca78bb57f61010052613c077f1be686d53e2a8ad57a828b0651425cfc6978c7027edbf247f6b6723c21df86e77f2fbf04284327ee4f680f06bd390e309d0d13acc74b9c5b14b63059b8cc7abff57f02f40d0ad05f5652e31ef9440ad71ebc8419e393493937f05f00499d02a99e367f27439c98a76688067a097b19b6fdd7d78d5f88e274e0d8fea5ea6b7406fdda7f7f12ea68ce6881becad7f8a6b117b03ab976f7abd597f903b0bf230d20d21a943a610066565b7f0e2155a545fe5f3cbb6397606589eac19cd92639339c6b017298a4ad3408b4b961010052613cd97f220a02881e4d47ac94d950cdf8386274d1782e27cbd0d845978deec91298f1657f0a41dd42221653752bef350f6d74a917b6cbb1fd76a3a12166f4d0be978e40267f06ccd7210dee1d6b0e22b79e12d19082d8078b788d71007b95e7a774ed86a6517f27a321f8c7d3c9022e962f7fef2e3c848b4539dbb75aa139f30430fe545bcedb7f16dace9b2e8012e31db1c7ebe672d86bbe61a1aa3e1693e0eddfc0de0a9dd951610066565b7f2901d946addc94b040fd58004d9a5f8cd1926540c7a8612cec1c58cb60c2b3a561010052613dab7f0263d8470ab4b1c61d74d8e896242f4f261dcb167a3a06923893d7cb2c93d6a17f0a65aa232d32ed6e8de63d1cdffebc2f3fa616465c27aaf97e8cd3dcff6486527f2ad000b1748abb812cd6e5411286b9ff3ef0a5bd3d259a36e45ef05b9eb5beeb7f0e925bcd1c6ddb4a3a1c67ec8deefbd40c53c0d33e7aeef1b46795aed5943c9d7f0f0f19c6291e51546a267c60cc774e5fb9d088bac530782d891ec1af4b847073610066565b7f08e2b8273bfa30c1ac850306d91e468a9e8d05092aee4cbc80c687248463ba3061010052613e7d7f03eed3892b6f0e6c5da1059c5f3793985835aa283500a8129904a94c87f161bf7f19e724a1d742cab103455f0040edf745a2696a71084c93e322715450dd4d6f5b7f2ff7a174ffcec29862e04f5dbdc73ebf3661570033576290c0c1f6cd8ced27ae7f236064d71cb6c64c84747ac25fcf8d881502e5f03bff87561b85a116b1f39aca7f1889cfa8209f4952df9022db9dc583b5717a0696da41cee64937d0cd6321e693610066565b7f29c61184ed9d460f337558a1af639aa7e3c0975e4014ed8ebcad4a25d51eabf361010052613f4f7f1c3f5d86e5921fde9890189f1d8c618754288600e6928bc182ac4d5e4c9f0ccb7f08ecd7a6f1735eed86baa094e608f488f38dbb398fcfed4b994383a0ca8e46477f20ffdfcb86f4d005064edbc296918c332d32fbeff1729de5056a26abbc3a35fa7f171ef37896bae2b1020a0a5839bd51784ce11bb4237d548c171169d32fa19b407f07adcca76d8337728839a1b6ac3b3ed42afb87d72af98f52f416f2ec58b28cec610066565b7f261db25e7cff5a9fb72f276b1f9260b667300fb7d361b50fd5c0e8b6995b05f9610100526140217f018165842f406375f2346686915afb14bf1fe0564c8858ee3bde0aba3de5f68f7f11fe1790d5abbf5935ff22318e4f7ffe69966ada2f9136b54f830eacb0a653687f03a37bf12daf1400d297ac4ac13ba24c17dc262db16c8523deee4e0ccde9a6807f0a74ea22d8a09336060610179ac1d82fffa9492df76deed4ea60e0133b0811a87f0defd45b28958728228adbb2dbdaef6a5e9b1a64902a734f402b8cefb8ab3b56610066565b7f1ea210f2001a334d3e801f4e53270d42da7aaf317a553b4282aa78eaa2282e6d610100526140f37f2c3a29e13a84d26a0911c9289daf1aa4cf5840aada0701d57e23dfc796da6da17f274f6c5fd34a784d6b915ef05d424ee6c0babbf369e79ab138b8167b5618ec7f7f27db260085e224898df145f23f635f2066d8e4e124e581e8c6261929b1dfe1077f23caa4b80ecfa99e9d3fea2bbc1dbbf369d1bfc8937d03d074061c30fd8cd76b7f2a3ac3314b2b66e796fbe36df778c5e46972320cc43ec807048826b6704ba7c4610066565b7f285745a90a7fe3d09af5a808704bc69c6f1701e573912df5cc1e265d596c4141610100526141c57f29b736b911d71a79cf63d8a6f786f11bd5abee24161dc567a7c851eae1e43b517f2a7c015e9c3b2c57ca8b7d26d39a1bcc85d6ffacb7d9fbd66d2a8f1d64ed0c927f0b5b1cec63d42d5e615dc269b885a24cef303ec78c972dd17cdbb3e915cc4ffb7f059e781d65896ebe0e4ba26dc2f29907f47bcdeda4a2ca2c713d8505ea31fd5d7f254dbeb52884b699c1ba7fa0d6e80d610903b18a3e509c36351ccc3b024946e3610066565b7f2cd055ebb7ee4686365dea450f046ff62405fae1b1afc9fb01707cf81da0e3b9610100526142977f11c4ae607bae492413bf62cdaa2c2868ed1fec6dc0631b067ca60fab125b9e2a7f23c0a19a252c87e6b1c1c21b1a79800200c3fbff3e3300e7e5568071de9efb817f23e813026fc0b80064d19b5c5428942fdf7efea80bfa8ec4095272bfdb7b4c9f7f1905d3518355eaba7859b591ed7b8c9c253980f0450dbdf54d7a7782ba0583927f2d901b8195c3c96c8c36eb99fec0134ec2b8304ae810bd30da554e3080826715610066565b7f282b37020c0890d751c3fd76950d8068668e1dfeae621dd552d2de887da2ea75610100526143697f0e2abd315b47c0dc93849c0cdf267e811cbdbdb200a6e7c2b67edf7cb01742147f242954047e5772fd3bded590ec8beb4c542f2e264c8c3e284cdc473505c51a907f1c115056539ce20cd5a04d1a5c43e2b00fbe83b25901be36f5ddc4666fc383fe7f0a35bd74e87cbabaabe89ad1319d2c9e863b4c631c21938c9a5395bf97872a9f7f053c9fef2e021fa9a20fada22fdea1505b58a3159bbb47337dbf791b215b1452610066565b6001610120527f225be36ed0ee85e1f845ada84e5748a56699152113ff61b5056b6d8bde60c19d610100526144417f26793e2abc8d3c30c60626fbaa158f263587d6bd15833d448b116264b930256a7f0cd070f234014a2809ab90c71c1da61e98a96322fedd99b6aaae1ca104f3facf7f2af211d8e0ac2d8fda7f849b8f229a225c6186b55762c7a7b2ae2d1dd85c57cb7f099ab6765505ba1198ef140e77b7954d4fbe79a056ce72bace39c048c00da3cf7f28933852266b52d9ea6b5bb923d9d94f2e5a5be5c778e75e07942c234b643bd9610066565b7f0ab4773f150c3f8ad3bc9538f43cec395a7e3731ae973fefeb623a09217e64c7610100526145137f1ee27ad6b9b5a867733afc61a2b3e76a52ba3e4bd5e657ade91fc038819dba5b7f29dfcd7b63f05abf2753a8c341d6b7a60c6243b04c9a1b8b3320bba04a4d47877f192a84ca2f99d36991e2d2b1deff3989d1c156c239e10e9f56140e18545760677f0f64891c2c8b020e46c3594cb758f0bddcdbd09bd0308816fb41734a869872c37f02174f49edb02d5154d2beca2dc92b9cc595383da1fde8f09e4b5ee3ea5a065e610066565b7f2d9e32a7c90556fe108d255ac01e75df338fcd63b2bf84c19280d427298863fc610100526145e37f2b205a8b6d4b7063d931f3bb5d3464053843fe7fbe4b83c17883f86527882a187e8e44da21d738691b881757ef37ed29c5bd9f7a4450fcf53290a92cc2ca21767ebecbb47042bd7f8c9f6bb422162d1aed089a28482f7fd16ab06a13285fe7027f2a97cf2c10c4bfbfd299f67c52a169f92c05b7dac56a41c4dd4fe87c8246ce147f13c352a02f595186202cb0b99fa58c5542ab67f9b6d3a0afd103deeff6d80f41610066565b600080516020614bd88339815191527f29a322a84c25bd2ddf6e2e4200228d95abd6349a02266ac1dbba520738ceca9760005108600080516020614bd88339815191527f0678c9bfc6f2df012f4fe55e33bb68ac14ced1df0d02152792089d046d828c4360205108600080516020614bd88339815191527f0faff3a5e7425794fe20a7e0eb615b8b1760394b7f2304286a3ae4009124db2360805108600080516020614bd88339815191527f1f8f5b611af9feb9cea86c084058120553e404103aee213f5a41d1d02541c0d360a05108600080516020614bd88339815191527f160875d8479602f96f40acc2d042ee52c1588b6a29de4284965a6dc6c930ea0760c05108600080516020614bd88339815191527f16d87a5183a316a1d70afc951efe2cd667c77328fcfda458cbf5fe3045f46d9e60e0510861010052600080516020614bd88339815191528586099550600080516020614bd883398151915285600080516020614bd8833981519152888909099450600080516020614bd88339815191528485099550600080516020614bd883398151915284600080516020614bd8833981519152888909099350600080516020614bd88339815191528384099550600080516020614bd883398151915283600080516020614bd8833981519152888909099250600080516020614bd88339815191528283099550600080516020614bd883398151915282600080516020614bd8833981519152888909099150600080516020614bd88339815191528182099550600080516020614bd883398151915281600080516020614bd8833981519152888909099050610100519550600080516020614bd88339815191528687099550600080516020614bd883398151915261010051600080516020614bd88339815191528889090961010052600080516020614bd883398151915280600080516020614d188339815191528409600080516020614bd883398151915280600080516020614c388339815191528709600080516020614bd883398151915280600080516020614b188339815191528a09600080516020614bd8833981519152600080516020614c188339815191528c090808089550600080516020614bd883398151915286600080516020614bd883398151915280600080516020614d988339815191526101005109600080516020614bd8833981519152600080516020614dd883398151915286090808600052505050505060206000f35b600060a0828403121561497e57600080fd5b82601f83011261498d57600080fd5b60405160a081016001600160401b03811182821017156149bd57634e487b7160e01b600052604160045260246000fd5b6040528060a08401858111156149d257600080fd5b845b818110156149ec5780358352602092830192016149d4565b50919594505050505056fe03d880395be93c27d649af5fd142e76b33918cb8841d5a28173bd5cf7d3287911baef1cb5509b526a42061fb53657f99b3232500e855192cbe8c940e068c475f15a67d981041b1f6f09f3f9ebefd864e779d3af08157786ac077505e50ec79fc10c9e283159d58cb4cb2e35fde83a3ba1fdc28002ed9963d2a99f186178a148d298ce0c1e3113bb935c7058e7772b533b1aa9db0c0926bdc8917e5605ca3ac101c2116e47e03a86bb11695b0a5f6dab6b9a460b1eb951ab01c259eca3fd47d5128eeae6b5866ad68e443bbaf91680db7d7e2b3037e38fef61b42cbccffceca811b121c049cd1159e289007e0c9da9995cc4bab4c26fb888ec3972a8a2e656964192e16d17d956b257b85a652eefdf2ee09589eac5be80915775723d2cb1da06d11924f02fd19b09255aaa1cf46ea0518e3d7bfeef47421609491011db0bd0b0208ca7b64657c3548f32bef5b63ad24288a41c0b251099ad27f9434307e3e64d4083f0df3f1a0351d0330ec3ff602ca8cc353b7f6e762c7107184cd7b423449f61324564ac7bdf9e22164e9858d7fa8e368b165eaea3daf4eb67ee59c0df2e5d401998270471e9361955446b0cdb8bea915ec0675f1cd648ddcb04303507a4489063edec1bed831f506af8db648d6fdea145345887e8bdcff109035a1d9b674d730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001011a63a26feabf87fa66bde66cc25a922c96382d76c6a7ff48f1537beaed683a124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18247fa7f022304a1994ff505456c2201ef9b717369498d3ffce446601ed9df845119ef188bb3dd0d32306976c19941e8664be687e7a69692da27da215a6f06d4025f16631bf77060f7ea34087c025bf135784319ef08cda2e31419ee0a529e658094cb4e83621afd271e41bc71727f0158ebd612239ac9d698b17fe4be05b7fc8144c7a11da5a7c5dabae3f33fbd03cad86d18bc594c79a497ecb9894edb554f12d9e0ab5c06893dfdfd03481381ba86b6e6292df5609d71f2c64b2d9a79f809e049327fa79d28c12a2c82406947f77f06775b0287468b3136877701dbe7c959803fd7b19ef2c861f22f77ff810f54e277bc94eb76c02d79d986be3dcdf051c3f230940dcc5232658ff9c29697a3fd416d170e8c998f1aa85dea0c42d79f951aa211610e2ad4a377426fadf7068b0c1a6c299a164c1c1a603eaed944870d0b9b90f971162627723f3feadacb28b0c104cb8f74de508752fa8d7c0db2af13de8ee2d78c3a5d28de9ff35bf0a257635196e5730ca7f40493277078cd75da8b4ebdc1a6764d5943fc4a720b4c0a19fdb8c711984307287a58b9b5f9f5d58212cb26318bd41239c3e71579a677443ecffbd555a81eeeea69352a68b67c8563c0c2a06a2646970667358221220256594e4d2a6e424291f8d62753747bc3bffe43303c707c46acc588cf82bf44e64736f6c634300080a0033"; + +type PoseidonT6ConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: PoseidonT6ConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class PoseidonT6__factory extends ContractFactory { + constructor(...args: PoseidonT6ConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): PoseidonT6 { + return super.attach(address) as PoseidonT6; + } + override connect(signer: Signer): PoseidonT6__factory { + return super.connect(signer) as PoseidonT6__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): PoseidonT6Interface { + return new utils.Interface(_abi) as PoseidonT6Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): PoseidonT6 { + return new Contract(address, _abi, signerOrProvider) as PoseidonT6; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/poseidon/index.ts b/packages/contracts/typechain-types/factories/contracts/poseidon/index.ts new file mode 100644 index 00000000..5b7af6be --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/poseidon/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { PoseidonT3__factory } from "./PoseidonT3__factory"; +export { PoseidonT4__factory } from "./PoseidonT4__factory"; +export { PoseidonT5__factory } from "./PoseidonT5__factory"; +export { PoseidonT6__factory } from "./PoseidonT6__factory"; diff --git a/packages/contracts/typechain-types/factories/contracts/recipientRegistry/BaseRecipientRegistry__factory.ts b/packages/contracts/typechain-types/factories/contracts/recipientRegistry/BaseRecipientRegistry__factory.ts new file mode 100644 index 00000000..77b77c2e --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/recipientRegistry/BaseRecipientRegistry__factory.ts @@ -0,0 +1,117 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + BaseRecipientRegistry, + BaseRecipientRegistryInterface, +} from "../../../contracts/recipientRegistry/BaseRecipientRegistry"; + +const _abi = [ + { + inputs: [], + name: "controller", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_index", + type: "uint256", + }, + { + internalType: "uint256", + name: "_startTime", + type: "uint256", + }, + { + internalType: "uint256", + name: "_endTime", + type: "uint256", + }, + ], + name: "getRecipientAddress", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getRecipientCount", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "maxRecipients", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_maxRecipients", + type: "uint256", + }, + ], + name: "setMaxRecipients", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class BaseRecipientRegistry__factory { + static readonly abi = _abi; + static createInterface(): BaseRecipientRegistryInterface { + return new utils.Interface(_abi) as BaseRecipientRegistryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): BaseRecipientRegistry { + return new Contract( + address, + _abi, + signerOrProvider + ) as BaseRecipientRegistry; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/recipientRegistry/IRecipientRegistry__factory.ts b/packages/contracts/typechain-types/factories/contracts/recipientRegistry/IRecipientRegistry__factory.ts new file mode 100644 index 00000000..738a02b8 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/recipientRegistry/IRecipientRegistry__factory.ts @@ -0,0 +1,74 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IRecipientRegistry, + IRecipientRegistryInterface, +} from "../../../contracts/recipientRegistry/IRecipientRegistry"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "_index", + type: "uint256", + }, + { + internalType: "uint256", + name: "_startBlock", + type: "uint256", + }, + { + internalType: "uint256", + name: "_endBlock", + type: "uint256", + }, + ], + name: "getRecipientAddress", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_maxRecipients", + type: "uint256", + }, + ], + name: "setMaxRecipients", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IRecipientRegistry__factory { + static readonly abi = _abi; + static createInterface(): IRecipientRegistryInterface { + return new utils.Interface(_abi) as IRecipientRegistryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IRecipientRegistry { + return new Contract(address, _abi, signerOrProvider) as IRecipientRegistry; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/recipientRegistry/OptimisticRecipientRegistry__factory.ts b/packages/contracts/typechain-types/factories/contracts/recipientRegistry/OptimisticRecipientRegistry__factory.ts new file mode 100644 index 00000000..352ae50c --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/recipientRegistry/OptimisticRecipientRegistry__factory.ts @@ -0,0 +1,450 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BigNumberish, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + OptimisticRecipientRegistry, + OptimisticRecipientRegistryInterface, +} from "../../../contracts/recipientRegistry/OptimisticRecipientRegistry"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "_baseDeposit", + type: "uint256", + }, + { + internalType: "uint256", + name: "_challengePeriodDuration", + type: "uint256", + }, + { + internalType: "address", + name: "_controller", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "_recipientId", + type: "bytes32", + }, + { + indexed: true, + internalType: "enum OptimisticRecipientRegistry.RequestType", + name: "_type", + type: "uint8", + }, + { + indexed: true, + internalType: "bool", + name: "_rejected", + type: "bool", + }, + { + indexed: false, + internalType: "uint256", + name: "_recipientIndex", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "_timestamp", + type: "uint256", + }, + ], + name: "RequestResolved", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "_recipientId", + type: "bytes32", + }, + { + indexed: true, + internalType: "enum OptimisticRecipientRegistry.RequestType", + name: "_type", + type: "uint8", + }, + { + indexed: false, + internalType: "address", + name: "_recipient", + type: "address", + }, + { + indexed: false, + internalType: "string", + name: "_metadata", + type: "string", + }, + { + indexed: false, + internalType: "uint256", + name: "_timestamp", + type: "uint256", + }, + ], + name: "RequestSubmitted", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "_recipient", + type: "address", + }, + { + internalType: "string", + name: "_metadata", + type: "string", + }, + ], + name: "addRecipient", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "baseDeposit", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "challengePeriodDuration", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_recipientId", + type: "bytes32", + }, + { + internalType: "address payable", + name: "_beneficiary", + type: "address", + }, + ], + name: "challengeRequest", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "controller", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_recipientId", + type: "bytes32", + }, + ], + name: "executeRequest", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_index", + type: "uint256", + }, + { + internalType: "uint256", + name: "_startTime", + type: "uint256", + }, + { + internalType: "uint256", + name: "_endTime", + type: "uint256", + }, + ], + name: "getRecipientAddress", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getRecipientCount", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "maxRecipients", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_recipientId", + type: "bytes32", + }, + ], + name: "removeRecipient", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_baseDeposit", + type: "uint256", + }, + ], + name: "setBaseDeposit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_challengePeriodDuration", + type: "uint256", + }, + ], + name: "setChallengePeriodDuration", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_maxRecipients", + type: "uint256", + }, + ], + name: "setMaxRecipients", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b506040516119f53803806119f583398101604081905261002f916100b5565b61003833610065565b600692909255600755600180546001600160a01b0319166001600160a01b039092169190911790556100fb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000806000606084860312156100ca57600080fd5b83516020850151604086015191945092506001600160a01b03811681146100f057600080fd5b809150509250925092565b6118eb8061010a6000396000f3fe6080604052600436106100c25760003560e01c806282a36d146100c7578063148ec9ab146100f05780634458e6091461012057806362564ed414610142578063694746251461017a578063715018a614610190578063739b5384146101a557806388a13072146101b85780638d62272e146101ce5780638da5cb5b146101ee578063af99b63f14610203578063c22a933c14610218578063d7c9ebdd14610238578063e9c241661461024b578063f2fde38b1461026b578063f77c47911461028b575b600080fd5b3480156100d357600080fd5b506100dd60075481565b6040519081526020015b60405180910390f35b3480156100fc57600080fd5b5061011061010b366004611415565b6102ab565b60405190151581526020016100e7565b34801561012c57600080fd5b5061014061013b366004611415565b61034f565b005b34801561014e57600080fd5b5061016261015d36600461142e565b61035c565b6040516001600160a01b0390911681526020016100e7565b34801561018657600080fd5b506100dd60065481565b34801561019c57600080fd5b506101406104dd565b6101406101b336600461146f565b6104f1565b3480156101c457600080fd5b506100dd60025481565b3480156101da57600080fd5b506101106101e93660046114f3565b6107c2565b3480156101fa57600080fd5b506101626109c3565b34801561020f57600080fd5b506100dd6109d2565b34801561022457600080fd5b50610140610233366004611415565b6109e9565b610140610246366004611415565b6109f6565b34801561025757600080fd5b50610110610266366004611415565b610bc5565b34801561027757600080fd5b50610140610286366004611523565b610e97565b34801561029757600080fd5b50600154610162906001600160a01b031681565b600060025482101561032c576040805162461bcd60e51b81526020600482015260248101919091527f526563697069656e7452656769737472793a204d6178206e756d626572206f6660448201527f20726563697069656e74732063616e206e6f742062652064656372656173656460648201526084015b60405180910390fd5b6001546001600160a01b0316331461034657506000919050565b50600255600190565b610357610f10565b600755565b600083158061036c575060055484115b15610379575060006104d6565b60006005610388600187611556565b815481106103985761039861156d565b906000526020600020018054806020026020016040519081016040528092919081815260200182805480156103ec57602002820191906000526020600020905b8154815260200190600101908083116103d8575b505050505090508051600014156104075760009150506104d6565b80516000905b80156104d157600083610421600184611556565b815181106104315761043161156d565b60209081029190910181015160008181526003808452604091829020825160808101845281546001600160a01b031681526001820154958101959095526002810154928501839052015460608401529092508710156104915750506104bf565b6060810151158015906104a8575087816060015111155b156104ba5783955050505050506104d6565b519250505b806104c981611583565b91505061040d565b509150505b9392505050565b6104e5610f10565b6104ef6000610f6f565b565b6001600160a01b03831661055c5760405162461bcd60e51b815260206004820152602c60248201527f526563697069656e7452656769737472793a20526563697069656e742061646460448201526b72657373206973207a65726f60a01b6064820152608401610323565b806105c25760405162461bcd60e51b815260206004820152603060248201527f526563697069656e7452656769737472793a204d6574616461746120696e666f60448201526f20697320656d70747920737472696e6760801b6064820152608401610323565b60008383836040516020016105d99392919061159a565b60408051601f19818403018152918152815160209283012060008181526003909352912060010154909150156106215760405162461bcd60e51b8152600401610323906115c2565b600081815260086020526040902060010154156106505760405162461bcd60e51b8152600401610323906115ff565b60065434146106715760405162461bcd60e51b81526004016103239061164b565b6040805160c081019091528060008152602001336001600160a01b03168152602001428152602001348152602001856001600160a01b0316815260200184848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509390945250508381526008602052604090208251815491925090829060ff19166001838181111561071357610713611696565b02179055506020828101518254610100600160a81b0319166101006001600160a01b0392831602178355604084015160018401556060840151600284015560808401516003840180546001600160a01b0319169190921617905560a083015180516107849260048501920190611308565b50600091506107909050565b81600080516020611836833981519152868686426040516107b494939291906116ac565b60405180910390a350505050565b60006107cc610f10565b600083815260086020526040808220815160c081019092528054829060ff1660018111156107fc576107fc611696565b600181111561080d5761080d611696565b815281546001600160a01b03610100909104811660208301526001830154604083015260028301546060830152600383015416608082015260048201805460a09092019161085a906116f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610886906116f6565b80156108d35780601f106108a8576101008083540402835291602001916108d3565b820191906000526020600020905b8154815290600101906020018083116108b657829003601f168201915b50505050508152505090508060400151600014156109035760405162461bcd60e51b815260040161032390611731565b600084815260086020526040812080546001600160a81b031916815560018101829055600281018290556003810180546001600160a01b03191690559061094d600483018261138c565b505060608101516040516000916001600160a01b0386169181156108fc02919084818181858888f1865190955060019450925050508181111561099257610992611696565b60408051600081524260208201528891600080516020611876833981519152910160405180910390a4949350505050565b6000546001600160a01b031690565b6004546005546000916109e491611556565b905090565b6109f1610f10565b600655565b600081815260036020526040902060010154610a245760405162461bcd60e51b81526004016103239061177a565b6000818152600360208190526040909120015415610a545760405162461bcd60e51b8152600401610323906117cd565b60008181526008602052604090206001015415610a835760405162461bcd60e51b8152600401610323906115ff565b6006543414610aa45760405162461bcd60e51b81526004016103239061164b565b6040805160c08101825260018082523360208084019190915242838501523460608401526000608084018190528451808301865281815260a085015285815260089091529290922081518154929391929091839160ff1916908381811115610b0e57610b0e611696565b02179055506020828101518254610100600160a81b0319166101006001600160a01b0392831602178355604084015160018401556060840151600284015560808401516003840180546001600160a01b0319169190921617905560a08301518051610b7f9260048501920190611308565b5060019150610b8b9050565b604080516000808252606060208301819052820152428183015290518391600080516020611836833981519152919081900360800190a350565b600081815260086020526040808220815160c08101909252805483929190829060ff166001811115610bf957610bf9611696565b6001811115610c0a57610c0a611696565b815281546001600160a01b03610100909104811660208301526001830154604083015260028301546060830152600383015416608082015260048201805460a090920191610c57906116f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610c83906116f6565b8015610cd05780601f10610ca557610100808354040283529160200191610cd0565b820191906000526020600020905b815481529060010190602001808311610cb357829003601f168201915b5050505050815250509050806040015160001415610d005760405162461bcd60e51b815260040161032390611731565b610d086109c3565b6001600160a01b0316336001600160a01b031614610d98576007546040820151610d329042611556565b1015610d985760405162461bcd60e51b815260206004820152602f60248201527f526563697069656e7452656769737472793a204368616c6c656e67652070657260448201526e34b7b21034b9903737ba1037bb32b960891b6064820152608401610323565b6000600182516001811115610daf57610daf611696565b1415610dc357610dbe84610fbf565b610dd4565b610dd1848360800151611062565b90505b600084815260086020526040812080546001600160a81b031916815560018101829055600281018290556003810180546001600160a01b031916905590610e1e600483018261138c565b5050602082015160608301516040516000926001600160a01b03169180156108fc029184818181858888f1875190955060009450925050506001811115610e6757610e67611696565b604080518581524260208201528891600080516020611876833981519152910160405180910390a4949350505050565b610e9f610f10565b6001600160a01b038116610f045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610323565b610f0d81610f6f565b50565b33610f196109c3565b6001600160a01b0316146104ef5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610323565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081815260036020526040902060010154610fed5760405162461bcd60e51b81526004016103239061177a565b600081815260036020819052604090912001541561101d5760405162461bcd60e51b8152600401610323906117cd565b60008181526003602081905260408220429101556004805460018101825591527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0155565b600080600254116110b95760405162461bcd60e51b815260206004820152602d602482015260008051602061185683398151915260448201526c1a5d081a5cc81b9bdd081cd95d609a1b6064820152608401610323565b600083815260036020526040902060010154156110e85760405162461bcd60e51b8152600401610323906115c2565b60055460009081906110fb906001611807565b9050600254811161119a5760408051600180825281830190925291925082916000916020808301908036833701905050905085816000815181106111415761114161156d565b602090810291909101810191909152600580546001810182556000919091528251611193927f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0909201918401906113c6565b505061129a565b6004546111ea5760405162461bcd60e51b815260206004820152602a60248201526000805160206118568339815191526044820152691a5d081c995858da195960b21b6064820152608401610323565b60048054600091906111fe90600190611556565b8154811061120e5761120e61156d565b90600052602060002001549050600480548061122c5761122c61181f565b6001900381819060005260206000200160009055905560036000828152602001908152602001600020600101549250600560018461126a9190611556565b8154811061127a5761127a61156d565b600091825260208083209091018054600181018255908352912001869055505b50604080516080810182526001600160a01b0380861682526020808301858152428486019081526000606086018181528b82526003948590529690209451855494166001600160a01b0319909416939093178455516001840155905160028301559151910155905092915050565b828054611314906116f6565b90600052602060002090601f016020900481019282611336576000855561137c565b82601f1061134f57805160ff191683800117855561137c565b8280016001018555821561137c579182015b8281111561137c578251825591602001919060010190611361565b50611388929150611400565b5090565b508054611398906116f6565b6000825580601f106113a8575050565b601f016020900490600052602060002090810190610f0d9190611400565b82805482825590600052602060002090810192821561137c579160200282018281111561137c578251825591602001919060010190611361565b5b808211156113885760008155600101611401565b60006020828403121561142757600080fd5b5035919050565b60008060006060848603121561144357600080fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114610f0d57600080fd5b60008060006040848603121561148457600080fd5b833561148f8161145a565b925060208401356001600160401b03808211156114ab57600080fd5b818601915086601f8301126114bf57600080fd5b8135818111156114ce57600080fd5b8760208285010111156114e057600080fd5b6020830194508093505050509250925092565b6000806040838503121561150657600080fd5b8235915060208301356115188161145a565b809150509250929050565b60006020828403121561153557600080fd5b81356104d68161145a565b634e487b7160e01b600052601160045260246000fd5b60008282101561156857611568611540565b500390565b634e487b7160e01b600052603260045260246000fd5b60008161159257611592611540565b506000190190565b606084901b6001600160601b0319168152818360148301376000910160140190815292915050565b6020808252602f9082015260008051602061189683398151915260408201526e1958591e481c9959da5cdd195c9959608a1b606082015260800190565b6020808252602c908201527f526563697069656e7452656769737472793a205265717565737420616c72656160408201526b191e481cdd589b5a5d1d195960a21b606082015260800190565b6020808252602b908201527f526563697069656e7452656769737472793a20496e636f72726563742064657060408201526a1bdcda5d08185b5bdd5b9d60aa1b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b038516815260606020820181905281018390528284608083013760006080848301015260006080601f19601f860116830101905082604083015295945050505050565b600181811c9082168061170a57607f821691505b6020821081141561172b57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526029908201527f526563697069656e7452656769737472793a205265717565737420646f6573206040820152681b9bdd08195e1a5cdd60ba1b606082015260800190565b60208082526033908201527f526563697069656e7452656769737472793a20526563697069656e74206973206040820152726e6f7420696e2074686520726567697374727960681b606082015260800190565b6020808252602c9082015260008051602061189683398151915260408201526b1958591e481c995b5bdd995960a21b606082015260800190565b6000821982111561181a5761181a611540565b500190565b634e487b7160e01b600052603160045260246000fdfebb4ad318e5170357f8e7d25deefe5cf02bc8182cbb95600c22a1105978a8f1b8526563697069656e7452656769737472793a20526563697069656e74206c696d863e10260d0b36e06a2dee07c61c59e95209f121464f054ec556d22e958b1ef2526563697069656e7452656769737472793a20526563697069656e7420616c72a2646970667358221220cebd0ee67e17bbbd32faabe6a87a59102661d98258c1887c112716f634f6c26f64736f6c634300080a0033"; + +type OptimisticRecipientRegistryConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: OptimisticRecipientRegistryConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class OptimisticRecipientRegistry__factory extends ContractFactory { + constructor(...args: OptimisticRecipientRegistryConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + _baseDeposit: PromiseOrValue, + _challengePeriodDuration: PromiseOrValue, + _controller: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _baseDeposit, + _challengePeriodDuration, + _controller, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _baseDeposit: PromiseOrValue, + _challengePeriodDuration: PromiseOrValue, + _controller: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction( + _baseDeposit, + _challengePeriodDuration, + _controller, + overrides || {} + ); + } + override attach(address: string): OptimisticRecipientRegistry { + return super.attach(address) as OptimisticRecipientRegistry; + } + override connect(signer: Signer): OptimisticRecipientRegistry__factory { + return super.connect(signer) as OptimisticRecipientRegistry__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): OptimisticRecipientRegistryInterface { + return new utils.Interface(_abi) as OptimisticRecipientRegistryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): OptimisticRecipientRegistry { + return new Contract( + address, + _abi, + signerOrProvider + ) as OptimisticRecipientRegistry; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/recipientRegistry/SimpleRecipientRegistry__factory.ts b/packages/contracts/typechain-types/factories/contracts/recipientRegistry/SimpleRecipientRegistry__factory.ts new file mode 100644 index 00000000..4ad05a25 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/recipientRegistry/SimpleRecipientRegistry__factory.ts @@ -0,0 +1,309 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + SimpleRecipientRegistry, + SimpleRecipientRegistryInterface, +} from "../../../contracts/recipientRegistry/SimpleRecipientRegistry"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_controller", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "_recipientId", + type: "bytes32", + }, + { + indexed: false, + internalType: "address", + name: "_recipient", + type: "address", + }, + { + indexed: false, + internalType: "string", + name: "_metadata", + type: "string", + }, + { + indexed: false, + internalType: "uint256", + name: "_index", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "_timestamp", + type: "uint256", + }, + ], + name: "RecipientAdded", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "bytes32", + name: "_recipientId", + type: "bytes32", + }, + { + indexed: false, + internalType: "uint256", + name: "_timestamp", + type: "uint256", + }, + ], + name: "RecipientRemoved", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "_recipient", + type: "address", + }, + { + internalType: "string", + name: "_metadata", + type: "string", + }, + ], + name: "addRecipient", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "controller", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_index", + type: "uint256", + }, + { + internalType: "uint256", + name: "_startTime", + type: "uint256", + }, + { + internalType: "uint256", + name: "_endTime", + type: "uint256", + }, + ], + name: "getRecipientAddress", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "getRecipientCount", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "maxRecipients", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_recipientId", + type: "bytes32", + }, + ], + name: "removeRecipient", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_maxRecipients", + type: "uint256", + }, + ], + name: "setMaxRecipients", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x608060405234801561001057600080fd5b50604051610e54380380610e5483398101604081905261002f916100ad565b6100383361005d565b600180546001600160a01b0319166001600160a01b03929092169190911790556100dd565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100bf57600080fd5b81516001600160a01b03811681146100d657600080fd5b9392505050565b610d68806100ec6000396000f3fe608060405234801561001057600080fd5b506004361061008e5760003560e01c8063148ec9ab1461009357806362564ed4146100bb578063715018a6146100e6578063739b5384146100f057806388a13072146101035780638da5cb5b1461011a578063af99b63f14610122578063d7c9ebdd1461012a578063f2fde38b1461013d578063f77c479114610150575b600080fd5b6100a66100a1366004610af3565b610163565b60405190151581526020015b60405180910390f35b6100ce6100c9366004610b0c565b610207565b6040516001600160a01b0390911681526020016100b2565b6100ee610388565b005b6100ee6100fe366004610b54565b61039c565b61010c60025481565b6040519081526020016100b2565b6100ce6104f9565b61010c610508565b6100ee610138366004610af3565b61051f565b6100ee61014b366004610bd6565b61056d565b6001546100ce906001600160a01b031681565b60006002548210156101e4576040805162461bcd60e51b81526020600482015260248101919091527f526563697069656e7452656769737472793a204d6178206e756d626572206f6660448201527f20726563697069656e74732063616e206e6f742062652064656372656173656460648201526084015b60405180910390fd5b6001546001600160a01b031633146101fe57506000919050565b50600255600190565b6000831580610217575060055484115b1561022457506000610381565b60006005610233600187610c07565b8154811061024357610243610c1e565b9060005260206000200180548060200260200160405190810160405280929190818152602001828054801561029757602002820191906000526020600020905b815481526020019060010190808311610283575b505050505090508051600014156102b2576000915050610381565b80516000905b801561037c576000836102cc600184610c07565b815181106102dc576102dc610c1e565b60209081029190910181015160008181526003808452604091829020825160808101845281546001600160a01b0316815260018201549581019590955260028101549285018390520154606084015290925087101561033c57505061036a565b606081015115801590610353575087816060015111155b15610365578395505050505050610381565b519250505b8061037481610c34565b9150506102b8565b509150505b9392505050565b6103906105e6565b61039a6000610645565b565b6103a46105e6565b6001600160a01b03831661040f5760405162461bcd60e51b815260206004820152602c60248201527f526563697069656e7452656769737472793a20526563697069656e742061646460448201526b72657373206973207a65726f60a01b60648201526084016101db565b806104755760405162461bcd60e51b815260206004820152603060248201527f526563697069656e7452656769737472793a204d6574616461746120696e666f60448201526f20697320656d70747920737472696e6760801b60648201526084016101db565b600083838360405160200161048c93929190610c4b565b60405160208183030381529060405280519060200120905060006104b08286610695565b9050817fddc3968b1ce25baf13504e6d2de09bbf72f4b32b9d80e2f4914842f0f9217b0d86868685426040516104ea959493929190610c73565b60405180910390a25050505050565b6000546001600160a01b031690565b60045460055460009161051a91610c07565b905090565b6105276105e6565b61053081610971565b807fc678e7ee92280740c8b3be4826e92b29fb5477e2ddc3eb2e9ca45f74daa4972e4260405161056291815260200190565b60405180910390a250565b6105756105e6565b6001600160a01b0381166105da5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016101db565b6105e381610645565b50565b336105ef6104f9565b6001600160a01b03161461039a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101db565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600254116106ec5760405162461bcd60e51b815260206004820152602d6024820152600080516020610cf383398151915260448201526c1a5d081a5cc81b9bdd081cd95d609a1b60648201526084016101db565b600083815260036020526040902060010154156107515760405162461bcd60e51b815260206004820152602f6024820152600080516020610d1383398151915260448201526e1958591e481c9959da5cdd195c9959608a1b60648201526084016101db565b6005546000908190610764906001610cc4565b905060025481116108035760408051600180825281830190925291925082916000916020808301908036833701905050905085816000815181106107aa576107aa610c1e565b6020908102919091018101919091526005805460018101825560009190915282516107fc927f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090920191840190610a93565b5050610903565b6004546108535760405162461bcd60e51b815260206004820152602a6024820152600080516020610cf38339815191526044820152691a5d081c995858da195960b21b60648201526084016101db565b600480546000919061086790600190610c07565b8154811061087757610877610c1e565b90600052602060002001549050600480548061089557610895610cdc565b600190038181906000526020600020016000905590556003600082815260200190815260200160002060010154925060056001846108d39190610c07565b815481106108e3576108e3610c1e565b600091825260208083209091018054600181018255908352912001869055505b50604080516080810182526001600160a01b0380861682526020808301858152428486019081526000606086018181528b82526003948590529690209451855494166001600160a01b0319909416939093178455516001840155905160028301559151910155905092915050565b6000818152600360205260409020600101546109eb5760405162461bcd60e51b815260206004820152603360248201527f526563697069656e7452656769737472793a20526563697069656e74206973206044820152726e6f7420696e2074686520726567697374727960681b60648201526084016101db565b6000818152600360208190526040909120015415610a4e5760405162461bcd60e51b815260206004820152602c6024820152600080516020610d1383398151915260448201526b1958591e481c995b5bdd995960a21b60648201526084016101db565b60008181526003602081905260408220429101556004805460018101825591527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0155565b828054828255906000526020600020908101928215610ace579160200282015b82811115610ace578251825591602001919060010190610ab3565b50610ada929150610ade565b5090565b5b80821115610ada5760008155600101610adf565b600060208284031215610b0557600080fd5b5035919050565b600080600060608486031215610b2157600080fd5b505081359360208301359350604090920135919050565b80356001600160a01b0381168114610b4f57600080fd5b919050565b600080600060408486031215610b6957600080fd5b610b7284610b38565b925060208401356001600160401b0380821115610b8e57600080fd5b818601915086601f830112610ba257600080fd5b813581811115610bb157600080fd5b876020828501011115610bc357600080fd5b6020830194508093505050509250925092565b600060208284031215610be857600080fd5b61038182610b38565b634e487b7160e01b600052601160045260246000fd5b600082821015610c1957610c19610bf1565b500390565b634e487b7160e01b600052603260045260246000fd5b600081610c4357610c43610bf1565b506000190190565b606084901b6001600160601b0319168152818360148301376000910160140190815292915050565b6001600160a01b03861681526080602082018190528101849052838560a0830137600060a08583010152600060a0601f19601f87011683010190508360408301528260608301529695505050505050565b60008219821115610cd757610cd7610bf1565b500190565b634e487b7160e01b600052603160045260246000fdfe526563697069656e7452656769737472793a20526563697069656e74206c696d526563697069656e7452656769737472793a20526563697069656e7420616c72a2646970667358221220a27434aa3c70cef74b55c982aa765c4a23eece32238df93fb2cc1e1f1d1e36aa64736f6c634300080a0033"; + +type SimpleRecipientRegistryConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: SimpleRecipientRegistryConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class SimpleRecipientRegistry__factory extends ContractFactory { + constructor(...args: SimpleRecipientRegistryConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + _controller: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + _controller, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + _controller: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(_controller, overrides || {}); + } + override attach(address: string): SimpleRecipientRegistry { + return super.attach(address) as SimpleRecipientRegistry; + } + override connect(signer: Signer): SimpleRecipientRegistry__factory { + return super.connect(signer) as SimpleRecipientRegistry__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): SimpleRecipientRegistryInterface { + return new utils.Interface(_abi) as SimpleRecipientRegistryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): SimpleRecipientRegistry { + return new Contract( + address, + _abi, + signerOrProvider + ) as SimpleRecipientRegistry; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/recipientRegistry/index.ts b/packages/contracts/typechain-types/factories/contracts/recipientRegistry/index.ts new file mode 100644 index 00000000..8bd6a2bd --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/recipientRegistry/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { BaseRecipientRegistry__factory } from "./BaseRecipientRegistry__factory"; +export { IRecipientRegistry__factory } from "./IRecipientRegistry__factory"; +export { OptimisticRecipientRegistry__factory } from "./OptimisticRecipientRegistry__factory"; +export { SimpleRecipientRegistry__factory } from "./SimpleRecipientRegistry__factory"; diff --git a/packages/contracts/typechain-types/factories/contracts/utils/LibClone__factory.ts b/packages/contracts/typechain-types/factories/contracts/utils/LibClone__factory.ts new file mode 100644 index 00000000..b65a5ab6 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/utils/LibClone__factory.ts @@ -0,0 +1,68 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../common"; +import type { + LibClone, + LibCloneInterface, +} from "../../../contracts/utils/LibClone"; + +const _abi = [ + { + inputs: [], + name: "DeploymentFailed", + type: "error", + }, +] as const; + +const _bytecode = + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122024ad60c93bed8da169f06138bc033ead327b363e197232fd59582c77023a66c764736f6c634300080a0033"; + +type LibCloneConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: LibCloneConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class LibClone__factory extends ContractFactory { + constructor(...args: LibCloneConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + override getDeployTransaction( + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + override attach(address: string): LibClone { + return super.attach(address) as LibClone; + } + override connect(signer: Signer): LibClone__factory { + return super.connect(signer) as LibClone__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): LibCloneInterface { + return new utils.Interface(_abi) as LibCloneInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): LibClone { + return new Contract(address, _abi, signerOrProvider) as LibClone; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/utils/Multicallable__factory.ts b/packages/contracts/typechain-types/factories/contracts/utils/Multicallable__factory.ts new file mode 100644 index 00000000..31672a1e --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/utils/Multicallable__factory.ts @@ -0,0 +1,45 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + Multicallable, + MulticallableInterface, +} from "../../../contracts/utils/Multicallable"; + +const _abi = [ + { + inputs: [ + { + internalType: "bytes[]", + name: "data", + type: "bytes[]", + }, + ], + name: "multicall", + outputs: [ + { + internalType: "bytes[]", + name: "results", + type: "bytes[]", + }, + ], + stateMutability: "payable", + type: "function", + }, +] as const; + +export class Multicallable__factory { + static readonly abi = _abi; + static createInterface(): MulticallableInterface { + return new utils.Interface(_abi) as MulticallableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Multicallable { + return new Contract(address, _abi, signerOrProvider) as Multicallable; + } +} diff --git a/packages/contracts/typechain-types/factories/contracts/utils/index.ts b/packages/contracts/typechain-types/factories/contracts/utils/index.ts new file mode 100644 index 00000000..8825e276 --- /dev/null +++ b/packages/contracts/typechain-types/factories/contracts/utils/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { LibClone__factory } from "./LibClone__factory"; +export { Multicallable__factory } from "./Multicallable__factory"; diff --git a/packages/contracts/typechain-types/factories/index.ts b/packages/contracts/typechain-types/factories/index.ts new file mode 100644 index 00000000..6ff9ace7 --- /dev/null +++ b/packages/contracts/typechain-types/factories/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as openzeppelin from "./@openzeppelin"; +export * as contracts from "./contracts"; diff --git a/packages/contracts/typechain-types/hardhat.d.ts b/packages/contracts/typechain-types/hardhat.d.ts new file mode 100644 index 00000000..f50ad3a7 --- /dev/null +++ b/packages/contracts/typechain-types/hardhat.d.ts @@ -0,0 +1,384 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { ethers } from "ethers"; +import { + FactoryOptions, + HardhatEthersHelpers as HardhatEthersHelpersBase, +} from "@nomiclabs/hardhat-ethers/types"; + +import * as Contracts from "."; + +declare module "hardhat/types/runtime" { + interface HardhatEthersHelpers extends HardhatEthersHelpersBase { + getContractFactory( + name: "OwnableUpgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Initializable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ContextUpgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Ownable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ERC721", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC721Metadata", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC721", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC721Receiver", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ERC165", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC165", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "AccQueue", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "AccQueueBinary", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "AccQueueQuinary", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "PoseidonT3", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "PoseidonT6", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ConstantInitialVoiceCreditProxy", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "InitialVoiceCreditProxy", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "FreeForAllGatekeeper", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IInitialVoiceCreditProxy", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ISignUpGatekeeper", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "InitialVoiceCreditProxy", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "NFTSignup", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "SignUpNFT", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "SimpleHackathon", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Jubjub", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "JubjubFactory", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "MessageTree", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "PoseidonT3", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "PoseidonT4", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "PoseidonT5", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "PoseidonT6", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "BaseRecipientRegistry", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IRecipientRegistry", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "OptimisticRecipientRegistry", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "SimpleRecipientRegistry", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "StateTree", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "LibClone", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Multicallable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "VkRegistry", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + + getContractAt( + name: "OwnableUpgradeable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Initializable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ContextUpgradeable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Ownable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ERC721", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC721Metadata", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC721", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC721Receiver", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ERC165", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC165", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "AccQueue", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "AccQueueBinary", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "AccQueueQuinary", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "PoseidonT3", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "PoseidonT6", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ConstantInitialVoiceCreditProxy", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "InitialVoiceCreditProxy", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "FreeForAllGatekeeper", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IInitialVoiceCreditProxy", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ISignUpGatekeeper", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "InitialVoiceCreditProxy", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "NFTSignup", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "SignUpNFT", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "SimpleHackathon", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Jubjub", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "JubjubFactory", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "MessageTree", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "PoseidonT3", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "PoseidonT4", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "PoseidonT5", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "PoseidonT6", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "BaseRecipientRegistry", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IRecipientRegistry", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "OptimisticRecipientRegistry", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "SimpleRecipientRegistry", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "StateTree", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "LibClone", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Multicallable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "VkRegistry", + address: string, + signer?: ethers.Signer + ): Promise; + + // default types + getContractFactory( + name: string, + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + abi: any[], + bytecode: ethers.utils.BytesLike, + signer?: ethers.Signer + ): Promise; + getContractAt( + nameOrAbi: string | any[], + address: string, + signer?: ethers.Signer + ): Promise; + } +} diff --git a/packages/contracts/typechain-types/index.ts b/packages/contracts/typechain-types/index.ts new file mode 100644 index 00000000..70d932fd --- /dev/null +++ b/packages/contracts/typechain-types/index.ts @@ -0,0 +1,80 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as openzeppelin from "./@openzeppelin"; +export type { openzeppelin }; +import type * as contracts from "./contracts"; +export type { contracts }; +export * as factories from "./factories"; +export type { OwnableUpgradeable } from "./@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable"; +export { OwnableUpgradeable__factory } from "./factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory"; +export type { Initializable } from "./@openzeppelin/contracts-upgradeable/proxy/utils/Initializable"; +export { Initializable__factory } from "./factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory"; +export type { ContextUpgradeable } from "./@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable"; +export { ContextUpgradeable__factory } from "./factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory"; +export type { Ownable } from "./@openzeppelin/contracts/access/Ownable"; +export { Ownable__factory } from "./factories/@openzeppelin/contracts/access/Ownable__factory"; +export type { ERC721 } from "./@openzeppelin/contracts/token/ERC721/ERC721"; +export { ERC721__factory } from "./factories/@openzeppelin/contracts/token/ERC721/ERC721__factory"; +export type { IERC721Metadata } from "./@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata"; +export { IERC721Metadata__factory } from "./factories/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata__factory"; +export type { IERC721 } from "./@openzeppelin/contracts/token/ERC721/IERC721"; +export { IERC721__factory } from "./factories/@openzeppelin/contracts/token/ERC721/IERC721__factory"; +export type { IERC721Receiver } from "./@openzeppelin/contracts/token/ERC721/IERC721Receiver"; +export { IERC721Receiver__factory } from "./factories/@openzeppelin/contracts/token/ERC721/IERC721Receiver__factory"; +export type { ERC165 } from "./@openzeppelin/contracts/utils/introspection/ERC165"; +export { ERC165__factory } from "./factories/@openzeppelin/contracts/utils/introspection/ERC165__factory"; +export type { IERC165 } from "./@openzeppelin/contracts/utils/introspection/IERC165"; +export { IERC165__factory } from "./factories/@openzeppelin/contracts/utils/introspection/IERC165__factory"; +export type { AccQueue } from "./contracts/AccQueue.sol/AccQueue"; +export { AccQueue__factory } from "./factories/contracts/AccQueue.sol/AccQueue__factory"; +export type { AccQueueBinary } from "./contracts/AccQueue.sol/AccQueueBinary"; +export { AccQueueBinary__factory } from "./factories/contracts/AccQueue.sol/AccQueueBinary__factory"; +export type { AccQueueQuinary } from "./contracts/AccQueue.sol/AccQueueQuinary"; +export { AccQueueQuinary__factory } from "./factories/contracts/AccQueue.sol/AccQueueQuinary__factory"; +export type { PoseidonT3 } from "./contracts/AccQueue.sol/PoseidonT3"; +export { PoseidonT3__factory } from "./factories/contracts/AccQueue.sol/PoseidonT3__factory"; +export type { PoseidonT6 } from "./contracts/AccQueue.sol/PoseidonT6"; +export { PoseidonT6__factory } from "./factories/contracts/AccQueue.sol/PoseidonT6__factory"; +export type { ConstantInitialVoiceCreditProxy } from "./contracts/flavors/ConstantInitialVoiceCreditProxy.sol/ConstantInitialVoiceCreditProxy"; +export { ConstantInitialVoiceCreditProxy__factory } from "./factories/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/ConstantInitialVoiceCreditProxy__factory"; +export type { InitialVoiceCreditProxy } from "./contracts/flavors/ConstantInitialVoiceCreditProxy.sol/InitialVoiceCreditProxy"; +export { InitialVoiceCreditProxy__factory } from "./factories/contracts/flavors/ConstantInitialVoiceCreditProxy.sol/InitialVoiceCreditProxy__factory"; +export type { FreeForAllGatekeeper } from "./contracts/flavors/F.sol/FreeForAllGatekeeper"; +export { FreeForAllGatekeeper__factory } from "./factories/contracts/flavors/F.sol/FreeForAllGatekeeper__factory"; +export type { IInitialVoiceCreditProxy } from "./contracts/flavors/IInitialVoiceCreditProxy"; +export { IInitialVoiceCreditProxy__factory } from "./factories/contracts/flavors/IInitialVoiceCreditProxy__factory"; +export type { ISignUpGatekeeper } from "./contracts/flavors/ISignUpGatekeeper"; +export { ISignUpGatekeeper__factory } from "./factories/contracts/flavors/ISignUpGatekeeper__factory"; +export type { NFTSignup } from "./contracts/flavors/NFTSignup.sol/NFTSignup"; +export { NFTSignup__factory } from "./factories/contracts/flavors/NFTSignup.sol/NFTSignup__factory"; +export type { SignUpNFT } from "./contracts/flavors/NFTSignup.sol/SignUpNFT"; +export { SignUpNFT__factory } from "./factories/contracts/flavors/NFTSignup.sol/SignUpNFT__factory"; +export type { SimpleHackathon } from "./contracts/flavors/SimpleHackathon"; +export { SimpleHackathon__factory } from "./factories/contracts/flavors/SimpleHackathon__factory"; +export type { Jubjub } from "./contracts/Jubjub"; +export { Jubjub__factory } from "./factories/contracts/Jubjub__factory"; +export type { JubjubFactory } from "./contracts/JubjubFactory"; +export { JubjubFactory__factory } from "./factories/contracts/JubjubFactory__factory"; +export type { MessageTree } from "./contracts/MessageTree"; +export { MessageTree__factory } from "./factories/contracts/MessageTree__factory"; +export type { PoseidonT4 } from "./contracts/poseidon/PoseidonT4"; +export { PoseidonT4__factory } from "./factories/contracts/poseidon/PoseidonT4__factory"; +export type { PoseidonT5 } from "./contracts/poseidon/PoseidonT5"; +export { PoseidonT5__factory } from "./factories/contracts/poseidon/PoseidonT5__factory"; +export type { BaseRecipientRegistry } from "./contracts/recipientRegistry/BaseRecipientRegistry"; +export { BaseRecipientRegistry__factory } from "./factories/contracts/recipientRegistry/BaseRecipientRegistry__factory"; +export type { IRecipientRegistry } from "./contracts/recipientRegistry/IRecipientRegistry"; +export { IRecipientRegistry__factory } from "./factories/contracts/recipientRegistry/IRecipientRegistry__factory"; +export type { OptimisticRecipientRegistry } from "./contracts/recipientRegistry/OptimisticRecipientRegistry"; +export { OptimisticRecipientRegistry__factory } from "./factories/contracts/recipientRegistry/OptimisticRecipientRegistry__factory"; +export type { SimpleRecipientRegistry } from "./contracts/recipientRegistry/SimpleRecipientRegistry"; +export { SimpleRecipientRegistry__factory } from "./factories/contracts/recipientRegistry/SimpleRecipientRegistry__factory"; +export type { StateTree } from "./contracts/StateTree"; +export { StateTree__factory } from "./factories/contracts/StateTree__factory"; +export type { LibClone } from "./contracts/utils/LibClone"; +export { LibClone__factory } from "./factories/contracts/utils/LibClone__factory"; +export type { Multicallable } from "./contracts/utils/Multicallable"; +export { Multicallable__factory } from "./factories/contracts/utils/Multicallable__factory"; +export type { VkRegistry } from "./contracts/VkRegistry"; +export { VkRegistry__factory } from "./factories/contracts/VkRegistry__factory"; diff --git a/packages/hooks/CHANGELOG.md b/packages/hooks/CHANGELOG.md new file mode 100644 index 00000000..b92d1687 --- /dev/null +++ b/packages/hooks/CHANGELOG.md @@ -0,0 +1,115 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [2.0.0](https://github.com/quadratic-funding/qfi/compare/v1.5.0...v2.0.0) (2022-06-29) + +**Note:** Version bump only for package @qfi/hooks + + + + + +# [1.5.0](https://github.com/quadratic-funding/qfi/compare/v1.4.1...v1.5.0) (2022-06-11) + +**Note:** Version bump only for package @qfi/hooks + + + + + +# [1.4.0](https://github.com/quadratic-funding/qfi/compare/v1.3.0...v1.4.0) (2022-06-11) + +**Note:** Version bump only for package @qfi/hooks + + + + + +# [1.1.0](https://github.com/quadratic-funding/qfi/compare/v1.0.1...v1.1.0) (2022-06-10) + +**Note:** Version bump only for package @qfi/hooks + + + + + +# [1.0.0](https://github.com/quadratic-funding/qfi/compare/v0.3.3...v1.0.0) (2022-06-09) + +**Note:** Version bump only for package @qfi/hooks + + + + + +## [0.3.3](https://github.com/quadratic-funding/qfi/compare/v0.3.2...v0.3.3) (2022-06-09) + +**Note:** Version bump only for package @qfi/hooks + + + + + +## [0.3.1](https://github.com/quadratic-funding/qfi/compare/v0.2.2...v0.3.1) (2022-06-09) + +**Note:** Version bump only for package @qfi/hooks + + + + + +# [0.3.0](https://github.com/quadratic-funding/qfi/compare/v0.2.2...v0.3.0) (2022-06-08) + +**Note:** Version bump only for package @qfi/hooks + + + + + +## [0.2.1](https://github.com/quadratic-funding/qfi/compare/v0.2.0...v0.2.1) (2022-06-08) + +**Note:** Version bump only for package @qfi/hooks + + + + + +# [0.2.0](https://github.com/quadratic-funding/qfi/compare/v0.1.0...v0.2.0) (2022-06-03) + +**Note:** Version bump only for package @qfi/hooks + + + + + +# [0.1.0](https://github.com/quadratic-funding/qfi/compare/v0.0.4...v0.1.0) (2022-06-02) + +**Note:** Version bump only for package @qfi/hooks + + + + + +## [0.0.4](https://github.com/quadratic-funding/qfi/compare/v0.0.3...v0.0.4) (2022-06-01) + +**Note:** Version bump only for package @qfi/hooks + + + + + +## [0.0.3](https://github.com/quadratic-funding/qfi/compare/v0.0.2...v0.0.3) (2022-06-01) + + +### Bug Fixes + +* **ci:** build failing ([e85b744](https://github.com/quadratic-funding/qfi/commit/e85b74426f45a3b75148e82cfaf85cee62da0701)) + + + + + +## 0.0.2 (2022-06-01) + +**Note:** Version bump only for package @qfi/hooks diff --git a/packages/hooks/package.json b/packages/hooks/package.json index def391a1..35b07bff 100644 --- a/packages/hooks/package.json +++ b/packages/hooks/package.json @@ -1,6 +1,6 @@ { "name": "@qfi/hooks", - "version": "0.1.0", + "version": "3.0.0", "private": true, "main": "./src/index.tsx", "dependencies": { @@ -17,16 +17,19 @@ "@types/react": "^16.9.0", "@types/react-dom": "^16.9.0", "@walletconnect/web3-provider": "^1.7.5", - "ethers": "^5.6.1", + "ethers": "5.5.1", "framer-motion": "^4.0.0", "react": "^17.0.2", "react-dom": "^17.0.2", "react-icons": "^3.0.0", - "react-scripts": "4.0.3", - "typescript": "^4.3.5", + "typescript": "4.9.5", "web-vitals": "^0.2.2", - "web3modal": "^1.9.5" + "web3modal": "^1.9.5", + "@adraffy/ens-normalize": "^1.9.0" }, + "nohoist": [ + "**/ethers" + ], "scripts": { "start": "react-scripts start", "build": "react-scripts build", @@ -49,6 +52,8 @@ ] }, "devDependencies": { - "@craco/craco": "^6.4.1" + "@craco/craco": "^6.4.1", + "eslint-config-react-app": "^7.0.1", + "react-scripts": "4.0.3" } } diff --git a/packages/hooks/src/WalletContext.tsx b/packages/hooks/src/WalletContext.tsx index 5dfa262a..15704b87 100644 --- a/packages/hooks/src/WalletContext.tsx +++ b/packages/hooks/src/WalletContext.tsx @@ -23,35 +23,13 @@ type WalletContextType = { }; export const SUPPORTED_NETWORKS: NetworkConfig = { - "0x1": { - chainId: "0x1", - name: "Mainnet", - symbol: "ETH", - explorer: "https://etherscan.io", - rpc: "https://mainnet.infura.io/v3/", - }, - - "0x539": { - chainId: "0x539", - name: "Hardhat", - symbol: "ETH", - explorer: "http://localhost:1234", - rpc: "http://localhost:8545", - }, - "0x89": { - chainId: "0x89", - name: "Polygon", - symbol: "MATIC", - explorer: "https://polygonscan.com", - rpc: "https://polygon-rpc.com/", - }, - "0x13881": { - chainId: "0x13881", - name: "Mumbai Testnet", - symbol: "MATIC", - explorer: "https://mumbai.polygonscan.com", - rpc: "https://matic-mumbai.chainstacklabs.com", - }, + "0x64": { + chainId: "0x64", + name: "Gnosis Chain", + symbol: "xDai", + explorer: "https://blockscout.com/xdai/mainnet/", + rpc: "https://rpc.gnosischain.com/", + } }; export const providerOptions: IProviderOptions = { @@ -60,9 +38,7 @@ export const providerOptions: IProviderOptions = { options: { infuraId: "8043bb2cf99347b1bfadfb233c5325c0", rpc: { - 1: SUPPORTED_NETWORKS["0x1"].rpc, - // 4: SUPPORTED_NETWORKS["0x4"].rpc, - 1337: SUPPORTED_NETWORKS["0x539"].rpc, + 100: SUPPORTED_NETWORKS["0x64"].rpc, }, }, }, @@ -72,9 +48,7 @@ export const providerOptions: IProviderOptions = { appName: "QFI", infuraId: "8043bb2cf99347b1bfadfb233c5325c0", rpc: { - 1: SUPPORTED_NETWORKS["0x1"].rpc, - // 4: SUPPORTED_NETWORKS["0x4"].rpc, - 1337: SUPPORTED_NETWORKS["0x539"].rpc, + 100: SUPPORTED_NETWORKS["0x64"].rpc, }, }, }, @@ -179,7 +153,7 @@ export const WalletProvider: React.FC<{ handleErrorEvent && handleErrorEvent({ code: "UNSUPPORTED_NETWORK", - message: `Network not supported, please switch to one of the supported networks`, + message: `Network not supported, please switch to Gnosis Chain Network`, }); return; } @@ -380,6 +354,10 @@ export const useWallet = (): WalletContextType => useContext(WalletContext); export const nameToChainId = (name: string): string | undefined => { switch (name) { + case "xdai": + return "0x64"; + case "polygon": + return "0x89"; case "Mainnet": return "0x1"; case "Hardhat": diff --git a/packages/macisdk/.gitignore b/packages/macisdk/.gitignore new file mode 100644 index 00000000..4d29575d --- /dev/null +++ b/packages/macisdk/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/packages/macisdk/package.json b/packages/macisdk/package.json new file mode 100644 index 00000000..2972d623 --- /dev/null +++ b/packages/macisdk/package.json @@ -0,0 +1,38 @@ +{ + "name": "@qfi/macisdk", + "version": "3.0.0", + "description": "", + "main": "./build/index.js", + "scripts": { + "watch": "tsc --watch", + "build": "tsc --build" + }, + "dependencies": { + "@adraffy/ens-normalize": "^1.9.0", + "assert": "^2.0.0", + "blake-hash": "^1.1.0", + "circomlibjs": "0.0.8", + "ethers": "5.5.1", + "ffjavascript": "^0.2.57" + }, + "browserslist": { + "production": [ + "chrome >= 67", + "edge >= 79", + "firefox >= 68", + "opera >= 54", + "safari >= 14" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "nohoist": [ + "**/ethers" + ], + "devDependencies": { + "typescript": "4.9.5" + } +} diff --git a/packages/macisdk/src/core/MaciState.ts b/packages/macisdk/src/core/MaciState.ts new file mode 100644 index 00000000..927d5c82 --- /dev/null +++ b/packages/macisdk/src/core/MaciState.ts @@ -0,0 +1,1236 @@ +import assert from "assert"; +import { PubKey, VerifyingKey, Command, PCommand, TCommand, Message, Keypair, StateLeaf, Ballot } from "../domainobjs/domainobjs"; +import { AccQueue, IncrementalQuinTree, genRandomSalt, SNARK_FIELD_SIZE, NOTHING_UP_MY_SLEEVE, hashLeftRight, hash3, hash5, sha256Hash, stringifyBigInts, Signature } from "../crypto"; + +interface TreeDepths { + intStateTreeDepth: number; + messageTreeDepth: number; + messageTreeSubDepth: number; + voteOptionTreeDepth: number; +} + +interface BatchSizes { + tallyBatchSize: number; + subsidyBatchSize: number; + messageBatchSize: number; +} + +interface MaxValues { + maxUsers: number; + maxMessages: number; + maxVoteOptions: number; +} + +const STATE_TREE_DEPTH = 6; + +// Also see: Polls.sol +class Poll { + public duration: number; + // Note that we only store the PubKey on-chain while this class stores the + // Keypair for the sake of convenience + public coordinatorKeypair: Keypair; + public treeDepths: TreeDepths; + public batchSizes: BatchSizes; + public maxValues: MaxValues; + + public numSignUps: number; + + public pollEndTimestamp: BigInt; + + public ballots: Ballot[] = []; + public ballotTree: IncrementalQuinTree; + + public messages: Message[] = []; + public messageAq: AccQueue; + public messageTree: IncrementalQuinTree; + public commands: Command[] = []; + + public encPubKeys: PubKey[] = []; + public STATE_TREE_ARITY = 5; + public MESSAGE_TREE_ARITY = 5; + public VOTE_OPTION_TREE_ARITY = 5; + + public stateCopied = false; + public stateLeaves: StateLeaf[] = [blankStateLeaf]; + public stateTree = new IncrementalQuinTree(STATE_TREE_DEPTH, blankStateLeafHash, this.STATE_TREE_ARITY, hash5); + + // For message processing + public numBatchesProcessed = 0; + public currentMessageBatchIndex; + public maciStateRef: MaciState; + public pollId: number; + + public sbSalts: { [key: number]: BigInt } = {}; + public resultRootSalts: { [key: number]: BigInt } = {}; + public preVOSpentVoiceCreditsRootSalts: { [key: number]: BigInt } = {}; + public spentVoiceCreditSubtotalSalts: { [key: number]: BigInt } = {}; + + // For vote tallying + public results: BigInt[] = []; + public perVOSpentVoiceCredits: BigInt[] = []; + public numBatchesTallied = 0; + + public totalSpentVoiceCredits: BigInt = BigInt(0); + + // For coefficient and subsidy calculation + public subsidy: BigInt[] = []; // size: M, M is number of vote options + public subsidySalts: { [key: number]: BigInt } = {}; + public rbi = 0; // row batch index + public cbi = 0; // column batch index + public MM = 50; // adjustable parameter + public WW = 4; // number of digits for float representation + + constructor(_duration: number, _pollEndTimestamp: BigInt, _coordinatorKeypair: Keypair, _treeDepths: TreeDepths, _batchSizes: BatchSizes, _maxValues: MaxValues, _maciStateRef: MaciState) { + this.duration = _duration; + this.pollEndTimestamp = _pollEndTimestamp; + this.coordinatorKeypair = _coordinatorKeypair; + this.treeDepths = _treeDepths; + this.batchSizes = _batchSizes; + this.maxValues = _maxValues; + this.maciStateRef = _maciStateRef; + this.pollId = _maciStateRef.polls.length; + this.numSignUps = Number(_maciStateRef.numSignUps.toString()); + + this.messageTree = new IncrementalQuinTree(this.treeDepths.messageTreeDepth, NOTHING_UP_MY_SLEEVE, this.MESSAGE_TREE_ARITY, hash5); + this.messageAq = new AccQueue(this.treeDepths.messageTreeSubDepth, this.MESSAGE_TREE_ARITY, NOTHING_UP_MY_SLEEVE); + + for (let i = 0; i < this.maxValues.maxVoteOptions; i++) { + this.results.push(BigInt(0)); + this.perVOSpentVoiceCredits.push(BigInt(0)); + this.subsidy.push(BigInt(0)); + } + + const blankBallot = Ballot.genBlankBallot(this.maxValues.maxVoteOptions, _treeDepths.voteOptionTreeDepth); + this.ballots.push(blankBallot); + } + + private copyStateFromMaci = () => { + // Copy the state tree, ballot tree, state leaves, and ballot leaves + assert(this.maciStateRef.stateLeaves.length === this.maciStateRef.stateTree.nextIndex); + + this.stateLeaves = this.maciStateRef.stateLeaves.map((x) => x.copy()); + this.stateTree = this.maciStateRef.stateTree.copy(); + + // Create as many ballots as state leaves + const emptyBallot = new Ballot(this.maxValues.maxVoteOptions, this.treeDepths.voteOptionTreeDepth); + const emptyBallotHash = emptyBallot.hash(); + this.ballotTree = new IncrementalQuinTree(STATE_TREE_DEPTH, emptyBallot.hash(), this.STATE_TREE_ARITY, hash5); + this.ballotTree.insert(emptyBallotHash); + + while (this.ballots.length < this.stateLeaves.length) { + this.ballotTree.insert(emptyBallotHash); + this.ballots.push(emptyBallot); + } + + this.numSignUps = Number(this.maciStateRef.numSignUps.toString()); + + this.stateCopied = true; + }; + + // Insert topup message into commands + public topupMessage = (_message: Message) => { + assert(_message.msgType == BigInt(2)); + for (const d of _message.data) { + assert(d < SNARK_FIELD_SIZE); + } + this.messages.push(_message); + let padKey = new PubKey([BigInt("10457101036533406547632367118273992217979173478358440826365724437999023779287"), BigInt("19824078218392094440610104313265183977899662750282163392862422243483260492317")]); + + this.encPubKeys.push(padKey); + const messageLeaf = _message.hash(padKey); + this.messageAq.enqueue(messageLeaf); + this.messageTree.insert(messageLeaf); + + const command = new TCommand(_message.data[0], _message.data[1]); + this.commands.push(command); + }; + + /* + * Inserts a Message and the corresponding public key used to generate the + * ECDH shared key which was used to encrypt said message. + */ + public publishMessage = (_message: Message, _encPubKey: PubKey) => { + assert(_message.msgType == BigInt(1)); + assert(_encPubKey.rawPubKey[0] < SNARK_FIELD_SIZE && _encPubKey.rawPubKey[1] < SNARK_FIELD_SIZE); + for (const d of _message.data) { + assert(d < SNARK_FIELD_SIZE); + } + + this.encPubKeys.push(_encPubKey); + this.messages.push(_message); + + const messageLeaf = _message.hash(_encPubKey); + this.messageAq.enqueue(messageLeaf); + this.messageTree.insert(messageLeaf); + + // Decrypt the message and store the Command + const sharedKey = Keypair.genEcdhSharedKey(this.coordinatorKeypair.privKey, _encPubKey); + try { + let { command, signature } = PCommand.decrypt(_message, sharedKey); + this.commands.push(command); + } catch (e) { + //console.log(`error cannot decrypt: ${e.message}`) + let keyPair = new Keypair(); + let command = new PCommand(BigInt(0), keyPair.pubKey, BigInt(0), BigInt(0), BigInt(0), BigInt(0), BigInt(0)); + this.commands.push(command); + } + }; + + /* + * Merge all enqueued messages into a tree. + */ + public mergeAllMessages = () => { + this.messageAq.mergeSubRoots(0); + this.messageAq.merge(this.treeDepths.messageTreeDepth); + assert(this.isMessageAqMerged()); + + // TODO: Validate that a tree from this.messages matches the messageAq + // main root + }; + + public hasUnprocessedMessages = (): boolean => { + const batchSize = this.batchSizes.messageBatchSize; + + let totalBatches = this.messages.length <= batchSize ? 1 : Math.floor(this.messages.length / batchSize); + + if (this.messages.length > batchSize && this.messages.length % batchSize > 0) { + totalBatches++; + } + + return this.numBatchesProcessed < totalBatches; + }; + + /* + * Process _batchSize messages starting from the saved index. This + * function will process messages even if the number of messages is not an + * exact multiple of _batchSize. e.g. if there are 10 messages, _index is + * 8, and _batchSize is 4, this function will only process the last two + * messages in this.messages, and finally update the zeroth state leaf. + * Note that this function will only process as many state leaves as there + * are ballots to prevent accidental inclusion of a new user after this + * poll has concluded. + * @param _pollId The ID of the poll associated with the messages to + * process + */ + public processMessages = (_pollId: number) => { + assert(this.hasUnprocessedMessages(), "No more messages to process"); + + // Require that the message queue has been merged + assert(this.isMessageAqMerged()); + assert(this.messageAq.hasRoot(this.treeDepths.messageTreeDepth)); + + const batchSize = this.batchSizes.messageBatchSize; + + if (this.numBatchesProcessed === 0) { + // The starting index of the batch of messages to process. + // Note that we process messages in reverse order. + // e.g if there are 8 messages and the batch size is 5, then + // the starting index should be 5. + assert(this.currentMessageBatchIndex == undefined); + } + + if (this.numBatchesProcessed === 0) { + // Prevent other polls from being processed until this poll has + // been fully processed + this.maciStateRef.pollBeingProcessed = true; + this.maciStateRef.currentPollBeingProcessed = _pollId; + } + + // Only allow one poll to be processed at a time + if (this.maciStateRef.pollBeingProcessed) { + assert(this.maciStateRef.currentPollBeingProcessed === _pollId); + } + + if (this.numBatchesProcessed === 0) { + const r = this.messages.length % batchSize; + + if (r === 0) { + this.currentMessageBatchIndex = Math.floor(this.messages.length / batchSize) * batchSize; + } else { + this.currentMessageBatchIndex = this.messages.length; + } + + if (this.currentMessageBatchIndex > 0) { + if (r === 0) { + this.currentMessageBatchIndex -= batchSize; + } else { + this.currentMessageBatchIndex -= r; + } + } + + this.sbSalts[this.currentMessageBatchIndex] = BigInt(0); + } + + // The starting index must be valid + assert(this.currentMessageBatchIndex >= 0); + assert(this.currentMessageBatchIndex % batchSize === 0); + + if (!this.stateCopied) { + this.copyStateFromMaci(); + } + + // Generate circuit inputs + const circuitInputs = stringifyBigInts(this.genProcessMessagesCircuitInputsPartial(this.currentMessageBatchIndex)); + + const currentStateLeaves: StateLeaf[] = []; + const currentStateLeavesPathElements: any[] = []; + + const currentBallots: Ballot[] = []; + const currentBallotsPathElements: any[] = []; + + const currentVoteWeights: BigInt[] = []; + const currentVoteWeightsPathElements: any[] = []; + + for (let i = 0; i < batchSize; i++) { + const idx = this.currentMessageBatchIndex + batchSize - i - 1; + assert(idx >= 0); + let message; + if (idx >= this.messages.length) { + message = new Message(BigInt(1), Array(10).fill(BigInt(0))); // when idx large than actual size, just use something to pass to switch + } else { + message = this.messages[idx]; + } + switch (message.msgType) { + case BigInt(1): + try { + // If the command is valid + const r = this.processMessage(idx); + // console.log(messageIndex, r ? 'valid' : 'invalid') + // console.log("r:"+r.newStateLeaf ) + // DONE: replace with try/catch after implementing error + // handling + const index = r.stateLeafIndex; + if (index) { + currentStateLeaves.unshift(r.originalStateLeaf); + currentBallots.unshift(r.originalBallot); + currentVoteWeights.unshift(r.originalVoteWeight); + currentVoteWeightsPathElements.unshift(r.originalVoteWeightsPathElements); + + currentStateLeavesPathElements.unshift(r.originalStateLeafPathElements); + currentBallotsPathElements.unshift(r.originalBallotPathElements); + + this.stateLeaves[index] = r.newStateLeaf.copy(); + this.stateTree.update(index, r.newStateLeaf.hash()); + + this.ballots[index] = r.newBallot; + this.ballotTree.update(index, r.newBallot.hash()); + } else { + throw Error("no-op"); + } + } catch (e) { + if (e.message === "no-op") { + // Since the command is invalid, use a blank state leaf + currentStateLeaves.unshift(this.stateLeaves[0].copy()); + currentStateLeavesPathElements.unshift(this.stateTree.genMerklePath(0).pathElements); + + currentBallots.unshift(this.ballots[0].copy()); + currentBallotsPathElements.unshift(this.ballotTree.genMerklePath(0).pathElements); + + // Since the command is invalid, use vote option index 0 + currentVoteWeights.unshift(this.ballots[0].votes[0]); + + // No need to iterate through the entire votes array if the + // remaining elements are 0 + let lastIndexToInsert = this.ballots[0].votes.length - 1; + while (lastIndexToInsert > 0) { + if (this.ballots[0].votes[lastIndexToInsert] === BigInt(0)) { + lastIndexToInsert--; + } else { + break; + } + } + + const vt = new IncrementalQuinTree(this.treeDepths.voteOptionTreeDepth, BigInt(0), 5, hash5); + for (let i = 0; i <= lastIndexToInsert; i++) { + vt.insert(this.ballots[0].votes[i]); + } + currentVoteWeightsPathElements.unshift(vt.genMerklePath(0).pathElements); + } else { + throw e; + } + } + break; + case BigInt(2): + try { + // -------------------------------------- + // generate topup circuit inputs + let stateIndex = BigInt(message.data[0]); + let amount = BigInt(message.data[1]); + + if (stateIndex >= BigInt(this.ballots.length)) { + stateIndex = BigInt(0); + amount = BigInt(0); + } + + currentStateLeaves.unshift(this.stateLeaves[Number(stateIndex)].copy()); + currentStateLeavesPathElements.unshift(this.stateTree.genMerklePath(Number(stateIndex)).pathElements); + + const newStateLeaf = this.stateLeaves[Number(stateIndex)].copy(); + newStateLeaf.voiceCreditBalance = BigInt(newStateLeaf.voiceCreditBalance.valueOf()) + BigInt(amount); + this.stateLeaves[Number(stateIndex)] = newStateLeaf; + this.stateTree.update(Number(stateIndex), newStateLeaf.hash()); + + // we still need them as placeholder for vote command + let currentBallot = this.ballots[Number(stateIndex)].copy(); + currentBallots.unshift(currentBallot); + currentBallotsPathElements.unshift(this.ballotTree.genMerklePath(Number(stateIndex)).pathElements); + currentVoteWeights.unshift(currentBallot.votes[0]); + + const vt = new IncrementalQuinTree(this.treeDepths.voteOptionTreeDepth, BigInt(0), 5, hash5); + for (let i = 0; i < this.ballots[0].votes.length; i++) { + vt.insert(currentBallot.votes[i]); + } + + currentVoteWeightsPathElements.unshift(vt.genMerklePath(0).pathElements); + } catch (e) { + throw e; + } + break; + default: + break; + } // end msgType switch + } + + // loop for batch + circuitInputs.currentStateLeaves = currentStateLeaves.map((x) => x.asCircuitInputs()); + circuitInputs.currentStateLeavesPathElements = currentStateLeavesPathElements; + circuitInputs.currentBallots = currentBallots.map((x) => x.asCircuitInputs()); + circuitInputs.currentBallotsPathElements = currentBallotsPathElements; + circuitInputs.currentVoteWeights = currentVoteWeights; + circuitInputs.currentVoteWeightsPathElements = currentVoteWeightsPathElements; + + this.numBatchesProcessed++; + + if (this.currentMessageBatchIndex > 0) { + this.currentMessageBatchIndex -= batchSize; + } + + // TODO: ensure newSbSalt differs from currentSbSalt + const newSbSalt = genRandomSalt(); + this.sbSalts[this.currentMessageBatchIndex] = newSbSalt; + + circuitInputs.newSbSalt = newSbSalt; + const newStateRoot = this.stateTree.root; + const newBallotRoot = this.ballotTree.root; + circuitInputs.newSbCommitment = hash3([newStateRoot, newBallotRoot, newSbSalt]); + + const coordPubKeyHash = this.coordinatorKeypair.pubKey.hash(); + circuitInputs.inputHash = sha256Hash([circuitInputs.packedVals, coordPubKeyHash, circuitInputs.msgRoot, circuitInputs.currentSbCommitment, circuitInputs.newSbCommitment, this.pollEndTimestamp]); + + // If this is the last batch, release the lock + if (this.numBatchesProcessed * batchSize >= this.messages.length) { + this.maciStateRef.pollBeingProcessed = false; + } + return stringifyBigInts(circuitInputs); + }; + + /* + * Generates inputs for the ProcessMessages circuit. + */ + public genProcessMessagesCircuitInputsPartial = (_index: number) => { + const messageBatchSize = this.batchSizes.messageBatchSize; + + assert(_index <= this.messages.length); + assert(_index % messageBatchSize === 0); + + let msgs = this.messages.map((x) => x.asCircuitInputs()); + while (msgs.length % messageBatchSize > 0) { + msgs.push(msgs[msgs.length - 1]); + } + + msgs = msgs.slice(_index, _index + messageBatchSize); + + let commands = this.commands.map((x) => x.copy()); + while (commands.length % messageBatchSize > 0) { + commands.push(commands[commands.length - 1]); + } + commands = commands.slice(_index, _index + messageBatchSize); + + while (this.messageTree.nextIndex < _index + messageBatchSize) { + this.messageTree.insert(this.messageTree.zeroValue); + } + + const messageSubrootPath = this.messageTree.genMerkleSubrootPath(_index, _index + messageBatchSize); + + assert(IncrementalQuinTree.verifyMerklePath(messageSubrootPath, this.messageTree.hashFunc) === true); + + let batchEndIndex = _index + messageBatchSize; + if (batchEndIndex > this.messages.length) { + batchEndIndex = this.messages.length; + } + + let encPubKeys = this.encPubKeys.map((x) => x.copy()); + while (encPubKeys.length % messageBatchSize > 0) { + encPubKeys.push(encPubKeys[encPubKeys.length - 1]); + } + encPubKeys = encPubKeys.slice(_index, _index + messageBatchSize); + + const msgRoot = this.messageAq.getRoot(this.treeDepths.messageTreeDepth); + + const currentStateRoot = this.stateTree.root; + const currentBallotRoot = this.ballotTree.root; + const currentSbCommitment = hash3([currentStateRoot, currentBallotRoot, this.sbSalts[this.currentMessageBatchIndex]]); + + // Generate a SHA256 hash of inputs which the contract provides + const packedVals = BigInt(this.maxValues.maxVoteOptions) + (BigInt(this.numSignUps) << BigInt(50)) + (BigInt(_index) << BigInt(100)) + (BigInt(batchEndIndex) << BigInt(150)); + + const coordPubKey = this.coordinatorKeypair.pubKey; + + return stringifyBigInts({ + pollEndTimestamp: this.pollEndTimestamp, + packedVals, + msgRoot, + msgs, + msgSubrootPathElements: messageSubrootPath.pathElements, + coordPrivKey: this.coordinatorKeypair.privKey.asCircuitInputs(), + coordPubKey: coordPubKey.asCircuitInputs(), + encPubKeys: encPubKeys.map((x) => x.asCircuitInputs()), + currentStateRoot, + currentBallotRoot, + currentSbCommitment, + currentSbSalt: this.sbSalts[this.currentMessageBatchIndex], + }); + }; + + /* + * Process all messages. This function does not update the ballots or state + * leaves; rather, it copies and then updates them. This makes it possible + * to test the result of multiple processMessage() invocations. + */ + public processAllMessages = () => { + if (!this.stateCopied) { + this.copyStateFromMaci(); + } + const stateLeaves = this.stateLeaves.map((x) => x.copy()); + const ballots = this.ballots.map((x) => x.copy()); + while (this.hasUnprocessedMessages()) { + this.processMessages(this.pollId); + } + + return { stateLeaves, ballots }; + }; + + /* + * Process one message + */ + private processMessage = (_index: number) => { + //TODO: throw custom errors for no-ops + + try { + // Ensure that the index is valid + assert(_index >= 0); + assert(this.messages.length > _index); + + // Ensure that there is the correct number of ECDH shared keys + assert(this.encPubKeys.length === this.messages.length); + + const message = this.messages[_index]; + const encPubKey = this.encPubKeys[_index]; + + // Decrypt the message + const sharedKey = Keypair.genEcdhSharedKey(this.coordinatorKeypair.privKey, encPubKey); + const { command, signature } = PCommand.decrypt(message, sharedKey); + + const stateLeafIndex = BigInt(`${command.stateIndex}`); + + // If the state tree index in the command is invalid, do nothing + if (stateLeafIndex >= BigInt(this.ballots.length) || stateLeafIndex < BigInt(1)) { + throw Error("no-op"); + // console.log("invalid state tree index") + return {}; + } + + if (stateLeafIndex >= BigInt(this.stateTree.nextIndex)) { + // console.log("invalid state tree index") + //TODO: handle error + return {}; + } + + // The user to update (or not) + const stateLeaf = this.stateLeaves[Number(stateLeafIndex)]; + + // The ballot to update (or not) + const ballot = this.ballots[Number(stateLeafIndex)]; + + // If the signature is invalid, do nothing + if (!command.verifySignature(signature, stateLeaf.pubKey)) { + // console.log('Invalid signature. pubkeyx =', stateLeaf.pubKey.rawPubKey[0], 'sig', signature) + throw Error("no-op"); + return {}; + } + + //console.log('Valid signature. pubkeyx =', stateLeaf.pubKey.rawPubKey[0], 'sig', signature) + + // If the nonce is invalid, do nothing + if (command.nonce !== BigInt(`${ballot.nonce}`) + BigInt(1)) { + // console.log('Invalid nonce. nonce =', ballot.nonce, 'command.nonce =', command.nonce) + throw Error("no-op"); + return {}; + } + + const prevSpentCred = ballot.votes[Number(command.voteOptionIndex)]; + + const voiceCreditsLeft = BigInt(`${stateLeaf.voiceCreditBalance}`) + BigInt(`${prevSpentCred}`) * BigInt(`${prevSpentCred}`) - BigInt(`${command.newVoteWeight}`) * BigInt(`${command.newVoteWeight}`); + + // If the remaining voice credits is insufficient, do nothing + if (voiceCreditsLeft < BigInt(0)) { + // console.log("no op") + throw Error("no-op"); + return {}; + } + + // If the vote option index is invalid, do nothing + if (command.voteOptionIndex < BigInt(0) || command.voteOptionIndex >= BigInt(this.maxValues.maxVoteOptions)) { + // console.log("no op") + throw Error("no-op"); + return {}; + } + + // Deep-copy the state leaf and update its attributes + const newStateLeaf = stateLeaf.copy(); + newStateLeaf.voiceCreditBalance = voiceCreditsLeft; + newStateLeaf.pubKey = command.newPubKey.copy(); + + // Deep-copy the ballot and update its attributes + const newBallot = ballot.copy(); + newBallot.nonce = BigInt(`${newBallot.nonce}`) + BigInt(1); + newBallot.votes[Number(command.voteOptionIndex)] = command.newVoteWeight; + + const originalStateLeafPathElements = this.stateTree.genMerklePath(Number(stateLeafIndex)).pathElements; + + const originalBallotPathElements = this.ballotTree.genMerklePath(Number(stateLeafIndex)).pathElements; + + const voteOptionIndex = Number(command.voteOptionIndex); + + const originalVoteWeight = ballot.votes[voteOptionIndex]; + const vt = new IncrementalQuinTree(this.treeDepths.voteOptionTreeDepth, BigInt(0), 5, hash5); + for (let i = 0; i < this.ballots[0].votes.length; i++) { + vt.insert(ballot.votes[i]); + } + + const originalVoteWeightsPathElements = vt.genMerklePath(voteOptionIndex).pathElements; + + return { + stateLeafIndex: Number(stateLeafIndex), + + newStateLeaf, + originalStateLeaf: stateLeaf.copy(), + originalStateLeafPathElements, + originalVoteWeight, + originalVoteWeightsPathElements, + + newBallot, + originalBallot: ballot.copy(), + originalBallotPathElements, + command, + }; + } catch (e) { + //TODO: throw custom errors for no-ops + switch (e.message) { + default: + throw Error("no-op"); + } + } + }; + + private isMessageAqMerged = (): boolean => { + return this.messageAq.getRoot(this.treeDepths.messageTreeDepth) === this.messageTree.root; + }; + + public hasUntalliedBallots = () => { + const batchSize = this.batchSizes.tallyBatchSize; + return this.numBatchesTallied * batchSize < this.ballots.length; + }; + + public hasUnfinishedSubsidyCalculation = () => { + const batchSize = this.batchSizes.subsidyBatchSize; + return this.rbi * batchSize < this.ballots.length && this.cbi * batchSize < this.ballots.length; + }; + + public subsidyPerBatch = (): BigInt[] => { + const batchSize = this.batchSizes.subsidyBatchSize; + + assert(this.hasUnfinishedSubsidyCalculation(), "No more subsidy batches to calculate"); + + const stateRoot = this.stateTree.root; + const ballotRoot = this.ballotTree.root; + const sbSalt = this.sbSalts[this.currentMessageBatchIndex]; + const sbCommitment = hash3([stateRoot, ballotRoot, sbSalt]); + + const currentSubsidy = this.subsidy.map((x) => BigInt(x.toString())); + let currentSubsidyCommitment = BigInt(0); + let currentSubsidySalt = BigInt(0); + let saltIndex = this.previousSubsidyIndexToString(); + console.log(`prevIdx=${saltIndex}, curIdx=${this.rbi}-${this.cbi}`); + if (this.rbi !== 0 || this.cbi !== 0) { + currentSubsidySalt = BigInt(this.subsidySalts[saltIndex]); + currentSubsidyCommitment = BigInt(genTallyResultCommitment(this.subsidy, currentSubsidySalt, this.treeDepths.voteOptionTreeDepth).valueOf()); + } + + const rowStartIndex = this.rbi * batchSize; + const colStartIndex = this.cbi * batchSize; + const [ballots1, ballots2] = this.subsidyCalculation(rowStartIndex, colStartIndex); + + const ballotSubrootProof1 = this.ballotTree.genMerkleSubrootPath(rowStartIndex, rowStartIndex + batchSize); + const ballotSubrootProof2 = this.ballotTree.genMerkleSubrootPath(colStartIndex, colStartIndex + batchSize); + + const newSubsidySalt = genRandomSalt(); + saltIndex = this.rbi.toString() + "-" + this.cbi.toString(); + this.subsidySalts[saltIndex] = newSubsidySalt; + const newSubsidyCommitment = genTallyResultCommitment(this.subsidy, newSubsidySalt, this.treeDepths.voteOptionTreeDepth); + + const packedVals = MaciState.packSubsidySmallVals(this.rbi, this.cbi, this.numSignUps); + + const inputHash = sha256Hash([packedVals, sbCommitment, currentSubsidyCommitment, newSubsidyCommitment]); + + const circuitInputs = stringifyBigInts({ + stateRoot, + ballotRoot, + + sbSalt, + currentSubsidySalt, + newSubsidySalt, + + sbCommitment, + currentSubsidyCommitment, + newSubsidyCommitment, + currentSubsidy, + + packedVals, + inputHash, + + ballots1: ballots1.map((x) => x.asCircuitInputs()), + ballots2: ballots2.map((x) => x.asCircuitInputs()), + votes1: ballots1.map((x) => x.votes), + votes2: ballots2.map((x) => x.votes), + ballotPathElements1: ballotSubrootProof1.pathElements, + ballotPathElements2: ballotSubrootProof2.pathElements, + }); + + this.increaseSubsidyIndex(); + return circuitInputs; + }; + + public increaseSubsidyIndex = () => { + const batchSize = this.batchSizes.subsidyBatchSize; + if (this.cbi * batchSize + batchSize < this.ballots.length) { + this.cbi++; + } else { + this.rbi++; + this.cbi = this.rbi; + } + return; + }; + + public previousSubsidyIndexToString = (): string => { + const batchSize = this.batchSizes.subsidyBatchSize; + const numBatches = Math.ceil(this.ballots.length / batchSize); + let cbi = this.cbi; + let rbi = this.rbi; + if (this.cbi === 0 && this.rbi === 0) { + return "0-0"; + } + if (this.cbi > this.rbi) { + cbi--; + } else { + rbi--; + cbi = numBatches - 1; + } + return rbi.toString() + "-" + cbi.toString(); + }; + + public coefficientCalculation = (rowBallot: Ballot, colBallot: Ballot): BigInt => { + let sum = BigInt(0); + for (let p = 0; p < this.maxValues.maxVoteOptions; p++) { + sum += BigInt(rowBallot.votes[p].valueOf()) * BigInt(colBallot.votes[p].valueOf()); + } + let res = BigInt(this.MM * 10 ** this.WW) / (BigInt(this.MM) + BigInt(sum)); + return res; + }; + + public subsidyCalculation = (rowStartIndex: number, colStartIndex: number): Ballot[][] => { + const batchSize = this.batchSizes.subsidyBatchSize; + let ballots1: Ballot[] = []; + let ballots2: Ballot[] = []; + const emptyBallot = new Ballot(this.maxValues.maxVoteOptions, this.treeDepths.voteOptionTreeDepth); + for (let i = 0; i < batchSize; i++) { + const row = rowStartIndex + i; + const col = colStartIndex + i; + const rowBallot = row < this.ballots.length ? this.ballots[row] : emptyBallot; + const colBallot = col < this.ballots.length ? this.ballots[col] : emptyBallot; + ballots1.push(rowBallot); + ballots2.push(colBallot); + } + for (let i = 0; i < batchSize; i++) { + for (let j = 0; j < batchSize; j++) { + const row = rowStartIndex + i; + const col = colStartIndex + j; + const rowBallot = row < this.ballots.length ? this.ballots[row] : emptyBallot; + const colBallot = col < this.ballots.length ? this.ballots[col] : emptyBallot; + + const kij = this.coefficientCalculation(rowBallot, colBallot); + for (let p = 0; p < this.maxValues.maxVoteOptions; p++) { + const vip = BigInt(rowBallot.votes[p].valueOf()); + const vjp = BigInt(colBallot.votes[p].valueOf()); + if (rowStartIndex !== colStartIndex || (rowStartIndex === colStartIndex && i < j)) { + this.subsidy[p] = BigInt(this.subsidy[p].valueOf()) + BigInt(2) * BigInt(kij.valueOf()) * vip * vjp; + } + } + } + } + + return [ballots1, ballots2]; + }; + + /* + * Tally a batch of Ballots and update this.results + */ + public tallyVotes = () => { + const batchSize = this.batchSizes.tallyBatchSize; + + assert(this.hasUntalliedBallots(), "No more ballots to tally"); + + const batchStartIndex = this.numBatchesTallied * batchSize; + + const currentResultsRootSalt = batchStartIndex === 0 ? BigInt(0) : this.resultRootSalts[batchStartIndex - batchSize]; + + const currentPerVOSpentVoiceCreditsRootSalt = batchStartIndex === 0 ? BigInt(0) : this.preVOSpentVoiceCreditsRootSalts[batchStartIndex - batchSize]; + + const currentSpentVoiceCreditSubtotalSalt = batchStartIndex === 0 ? BigInt(0) : this.spentVoiceCreditSubtotalSalts[batchStartIndex - batchSize]; + + const currentResultsCommitment = this.genResultsCommitment(currentResultsRootSalt); + + const currentPerVOSpentVoiceCreditsCommitment = this.genPerVOSpentVoiceCreditsCommitment(currentPerVOSpentVoiceCreditsRootSalt, batchStartIndex); + + const currentSpentVoiceCreditsCommitment = this.genSpentVoiceCreditSubtotalCommitment(currentSpentVoiceCreditSubtotalSalt, batchStartIndex); + + const currentTallyCommitment = batchStartIndex === 0 ? BigInt(0) : hash3([currentResultsCommitment, currentSpentVoiceCreditsCommitment, currentPerVOSpentVoiceCreditsCommitment]); + + const ballots: Ballot[] = []; + const currentResults = this.results.map((x) => BigInt(x.toString())); + const currentPerVOSpentVoiceCredits = this.perVOSpentVoiceCredits.map((x) => BigInt(x.toString())); + const currentSpentVoiceCreditSubtotal = BigInt(this.totalSpentVoiceCredits.toString()); + + for (let i = this.numBatchesTallied * batchSize; i < this.numBatchesTallied * batchSize + batchSize; i++) { + if (i >= this.ballots.length) { + break; + } + + ballots.push(this.ballots[i]); + + for (let j = 0; j < this.maxValues.maxVoteOptions; j++) { + const v = BigInt(`${this.ballots[i].votes[j]}`); + + this.results[j] = BigInt(`${this.results[j]}`) + v; + + this.perVOSpentVoiceCredits[j] = BigInt(`${this.perVOSpentVoiceCredits[j]}`) + BigInt(v) * BigInt(v); + + this.totalSpentVoiceCredits = BigInt(`${this.totalSpentVoiceCredits}`) + BigInt(v) * BigInt(v); + } + } + + const emptyBallot = new Ballot(this.maxValues.maxVoteOptions, this.treeDepths.voteOptionTreeDepth); + + while (ballots.length < batchSize) { + ballots.push(emptyBallot); + } + + const newResultsRootSalt = genRandomSalt(); + const newPerVOSpentVoiceCreditsRootSalt = genRandomSalt(); + const newSpentVoiceCreditSubtotalSalt = genRandomSalt(); + + this.resultRootSalts[batchStartIndex] = newResultsRootSalt; + this.preVOSpentVoiceCreditsRootSalts[batchStartIndex] = newPerVOSpentVoiceCreditsRootSalt; + this.spentVoiceCreditSubtotalSalts[batchStartIndex] = newSpentVoiceCreditSubtotalSalt; + + const newResultsCommitment = this.genResultsCommitment(newResultsRootSalt); + + const newSpentVoiceCreditsCommitment = this.genSpentVoiceCreditSubtotalCommitment(newSpentVoiceCreditSubtotalSalt, batchStartIndex + batchSize); + + const newPerVOSpentVoiceCreditsCommitment = this.genPerVOSpentVoiceCreditsCommitment(newPerVOSpentVoiceCreditsRootSalt, batchStartIndex + batchSize); + + const newTallyCommitment = hash3([newResultsCommitment, newSpentVoiceCreditsCommitment, newPerVOSpentVoiceCreditsCommitment]); + + //debugger + + const stateRoot = this.stateTree.root; + const ballotRoot = this.ballotTree.root; + const sbSalt = this.sbSalts[this.currentMessageBatchIndex]; + const sbCommitment = hash3([stateRoot, ballotRoot, sbSalt]); + + const packedVals = MaciState.packTallyVotesSmallVals(batchStartIndex, batchSize, this.numSignUps); + const inputHash = sha256Hash([packedVals, sbCommitment, currentTallyCommitment, newTallyCommitment]); + + const ballotSubrootProof = this.ballotTree.genMerkleSubrootPath(batchStartIndex, batchStartIndex + batchSize); + + const votes = ballots.map((x) => x.votes); + + const circuitInputs = stringifyBigInts({ + stateRoot, + ballotRoot, + sbSalt, + + sbCommitment, + currentTallyCommitment, + newTallyCommitment, + + packedVals, // contains numSignUps and batchStartIndex + inputHash, + + ballots: ballots.map((x) => x.asCircuitInputs()), + ballotPathElements: ballotSubrootProof.pathElements, + votes, + + currentResults, + currentResultsRootSalt, + + currentSpentVoiceCreditSubtotal, + currentSpentVoiceCreditSubtotalSalt, + + currentPerVOSpentVoiceCredits, + currentPerVOSpentVoiceCreditsRootSalt, + + newResultsRootSalt, + newPerVOSpentVoiceCreditsRootSalt, + newSpentVoiceCreditSubtotalSalt, + }); + + this.numBatchesTallied++; + + return circuitInputs; + }; + + public genResultsCommitment = (_salt: BigInt) => { + const resultsTree = new IncrementalQuinTree(this.treeDepths.voteOptionTreeDepth, BigInt(0), this.VOTE_OPTION_TREE_ARITY, hash5); + + for (const r of this.results) { + resultsTree.insert(r); + } + + return hashLeftRight(resultsTree.root, _salt); + }; + + public genSpentVoiceCreditSubtotalCommitment = (_salt: BigInt, _numBallotsToCount: number) => { + let subtotal = BigInt(0); + for (let i = 0; i < _numBallotsToCount; i++) { + if (i >= this.ballots.length) { + break; + } + for (let j = 0; j < this.results.length; j++) { + const v = BigInt(`${this.ballots[i].votes[j]}`); + subtotal = BigInt(subtotal) + v * v; + } + } + return hashLeftRight(subtotal, _salt); + }; + + //public genSpentVoiceCreditSubtotalCommitment = (_salt) => { + //return hashLeftRight(this.totalSpentVoiceCredits, _salt) + //} + + public genPerVOSpentVoiceCreditsCommitment = (_salt: BigInt, _numBallotsToCount: number) => { + const resultsTree = new IncrementalQuinTree(this.treeDepths.voteOptionTreeDepth, BigInt(0), this.VOTE_OPTION_TREE_ARITY, hash5); + + const leaves: BigInt[] = []; + + for (let i = 0; i < this.results.length; i++) { + leaves.push(BigInt(0)); + } + + for (let i = 0; i < _numBallotsToCount; i++) { + if (i >= this.ballots.length) { + break; + } + for (let j = 0; j < this.results.length; j++) { + const v = BigInt(`${this.ballots[i].votes[j]}`); + leaves[j] = BigInt(`${leaves[j]}`) + v * v; + } + } + + for (let i = 0; i < leaves.length; i++) { + resultsTree.insert(leaves[i]); + } + + return hashLeftRight(resultsTree.root, _salt); + }; + + public copy = (): Poll => { + const copied = new Poll( + Number(this.duration.toString()), + BigInt(this.pollEndTimestamp.toString()), + this.coordinatorKeypair.copy(), + { + intStateTreeDepth: Number(this.treeDepths.intStateTreeDepth), + messageTreeDepth: Number(this.treeDepths.messageTreeDepth), + messageTreeSubDepth: Number(this.treeDepths.messageTreeSubDepth), + voteOptionTreeDepth: Number(this.treeDepths.voteOptionTreeDepth), + }, + { + tallyBatchSize: Number(this.batchSizes.tallyBatchSize.toString()), + subsidyBatchSize: Number(this.batchSizes.subsidyBatchSize.toString()), + messageBatchSize: Number(this.batchSizes.messageBatchSize.toString()), + }, + { + maxUsers: Number(this.maxValues.maxUsers.toString()), + maxMessages: Number(this.maxValues.maxMessages.toString()), + maxVoteOptions: Number(this.maxValues.maxVoteOptions.toString()), + }, + this.maciStateRef + ); + + copied.stateLeaves = this.stateLeaves.map((x: StateLeaf) => x.copy()); + copied.messages = this.messages.map((x: Message) => x.copy()); + copied.commands = this.commands.map((x: Command) => x.copy()); + copied.ballots = this.ballots.map((x: Ballot) => x.copy()); + copied.encPubKeys = this.encPubKeys.map((x: PubKey) => x.copy()); + if (this.ballotTree) { + copied.ballotTree = this.ballotTree.copy(); + } + copied.currentMessageBatchIndex = this.currentMessageBatchIndex; + copied.maciStateRef = this.maciStateRef; + copied.messageAq = this.messageAq.copy(); + copied.messageTree = this.messageTree.copy(); + copied.results = this.results.map((x: BigInt) => BigInt(x.toString())); + copied.perVOSpentVoiceCredits = this.perVOSpentVoiceCredits.map((x: BigInt) => BigInt(x.toString())); + + copied.numBatchesProcessed = Number(this.numBatchesProcessed.toString()); + copied.numBatchesTallied = Number(this.numBatchesTallied.toString()); + copied.pollId = Number(this.pollId.toString()); + copied.totalSpentVoiceCredits = BigInt(this.totalSpentVoiceCredits.toString()); + + copied.sbSalts = {}; + copied.resultRootSalts = {}; + copied.preVOSpentVoiceCreditsRootSalts = {}; + copied.spentVoiceCreditSubtotalSalts = {}; + + for (const k of Object.keys(this.sbSalts)) { + copied.sbSalts[k] = BigInt(this.sbSalts[k].toString()); + } + for (const k of Object.keys(this.resultRootSalts)) { + copied.resultRootSalts[k] = BigInt(this.resultRootSalts[k].toString()); + } + for (const k of Object.keys(this.preVOSpentVoiceCreditsRootSalts)) { + copied.preVOSpentVoiceCreditsRootSalts[k] = BigInt(this.preVOSpentVoiceCreditsRootSalts[k].toString()); + } + for (const k of Object.keys(this.spentVoiceCreditSubtotalSalts)) { + copied.spentVoiceCreditSubtotalSalts[k] = BigInt(this.spentVoiceCreditSubtotalSalts[k].toString()); + } + + // subsidy related copy + copied.subsidy = this.subsidy.map((x: BigInt) => BigInt(x.toString())); + copied.rbi = Number(this.rbi.toString()); + copied.cbi = Number(this.cbi.toString()); + copied.MM = Number(this.MM.toString()); + copied.WW = Number(this.WW.toString()); + for (const k of Object.keys(this.subsidySalts)) { + copied.subsidySalts[k] = BigInt(this.subsidySalts[k].toString()); + } + return copied; + }; + + public equals = (p: Poll): boolean => { + const result = + this.duration === p.duration && + this.coordinatorKeypair.equals(p.coordinatorKeypair) && + this.treeDepths.intStateTreeDepth === p.treeDepths.intStateTreeDepth && + this.treeDepths.messageTreeDepth === p.treeDepths.messageTreeDepth && + this.treeDepths.messageTreeSubDepth === p.treeDepths.messageTreeSubDepth && + this.treeDepths.voteOptionTreeDepth === p.treeDepths.voteOptionTreeDepth && + this.batchSizes.tallyBatchSize === p.batchSizes.tallyBatchSize && + this.batchSizes.messageBatchSize === p.batchSizes.messageBatchSize && + this.maxValues.maxUsers === p.maxValues.maxUsers && + this.maxValues.maxMessages === p.maxValues.maxMessages && + this.maxValues.maxVoteOptions === p.maxValues.maxVoteOptions && + this.messages.length === p.messages.length && + this.encPubKeys.length === p.encPubKeys.length; + + if (!result) { + return false; + } + + for (let i = 0; i < this.messages.length; i++) { + if (!this.messages[i].equals(p.messages[i])) { + return false; + } + } + for (let i = 0; i < this.encPubKeys.length; i++) { + if (!this.encPubKeys[i].equals(p.encPubKeys[i])) { + return false; + } + } + return true; + }; +} + +const blankStateLeaf = StateLeaf.genBlankLeaf(); +const blankStateLeafHash = blankStateLeaf.hash(); + +// A representation of the MACI contract +// Also see MACI.sol +class MaciState { + public STATE_TREE_ARITY = 5; + public STATE_TREE_SUBDEPTH = 2; + public MESSAGE_TREE_ARITY = 5; + public VOTE_OPTION_TREE_ARITY = 5; + + public stateTreeDepth = STATE_TREE_DEPTH; + public polls: Poll[] = []; + public stateLeaves: StateLeaf[] = []; + public stateTree = new IncrementalQuinTree(STATE_TREE_DEPTH, blankStateLeafHash, this.STATE_TREE_ARITY, hash5); + public stateAq: AccQueue = new AccQueue(this.STATE_TREE_SUBDEPTH, this.STATE_TREE_ARITY, blankStateLeafHash); + public pollBeingProcessed = true; + public currentPollBeingProcessed; + public numSignUps = 0; + + constructor() { + this.stateLeaves.push(blankStateLeaf); + this.stateTree.insert(blankStateLeafHash); + this.stateAq.enqueue(blankStateLeafHash); + } + + public signUp(_pubKey: PubKey, _initialVoiceCreditBalance: BigInt, _timestamp: BigInt): number { + const stateLeaf = new StateLeaf(_pubKey, _initialVoiceCreditBalance, _timestamp); + const h = stateLeaf.hash(); + const leafIndex = this.stateAq.enqueue(h); + this.stateTree.insert(h); + this.stateLeaves.push(stateLeaf.copy()); + this.numSignUps++; + return leafIndex; + } + + public deployPoll(_duration: number, _pollEndTimestamp: BigInt, _maxValues: MaxValues, _treeDepths: TreeDepths, _messageBatchSize: number, _coordinatorKeypair: Keypair): number { + const poll: Poll = new Poll( + _duration, + _pollEndTimestamp, + _coordinatorKeypair, + _treeDepths, + { + messageBatchSize: _messageBatchSize, + subsidyBatchSize: this.STATE_TREE_ARITY ** _treeDepths.intStateTreeDepth, + tallyBatchSize: this.STATE_TREE_ARITY ** _treeDepths.intStateTreeDepth, + }, + _maxValues, + this + ); + + this.polls.push(poll); + return this.polls.length - 1; + } + + public deployNullPoll() { + // @ts-ignore + this.polls.push(null); + } + + /* + * Deep-copy this object + */ + public copy = (): MaciState => { + const copied = new MaciState(); + + copied.stateLeaves = this.stateLeaves.map((x: StateLeaf) => x.copy()); + copied.polls = this.polls.map((x: Poll) => x.copy()); + + return copied; + }; + + public equals = (m: MaciState): boolean => { + const result = + this.STATE_TREE_ARITY === m.STATE_TREE_ARITY && this.MESSAGE_TREE_ARITY === m.MESSAGE_TREE_ARITY && this.VOTE_OPTION_TREE_ARITY === m.VOTE_OPTION_TREE_ARITY && this.stateTreeDepth === m.stateTreeDepth && this.polls.length === m.polls.length && this.stateLeaves.length === m.stateLeaves.length; + + if (!result) { + return false; + } + + for (let i = 0; i < this.polls.length; i++) { + if (!this.polls[i].equals(m.polls[i])) { + return false; + } + } + for (let i = 0; i < this.stateLeaves.length; i++) { + if (!this.stateLeaves[i].equals(m.stateLeaves[i])) { + return false; + } + } + + return true; + }; + + public static packSubsidySmallVals = (row: number, col: number, numSignUps: number) => { + // Note: the << operator has lower precedence than + + const packedVals = (BigInt(numSignUps) << BigInt(100)) + (BigInt(row) << BigInt(50)) + BigInt(col); + return packedVals; + }; + + public static packTallyVotesSmallVals = (batchStartIndex: number, batchSize: number, numSignUps: number) => { + // Note: the << operator has lower precedence than + + const packedVals = BigInt(batchStartIndex) / BigInt(batchSize) + (BigInt(numSignUps) << BigInt(50)); + + return packedVals; + }; + + public static unpackTallyVotesSmallVals = (packedVals: BigInt) => { + let asBin = packedVals.toString(2); + assert(asBin.length <= 100); + while (asBin.length < 100) { + asBin = "0" + asBin; + } + const numSignUps = BigInt("0b" + asBin.slice(0, 50)); + const batchStartIndex = BigInt("0b" + asBin.slice(50, 100)); + + return { numSignUps, batchStartIndex }; + }; + + public static packProcessMessageSmallVals = (maxVoteOptions: BigInt, numUsers: BigInt, batchStartIndex: number, batchEndIndex: number) => { + return BigInt(`${maxVoteOptions}`) + (BigInt(`${numUsers}`) << BigInt(50)) + (BigInt(batchStartIndex) << BigInt(100)) + (BigInt(batchEndIndex) << BigInt(150)); + }; + + public static unpackProcessMessageSmallVals = (packedVals: BigInt) => { + let asBin = packedVals.toString(2); + assert(asBin.length <= 200); + while (asBin.length < 200) { + asBin = "0" + asBin; + } + const maxVoteOptions = BigInt("0b" + asBin.slice(150, 200)); + const numUsers = BigInt("0b" + asBin.slice(100, 150)); + const batchStartIndex = BigInt("0b" + asBin.slice(50, 100)); + const batchEndIndex = BigInt("0b" + asBin.slice(0, 50)); + + return { + maxVoteOptions, + numUsers, + batchStartIndex, + batchEndIndex, + }; + }; +} + +const genProcessVkSig = (_stateTreeDepth: number, _messageTreeDepth: number, _voteOptionTreeDepth: number, _batchSize: number): BigInt => { + return (BigInt(_batchSize) << BigInt(192)) + (BigInt(_stateTreeDepth) << BigInt(128)) + (BigInt(_messageTreeDepth) << BigInt(64)) + BigInt(_voteOptionTreeDepth); +}; + +const genTallyVkSig = (_stateTreeDepth: number, _intStateTreeDepth: number, _voteOptionTreeDepth: number): BigInt => { + return (BigInt(_stateTreeDepth) << BigInt(128)) + (BigInt(_intStateTreeDepth) << BigInt(64)) + BigInt(_voteOptionTreeDepth); +}; + +const genSubsidyVkSig = (_stateTreeDepth: number, _intStateTreeDepth: number, _voteOptionTreeDepth: number): BigInt => { + return (BigInt(_stateTreeDepth) << BigInt(128)) + (BigInt(_intStateTreeDepth) << BigInt(64)) + BigInt(_voteOptionTreeDepth); +}; + +/* + * A helper function which hashes a list of results with a salt and returns the + * hash. + * + * @param results A list of vote weights + * @parm salt A random salt + * @return The hash of the results and the salt, with the salt last + */ +const genTallyResultCommitment = (results: BigInt[], salt: BigInt, depth: number): BigInt => { + const tree = new IncrementalQuinTree(depth, BigInt(0), 5, hash5); + for (const result of results) { + tree.insert(result); + } + return hashLeftRight(tree.root, salt); +}; + +export { type MaxValues, type TreeDepths, MaciState, Poll, genProcessVkSig, genTallyVkSig, genSubsidyVkSig, genTallyResultCommitment, STATE_TREE_DEPTH }; diff --git a/packages/macisdk/src/core/README.md b/packages/macisdk/src/core/README.md new file mode 100644 index 00000000..dc2dc30b --- /dev/null +++ b/packages/macisdk/src/core/README.md @@ -0,0 +1,106 @@ +# `maci-core` + +[![NPM Package][core-npm-badge]][core-npm-link] +[![Actions Status][core-actions-badge]][core-actions-link] + +This submodule assists with handling key business logic functions and +processes. + +## Overview + +One may conceive of MACI as a state machine with 1) data and 2) functions which +transform said data. This makes it easier to reason about the system, write +tests, and implement functionality. It also allows us to implement the smart +contracts in discrete components which are easy to test. + +To this end, this submodule exposes a `MaciState` class and a `Poll` class. +Developers should instantiate objects from these classes to test MACI. For +instance, [`MACI.test.ts`](`../contracts/ts/__tests__/MACI.test.ts`) creates a +`MaciState` object and every time it interacts with the MACI smart contract, it +mirrors said interaction on the `MaciState` and `Poll`. As such, the developer +can then use their helper functions like `maciState.signUp()`, +`poll.publishMessage`, `poll.processMessages()`, and `poll.tallyVotes()` to +step through the various stages of the MACI flow. + +## `MaciState` + +### Key functions + +#### **`signUp`** + +Accepts a user's public key and creates a new state leaf and ballot leaf. + +In testing, whenever a test suite submits a `signUp()` transaction, it should +call `maciState.signUp()` as well, so that the off-chain representation of MACI +is kept up to date. + +In production, `genMaciStateFromContract()` in +[`genMaciState.ts`](`contracts/ts/genMaciState.ts`) uses this function when it +scans a MACI contract's event log for signups, so as to bring its `MaciState` +instance up to date. + +#### **`deployPoll`** + +Creates a new `Poll`. This should be done whenever the MACI contract's +`deployPoll()` function is called. + +### Helper functions + +#### **`copy`** + +A function that deep-copies an object. + +### Key data structures + +#### **`stateAq`**, **`stateTree`** + +The Merkle tree of state leaves. `stateAq` must be merged (subroots and/or main +root) whenever the MACI contract's `mergeStateAqSubRoots()` and +`mergeStateAq()` are invoked. + +They should contain the same leaves, even if the `stateAq` is not yet merged. +`stateTree` exists for developer convenience. + +## **`Poll`** + +A `Poll` is an off-chain representation of a Poll. In testing, `Poll` instances +should mirror their on-chain counterparts. + +### Key functions + +#### **`publishMessage`** + +Publishes a message by updating the message tree and message accumulation +queue. + +#### **`processMessages`** + +Processes a batch of messages and returns the inputs to the `processMessages` +circuit which can be used to prove correct execution. + +#### **`tallyVotes`** + +Tallies a batch of votes and returns the inputs to the `tallyVotes` +circuit which can be used to prove correct execution. + +### Helper functions + +#### **`copy`** + +Deep-copies and returns this object. + +### Key data structures + +#### **`messageAq`**, **`messageTree`** + +The Merkle tree of message leaves. `messageAq` must be merged (subroots and/or +main root) whenever the MACI contract's `mergeMessageAqSubRoots()` and +`mergeMessageAq()` are invoked. + +They should contain the same leaves, even if the `messageAq` is not yet merged. +`messageTree` exists for developer convenience. + +[core-npm-badge]: https://img.shields.io/npm/v/maci-core.svg +[core-npm-link]: https://www.npmjs.com/package/maci-core +[core-actions-badge]: https://github.com/privacy-scaling-explorations/maci/actions/workflows/core-build.yml/badge.svg +[core-actions-link]: https://github.com/privacy-scaling-explorations/maci/actions?query=workflow%3Acore diff --git a/packages/macisdk/src/core/core.ts b/packages/macisdk/src/core/core.ts new file mode 100644 index 00000000..4dbdb363 --- /dev/null +++ b/packages/macisdk/src/core/core.ts @@ -0,0 +1,24 @@ +import { + //genPerVOSpentVoiceCreditsCommitment, + //genSpentVoiceCreditsCommitment, + genTallyResultCommitment, + MaciState, + STATE_TREE_DEPTH, + Poll, + genProcessVkSig, + genTallyVkSig, + genSubsidyVkSig +} from './MaciState' + +export { + //genPerVOSpentVoiceCreditsCommitment, + //genSpentVoiceCreditsCommitment, + genTallyResultCommitment, + MaciState, + STATE_TREE_DEPTH, + Poll, + genProcessVkSig, + genTallyVkSig, + genSubsidyVkSig +} + diff --git a/packages/macisdk/src/crypto/AccQueue.ts b/packages/macisdk/src/crypto/AccQueue.ts new file mode 100644 index 00000000..35aa49af --- /dev/null +++ b/packages/macisdk/src/crypto/AccQueue.ts @@ -0,0 +1,553 @@ +import { + sha256Hash, + hashLeftRight, + hash5, + stringifyBigInts, + unstringifyBigInts, + IncrementalQuinTree, +} from '.' + +type Leaf = BigInt +type Root = BigInt + +const assert = (condition: boolean) => { + if (!condition) { + console.log('Assertion failed') + } +} + +const deepCopyBigIntArray = (arr: BigInt[]) => { + return arr.map((x) => BigInt(x.toString())) +} + +const calcDepthFromNumLeaves = ( + hashLength: number, + numLeaves: number, +) => { + let depth = 1 + while (true) { + const max = hashLength ** depth + if (BigInt(max) >= numLeaves) { + break + } + depth ++ + } + + return depth +} + +interface Queue { + levels: BigInt[][]; + indices: number[]; +} + +/* + * An Accumulator Queue which conforms to the implementation in AccQueue.sol. + * Each enqueue() operation updates a subtree, and a merge() operation combines + * all subtrees into a main tree. + * It supports 2 or 5 elements per leaf. + */ +export default class AccQueue { + + private MAX_DEPTH = 32 + + // The depth per subtree + public subDepth: number + + // The number of inputs per hash function + public hashLength: number + + // The default value for empty leaves + public zeroValue: BigInt + + // The current subtree index. e.g. the first subtree has index 0, the + // second has 1, and so on + public currentSubtreeIndex = 0 + + // The hash function to use for the subtrees + public subHashFunc: (leaves: Leaf[]) => BigInt + + // The hash function to use for rest of the tree (above the subroots) + public hashFunc: (leaves: Leaf[]) => BigInt + + // The number of leaves across all subtrees + public numLeaves = 0 + + // The current subtree + public leafQueue: Queue = { + levels: [], + indices: [] + } + + // For merging subtrees into the smallest tree + public nextSRindexToQueue = 0 + public smallSRTroot: BigInt = BigInt(0) + public subRootQueue: Queue = { + levels: [], + indices: [] + } + + // The root of each complete subtree + public subRoots: BigInt[] = [] + + // The root of merged subtrees + public mainRoots: BigInt[] = [] + + // The zero value per level. i.e. zeros[0] is zeroValue, + // zeros[1] is the hash of leavesPerNode zeros, and so on. + public zeros: BigInt[] = [] + + // Whether the subtrees have been merged + public subTreesMerged = false + + constructor ( + _subDepth: number, + _hashLength: number, + _zeroValue: BigInt, + ) { + // This class supports either 2 leaves per node, or 5 leaves per node. + // 5 is largest number of inputs which circomlib's Poseidon EVM hash + // function implementation supports. + + assert(_hashLength === 2 || _hashLength === 5) + assert(_subDepth > 0) + + this.hashLength = _hashLength + this.subDepth = _subDepth + this.zeroValue = _zeroValue + + // Set this.hashFunc depending on the number of leaves per node + if (this.hashLength === 2) { + // Uses PoseidonT3 under the hood, which accepts 2 inputs + this.hashFunc = (inputs: BigInt[]) => { + return hashLeftRight(inputs[0], inputs[1]) + } + } else { + // Uses PoseidonT6 under the hood, which accepts up to 5 inputs + this.hashFunc = hash5 + } + + this.subHashFunc = sha256Hash + + let hashed = this.zeroValue + for (let i = 0; i < this.MAX_DEPTH; i ++) { + + this.zeros.push(hashed) + + let e: BigInt[] = [] + if (this.hashLength === 2) { + e = [0].map(BigInt) + hashed = this.hashFunc([hashed, hashed]) + } else { + e = [0, 0, 0, 0].map(BigInt) + hashed = this.hashFunc( + [hashed, hashed, hashed, hashed, hashed ], + ) + } + this.leafQueue.levels.push(e) + this.leafQueue.indices[i] = 0 + this.subRootQueue.levels.push(e) + this.subRootQueue.indices[i] = 0 + } + } + + public getSubRoot(_index: number) { + return this.subRoots[_index] + } + + /* + * Enqueue a leaf into the current subtree + * @param _leaf The leaf to insert. + */ + public enqueue( + _leaf: Leaf, + ): number { + assert(this.numLeaves < this.hashLength ** this.MAX_DEPTH) + + // Ensure that _value is a BigInt + this._enqueue(_leaf, 0) + + const leafIndex = this.numLeaves + + this.numLeaves ++ + this.subTreesMerged = false + this.smallSRTroot = BigInt(0) + + const subTreeCapacity = this.hashLength ** this.subDepth + if (this.numLeaves % subTreeCapacity === 0) { + this.subRoots[this.currentSubtreeIndex] = this.leafQueue.levels[this.subDepth][0] + this.currentSubtreeIndex ++ + this.leafQueue.levels[this.subDepth][0] = BigInt(0) + for (let i = 0; i < this.MAX_DEPTH; i ++) { + this.leafQueue.indices[i] = 0 + } + } + + return leafIndex + } + + private _enqueue( + _leaf: Leaf, + _level: number, + ) { + if (_level > this.subDepth) { + return; + } + const n = this.leafQueue.indices[_level] + + if (n !== this.hashLength - 1) { + // Just store the leaf + this.leafQueue.levels[_level][n] = _leaf + this.leafQueue.indices[_level] ++ + return + } else { + let hashed: BigInt + if (this.hashLength === 2) { + hashed = this.hashFunc([this.leafQueue.levels[_level][0], _leaf]) + this.leafQueue.levels[_level][0] = BigInt(0) + } else { + hashed = this.hashFunc([...this.leafQueue.levels[_level], _leaf]) + for (let i = 0; i < 4; i ++) { + this.leafQueue.levels[_level][i] = BigInt(0) + } + } + + this.leafQueue.indices[_level] = 0 + + // Recurse + this._enqueue(hashed, _level + 1); + } + } + + + /* + * Fill any empty leaves of the last subtree with zeros and store the + * resulting subroot. + */ + public fill() { + // The total capacity of the subtree + const subTreeCapacity = this.hashLength ** this.subDepth + + if (this.numLeaves % subTreeCapacity === 0) { + // If the subtree is completely empty, then the subroot is a + // precalculated zero value + this.subRoots[this.currentSubtreeIndex] = this.zeros[this.subDepth] + + } else { + + this._fill(0) + + // Store the subroot + this.subRoots[this.currentSubtreeIndex] = this.leafQueue.levels[this.subDepth][0] + + // Blank out the subtree data + for (let i = 0; i < this.subDepth + 1; i ++) { + if (this.hashLength === 2) { + this.leafQueue.levels[i][0] = BigInt(0) + } else { + this.leafQueue.levels[i] = [0, 0, 0, 0].map(BigInt) + } + } + } + + // Update the subtree index + this.currentSubtreeIndex ++ + + // Update the number of leaves + this.numLeaves = this.currentSubtreeIndex * subTreeCapacity + + this.subTreesMerged = false + this.smallSRTroot = BigInt(0) + } + + private _fill(_level: number) { + if (_level > this.subDepth) { + return + } + + const n = this.leafQueue.indices[_level] + + if (n !== 0) { + // Fill the subtree level and hash it + let hashed: BigInt + if (this.hashLength === 2) { + hashed = this.hashFunc([ + this.leafQueue.levels[_level][0], + this.zeros[_level], + ]) + } else { + for (let i = n; i < this.hashLength; i ++) { + this.leafQueue.levels[_level][i] = this.zeros[_level] + } + hashed = this.hashFunc(this.leafQueue.levels[_level]) + } + + // Update the subtree from the next level onwards with the new leaf + this._enqueue(hashed, _level + 1) + + // Reset the current level + this.leafQueue.indices[_level] = 0 + } + + // Recurse + this._fill(_level + 1) + } + + public calcSRTdepth() { + // Calculate the SRT depth + let srtDepth = this.subDepth + const subTreeCapacity = this.hashLength ** this.subDepth + while (true) { + if (this.hashLength ** srtDepth >= (this.subRoots.length * subTreeCapacity)) { + break + } + srtDepth ++ + } + + return srtDepth + } + + public insertSubTree(_subRoot: BigInt) { + // If the current subtree is not full, fill it. + const subTreeCapacity = this.hashLength ** this.subDepth + + this.subRoots[this.currentSubtreeIndex] = _subRoot + + // Update the subtree index + this.currentSubtreeIndex ++ + + // Update the number of leaves + this.numLeaves += subTreeCapacity + + // Reset the subroot tree root now that it is obsolete + this.smallSRTroot = BigInt(0) + + this.subTreesMerged = false + } + + /* + * Merge all the subroots into a tree of a specified depth. + * It requires this.mergeSubRoots() to be run first. + */ + public merge(_depth: number) { + assert(this.subTreesMerged === true) + assert(_depth <= this.MAX_DEPTH) + + const srtDepth = this.calcSRTdepth() + + assert(_depth >= srtDepth) + + if (_depth === srtDepth) { + this.mainRoots[_depth] = this.smallSRTroot + } else { + + let root = this.smallSRTroot + + // Calculate the main root + for (let i = srtDepth; i < _depth; i ++) { + const inputs: BigInt[] = [root] + const z = this.zeros[i] + + for (let j = 1; j < this.hashLength; j ++) { + inputs.push(z) + } + + root = this.hashFunc(inputs) + } + + this.mainRoots[_depth] = root + } + } + + /* + * Merge all the subroots into a tree of a specified depth. + * Uses an IncrementalQuinTree instead of the two-step method that + * AccQueue.sol uses. + */ + public mergeDirect(_depth: number) { + // There must be subtrees to merge + assert(this.numLeaves > 0) + + const srtDepth = this.calcSRTdepth() + + // The desired tree must be deep enough + assert(_depth >= srtDepth) + + if (_depth === this.subDepth) { + // If there is only 1 subtree, and the desired depth is the subtree + // depth, the subroot is the result + assert(this.numLeaves === this.hashLength ** this.subDepth) + this.mainRoots[_depth] = this.subRoots[0] + this.subTreesMerged = true + return + } + + // The desired main tree must be deep enough to fit all leaves + assert(BigInt(_depth ** this.hashLength) >= this.numLeaves) + + // Fill any empty leaves in the last subtree with zeros + if (this.numLeaves % (this.hashLength ** this.subDepth) > 0) { + this.fill() + } + + const tree = new IncrementalQuinTree( + _depth - this.subDepth, + this.zeros[this.subDepth], + this.hashLength, + this.hashFunc, + ) + + for (let i = 0; i < this.subRoots.length; i++) { + tree.insert(this.subRoots[i]) + } + + this.mainRoots[_depth] = tree.root + } + + /* + * Merge all subroots into the smallest possible Merkle tree which fits + * them. e.g. if there are 5 subroots and hashLength == 2, the tree depth + * is 3 since 2 ** 3 = 8 which is the next power of 2. + */ + public mergeSubRoots( + _numSrQueueOps = 0, + ) { + // This function can only be called once unless a new subtree is created + assert(this.subTreesMerged === false) + + // There must be subtrees to merge + assert(this.numLeaves > 0) + + // Fill any empty leaves in the last subtree with zeros + if (this.numLeaves % (this.hashLength ** this.subDepth) !== 0) { + this.fill() + } + + // If there is only 1 subtree, use its root + if (this.currentSubtreeIndex === 1) { + this.smallSRTroot = this.getSubRoot(0) + this.subTreesMerged = true + return + } + + // Compute the depth and maximum capacity of the smallMainTreeRoot + const depth = calcDepthFromNumLeaves(this.hashLength, this.currentSubtreeIndex) + + let numQueueOps = 0 + + for (let i = this.nextSRindexToQueue; i < this.currentSubtreeIndex; i ++) { + // Stop if the limit has been reached + if (_numSrQueueOps !== 0 && numQueueOps === _numSrQueueOps) { + return + } + + // Queue the next subroot + const subRoot = this.getSubRoot(this.nextSRindexToQueue) + this.queueSubRoot( + subRoot, + 0, + depth, + ) + + // Increment the next subroot counter + this.nextSRindexToQueue ++ + numQueueOps ++ + } + + // Queue zeros to get the SRT. `m` is the number of leaves in the + // main tree, which already has `this.currentSubtreeIndex` leaves + const m = this.hashLength ** depth + if (this.nextSRindexToQueue === this.currentSubtreeIndex) { + for (let i = this.currentSubtreeIndex; i < m; i ++) { + const z = this.zeros[this.subDepth] + this.queueSubRoot( + z, + 0, + depth, + ) + } + } + + // Store the root + this.smallSRTroot = this.subRootQueue.levels[depth][0] + this.subTreesMerged = true + } + + /* + * Queues the _leaf (a subroot) into queuedSRTlevels + */ + private queueSubRoot( + _leaf: BigInt, + _level: number, + _maxDepth: number, + ) { + if (_level > _maxDepth) { return } + + const n = this.subRootQueue.indices[_level] + + if (n !== this.hashLength - 1) { + // Just store the leaf + this.subRootQueue.levels[_level][n] = _leaf + this.subRootQueue.indices[_level] ++ + } else { + // Hash the elements in this level and queue it in the next level + const inputs: BigInt[] = [] + for (let i = 0; i < this.hashLength - 1; i ++) { + inputs.push(this.subRootQueue.levels[_level][i]) + } + inputs.push(_leaf) + const hashed = this.hashFunc(inputs) + + // Recurse + this.subRootQueue.indices[_level] = 0 + this.queueSubRoot(hashed, _level + 1, _maxDepth) + } + } + + public getRoot(_depth: number) { + return this.mainRoots[_depth] + } + + public hasRoot(_depth: number) { + const root = this.getRoot(_depth) + return !(root == null || root == undefined) + } + + /* + * Deep-copies this object + */ + public copy(): AccQueue { + const newAccQueue = new AccQueue( + this.subDepth, + this.hashLength, + this.zeroValue, + ) + newAccQueue.currentSubtreeIndex = JSON.parse(JSON.stringify(this.currentSubtreeIndex)) + newAccQueue.numLeaves = JSON.parse(JSON.stringify(this.numLeaves)) + newAccQueue.leafQueue.levels = unstringifyBigInts(JSON.parse( + JSON.stringify(stringifyBigInts(this.leafQueue.levels)) + )) + newAccQueue.leafQueue.indices = JSON.parse(JSON.stringify(this.leafQueue.indices)) + newAccQueue.subRoots = deepCopyBigIntArray(this.subRoots) + newAccQueue.mainRoots = deepCopyBigIntArray(this.mainRoots) + newAccQueue.zeros = deepCopyBigIntArray(this.zeros) + newAccQueue.subTreesMerged = this.subTreesMerged ? true : false + newAccQueue.nextSRindexToQueue = Number(this.nextSRindexToQueue.toString()) + newAccQueue.smallSRTroot = BigInt(this.smallSRTroot.toString()) + newAccQueue.subRootQueue.indices = JSON.parse(JSON.stringify(this.subRootQueue.indices)) + newAccQueue.subRootQueue.levels = unstringifyBigInts(JSON.parse( + JSON.stringify(stringifyBigInts(this.subRootQueue.levels)) + )) + + return newAccQueue + } + + public hash(_leaves: BigInt[]): BigInt { + assert(_leaves.length === this.hashLength) + return this.hashFunc(_leaves) + } +} + +export { + AccQueue, +} \ No newline at end of file diff --git a/packages/macisdk/src/crypto/README.md b/packages/macisdk/src/crypto/README.md new file mode 100644 index 00000000..f93bd193 --- /dev/null +++ b/packages/macisdk/src/crypto/README.md @@ -0,0 +1,132 @@ +# maci-crypto + +[![NPM Package][crypto-npm-badge]][crypto-npm-link] +[![Actions Status][crypto-actions-badge]][crypto-actions-link] + +This module implements abstractions over cryptographic functions which MACI +employs. + +## Constants + +**`NOTHING_UP_MY_SLEEVE`**: The Keccak256 hash of the string "Maci", modulo +the BN254 group order. + +## Types and interfaces + +**`PrivKey`**: A private key (a random value modulo the BN254 group order). + +**`PubKey`**: An EdDSA public key. + +**`Keypair`**: A private key and the public key it generates. + +**`EcdhSharedKey`**: An Elliptic-curve Diffie–Hellman shared key. + +**`Plaintext`**: An array of unencrypted values. + +**`Ciphertext`**: Encrypted `Plaintext`. This data structure abstracts over the +initialisation vector and encrypted data. + +**`Signature`**: A signature. This data structure abstracts over the`R8` and +`S` values. + +## Classes + +**`G1Point`**: A point in the group `G_1` as defined in +[EIP-197](https://eips.ethereum.org/EIPS/eip-197). + +**`G2Point`**: A point in the group `G_2` as defined in +[EIP-197](https://eips.ethereum.org/EIPS/eip-197). + +## Functions + +**`genRandomBabyJubValue`**: Returns a cryptographically secure random value +modulo the BN254 group order, and prevents modulo bias. Relies on Node.js's +`crypto.randomBytes(32)` for entropy. + +**`genRandomSalt: BigInt`** + +Returns a secure random salt value. Wraps `genRandomBabyJubValue()`. + +**`genPrivKey: PrivKey`** + +Returns a secure random private key. Wraps `genRandomBabyJubValue()`. + +**`genPubKey = (privKey: PrivKey): PubKey `** + +Generates the public key associated with the given private key. + +**`genKeypair`**: Generates a random private key and its associated public key. + +**`formatPrivKeyForBabyJub = (privKey: PrivKey)`**: Formats a random private +key to be compatible with the BabyJub curve. This is the format which should be +passed into the PubKey and other circuits. + +**`packPubKey = (pubKey: PubKey): Buffer`**: Losslessly reduces the size of the +representation of a public key. + +**`unpackPubKey = (packed: Buffer): PubKey`**: Restores the original PubKey +from its packed representation. + +**`genEcdhSharedKey = (privKey: PrivKey, pubKey: PubKey): EcdhSharedKey`** + +Generates an ECDH shared key. + +**`encrypt = (plaintext: Plaintext, sharedKey: EcdhSharedKey): Ciphertext`** + +Encrypts the plaintext with the given key and returns the +associated ciphertext. + +**`decrypt = (ciphertext: Ciphertext, sharedKey: EcdhSharedKey): Plaintext`** + +Decrypts the ciphertext using the given key. + +**`sign = (privKey: PrivKey, message: Plaintext): Signature`** + +Produces a signature of the given message using the private key. + +**`verifySignature = (message: Plaintext, signature: Signature, publicKey: PubKey): boolean`** + +Checks whether the given signature is valid. + +### Hash functions + +**`sha256Hash = (input: BigInt[]): BigInt`**: a wrapper function over +`ethers.utils.soliditySha256`, where the output is modulo the BN254 group +order. + +**`hashOne = (elements: Plaintext): BigInt`**: the Poseidon hash function for +one input. Equivalent to `hash2([input, 0])`. + +**`hash2 = (elements: Plaintext): BigInt`**: the Poseidon hash function for 2 +inputs. + +**`hashLeftRight = (left: BigInt, right: BigInt): BigInt`**: equivalent to +`hash2([left, right])`. + +**`hash3 = (elements: Plaintext): BigInt`**: the Poseidon hash function for 3 +inputs. + +**`hash4 = (elements: Plaintext): BigInt`**: the Poseidon hash function for 4 +inputs. + +**`hash5 = (elements: Plaintext): BigInt`**: the Poseidon hash function for 5 +inputs. + +**`hash12 = (elements: Plaintext): BigInt`**: the Poseidon hash function for 12 +inputs. Combines other Poseidon hash functions (accepting 5 and 6 inputs) to do +so. Given the following inputs `[i_0, i_1, ... i_11]`, this function hashes +them in the following manner: + +``` +hash4( + hash5([i_0, i_1, i_2, i_3, i_4]), + hash5([i_5, i_6, i_7, i_8, i_9]), + i_10, + i_11, +) +``` + +[crypto-npm-badge]: https://img.shields.io/npm/v/maci-crypto.svg +[crypto-npm-link]: https://www.npmjs.com/package/maci-crypto +[crypto-actions-badge]: https://github.com/privacy-scaling-explorations/maci/actions/workflows/crypto-build.yml/badge.svg +[crypto-actions-link]: https://github.com/privacy-scaling-explorations/maci/actions?query=workflow%3Acrypto diff --git a/packages/macisdk/src/crypto/index.ts b/packages/macisdk/src/crypto/index.ts new file mode 100644 index 00000000..d6a4bd27 --- /dev/null +++ b/packages/macisdk/src/crypto/index.ts @@ -0,0 +1,381 @@ +import crypto from "crypto"; +import { utils } from "ethers"; +import {utils as ffutils, Scalar} from "ffjavascript"; +import createBlakeHash from "blake-hash"; +import { babyJub, poseidon, eddsa } from "circomlib"; +import { OptimisedMT as IncrementalQuinTree } from "../optimisedmt"; + +import { AccQueue } from "./AccQueue"; +import { poseidonEncrypt, poseidonDecrypt } from "../poseidonencryption"; + + +const assert = (condition: boolean) => { + if (!condition) { + console.log('Assertion failed') + } +} +const stringifyBigInts: (obj: object) => any = ffutils.stringifyBigInts; +const unstringifyBigInts: (obj: object) => any = ffutils.unstringifyBigInts; + +type SnarkBigInt = BigInt; +type IPrivKey = BigInt; +type IPubKey = BigInt[]; +type EcdhSharedKey = BigInt[]; +type Plaintext = BigInt[]; +type Ciphertext = BigInt[]; + +class G1Point { + public x: BigInt; + public y: BigInt; + + constructor(_x: BigInt, _y: BigInt) { + // TODO: add range checks + this.x = _x; + this.y = _y; + } + + public equals(pt: G1Point): boolean { + return this.x === pt.x && this.y === pt.y; + } + + public asContractParam() { + return { + x: this.x.toString(), + y: this.y.toString(), + }; + } +} + +class G2Point { + public x: BigInt[]; + public y: BigInt[]; + + constructor(_x: BigInt[], _y: BigInt[]) { + // TODO: add range checks + this.x = _x; + this.y = _y; + } + + public equals(pt: G2Point): boolean { + return this.x[0] === pt.x[0] && this.x[1] === pt.x[1] && this.y[0] === pt.y[0] && this.y[1] === pt.y[1]; + } + + public asContractParam() { + return { + x: this.x.map((n) => n.toString()), + y: this.y.map((n) => n.toString()), + }; + } +} + +/* + * A private key and a public key + */ +interface IKeypair { + privKey: IPrivKey; + pubKey: IPubKey; +} + +// An EdDSA signature. +// R8 is a Baby Jubjub elliptic curve point and S is an element of the finite +// field of order `l` where `l` is the large prime number dividing the order of +// Baby Jubjub: see +// https://iden3-docs.readthedocs.io/en/latest/_downloads/a04267077fb3fdbf2b608e014706e004/Ed-DSA.pdf +interface Signature { + R8: BigInt[]; + S: BigInt; +} + +// The BN254 group order p +const SNARK_FIELD_SIZE = BigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617"); + +// A nothing-up-my-sleeve zero value +// Should be equal to 8370432830353022751713833565135785980866757267633941821328460903436894336785 +const NOTHING_UP_MY_SLEEVE = BigInt(utils.soliditySha256(["bytes"], [utils.toUtf8Bytes("Maci")])) % SNARK_FIELD_SIZE; + +assert(NOTHING_UP_MY_SLEEVE === BigInt("8370432830353022751713833565135785980866757267633941821328460903436894336785")); +/* + * Convert a BigInt to a Buffer + */ +const bigInt2Buffer = (i: BigInt): Buffer => { + return Buffer.from(i.toString(16), "hex"); +}; + +/* + * Hash an array of uint256 values the same way that the EVM does. + */ +const sha256Hash = (input: BigInt[]) => { + const types: string[] = []; + for (let i = 0; i < input.length; i++) { + types.push("uint256"); + } + return ( + BigInt( + utils.soliditySha256( + types, + input.map((x) => x.toString()) + ) + ) % SNARK_FIELD_SIZE + ); +}; + +// Hash up to 2 elements +const poseidonT3 = (inputs: BigInt[]) => { + assert(inputs.length === 2); + return poseidon(inputs); +}; + +// Hash up to 3 elements +const poseidonT4 = (inputs: BigInt[]) => { + assert(inputs.length === 3); + return poseidon(inputs); +}; + +// Hash up to 4 elements +const poseidonT5 = (inputs: BigInt[]) => { + assert(inputs.length === 4); + return poseidon(inputs); +}; + +// Hash up to 5 elements +const poseidonT6 = (inputs: BigInt[]) => { + assert(inputs.length === 5); + return poseidon(inputs); +}; + +const hashN = (numElements: number, elements: Plaintext): BigInt => { + const elementLength = elements.length; + if (elements.length > numElements) { + throw new TypeError(`the length of the elements array should be at most ${numElements}; got ${elements.length}`); + } + const elementsPadded = elements.slice(); + if (elementLength < numElements) { + for (let i = elementLength; i < numElements; i++) { + elementsPadded.push(BigInt(0)); + } + } + + const funcs = { + 2: poseidonT3, + 3: poseidonT4, + 4: poseidonT5, + 5: poseidonT6, + }; + + return funcs[numElements](elements); +}; + +const hash2 = (elements: Plaintext): BigInt => hashN(2, elements); +const hash3 = (elements: Plaintext): BigInt => hashN(3, elements); +const hash4 = (elements: Plaintext): BigInt => hashN(4, elements); +const hash5 = (elements: Plaintext): BigInt => hashN(5, elements); + +/* + * A convenience function for to use Poseidon to hash a Plaintext with + * no more than 13 elements + */ +const hash13 = (elements: Plaintext): BigInt => { + const max = 13; + const elementLength = elements.length; + if (elementLength > max) { + throw new TypeError(`the length of the elements array should be at most 10; got ${elements.length}`); + } + const elementsPadded = elements.slice(); + if (elementLength < max) { + for (let i = elementLength; i < max; i++) { + elementsPadded.push(BigInt(0)); + } + } + return poseidonT6([elementsPadded[0], poseidonT6(elementsPadded.slice(1, 6)), poseidonT6(elementsPadded.slice(6, 11)), elementsPadded[11], elementsPadded[12]]); +}; + +/* + * Hash a single BigInt with the Poseidon hash function + */ +const hashOne = (preImage: BigInt): BigInt => { + return poseidonT3([preImage, BigInt(0)]); +}; + +/* + * Hash two BigInts with the Poseidon hash function + */ +const hashLeftRight = (left: BigInt, right: BigInt): BigInt => { + return poseidonT3([left, right]); +}; + +/* + * Returns a BabyJub-compatible random value. We create it by first generating + * a random value (initially 256 bits large) modulo the snark field size as + * described in EIP197. This results in a key size of roughly 253 bits and no + * more than 254 bits. To prevent modulo bias, we then use this efficient + * algorithm: + * http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/lib/libc/crypt/arc4random_uniform.c + * @return A BabyJub-compatible random value. + */ +const genRandomBabyJubValue = (): BigInt => { + // Prevent modulo bias + //const lim = BigInt('0x10000000000000000000000000000000000000000000000000000000000000000') + //const min = (lim - SNARK_FIELD_SIZE) % SNARK_FIELD_SIZE + const min = BigInt("6350874878119819312338956282401532410528162663560392320966563075034087161851"); + + let rand; + while (true) { + rand = BigInt("0x" + crypto.randomBytes(32).toString("hex")); + + if (rand >= min) { + break; + } + } + + const privKey: IPrivKey = rand % SNARK_FIELD_SIZE; + assert(privKey < SNARK_FIELD_SIZE); + + return privKey; +}; + +/* + * @return A BabyJub-compatible private key. + */ +const genPrivKey = (): IPrivKey => { + return genRandomBabyJubValue(); +}; + +/* + * @return A BabyJub-compatible salt. + */ +const genRandomSalt = (): IPrivKey => { + return genRandomBabyJubValue(); +}; + +/* + * An internal function which formats a random private key to be compatible + * with the BabyJub curve. This is the format which should be passed into the + * PubKey and other circuits. + */ +const formatPrivKeyForBabyJub = (privKey: IPrivKey) => { + const sBuff = eddsa.pruneBuffer(createBlakeHash("blake512").update(bigInt2Buffer(privKey)).digest().slice(0, 32)); + const s = ffutils.leBuff2int(sBuff); + return Scalar.shr(s, 3); +}; + +/* + * Losslessly reduces the size of the representation of a public key + * @param pubKey The public key to pack + * @return A packed public key + */ +const packPubKey = (pubKey: IPubKey): Buffer => { + return babyJub.packPoint(pubKey); +}; + +/* + * Restores the original PubKey from its packed representation + * @param packed The value to unpack + * @return The unpacked public key + */ +const unpackPubKey = (packed: Buffer): IPubKey => { + return babyJub.unpackPoint(packed); +}; + +/* + * @param privKey A private key generated using genPrivKey() + * @return A public key associated with the private key + */ +const genPubKey = (privKey: IPrivKey): IPubKey => { + // Check whether privKey is a field element + privKey = BigInt(privKey.toString()); + assert(privKey < SNARK_FIELD_SIZE); + return eddsa.prv2pub(bigInt2Buffer(privKey)); +}; + +const genKeypair = (): IKeypair => { + const privKey = genPrivKey(); + const pubKey = genPubKey(privKey); + + const Keypair: IKeypair = { privKey, pubKey }; + + return Keypair; +}; + +/* + * Generates an Elliptic-Curve Diffie–Hellman (ECDH) shared key given a private + * key and a public key. + * @return The ECDH shared key. + */ +const genEcdhSharedKey = (privKey: IPrivKey, pubKey: IPubKey): EcdhSharedKey => { + return babyJub.mulPointEscalar(pubKey, formatPrivKeyForBabyJub(privKey)); +}; + +/* + * Encrypts a plaintext using a given key. + * @return The ciphertext. + */ +const encrypt = (plaintext: Plaintext, sharedKey: EcdhSharedKey, nonce = BigInt(0)): Ciphertext => { + const ciphertext = poseidonEncrypt(plaintext, sharedKey, nonce); + return ciphertext; +}; + +/* + * Decrypts a ciphertext using a given key. + * @return The plaintext. + */ +const decrypt = (ciphertext: Ciphertext, sharedKey: EcdhSharedKey, nonce: BigInt, length: number): Plaintext => { + const plaintext = poseidonDecrypt(ciphertext, sharedKey, nonce, length); + return plaintext; +}; + +/* + * Generates a signature given a private key and plaintext. + * @return The signature. + */ +const sign = (privKey: IPrivKey, msg: BigInt): Signature => { + return eddsa.signPoseidon(bigInt2Buffer(privKey), msg); +}; + +/* + * Checks whether the signature of the given plaintext was created using the + * private key associated with the given public key. + * @return True if the signature is valid, and false otherwise. + */ +const verifySignature = (msg: BigInt, signature: Signature, pubKey: IPubKey): boolean => { + return eddsa.verifyPoseidon(msg, signature, pubKey); +}; + +export { + genRandomSalt, + genPrivKey, + genPubKey, + genKeypair, + genEcdhSharedKey, + encrypt, + decrypt, + sign, + sha256Hash, + hashOne, + hash2, + hash3, + hash4, + hash5, + hash13, + hashLeftRight, + verifySignature, + type Signature, + type IPrivKey, + type IPubKey, + G1Point, + G2Point, + type IKeypair, + type EcdhSharedKey, + type Ciphertext, + type Plaintext, + type SnarkBigInt, + stringifyBigInts, + unstringifyBigInts, + formatPrivKeyForBabyJub, + IncrementalQuinTree, + AccQueue, + NOTHING_UP_MY_SLEEVE, + SNARK_FIELD_SIZE, + bigInt2Buffer, + packPubKey, + unpackPubKey, +}; diff --git a/packages/macisdk/src/domainobjs/README.md b/packages/macisdk/src/domainobjs/README.md new file mode 100644 index 00000000..38abb88e --- /dev/null +++ b/packages/macisdk/src/domainobjs/README.md @@ -0,0 +1,68 @@ +# maci-domainobjs + +[![NPM Package][domainobjs-npm-badge]][domainobjs-npm-link] +[![Actions Status][domainobjs-actions-badge]][domainobjs-actions-link] + +This module implements domain objects. A domain object is: + +> a logical container of purely domain information, usually represents a +> logical entity in the problem domain space + +https://wiki.c2.com/?DomainObject + +In effect, domain objects are representations of objects shared between other +modules in this codebase. They also encapsulate helper functions which make it +easy to use them with said modules. + +## `PrivKey` + +A private key. Provides helper functions to do with passing it into a circuit +in the right format, serialisation and deserialisation, and deep copying. + +## `PubKey` + +A public key. Provides helper functions to do with passing it into a contract +function or circuit in the right format, hashing, serialisation and +deserialisation, and deep copying. + +## `Keypair` + +Encapsulates a `PrivKey` and `PubKey`. Also provides `genEcdhSharedKey` which +generates an ECDH shared key from a public key and a private key. + +## `Command` + +The `Command` domain object represents a request by a user to cast a vote +and/or change one's public key. + +## `Message` + +The `Message` domain object is an encrypted `Command` and signature. That is, a +`Message` is a `Ciphertext` (defined in [`maci-crypto`](../crypto/README.md)) +which is the encrypted `Command` and its `Signature` (also defined in +`maci-crypto`). In other terms: + +``` +Message = Encrypt([Command, Signature], Key) +``` + +## `Ballot` +Represents a User's votes in a Poll, as well as their next valid nonce. + +## `StateLeaf` + +Represents a leaf in the state tree, which maps public keys to voice credit +balances, as well as the timestamp at which it was inserted. + +## `VerifyingKey` + +Encapsulates a Groth16 zk-SNARK verifying key. + +## `Proof` + +Encapsulates a Groth16 zk-SNARK proof. + +[domainobjs-npm-badge]: https://img.shields.io/npm/v/maci-domainobjs.svg +[domainobjs-npm-link]: https://www.npmjs.com/package/maci-domainobjs +[domainobjs-actions-badge]: https://github.com/privacy-scaling-explorations/maci/actions/workflows/domainobjs-build.yml/badge.svg +[domainobjs-actions-link]: https://github.com/privacy-scaling-explorations/maci/actions?query=workflow%3Adomainobjs diff --git a/packages/macisdk/src/domainobjs/domainobjs.ts b/packages/macisdk/src/domainobjs/domainobjs.ts new file mode 100644 index 00000000..acfc67cf --- /dev/null +++ b/packages/macisdk/src/domainobjs/domainobjs.ts @@ -0,0 +1,931 @@ +import base64url from "base64url" +import { + Ciphertext, + EcdhSharedKey, + Signature, + IPubKey as RawPubKey, + IPrivKey as RawPrivKey, + G1Point, + G2Point, + encrypt, + decrypt, + sign, + hashLeftRight, + hash13, + hash4, + hash5, + verifySignature, + genRandomSalt, + genKeypair, + genPubKey, + formatPrivKeyForBabyJub, + genEcdhSharedKey, + packPubKey, + unpackPubKey, + IncrementalQuinTree, + SNARK_FIELD_SIZE, +} from '../crypto' + +const assert = (condition: boolean) => { + if (!condition) { + console.log('Assertion failed'); + } +} +const SERIALIZED_PRIV_KEY_PREFIX = 'macisk.' + +class VerifyingKey { + public alpha1: G1Point + public beta2: G2Point + public gamma2: G2Point + public delta2: G2Point + public ic: G1Point[] + + constructor ( + _alpha1: G1Point, + _beta2: G2Point, + _gamma2: G2Point, + _delta2: G2Point, + _ic: G1Point[], + ) { + this.alpha1 = _alpha1 + this.beta2 = _beta2 + this.gamma2 = _gamma2 + this.delta2 = _delta2 + this.ic = _ic + } + + public asContractParam() { + return { + alpha1: this.alpha1.asContractParam(), + beta2: this.beta2.asContractParam(), + gamma2: this.gamma2.asContractParam(), + delta2: this.delta2.asContractParam(), + ic: this.ic.map((x) => x.asContractParam()), + } + } + + public static fromContract(data: any): VerifyingKey { + const convertG2 = (point: any): G2Point => { + return new G2Point( + [ + BigInt(point.x[0]), + BigInt(point.x[1]), + ], + [ + BigInt(point.y[0]), + BigInt(point.y[1]), + ], + ) + } + + return new VerifyingKey( + new G1Point( + BigInt(data.alpha1.x), + BigInt(data.alpha1.y), + ), + convertG2(data.beta2), + convertG2(data.gamma2), + convertG2(data.delta2), + data.ic.map( + (c: any) => new G1Point(BigInt(c.x), BigInt(c.y)) + ), + ) + } + + public equals(vk: VerifyingKey): boolean { + let icEqual = this.ic.length === vk.ic.length + + // Immediately return false if the length doesn't match + if (!icEqual) { + return false + } + + // Each element in ic must match + for (let i = 0; i < this.ic.length; i ++) { + icEqual = icEqual && this.ic[i].equals(vk.ic[i]) + } + + return this.alpha1.equals(vk.alpha1) && + this.beta2.equals(vk.beta2) && + this.gamma2.equals(vk.gamma2) && + this.delta2.equals(vk.delta2) && + icEqual + } + + public copy(): VerifyingKey { + const copyG2 = (point: any): G2Point => { + return new G2Point( + [ + BigInt(point.x[0].toString()), + BigInt(point.x[1].toString()), + ], + [ + BigInt(point.y[0].toString()), + BigInt(point.y[1].toString()), + ], + ) + } + + return new VerifyingKey( + new G1Point( + BigInt(this.alpha1.x.toString()), + BigInt(this.alpha1.y.toString()), + ), + copyG2(this.beta2), + copyG2(this.gamma2), + copyG2(this.delta2), + this.ic.map( + (c: any) => new G1Point(BigInt(c.x.toString()), BigInt(c.y.toString())) + ), + ) + } + + public static fromJSON = (j: string): VerifyingKey => { + const data = JSON.parse(j) + return VerifyingKey.fromObj(data) + } + + public static fromObj = (data: any): VerifyingKey => { + const alpha1 = new G1Point( + BigInt(data.vk_alpha_1[0]), + BigInt(data.vk_alpha_1[1]), + ) + const beta2 = new G2Point( + [ + BigInt(data.vk_beta_2[0][1]), + BigInt(data.vk_beta_2[0][0]), + ], + [ + BigInt(data.vk_beta_2[1][1]), + BigInt(data.vk_beta_2[1][0]), + ], + ) + const gamma2 = new G2Point( + [ + BigInt(data.vk_gamma_2[0][1]), + BigInt(data.vk_gamma_2[0][0]), + ], + [ + BigInt(data.vk_gamma_2[1][1]), + BigInt(data.vk_gamma_2[1][0]), + ], + ) + const delta2 = new G2Point( + [ + BigInt(data.vk_delta_2[0][1]), + BigInt(data.vk_delta_2[0][0]), + ], + [ + BigInt(data.vk_delta_2[1][1]), + BigInt(data.vk_delta_2[1][0]), + ], + ) + const ic = data.IC.map((ic) => new G1Point( + BigInt(ic[0]), + BigInt(ic[1]), + )) + + return new VerifyingKey(alpha1, beta2, gamma2, delta2, ic) + } +} + +interface Proof { + a: G1Point; + b: G2Point; + c: G1Point; +} + +class PrivKey { + public rawPrivKey: RawPrivKey + + constructor (rawPrivKey: RawPrivKey) { + this.rawPrivKey = rawPrivKey + } + + public copy = (): PrivKey => { + return new PrivKey(BigInt(this.rawPrivKey.toString())) + } + + public asCircuitInputs = () => { + return formatPrivKeyForBabyJub(this.rawPrivKey).toString() + } + + public serialize = (): string => { + return SERIALIZED_PRIV_KEY_PREFIX + this.rawPrivKey.toString(16) + } + + public static unserialize = (s: string): PrivKey => { + const x = s.slice(SERIALIZED_PRIV_KEY_PREFIX.length) + return new PrivKey(BigInt('0x' + x)) + } + + public static isValidSerializedPrivKey = (s: string): boolean => { + const correctPrefix = s.startsWith(SERIALIZED_PRIV_KEY_PREFIX) + const x = s.slice(SERIALIZED_PRIV_KEY_PREFIX.length) + + let validValue = false + try { + const value = BigInt('0x' + x) + validValue = value < SNARK_FIELD_SIZE + } catch { + // comment to make linter happy + } + + return correctPrefix && validValue + } +} + +const SERIALIZED_PUB_KEY_PREFIX = 'macipk.' + +class PubKey { + public rawPubKey: RawPubKey + + constructor (rawPubKey: RawPubKey) { + assert(rawPubKey.length === 2) + assert(rawPubKey[0] < SNARK_FIELD_SIZE) + assert(rawPubKey[1] < SNARK_FIELD_SIZE) + this.rawPubKey = rawPubKey + } + + public copy = (): PubKey => { + + return new PubKey([ + BigInt(this.rawPubKey[0].toString()), + BigInt(this.rawPubKey[1].toString()), + ]) + } + + public asContractParam = () => { + return { + x: this.rawPubKey[0].toString(), + y: this.rawPubKey[1].toString(), + } + } + + public asCircuitInputs = () => { + return this.rawPubKey.map((x) => x.toString()) + } + + public asArray = (): BigInt[] => { + return [ + this.rawPubKey[0], + this.rawPubKey[1], + ] + } + + public serialize = (): string => { + // Blank leaves have pubkey [0, 0], which packPubKey does not support + if ( + BigInt(`${this.rawPubKey[0]}`) === BigInt(0) && + BigInt(`${this.rawPubKey[1]}`) === BigInt(0) + ) { + return SERIALIZED_PUB_KEY_PREFIX + 'z' + } + const packed = packPubKey(this.rawPubKey).toString('hex') + return SERIALIZED_PUB_KEY_PREFIX + packed.toString() + } + + public hash = (): BigInt => { + return hashLeftRight(this.rawPubKey[0], this.rawPubKey[1]) + } + + public equals = (p: PubKey): boolean => { + return this.rawPubKey[0] === p.rawPubKey[0] && + this.rawPubKey[1] === p.rawPubKey[1] + } + + public static unserialize = (s: string): PubKey => { + // Blank leaves have pubkey [0, 0], which packPubKey does not support + if (s === SERIALIZED_PUB_KEY_PREFIX + 'z') { + return new PubKey([BigInt(0), BigInt(0)]) + } + + const len = SERIALIZED_PUB_KEY_PREFIX.length + const packed = Buffer.from(s.slice(len), 'hex') + return new PubKey(unpackPubKey(packed)) + } + + public static isValidSerializedPubKey = (s: string): boolean => { + const correctPrefix = s.startsWith(SERIALIZED_PUB_KEY_PREFIX) + + let validValue = false + try { + PubKey.unserialize(s) + validValue = true + } catch { + // comment to make linter happy + } + + return correctPrefix && validValue + } +} + +class Keypair { + public privKey: PrivKey + public pubKey: PubKey + + constructor ( + privKey?: PrivKey, + ) { + if (privKey) { + this.privKey = privKey + this.pubKey = new PubKey(genPubKey(privKey.rawPrivKey)) + } else { + const rawKeyPair = genKeypair() + this.privKey = new PrivKey(rawKeyPair.privKey) + this.pubKey = new PubKey(rawKeyPair.pubKey) + } + } + + public copy = (): Keypair => { + return new Keypair(this.privKey.copy()) + } + + public static genEcdhSharedKey( + privKey: PrivKey, + pubKey: PubKey, + ) { + return genEcdhSharedKey(privKey.rawPrivKey, pubKey.rawPubKey) + } + + public equals( + keypair: Keypair, + ): boolean { + + const equalPrivKey = this.privKey.rawPrivKey === keypair.privKey.rawPrivKey + const equalPubKey = + this.pubKey.rawPubKey[0] === keypair.pubKey.rawPubKey[0] && + this.pubKey.rawPubKey[1] === keypair.pubKey.rawPubKey[1] + + // If this assertion fails, something is very wrong and this function + // should not return anything + // XOR is equivalent to: (x && !y) || (!x && y ) + const x = (equalPrivKey && equalPubKey) + const y = (!equalPrivKey && !equalPubKey) + + assert((x && !y) || (!x && y)) + + return equalPrivKey + } +} + + +interface IStateLeaf { + pubKey: PubKey; + voiceCreditBalance: BigInt; +} + +interface VoteOptionTreeLeaf { + votes: BigInt; +} + +/* + * An encrypted command and signature. + */ +class Message { + public msgType: BigInt + public data: BigInt[] + public static DATA_LENGTH = 10 + + constructor ( + msgType: BigInt, + data: BigInt[], + ) { + assert(data.length === Message.DATA_LENGTH) + this.msgType = msgType + this.data = data + } + + private asArray = (): BigInt[] => { + return [this.msgType].concat(this.data) + } + + public asContractParam = () => { + return { + msgType: this.msgType, + data: this.data.map((x:BigInt) => x.toString()), + } + } + + public asCircuitInputs = (): BigInt[] => { + + return this.asArray() + } + + public hash = ( + _encPubKey: PubKey, + ): BigInt => { + return hash13([ + ...[this.msgType], + ...this.data, + ..._encPubKey.rawPubKey, + ]) + } + + public copy = (): Message => { + + return new Message( + BigInt(this.msgType.toString()), + this.data.map((x: BigInt) => BigInt(x.toString())), + ) + } + + public equals = (m: Message): boolean => { + if (this.data.length !== m.data.length) { + return false + } + if (this.msgType !== m.msgType) { + return false + } + + for (let i = 0; i < this.data.length; i ++) { + if (this.data[i] !== m.data[i]) { + return false + } + } + + return true + } +} + +/* + * A Ballot represents a User's votes in a Poll, as well as their next valid + * nonce. + * @param _voiceCreditBalance The user's voice credit balance + * @param _nonce The number of valid commands which the user has already + * published + */ +class Ballot { + public votes: BigInt[] = [] + public nonce: BigInt = BigInt(0) + public voteOptionTreeDepth: number + + constructor( + _numVoteOptions: number, + _voteOptionTreeDepth: number, + ) { + this.voteOptionTreeDepth = _voteOptionTreeDepth + assert(5 ** _voteOptionTreeDepth >= _numVoteOptions) + assert(_numVoteOptions >= 0) + for (let i = 0; i < _numVoteOptions; i ++) { + this.votes.push(BigInt(0)) + } + } + + public hash = (): BigInt => { + const vals = this.asArray() + return hashLeftRight(vals[0], vals[1]) + } + + public asCircuitInputs = (): BigInt[] => { + return this.asArray() + } + + public asArray = (): BigInt[] => { + let lastIndexToInsert = this.votes.length - 1 + while (lastIndexToInsert > 0) { + if (this.votes[lastIndexToInsert] !== BigInt(0)) { + break + } + lastIndexToInsert -- + } + const voTree = new IncrementalQuinTree( + this.voteOptionTreeDepth, + BigInt(0), + 5, + hash5, + ) + for (let i = 0; i <= lastIndexToInsert; i ++) { + voTree.insert(this.votes[i]) + } + + return [this.nonce, voTree.root] + } + + public copy = (): Ballot => { + const b = new Ballot(this.votes.length, this.voteOptionTreeDepth) + + b.votes = this.votes.map((x) => BigInt(x.toString())) + b.nonce = BigInt(this.nonce.toString()) + + return b + } + + public equals(b: Ballot): boolean { + for (let i = 0; i < this.votes.length; i ++) { + if (b.votes[i] !== this.votes[i]) { + return false + } + } + return b.nonce === this.nonce && + this.votes.length === b.votes.length + } + + + public static genRandomBallot( + _numVoteOptions: number, + _voteOptionTreeDepth: number, + ) { + const ballot = new Ballot( + _numVoteOptions, + _voteOptionTreeDepth, + ) + ballot.nonce = genRandomSalt() + return ballot + } + + public static genBlankBallot( + _numVoteOptions: number, + _voteOptionTreeDepth: number, + ) { + const ballot = new Ballot( + _numVoteOptions, + _voteOptionTreeDepth, + ) + return ballot + } +} + +/* + * A leaf in the state tree, which maps public keys to voice credit balances + */ +class StateLeaf implements IStateLeaf { + public pubKey: PubKey + public voiceCreditBalance: BigInt + public timestamp: BigInt + + constructor ( + pubKey: PubKey, + voiceCreditBalance: BigInt, + timestamp: BigInt, + ) { + this.pubKey = pubKey + this.voiceCreditBalance = voiceCreditBalance + this.timestamp = timestamp + } + + /* + * Deep-copies the object + */ + public copy(): StateLeaf { + return new StateLeaf( + this.pubKey.copy(), + BigInt(this.voiceCreditBalance.toString()), + BigInt(this.timestamp.toString()), + ) + } + + public static genBlankLeaf(): StateLeaf { + // The public key for a blank state leaf is the first Pedersen base + // point from iden3's circomlib implementation of the Pedersen hash. + // Since it is generated using a hash-to-curve function, we are + // confident that no-one knows the private key associated with this + // public key. See: + // https://github.com/iden3/circomlib/blob/d5ed1c3ce4ca137a6b3ca48bec4ac12c1b38957a/src/pedersen_printbases.js + // Its hash should equal + // 6769006970205099520508948723718471724660867171122235270773600567925038008762. + return new StateLeaf( + new PubKey([ + BigInt('10457101036533406547632367118273992217979173478358440826365724437999023779287'), + BigInt('19824078218392094440610104313265183977899662750282163392862422243483260492317'), + ]), + BigInt(0), + BigInt(0), + ) + } + + public static genRandomLeaf() { + const keypair = new Keypair() + return new StateLeaf( + keypair.pubKey, + genRandomSalt(), + BigInt(0), + ) + } + + private asArray = (): BigInt[] => { + + return [ + ...this.pubKey.asArray(), + this.voiceCreditBalance, + this.timestamp, + ] + } + + public asCircuitInputs = (): BigInt[] => { + + return this.asArray() + } + + public hash = (): BigInt => { + + return hash4(this.asArray()) + } + + public asContractParam() { + return { + pubKey: this.pubKey.asContractParam(), + voiceCreditBalance: this.voiceCreditBalance.toString(), + timestamp: this.timestamp.toString(), + } + } + + public equals(s: StateLeaf): boolean { + return this.pubKey.equals(s.pubKey) && + this.voiceCreditBalance === s.voiceCreditBalance && + this.timestamp === s.timestamp + } + + public serialize = (): string => { + const j = [ + this.pubKey.serialize(), + this.voiceCreditBalance.toString(16), + this.timestamp.toString(16), + ] + + return base64url( + Buffer.from(JSON.stringify(j, null, 0), 'utf8') + ) + } + + static unserialize = (serialized: string): StateLeaf => { + const j = JSON.parse(base64url.decode(serialized)) + + return new StateLeaf( + PubKey.unserialize(j[0]), + BigInt('0x' + j[1]), + BigInt('0x' + j[2]), + ) + } +} + +class Command { + constructor() { + } + public copy = (): Command => { + throw new Error("Abstract method!") + } + public equals = (Command): boolean => { + throw new Error("Abstract method!") + } +} + + + +class TCommand extends Command { + public cmdType: BigInt + public stateIndex: BigInt + public amount: BigInt + public pollId: BigInt + + constructor(stateIndex: BigInt, amount: BigInt) { + super() + this.cmdType = BigInt(2) + this.stateIndex = stateIndex + this.amount = amount + } + + public copy = (): TCommand => { + return new TCommand( + BigInt(this.stateIndex.toString()), + BigInt(this.amount.toString()), + ) + } + + public equals = (command: TCommand): boolean => { + return this.stateIndex === command.stateIndex && + this.amount === command.amount + } +} + +/* + * Unencrypted data whose fields include the user's public key, vote etc. + */ +class PCommand extends Command { + public cmdType: BigInt + public stateIndex: BigInt + public newPubKey: PubKey + public voteOptionIndex: BigInt + public newVoteWeight: BigInt + public nonce: BigInt + public pollId: BigInt + public salt: BigInt + + constructor ( + stateIndex: BigInt, + newPubKey: PubKey, + voteOptionIndex: BigInt, + newVoteWeight: BigInt, + nonce: BigInt, + pollId: BigInt, + salt: BigInt = genRandomSalt(), + ) { + super() + const limit50Bits = BigInt(2 ** 50) + assert(limit50Bits >= stateIndex) + assert(limit50Bits >= voteOptionIndex) + assert(limit50Bits >= newVoteWeight) + assert(limit50Bits >= nonce) + assert(limit50Bits >= pollId) + + this.cmdType = BigInt(1) + this.stateIndex = stateIndex + this.newPubKey = newPubKey + this.voteOptionIndex = voteOptionIndex + this.newVoteWeight = newVoteWeight + this.nonce = nonce + this.pollId = pollId + this.salt = salt + } + + public copy = (): PCommand => { + + return new PCommand( + BigInt(this.stateIndex.toString()), + this.newPubKey.copy(), + BigInt(this.voteOptionIndex.toString()), + BigInt(this.newVoteWeight.toString()), + BigInt(this.nonce.toString()), + BigInt(this.pollId.toString()), + BigInt(this.salt.toString()), + ) + } + + /* + * Returns this Command as an array. Note that 5 of the Command's fields + * are packed into a single 250-bit value. This allows Messages to be + * smaller and thereby save gas when the user publishes a message. + */ + public asArray = (): BigInt[] => { + const p = + BigInt(`${this.stateIndex}`) + + (BigInt(`${this.voteOptionIndex}`) << BigInt(50)) + + (BigInt(`${this.newVoteWeight}`) << BigInt(100)) + + (BigInt(`${this.nonce}`) << BigInt(150)) + + (BigInt(`${this.pollId}`) << BigInt(200)) + + const a = [ + p, + ...this.newPubKey.asArray(), + this.salt, + ] + assert(a.length === 4) + return a + } + + public asCircuitInputs = (): BigInt[] => { + + return this.asArray() + } + + /* + * Check whether this command has deep equivalence to another command + */ + public equals = (command: PCommand): boolean => { + return this.stateIndex === command.stateIndex && + this.newPubKey[0] === command.newPubKey[0] && + this.newPubKey[1] === command.newPubKey[1] && + this.voteOptionIndex === command.voteOptionIndex && + this.newVoteWeight === command.newVoteWeight && + this.nonce === command.nonce && + this.pollId === command.pollId && + this.salt === command.salt + } + + public hash = (): BigInt => { + return hash4(this.asArray()) + } + + /* + * Signs this command and returns a Signature. + */ + public sign = ( + privKey: PrivKey, + ): Signature => { + + return sign(privKey.rawPrivKey, this.hash()) + } + + /* + * Returns true if the given signature is a correct signature of this + * command and signed by the private key associated with the given public + * key. + */ + public verifySignature = ( + signature: Signature, + pubKey: PubKey, + ): boolean => { + + return verifySignature( + this.hash(), + signature, + pubKey.rawPubKey, + ) + } + + /* + * Encrypts this command along with a signature to produce a Message. + * To save gas, we can constrain the following values to 50 bits and pack + * them into a 250-bit value: + * 0. state index + * 3. vote option index + * 4. new vote weight + * 5. nonce + * 6. poll ID + */ + public encrypt = ( + signature: Signature, + sharedKey: EcdhSharedKey, + ): Message => { + const plaintext = [ + ...this.asArray(), + signature.R8[0], + signature.R8[1], + signature.S, + ] + + assert(plaintext.length === 7) + + const ciphertext: Ciphertext = encrypt(plaintext, sharedKey, BigInt(0)) + + const message = new Message(BigInt(1), ciphertext) + + return message + } + + /* + * Decrypts a Message to produce a Command. + */ + public static decrypt = ( + message: Message, + sharedKey: EcdhSharedKey, + ) => { + + const decrypted = decrypt(message.data, sharedKey, BigInt(0), 7) + + const p = BigInt(`${decrypted[0]}`) + + // Returns the value of the 50 bits at position `pos` in `val` + // create 50 '1' bits + // shift left by pos + // AND with val + // shift right by pos + const extract = (val: BigInt, pos: number): BigInt => { + return BigInt( + ( + ( + (BigInt(1) << BigInt(50)) - BigInt(1) + ) << BigInt(pos) + ) & BigInt(`${val}`) + ) >> BigInt(pos) + } + + // p is a packed value + // bits 0 - 50: stateIndex + // bits 51 - 100: voteOptionIndex + // bits 101 - 150: newVoteWeight + // bits 151 - 200: nonce + // bits 201 - 250: pollId + const stateIndex = extract(p, 0) + const voteOptionIndex = extract(p, 50) + const newVoteWeight = extract(p, 100) + const nonce = extract(p, 150) + const pollId = extract(p, 200) + + const newPubKey = new PubKey([decrypted[1], decrypted[2]]) + const salt = decrypted[3] + + const command = new PCommand( + stateIndex, + newPubKey, + voteOptionIndex, + newVoteWeight, + nonce, + pollId, + salt, + ) + + const signature = { + R8: [decrypted[4], decrypted[5]], + S: decrypted[6], + } + + return { command, signature } + } +} + + +export { + StateLeaf, + Ballot, + type VoteOptionTreeLeaf, + PCommand, + TCommand, + Command, + Message, + Keypair, + PubKey, + PrivKey, + VerifyingKey, + type Proof, +} diff --git a/packages/macisdk/src/index.ts b/packages/macisdk/src/index.ts new file mode 100644 index 00000000..4735f245 --- /dev/null +++ b/packages/macisdk/src/index.ts @@ -0,0 +1,46 @@ +// Export all the functions and classes from the SDK so that they can be imported from the top level +// e.g. import { genRandomSalt } from '@qfi/maci-sdk' + +export { Keypair, PubKey, PrivKey, TCommand, PCommand, Command, Message, StateLeaf, Ballot, type VoteOptionTreeLeaf, VerifyingKey, type Proof } from "./domainobjs/domainobjs"; +export { poseidonEncrypt, poseidonDecrypt, poseidon, poseidonPerm } from "./poseidonencryption"; +export { + NOTHING_UP_MY_SLEEVE, + SNARK_FIELD_SIZE, + type Signature, + type IPrivKey, + type IPubKey, + type IKeypair, + type EcdhSharedKey, + type Ciphertext, + type Plaintext, + type SnarkBigInt, + G1Point, + G2Point, + genPubKey, + genPrivKey, + genKeypair, + formatPrivKeyForBabyJub, + packPubKey, + unpackPubKey, + genEcdhSharedKey, + encrypt, + decrypt, + sign, + verifySignature, + genRandomSalt, + stringifyBigInts, + unstringifyBigInts, + bigInt2Buffer, + IncrementalQuinTree, + AccQueue, + sha256Hash, + hashOne, + hash2, + hash3, + hash4, + hash5, + hash13, + hashLeftRight, +} from "./crypto"; +export { OptimisedMT, hashArray } from "./optimisedmt"; +export { STATE_TREE_DEPTH, MaciState, Poll, genProcessVkSig, genTallyVkSig, genSubsidyVkSig, genTallyResultCommitment } from "./core/core"; diff --git a/packages/macisdk/src/optimisedmt/OptimisedMT.ts b/packages/macisdk/src/optimisedmt/OptimisedMT.ts new file mode 100644 index 00000000..8b45f1c4 --- /dev/null +++ b/packages/macisdk/src/optimisedmt/OptimisedMT.ts @@ -0,0 +1,1176 @@ +import { poseidon } from "circomlibjs"; +import { utils as ffutils } from "ffjavascript"; + +const assert = (condition: boolean) => { + if (!condition) { + throw new Error("Assertion failed"); + } +}; + +const assertPathElements = (condition: PathElements) => { + if (condition.length === 0) { + throw new Error("Assertion failed"); + } +}; + +const assertPathElement = (condition: BigInt[]) => { + if (condition.length === 0) { + throw new Error("Assertion failed"); + } +}; + +const assertIndices = (condition: Indices) => { + if (condition.length === 0) { + throw new Error("Assertion failed"); + } +}; + +const stringifyBigInts: (obj: object) => any = ffutils.stringifyBigInts; +const unstringifyBigInts: (obj: object) => any = ffutils.unstringifyBigInts; + +type Leaf = BigInt; +type Root = BigInt; +type PathElements = BigInt[][]; +type Indices = number[]; + +interface MerkleProof { + pathElements: PathElements; + indices: Indices; + depth: number; + root: BigInt; + leaf: Leaf; +} + +const deepCopyBigIntArray = (arr: BigInt[]) => { + return arr.map((x) => BigInt(x.toString())); +}; + +const calcInitialVals = (leavesPerNode: number, depth: number, zeroValue: BigInt, hashFunc: (leaves: BigInt[]) => BigInt) => { + const zeros: BigInt[] = []; + + let currentLevelHash = zeroValue; + for (let i = 0; i < depth; i++) { + zeros.push(currentLevelHash); + + const z: BigInt[] = []; + for (let j = 0; j < leavesPerNode; j++) { + z.push(zeros[i]); + } + + currentLevelHash = hashFunc(z); + } + + const root = currentLevelHash; + + return { zeros, root }; +}; + +interface MTNode { + [key: number]: BigInt; +} + +class OptimisedMT { + public depth: number; + public zeroValue: BigInt; + public leavesPerNode: number; + public hashFunc: (leaves: BigInt[]) => BigInt; + + // The the smallest empty leaf index + public nextIndex: number = 0; + + // Contains the zero value per level. i.e. zeros[0] is zeroValue, + // zeros[1] is the hash of leavesPerNode zeros, and so on. + public zeros: BigInt[] = []; + public root: BigInt; + public nodes: MTNode; + public numNodes: number; + public capacity: number; + + constructor(_depth: number, _zeroValue: BigInt, _leavesPerNode: number, _hashFunc: (leaves: BigInt[]) => BigInt) { + this.depth = _depth; + this.zeroValue = _zeroValue; + this.leavesPerNode = _leavesPerNode; + this.hashFunc = _hashFunc; + + const r = calcInitialVals(this.leavesPerNode, this.depth, this.zeroValue, this.hashFunc); + this.zeros = r.zeros; + this.root = r.root; + + let numNodes = 1; + for (let i = 0; i < this.depth; i++) { + numNodes += this.leavesPerNode ** (i + 1); + } + this.numNodes = numNodes; + + const rootIndex = numNodes - 1; + + this.nodes = {}; + this.nodes[rootIndex] = r.root; + this.capacity = this.leavesPerNode ** this.depth; + } + + /* + * Insert a leaf into the Merkle tree + * @param _value The value to insert. This may or may not already be + * hashed. + */ + public insert(_value: Leaf) { + this.update(this.nextIndex, _value); + this.nextIndex++; + } + + public update(_index: number, _value: Leaf) { + // Ensure that _value is a BigInt + _value = _value; + + // Set the leaf value + this.setNode(_index, _value); + + // Set the parent leaf value + // Get the parent indices + const parentIndices = this.getParentIndices(_index); + + for (const parentIndex of parentIndices) { + const childIndices = this.getChildIndices(parentIndex); + const elements: Leaf[] = []; + for (const childIndex of childIndices) { + elements.push(this.getNode(childIndex)); + } + this.nodes[parentIndex] = this.hashFunc(elements); + } + + this.root = this.nodes[this.numNodes - 1]; + } + + /* + * Generates a Merkle proof from a leaf to the root. + */ + public genMerklePath(_index: number): MerkleProof { + if (_index < 0) { + throw new Error("The leaf index must be greater than 0"); + } + if (_index >= this.leavesPerNode ** this.depth) { + throw new Error("The leaf index is too large"); + } + + const pathElements: BigInt[][] = []; + const indices: number[] = [_index % this.leavesPerNode]; + + let r = Math.floor(_index / this.leavesPerNode); + + // Generate indices + for (let i = 0; i < this.depth; i++) { + const p = r % this.leavesPerNode; + if (i < this.depth - 1) { + indices.push(p); + } + r = Math.floor(r / this.leavesPerNode); + } + + // Generate path elements + let leafIndex = _index; + let offset = 0; + + for (let i = 0; i < this.depth; i++) { + const elements: BigInt[] = []; + const index = indices[i]; + const start = leafIndex - (leafIndex % this.leavesPerNode) + offset; + for (let i = 0; i < this.leavesPerNode; i++) { + if (i !== index) { + elements.push(this.getNode(start + i)); + } + } + pathElements.push(elements); + leafIndex = Math.floor(leafIndex / this.leavesPerNode); + offset += this.leavesPerNode ** (this.depth - i); + } + + return { + pathElements, + indices, + depth: this.depth, + root: this.root, + leaf: this.getNode(_index), + }; + } + + /* + * Generates a Merkle proof from a subroot to the root. + */ + public genMerkleSubrootPath( + _startIndex: number, // inclusive + _endIndex: number // exclusive + ): MerkleProof { + // The end index must be greater than the start index + assert(_endIndex > _startIndex); + const numLeaves = _endIndex - _startIndex; + + // The number of leaves must be a multiple of the tree arity + assert(numLeaves % this.leavesPerNode === 0); + + // The number of leaves must be lower than the maximum tree capacity + assert(numLeaves < this.leavesPerNode ** this.depth); + + // The number of leaves must the tree arity raised to some positive integer + let f = false; + let subDepth; + for (let i = 0; i < this.depth; i++) { + if (numLeaves === this.leavesPerNode ** i) { + subDepth = i; + f = true; + break; + } + } + + assert(f); + assert(subDepth < this.depth); + + const subTree = new OptimisedMT(subDepth, this.zeroValue, this.leavesPerNode, this.hashFunc); + for (let i = _startIndex; i < _endIndex; i++) { + subTree.insert(this.getNode(i)); + } + + const fullPath = this.genMerklePath(_startIndex); + fullPath.depth = this.depth - subDepth; + fullPath.indices = fullPath.indices.slice(subDepth, this.depth); + fullPath.pathElements = fullPath.pathElements.slice(subDepth, this.depth); + fullPath.leaf = subTree.root; + + return fullPath; + } + + public static verifyMerklePath = (_proof: MerkleProof, _hashFunc: (leaves: BigInt[]) => BigInt) => { + assertPathElements(_proof.pathElements); + + //TODO: assert flubbed + + const pathElements = _proof.pathElements; + // Validate the proof format + assertIndices(_proof.indices); + for (let i = 0; i < _proof.depth; i++) { + assertPathElement(pathElements[i]); + assert(_proof.indices[i] != undefined); + } + + // Hash the first level + const firstLevel: BigInt[] = pathElements[0]; + firstLevel.splice(Number(_proof.indices[0]), 0, _proof.leaf); + let currentLevelHash: BigInt = _hashFunc(firstLevel); + + // Verify the proof + for (let i = 1; i < pathElements.length; i++) { + const level: BigInt[] = pathElements[i]; + level.splice(Number(_proof.indices[i]), 0, currentLevelHash); + + currentLevelHash = _hashFunc(level); + } + + return currentLevelHash === _proof.root; + }; + + public getLeaf(_index: number) { + assert(_index < this.capacity); + + return this.getNode(_index); + } + + public getNode(_index: number) { + assert(_index <= this.numNodes - 1); + + if (this.nodes[_index] != undefined) { + return this.nodes[_index]; + } else { + let r = 0; + let level = this.depth; + + while (true) { + r += this.leavesPerNode ** level; + if (_index < r) { + break; + } + level--; + } + return this.zeros[this.depth - level]; + } + } + + public setNode(_index: number, _value: BigInt) { + assert(_index <= this.numNodes - 1); + this.nodes[_index] = _value; + } + + private getChildIndices(_index: number) { + return OptimisedMT.calcChildIndices(_index, this.leavesPerNode, this.depth); + } + + public static calcChildIndices(_index: number, _leavesPerNode: number, _depth: number) { + // The node must be a parent + assert(_index >= _leavesPerNode ** _depth); + + // Determine which level the node is at + let level = 0; + let r = _leavesPerNode ** level; + while (true) { + if (_index < r) { + break; + } + level++; + r += _leavesPerNode ** level; + } + + const start = (_index - _leavesPerNode ** level) * _leavesPerNode; + const indices: number[] = [start]; + for (let i = 0; i < _leavesPerNode - 1; i++) { + indices.push(start + i + 1); + } + return indices; + } + + private getParentIndices(_index: number) { + return OptimisedMT.calcParentIndices(_index, this.leavesPerNode, this.depth); + } + + public static calcParentIndices(_index: number, _leavesPerNode: number, _depth: number) { + assert(_depth > 0); + assert(_leavesPerNode > 1); + + // The index must be of a leaf + const treeCapacity = _leavesPerNode ** _depth; + assert(_index < treeCapacity); + + const indices: number[] = []; + + let levelCapacity = 0; + let r = _index; + for (let i = 0; i < _depth; i++) { + levelCapacity += _leavesPerNode ** (_depth - i); + r = Math.floor(r / _leavesPerNode); + const levelIndex = levelCapacity + r; + indices.push(levelIndex); + } + + return indices; + } + + /* + * Deep-copies this object + */ + public copy(): OptimisedMT { + const newTree = new OptimisedMT(this.depth, this.zeroValue, this.leavesPerNode, this.hashFunc); + newTree.nodes = JSON.parse(JSON.stringify(stringifyBigInts(this.nodes))); + newTree.numNodes = this.numNodes; + newTree.nextIndex = this.nextIndex; + newTree.zeros = deepCopyBigIntArray(this.zeros); + newTree.root = this.root; + newTree.nextIndex = this.nextIndex; + return newTree; + } + + public serialize = (): string => { + return JSON.stringify( + stringifyBigInts({ + leavesPerNode: this.leavesPerNode, + depth: this.depth, + zeroValue: this.zeroValue, + root: this.root, + nextIndex: this.nextIndex, + nodes: this.nodes, + numNodes: this.numNodes, + zeros: this.zeros, + }) + ); + }; + + public equals = (o: OptimisedMT): boolean => { + return this.serialize() === o.serialize(); + }; + + public static unserialize = (s: string): OptimisedMT => { + const d = unstringifyBigInts(JSON.parse(s)); + const tree = new OptimisedMT(d.depth, d.zeroValue, d.leavesPerNode, poseidon); + tree.root = d.root; + tree.nextIndex = d.nextIndex; + tree.nodes = d.nodes; + tree.numNodes = d.numNodes; + tree.zeros = d.zeros; + + return tree; + }; +} + +/* + * Calculate a Merkle root given a list of leaves + */ +const calculateRoot = (leaves: BigInt[], arity: number, hashFunc: (leaves: BigInt[]) => BigInt): BigInt => { + if (leaves.length === 1) { + return leaves[0]; + } + + assert(leaves.length % arity === 0); + + const hashes: BigInt[] = []; + for (let i = 0; i < leaves.length / arity; i++) { + const r: BigInt[] = []; + for (let j = 0; j < arity; j++) { + r.push(leaves[i * arity + j]); + } + hashes.push(hashFunc(r)); + } + return calculateRoot(hashes, arity, hashFunc); +}; + +export { OptimisedMT, calculateRoot, calcInitialVals }; + +//const _insert = ( +//depth: number, +//leavesPerNode: number, +//nextIndex: number, +//value: BigInt, +//filledSubtrees: BigInt[][], +//filledPaths: any, +//leaves: BigInt[], +//zeros: BigInt[], +//hashFunc: (leaves: BigInt[]) => BigInt, +//) => { +//let m = nextIndex % leavesPerNode +//filledSubtrees[0][m] = value +//let currentIndex = nextIndex +//for (let i = 1; i < depth; i++) { +//// currentIndex is the leaf or node's absolute index +//currentIndex = Math.floor(currentIndex / leavesPerNode) + +//// m is the leaf's relative position within its node +//m = currentIndex % leavesPerNode + +//if (m === 0) { +//// Zero out the level +//for (let j = 1; j < filledSubtrees[i].length; j ++) { +//filledSubtrees[i][j] = zeros[i] +//} +//} + +//const z = filledSubtrees[i - 1] +//const hashed = hashFunc(z) +//filledSubtrees[i][m] = hashed + +//if (filledPaths[i - 1].length <= currentIndex) { +//filledPaths[i - 1].push(hashed) +//} else { +//filledPaths[i - 1][currentIndex] = hashed +//} +//} +//leaves.push(value) +//} + +//const _genMerklePath = ( +//_index: number, +//leavesPerNode: number, +//depth: number, +//leaves: BigInt[], +//zeros: BigInt[], +//filledPaths: any, +//root: BigInt, +//): MerkleProof => { +//if (_index < 0) { +//throw new Error('The leaf index must be greater than 0') +//} +//if (_index >= leaves.length) { +//throw new Error('The leaf index is too large') +//} + +//const pathElements: BigInt[][] = [] +//const indices: number[] = [_index % leavesPerNode] + +//let r = Math.floor(_index / leavesPerNode) + +//for (let i = 0; i < depth; i ++) { +//const s: BigInt[] = [] +//if (i === 0) { +//// Get a slice of leaves, padded with zeros +//const leafStartIndex = _index - (_index % leavesPerNode) +//const leafEndIndex = leafStartIndex + leavesPerNode +//for (let j = leafStartIndex; j < leafEndIndex; j ++) { +//if (j < leaves.length) { +//s.push(leaves[j]) +//} else { +//s.push(zeros[i]) +//} +//} +//} else { +//for (let j = 0; j < leavesPerNode; j ++) { +//const x = r * leavesPerNode + j +//if (filledPaths[i - 1].length <= x) { +//s.push(zeros[i]) +//} else { +//const e = filledPaths[i - 1][x] +//s.push(e) +//} +//} +//} + +//const p = r % leavesPerNode +//pathElements.push(s) + +//if (i < depth - 1) { +//indices.push(p) +//} + +//r = Math.floor(r /leavesPerNode) +//} + +//// Remove the commitments to elements which are the leaves per level +//const newPe: BigInt[][] = [[]] +//const firstIndex = _index % leavesPerNode + +//for (let i = 0; i < pathElements[0].length; i ++) { +//if (i !== firstIndex) { +//newPe[0].push(pathElements[0][i]) +//} +//} + +//for (let i = 1; i < pathElements.length; i ++) { +//const level: BigInt[] = [] +//for (let j = 0; j < pathElements[i].length; j ++) { +//if (j !== indices[i]) { +//level.push(pathElements[i][j]) +//} +//} +//newPe.push(level) +//} + +//return { +//pathElements: newPe, +//indices, +//depth: depth, +//root, +//leaf: leaves[_index], +//} +//} + +//const _genMerkleSubrootPath = ( +//_startIndex: number, // inclusive +//_endIndex: number, // exclusive +//leavesPerNode: number, +//depth: number, +//zeroValue: BigInt, +//leaves: BigInt[], +//zeros: BigInt[], +//filledSubtrees: BigInt[][], +//filledPaths: any, +//root: BigInt, +//hashFunc: (leaves: BigInt[]) => BigInt, +//): MerkleProof => { +//// The end index must be greater than the start index +//assert(_endIndex > _startIndex) +//const numLeaves = _endIndex - _startIndex + +//// The number of leaves must be a multiple of the tree arity +//assert(numLeaves % leavesPerNode === 0) + +//// The number of leaves must be lower than the maximum tree capacity +//assert(numLeaves < leavesPerNode ** depth) + +//// The number of leaves must the tree arity raised to some positive integer +//let f = false +//let subDepth +//for (let i = 0; i < depth; i ++) { +//if (numLeaves === leavesPerNode ** i) { +//subDepth = i +//f = true +//break +//} +//} + +//assert(f) +//assert(subDepth < depth) + +//const leaf = calculateRoot( +//leaves.slice(_startIndex, _endIndex), +//leavesPerNode, +//hashFunc, +//) + +//const fullPath = _genMerklePath( +//_startIndex, +//leavesPerNode, +//depth, +//leaves, +//zeros, +//filledPaths, +//root, +//) +//fullPath.depth = depth - subDepth +//fullPath.indices = fullPath.indices.slice(subDepth, depth) +//fullPath.pathElements = fullPath.pathElements.slice(subDepth, depth) +//fullPath.leaf = leaf + +//return fullPath +//} + +//const _verifyMerklePath = ( +//_proof: MerkleProof, +//_hashFunc: (leaves: BigInt[]) => BigInt, +//) => { +//assert (_proof.pathElements) + +//const pathElements = _proof.pathElements +//// Validate the proof format +//assert (_proof.indices) +//for (let i = 0; i < _proof.depth; i ++) { +//assert(pathElements[i]) +//assert(_proof.indices[i] != undefined) +//} + +//// Hash the first level +//const firstLevel: BigInt[] = pathElements[0].map(BigInt) +//firstLevel.splice(Number(_proof.indices[0]), 0, _proof.leaf) +//let currentLevelHash: BigInt = _hashFunc(firstLevel) + +//// Verify the proof +//for (let i = 1; i < pathElements.length; i ++) { +//const level: BigInt[] = pathElements[i].map(BigInt) +//level.splice(Number(_proof.indices[i]), 0, currentLevelHash) + +//currentLevelHash = _hashFunc(level) +//} + +//return currentLevelHash === _proof.root +//} + +/* + * An incremental Merkle tree. + */ +//class IncrementalTree { +//// The number of leaves per node +//public leavesPerNode: number + +//// The tree depth +//public depth: number + +//// The default value for empty leaves +//public zeroValue: BigInt + +//// The tree root +//public root: BigInt + +//// The the smallest empty leaf index +//public nextIndex: number + +//// All leaves in the tree +//public leaves: Leaf[] = [] + +//// Contains the zero value per level. i.e. zeros[0] is zeroValue, +//// zeros[1] is the hash of leavesPerNode zeros, and so on. +//public zeros: BigInt[] = [] + +//// Caches values needed for efficient appends. +//public filledSubtrees: BigInt[][] = [] + +//// Caches values needed to compute Merkle paths. +//public filledPaths: any = {} + +//// The hash function to use +//public hashFunc: (leaves: BigInt[]) => BigInt + +//constructor ( +//_depth: number, +//_zeroValue: BigInt | number, +//_leavesPerNode: number, +//_hashFunc: (leaves: BigInt[]) => BigInt +//) { +//this.leavesPerNode = Number(_leavesPerNode) + +//this.depth = Number(_depth) + +//assert(this.depth > 0) + +//this.nextIndex = 0 +//this.zeroValue = BigInt(_zeroValue) + +//this.hashFunc = _hashFunc + +//const r = calcInitialVals( +//this.leavesPerNode, +//this.depth, +//this.zeroValue, +//this.hashFunc, +//) + +//this.filledSubtrees = r.filledSubtrees +//this.filledPaths = r.filledPaths +//this.zeros = r.zeros +//this.root = r.root +//} + +/* + * Insert a leaf into the Merkle tree + * @param _value The value to insert. This may or may not already be + * hashed. + */ +//public insert( +//_value: Leaf, +//) { +//// Ensure that _value is a BigInt +//_value = BigInt(_value) + +//// A node is one level above the leaf +//// m is the leaf's relative position within its node +//let m = this.nextIndex % this.leavesPerNode + +//if (m === 0) { +//// Zero out the level in filledSubtrees +//for (let j = 1; j < this.filledSubtrees[0].length; j ++) { +//this.filledSubtrees[0][j] = this.zeros[0] +//} +//} + +//_insert( +//this.depth, +//this.leavesPerNode, +//this.nextIndex, +//_value, +//this.filledSubtrees, +//this.filledPaths, +//this.leaves, +//this.zeros, +//this.hashFunc, +//) + +//this.nextIndex ++ +//this.root = this.hashFunc( +//this.filledSubtrees[this.filledSubtrees.length - 1], +//) +//} + +/* + * Update the leaf at the specified index with the given value. + */ +//public update( +//_index: number, +//_value: Leaf, +//) { +//if (_index >= this.nextIndex || _index >= this.leaves.length) { +//throw new Error('The leaf index specified is too large') +//} + +//_value = BigInt(_value) + +//const temp = this.leaves +//temp[_index] = _value + +//this.leaves[_index] = _value + +//const newTree = new IncrementalTree( +//this.depth, +//this.zeroValue, +//this.leavesPerNode, +//this.hashFunc, +//) + +//for (let i = 0; i < temp.length; i++) { +//newTree.insert(temp[i]) +//} + +//this.leaves = newTree.leaves +//this.zeros = newTree.zeros +//this.filledSubtrees = newTree.filledSubtrees +//this.filledPaths = newTree.filledPaths +//this.root = newTree.root +//this.nextIndex = newTree.nextIndex +//} + +/* + * Returns the leaf value at the given index + */ +//public getLeaf(_index: number): Leaf { +//return this.leaves[_index] +//} + +/* + * Generates a Merkle proof from a subroot to the root. + */ +//public genMerkleSubrootPath( +//_startIndex: number, // inclusive +//_endIndex: number, // exclusive +//): MerkleProof { +//return _genMerkleSubrootPath( +//_startIndex, +//_endIndex, +//this.leavesPerNode, +//this.depth, +//this.zeroValue, +//this.leaves, +//this.zeros, +//this.filledSubtrees, +//this.filledPaths, +//this.root, +//this.hashFunc, +//) +//} + +/* Generates a Merkle proof from a leaf to the root. + */ +//public genMerklePath(_index: number): MerkleProof { +//return _genMerklePath( +//_index, +//this.leavesPerNode, +//this.depth, +//this.leaves, +//this.zeros, +//this.filledPaths, +//this.root, +//) +//} + +/* + * Return true if the given Merkle path is valid, and false otherwise. + */ +//public static verifyMerklePath( +//_proof: MerkleProof, +//_hashFunc: (leaves: BigInt[]) => BigInt, +//): boolean { + +//return _verifyMerklePath( _proof, _hashFunc) +//} + +/* Deep-copies this object + */ +//public copy(): IncrementalTree { +//const newTree = new IncrementalTree( +//this.depth, +//this.zeroValue, +//this.leavesPerNode, +//this.hashFunc, +//) +//newTree.leaves = deepCopyBigIntArray(this.leaves) +//newTree.zeros = deepCopyBigIntArray(this.zeros) +//newTree.root = this.root +//newTree.nextIndex = this.nextIndex +//newTree.filledSubtrees = this.filledSubtrees.map(deepCopyBigIntArray) +//newTree.filledPaths = unstringifyBigInts(JSON.parse( +//JSON.stringify(stringifyBigInts(this.filledPaths)) +//)) + +//return newTree +//} + +//public equals(t: IncrementalTree): boolean { +//const eq = +//this.depth === t.depth && +//this.zeroValue === t.zeroValue && +//this.leavesPerNode === t.leavesPerNode && +//this.root === t.root && +//this.nextIndex === t.nextIndex && +//this.leaves.length === t.leaves.length && +//this.filledSubtrees.length === t.filledSubtrees.length +//this.filledPaths.length === t.filledPaths.length + +//if (!eq) { return false } + +//for (let i = 0; i < this.leaves.length; i ++) { +//if (this.leaves[i] !== t.leaves[i]) { +//return false +//} +//} + +//return true +//} +//} + +/* + * Multiple incremental Merkle tree. When a tree is full, the next insertion + * goes into a new tree. + */ +//class MultiIncrementalTree { +//// The number of leaves per node +//public leavesPerNode: number + +//// The tree depth +//public depth: number + +//// The default value for empty leaves +//public zeroValue: BigInt + +//public currentTreeNum = 0 + +//// The tree roots +//public roots: BigInt[] + +//// The the smallest empty leaf index +//public nextIndex: number + +//// All leaves in the tree +//public leaves: Leaf[] = [] + +//// Contains the zero value per level. i.e. zeros[0] is zeroValue, +//// zeros[1] is the hash of leavesPerNode zeros, and so on. +//public zeros: BigInt[] = [] + +//// Caches values needed for efficient appends. +//public filledSubtrees: BigInt[][][] = [] + +//// Caches values needed to compute Merkle paths. +//public filledPaths: any[] = [] + +//// The hash function to use +//public hashFunc: (leaves: BigInt[]) => BigInt + +//constructor ( +//_depth: number, +//_zeroValue: BigInt | number, +//_leavesPerNode: number, +//_hashFunc: (leaves: BigInt[]) => BigInt +//) { +//this.leavesPerNode = Number(_leavesPerNode) + +//this.depth = Number(_depth) + +//assert(this.depth > 0) + +//this.nextIndex = 0 +//this.zeroValue = BigInt(_zeroValue) + +//this.hashFunc = _hashFunc + +//const r = calcInitialVals( +//this.leavesPerNode, +//this.depth, +//this.zeroValue, +//this.hashFunc, +//) + +//this.zeros = r.zeros +//this.filledSubtrees = [r.filledSubtrees] +//this.filledPaths = [r.filledPaths] +//this.roots = [r.root] +//} + +/* + * Insert a leaf into the Merkle tree + * @param _value The value to insert. This may or may not already be + * hashed. + */ +//public insert( +//_value: Leaf, +//) { + +//if (this.nextIndex >= this.leavesPerNode ** this.depth) { +//this.nextIndex = 0 +//this.currentTreeNum ++ +//const r = calcInitialVals( +//this.leavesPerNode, +//this.depth, +//this.zeroValue, +//this.hashFunc, +//) + +//this.zeros = r.zeros +//this.filledSubtrees.push(r.filledSubtrees) +//this.filledPaths.push(r.filledPaths) +//this.roots.push(r.root) +//} +//// Ensure that _value is a BigInt +//_value = BigInt(_value) + +//// A node is one level above the leaf +//// m is the leaf's relative position within its node +//let m = this.nextIndex % this.leavesPerNode + +//if (m === 0) { +//// Zero out the level in filledSubtrees +//for (let j = 1; j < this.leavesPerNode; j ++) { +//this.filledSubtrees[this.currentTreeNum][0][j] = this.zeros[0] +//} +//} + +//_insert( +//this.depth, +//this.leavesPerNode, +//this.nextIndex, +//_value, +//this.filledSubtrees[this.currentTreeNum], +//this.filledPaths[this.currentTreeNum], +//this.leaves, +//this.zeros, +//this.hashFunc, +//) + +//this.nextIndex ++ +//this.roots[this.currentTreeNum] = this.hashFunc( +//this.filledSubtrees[this.currentTreeNum][this.filledSubtrees[this.currentTreeNum].length - 1], +//) +//} + +/* + * Update the leaf at the specified index with the given value. + */ +//public update( +//_absoluteIndex: number, +//_value: Leaf, +//) { +//if (_absoluteIndex >= this.leaves.length) { +//throw new Error('The leaf index specified is too large') +//} + +//_value = BigInt(_value) + +//const capacity = this.leavesPerNode ** this.depth +//const treeNum = Math.floor(_absoluteIndex / capacity) + +//const subTree = new IncrementalTree( +//this.depth, +//this.zeroValue, +//this.leavesPerNode, +//this.hashFunc, +//) + +//this.leaves[_absoluteIndex] = _value + +//const s = treeNum * capacity + +//for (let i = s; i < s + capacity; i ++) { +//if (i >= this.leaves.length) { +//break +//} +//subTree.insert(this.leaves[i]) +//} + +//this.filledPaths[treeNum] = subTree.filledPaths +//this.filledSubtrees[treeNum] = subTree.filledSubtrees +//this.roots[treeNum] = subTree.root +//} + +/* + * Returns the leaf value at the given index + */ +//public getLeaf(_index: number): Leaf { +//return this.leaves[_index] +//} + +/* + * Generates a Merkle proof from a subroot to the root. + */ +//public genMerkleSubrootPath( +//_absoluteStartIndex: number, // inclusive +//_absoluteEndIndex: number, // exclusive +//): MerkleProof { +//assert(_absoluteEndIndex > _absoluteStartIndex) + +//const capacity = this.leavesPerNode ** this.depth +//const treeNum = Math.floor(_absoluteStartIndex / capacity) + +//const leaves = this.leaves.slice( +//treeNum * capacity, +//treeNum * capacity + capacity, +//) + +//return _genMerkleSubrootPath( +//_absoluteStartIndex % capacity, +//_absoluteEndIndex % capacity, +//this.leavesPerNode, +//this.depth, +//this.zeroValue, +//leaves, +//this.zeros, +//this.filledSubtrees[treeNum], +//this.filledPaths[treeNum], +//this.roots[treeNum], +//this.hashFunc, +//) +//} + +/* + * Generates a Merkle proof from a leaf to the root. + */ +//public genMerklePath( +//_absoluteIndex: number, +//): MerkleProof { +//const capacity = this.leavesPerNode ** this.depth +//const index = _absoluteIndex % capacity +//const treeNum = Math.floor(_absoluteIndex / capacity) + +//assert(treeNum < this.roots.length) + +//return _genMerklePath( +//index, +//this.leavesPerNode, +//this.depth, +//this.leaves, +//this.zeros, +//this.filledPaths[treeNum], +//this.roots[treeNum], +//) +//} + +/* + * Return true if the given Merkle path is valid, and false otherwise. + */ +//public static verifyMerklePath( +//_proof: MerkleProof, +//_hashFunc: (leaves: BigInt[]) => BigInt, +//): boolean { + +//return _verifyMerklePath( _proof, _hashFunc) +//} + +/* Deep-copies this object + */ +//public copy(): MultiIncrementalTree { +//const newTree = new MultiIncrementalTree( +//this.depth, +//this.zeroValue, +//this.leavesPerNode, +//this.hashFunc, +//) +//newTree.leaves = deepCopyBigIntArray(this.leaves) +//newTree.zeros = deepCopyBigIntArray(this.zeros) +//newTree.roots = deepCopyBigIntArray(this.roots) +//newTree.currentTreeNum = this.currentTreeNum +//newTree.nextIndex = this.nextIndex +//newTree.filledSubtrees = unstringifyBigInts(JSON.parse( +//JSON.stringify(stringifyBigInts(this.filledSubtrees)) +//)) +//newTree.filledPaths = unstringifyBigInts(JSON.parse( +//JSON.stringify(stringifyBigInts(this.filledPaths)) +//)) + +//return newTree +//} + +//public equals(t: MultiIncrementalTree): boolean { +//const eq = +//this.currentTreeNum === t.currentTreeNum && +//this.depth === t.depth && +//this.zeroValue === t.zeroValue && +//this.leavesPerNode === t.leavesPerNode && +//this.nextIndex === t.nextIndex && +//this.roots.length === t.roots.length && +//this.leaves.length === t.leaves.length && +//JSON.stringify(stringifyBigInts(this.filledPaths)) === +//JSON.stringify(stringifyBigInts(t.filledPaths)) && +//JSON.stringify(stringifyBigInts(this.filledSubtrees)) === +//JSON.stringify(stringifyBigInts(t.filledSubtrees)) + +//if (!eq) { return false } + +//for (let i = 0; i < this.roots.length; i ++) { +//if (this.roots[i] !== t.roots[i]) { +//return false +//} +//} + +//for (let i = 0; i < this.leaves.length; i ++) { +//if (this.leaves[i] !== t.leaves[i]) { +//return false +//} +//} + +//return true +//} +//} + +//export { +//IncrementalTree, +//MultiIncrementalTree, +//calculateRoot, +//} diff --git a/packages/macisdk/src/optimisedmt/README.md b/packages/macisdk/src/optimisedmt/README.md new file mode 100644 index 00000000..d177d47a --- /dev/null +++ b/packages/macisdk/src/optimisedmt/README.md @@ -0,0 +1,135 @@ +# Optimised Incremental Merkle Tree + +## The problem + +Ordinary incremental Merkle tree implementations have inefficient update +operations. Every time a leaf is updated, the entire tree is recomputed by +inserting each leaf all over again. + +## The solution + +Trade off storage/memory for speed. + +Represent nodes as a key-value map where the key is the node index and the +value is the node. + +Use a simple key-value map to store data. This may be on disk or in memory. +There should be plenty of mature and fast options like LMDB. + +**Node index** +The node index is the index of a node array which represents the Merkle tree. + +For example, a binary Merkle tree with 2 levels and leaves `a, b, c, d` can be +represented with this node array: + +``` +[a, b, c, d, h(a, b), h(c, d), root] +``` + +where h() is a hash function. + +`a` is at index 0. + +`h(a, b)` is at index 4. + +**Zero values** + +Upon initialisation of the tree, we compute the zero values. This is the empty +node per level. + +`[z, h(z, z), h(h(z, z), h(z, z))]` + +If `c` and `d` are empty leaves, then the nodes can be represented as such: + +``` +{ + 0: a, + 1: b, + 4: h(a, b), + 6: root = h(h(a, b), h(z, z)) +} +``` + +There is no need to store the values of items at indices 2, 3, and 5, since +those are precalculated zero values. + +**Computing Merkle proofs** + +Example 1: there are 4 leaves in a binary MT and all leaves are non-zero. The +nodes array is: + +``` +[a, b, c, d, h(a, b), h(c, d), root] +``` + +The representation of the node array as a key-value map is as such: +``` +{ + 0: a, + 1: b, + 2: c, + 3: d, + 4: h(a, b), + 5: h(c, d), + 6: root = h(h(a, b), h(c, d)) +} +``` + +We want to compute the Merkle proof of leaf 2 (whose value is c). + +First, compute the path indices. + +``` +let r = Math.floor(index / arity) +indices = [] +for i in range(0, levels): + p = r % arity // e.g. p % 2 for a binary tree + indices.push(p) + r = Math.floor(r /leavesPerNode) +``` + +When `index == 2`, `indices == [1, 0]`. + +Next, compute the path elements. + +``` + +pathElements = [] +j = 1 +for i in indices: + e = nodeArray[j * arity + i] + pathElements.push(e) + j ++ +``` + +As such: + +``` +pathElements = [ + nodeArray[1 * 2 + 1 = 3] = d, + nodeArray[2 * 2 + 0 = 4] = h(a, b), +] +``` + +To verify the Merkle path: + +``` +root == h(d, h(a, b)) +``` + +**Updates** + +To perform an update, only `depth - 1` hashes have to be computed. + +Consider again this binary Merkle tree with 4 leaves: + +``` +[a, b, c, d, h(a, b), h(c, d), h(...)] +``` + +To update the leaf at index 2 (whose value is c), only 2 hash operations are +needed: + +``` +[a, b, c*, d, h(a, b), h(c*, d), h(...)*] +``` diff --git a/packages/macisdk/src/optimisedmt/index.ts b/packages/macisdk/src/optimisedmt/index.ts new file mode 100644 index 00000000..18fbbc44 --- /dev/null +++ b/packages/macisdk/src/optimisedmt/index.ts @@ -0,0 +1,25 @@ +import { utils } from "ethers"; +import { OptimisedMT } from "./OptimisedMT"; + + +/* + * Hash an array of uint256 values the same way that the EVM does. + */ +const hashArray = (input: bigint[]): bigint => { + const types: string[] = []; + for (let i = 0; i < input.length; i++) { + types.push("uint256"); + } + return ( + BigInt( + utils.soliditySha256( + types, + input.map((x) => x.toString()) + ) + ) % SNARK_FIELD_SIZE + ); +}; + +const SNARK_FIELD_SIZE = BigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617"); + +export { hashArray, OptimisedMT }; diff --git a/packages/macisdk/src/poseidonencryption/index.ts b/packages/macisdk/src/poseidonencryption/index.ts new file mode 100644 index 00000000..9985ea05 --- /dev/null +++ b/packages/macisdk/src/poseidonencryption/index.ts @@ -0,0 +1,3 @@ +export {encrypt as poseidonEncrypt, decrypt as poseidonDecrypt} from "./poseidonCipher"; +export {poseidon} from "./poseidon"; +export {poseidonPerm} from "./poseidonPerm"; \ No newline at end of file diff --git a/packages/macisdk/src/poseidonencryption/poseidon.ts b/packages/macisdk/src/poseidonencryption/poseidon.ts new file mode 100644 index 00000000..b6e3e2b5 --- /dev/null +++ b/packages/macisdk/src/poseidonencryption/poseidon.ts @@ -0,0 +1,5 @@ +import {poseidonPerm} from "./poseidonPerm"; + +export function poseidon(inputs) { + return poseidonPerm([0, ...inputs])[0]; +} \ No newline at end of file diff --git a/packages/macisdk/src/poseidonencryption/poseidonCipher.ts b/packages/macisdk/src/poseidonencryption/poseidonCipher.ts new file mode 100644 index 00000000..4a7756f7 --- /dev/null +++ b/packages/macisdk/src/poseidonencryption/poseidonCipher.ts @@ -0,0 +1,125 @@ +import {Scalar, ZqField } from "ffjavascript"; +import { poseidonPerm } from "./poseidonPerm"; + + +const assert = (condition: boolean) => { + if (!condition) { + throw new Error('Assertion failed') + } +} +// Prime 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 +const F = new ZqField(Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617")); + +const two128 = F.e("340282366920938463463374607431768211456"); + +function encrypt(msg, key, nonce) { + assert(Array.isArray(msg)); + assert(Array.isArray(key)); + assert(key.length === 2); + msg = msg.map((x) => F.e(x)); + + // The nonce must be less than 2 ^ 128 + assert(nonce < two128); + + const message = [...msg]; + + // Pad the message if needed + while (message.length % 3 > 0) { + message.push(F.zero); + } + + let cipherLength = message.length; + + // Create the initial state + let state = [ + F.zero, + F.e(key[0]), + F.e(key[1]), + F.add( + F.e(nonce), + F.mul(F.e(msg.length), two128), + ), + ]; + + const ciphertext = [] as any; + + for (let i = 0; i < cipherLength / 3; i ++) { + // Iterate Poseidon on the state + state = poseidonPerm(state); + + // Absorb three elements of message + state[1] = F.add(state[1], F.e(message[i * 3])); + state[2] = F.add(state[2], F.e(message[i * 3 + 1])); + state[3] = F.add(state[3], F.e(message[i * 3 + 2])); + + // Release three elements of the ciphertext + ciphertext.push(state[1]); + ciphertext.push(state[2]); + ciphertext.push(state[3]); + } + + // Iterate Poseidon on the state one last time + state = poseidonPerm(state); + + // Release the last ciphertext element + ciphertext.push(state[1]); + + return ciphertext; +} + +function decrypt(ciphertext, key, nonce, length) { + assert(Array.isArray(ciphertext)); + assert(Array.isArray(key)); + assert(key.length === 2); + + // Create the initial state + let state = [ + F.zero, + F.e(key[0]), + F.e(key[1]), + F.add( + F.e(nonce), + F.mul(F.e(length), two128), + ), + ]; + + const message = [] as any; + + let n = Math.floor(ciphertext.length / 3); + + for (let i = 0; i < n; i ++) { + // Iterate Poseidon on the state + state = poseidonPerm(state); + + // Release three elements of the message + message.push(F.sub(ciphertext[i * 3], state[1])); + message.push(F.sub(ciphertext[i * 3 + 1], state[2])); + message.push(F.sub(ciphertext[i * 3 + 2], state[3])); + + // Modify the state + state[1] = ciphertext[i * 3]; + state[2] = ciphertext[i * 3 + 1]; + state[3] = ciphertext[i * 3 + 2]; + } + + // If length > 3, check if the last (3 - (l mod 3)) elements of the message + // are 0 + if (length > 3) { + if (length % 3 === 2) { + assert(F.eq(message[message.length - 1], F.zero)); + } else if (length % 3 === 1) { + assert(F.eq(message[message.length - 1], F.zero)); + assert(F.eq(message[message.length - 2], F.zero)); + } + } + + // Iterate Poseidon on the state one last time + state = poseidonPerm(state); + + // Check the last ciphertext element + assert(F.eq(ciphertext[ciphertext.length - 1], state[1])); + + return message.slice(0, length); +} + +export { encrypt, decrypt }; diff --git a/packages/macisdk/src/poseidonencryption/poseidonPerm.ts b/packages/macisdk/src/poseidonencryption/poseidonPerm.ts new file mode 100644 index 00000000..431670eb --- /dev/null +++ b/packages/macisdk/src/poseidonencryption/poseidonPerm.ts @@ -0,0 +1,51 @@ +import {Scalar, ZqField , utils as ffutils} from "ffjavascript"; +import poseidon_constants from "./poseidon_constants.json"; + +const assert = (condition: boolean) => { + if (!condition) { + throw new Error('Assertion failed') + } +} +// const { } = require("ffjavascript").utils; + +// Prime 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 +const F = new ZqField(Scalar.fromString("21888242871839275222246405745257275088548364400416034343698204186575808495617")); + +// Parameters are generated by a reference script https://extgit.iaik.tugraz.at/krypto/hadeshash/-/blob/master/code/generate_parameters_grain.sage +// Used like so: sage generate_parameters_grain.sage 1 0 254 2 8 56 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 +const { C, M } = ffutils.unstringifyBigInts(poseidon_constants); + +// Using recommended parameters from whitepaper https://eprint.iacr.org/2019/458.pdf (table 2, table 8) +// Generated by https://extgit.iaik.tugraz.at/krypto/hadeshash/-/blob/master/code/calc_round_numbers.py +// And rounded up to nearest integer that divides by t +const N_ROUNDS_F = 8; +const N_ROUNDS_P = [56, 57, 56, 60, 60, 63, 64, 63]; + +const pow5 = a => F.mul(a, F.square(F.square(a, a))); + +function poseidonPerm(inputs) { + assert(inputs.length > 0); + assert(inputs.length < N_ROUNDS_P.length); + + const t = inputs.length; + const nRoundsF = N_ROUNDS_F; + const nRoundsP = N_ROUNDS_P[t - 2]; + + let state = inputs.map(a => F.e(a)); + for (let r = 0; r < nRoundsF + nRoundsP; r++) { + state = state.map((a, i) => F.add(a, C[t - 2][r * t + i])); + + if (r < nRoundsF / 2 || r >= nRoundsF / 2 + nRoundsP) { + state = state.map(a => pow5(a)); + } else { + state[0] = pow5(state[0]); + } + + state = state.map((_, i) => + state.reduce((acc, a, j) => F.add(acc, F.mul(M[t - 2][i][j], a)), F.zero) + ); + } + return state.map((x) => F.normalize(x)); +} + +export { poseidonPerm }; diff --git a/packages/macisdk/src/poseidonencryption/poseidon_constants.json b/packages/macisdk/src/poseidonencryption/poseidon_constants.json new file mode 100644 index 00000000..d15d818d --- /dev/null +++ b/packages/macisdk/src/poseidonencryption/poseidon_constants.json @@ -0,0 +1,206 @@ +{ + "C": [ + ["0x09c46e9ec68e9bd4fe1faaba294cba38a71aa177534cdd1b6c7dc0dbd0abd7a7", "0x0c0356530896eec42a97ed937f3135cfc5142b3ae405b8343c1d83ffa604cb81", "0x1e28a1d935698ad1142e51182bb54cf4a00ea5aabd6268bd317ea977cc154a30", "0x27af2d831a9d2748080965db30e298e40e5757c3e008db964cf9e2b12b91251f", "0x1e6f11ce60fc8f513a6a3cfe16ae175a41291462f214cd0879aaf43545b74e03", "0x2a67384d3bbd5e438541819cb681f0be04462ed14c3613d8f719206268d142d3", "0x0b66fdf356093a611609f8e12fbfecf0b985e381f025188936408f5d5c9f45d0", "0x012ee3ec1e78d470830c61093c2ade370b26c83cc5cebeeddaa6852dbdb09e21", "0x0252ba5f6760bfbdfd88f67f8175e3fd6cd1c431b099b6bb2d108e7b445bb1b9", "0x179474cceca5ff676c6bec3cef54296354391a8935ff71d6ef5aeaad7ca932f1", "0x2c24261379a51bfa9228ff4a503fd4ed9c1f974a264969b37e1a2589bbed2b91", "0x1cc1d7b62692e63eac2f288bd0695b43c2f63f5001fc0fc553e66c0551801b05", "0x255059301aada98bb2ed55f852979e9600784dbf17fbacd05d9eff5fd9c91b56", "0x28437be3ac1cb2e479e1f5c0eccd32b3aea24234970a8193b11c29ce7e59efd9", "0x28216a442f2e1f711ca4fa6b53766eb118548da8fb4f78d4338762c37f5f2043", "0x2c1f47cd17fa5adf1f39f4e7056dd03feee1efce03094581131f2377323482c9", "0x07abad02b7a5ebc48632bcc9356ceb7dd9dafca276638a63646b8566a621afc9", "0x0230264601ffdf29275b33ffaab51dfe9429f90880a69cd137da0c4d15f96c3c", "0x1bc973054e51d905a0f168656497ca40a864414557ee289e717e5d66899aa0a9", "0x2e1c22f964435008206c3157e86341edd249aff5c2d8421f2a6b22288f0a67fc", "0x1224f38df67c5378121c1d5f461bbc509e8ea1598e46c9f7a70452bc2bba86b8", "0x02e4e69d8ba59e519280b4bd9ed0068fd7bfe8cd9dfeda1969d2989186cde20e", "0x1f1eccc34aaba0137f5df81fc04ff3ee4f19ee364e653f076d47e9735d98018e", "0x1672ad3d709a353974266c3039a9a7311424448032cd1819eacb8a4d4284f582", "0x283e3fdc2c6e420c56f44af5192b4ae9cda6961f284d24991d2ed602df8c8fc7", "0x1c2a3d120c550ecfd0db0957170fa013683751f8fdff59d6614fbd69ff394bcc", "0x216f84877aac6172f7897a7323456efe143a9a43773ea6f296cb6b8177653fbd", "0x2c0d272becf2a75764ba7e8e3e28d12bceaa47ea61ca59a411a1f51552f94788", "0x16e34299865c0e28484ee7a74c454e9f170a5480abe0508fcb4a6c3d89546f43", "0x175ceba599e96f5b375a232a6fb9cc71772047765802290f48cd939755488fc5", "0x0c7594440dc48c16fead9e1758b028066aa410bfbc354f54d8c5ffbb44a1ee32", "0x1a3c29bc39f21bb5c466db7d7eb6fd8f760e20013ccf912c92479882d919fd8d", "0x0ccfdd906f3426e5c0986ea049b253400855d349074f5a6695c8eeabcd22e68f", "0x14f6bc81d9f186f62bdb475ce6c9411866a7a8a3fd065b3ce0e699b67dd9e796", "0x0962b82789fb3d129702ca70b2f6c5aacc099810c9c495c888edeb7386b97052", "0x1a880af7074d18b3bf20c79de25127bc13284ab01ef02575afef0c8f6a31a86d", "0x10cba18419a6a332cd5e77f0211c154b20af2924fc20ff3f4c3012bb7ae9311b", "0x057e62a9a8f89b3ebdc76ba63a9eaca8fa27b7319cae3406756a2849f302f10d", "0x287c971de91dc0abd44adf5384b4988cb961303bbf65cff5afa0413b44280cee", "0x21df3388af1687bbb3bca9da0cca908f1e562bc46d4aba4e6f7f7960e306891d", "0x1be5c887d25bce703e25cc974d0934cd789df8f70b498fd83eff8b560e1682b3", "0x268da36f76e568fb68117175cea2cd0dd2cb5d42fda5acea48d59c2706a0d5c1", "0x0e17ab091f6eae50c609beaf5510ececc5d8bb74135ebd05bd06460cc26a5ed6", "0x04d727e728ffa0a67aee535ab074a43091ef62d8cf83d270040f5caa1f62af40", "0x0ddbd7bf9c29341581b549762bc022ed33702ac10f1bfd862b15417d7e39ca6e", "0x2790eb3351621752768162e82989c6c234f5b0d1d3af9b588a29c49c8789654b", "0x1e457c601a63b73e4471950193d8a570395f3d9ab8b2fd0984b764206142f9e9", "0x21ae64301dca9625638d6ab2bbe7135ffa90ecd0c43ff91fc4c686fc46e091b0", "0x0379f63c8ce3468d4da293166f494928854be9e3432e09555858534eed8d350b", "0x002d56420359d0266a744a080809e054ca0e4921a46686ac8c9f58a324c35049", "0x123158e5965b5d9b1d68b3cd32e10bbeda8d62459e21f4090fc2c5af963515a6", "0x0be29fc40847a941661d14bbf6cbe0420fbb2b6f52836d4e60c80eb49cad9ec1", "0x1ac96991dec2bb0557716142015a453c36db9d859cad5f9a233802f24fdf4c1a", "0x1596443f763dbcc25f4964fc61d23b3e5e12c9fa97f18a9251ca3355bcb0627e", "0x12e0bcd3654bdfa76b2861d4ec3aeae0f1857d9f17e715aed6d049eae3ba3212", "0x0fc92b4f1bbea82b9ea73d4af9af2a50ceabac7f37154b1904e6c76c7cf964ba", "0x1f9c0b1610446442d6f2e592a8013f40b14f7c7722236f4f9c7e965233872762", "0x0ebd74244ae72675f8cde06157a782f4050d914da38b4c058d159f643dbbf4d3", "0x2cb7f0ed39e16e9f69a9fafd4ab951c03b0671e97346ee397a839839dccfc6d1", "0x1a9d6e2ecff022cc5605443ee41bab20ce761d0514ce526690c72bca7352d9bf", "0x2a115439607f335a5ea83c3bc44a9331d0c13326a9a7ba3087da182d648ec72f", "0x23f9b6529b5d040d15b8fa7aee3e3410e738b56305cd44f29535c115c5a4c060", "0x05872c16db0f72a2249ac6ba484bb9c3a3ce97c16d58b68b260eb939f0e6e8a7", "0x1300bdee08bb7824ca20fb80118075f40219b6151d55b5c52b624a7cdeddf6a7", "0x19b9b63d2f108e17e63817863a8f6c288d7ad29916d98cb1072e4e7b7d52b376", "0x015bee1357e3c015b5bda237668522f613d1c88726b5ec4224a20128481b4f7f", "0x2953736e94bb6b9f1b9707a4f1615e4efe1e1ce4bab218cbea92c785b128ffd1", "0x0b069353ba091618862f806180c0385f851b98d372b45f544ce7266ed6608dfc", "0x304f74d461ccc13115e4e0bcfb93817e55aeb7eb9306b64e4f588ac97d81f429", "0x15bbf146ce9bca09e8a33f5e77dfe4f5aad2a164a4617a4cb8ee5415cde913fc", "0x0ab4dfe0c2742cde44901031487964ed9b8f4b850405c10ca9ff23859572c8c6", "0x0e32db320a044e3197f45f7649a19675ef5eedfea546dea9251de39f9639779a", "0x0a1756aa1f378ca4b27635a78b6888e66797733a82774896a3078efa516da016", "0x044c4a33b10f693447fd17177f952ef895e61d328f85efa94254d6a2a25d93ef", "0x2ed3611b725b8a70be655b537f66f700fe0879d79a496891d37b07b5466c4b8b", "0x1f9ba4e8bab7ce42c8ecc3d722aa2e0eadfdeb9cfdd347b5d8339ea7120858aa", "0x1b233043052e8c288f7ee907a84e518aa38e82ac4502066db74056f865c5d3da", "0x2431e1cc164bb8d074031ab72bd55b4c902053bfc0f14db0ca2f97b020875954", "0x082f934c91f5aac330cd6953a0a7db45a13e322097583319a791f273965801fd", "0x2b9a0a223e7538b0a34be074315542a3c77245e2ae7cbe999ad6bb930c48997c", "0x0e1cd91edd2cfa2cceb85483b887a9be8164163e75a8a00eb0b589cc70214e7d", "0x2e1eac0f2bfdfd63c951f61477e3698999774f19854d00f588d324601cebe2f9", "0x0cbfa95f37fb74060c76158e769d6d157345784d8efdb33c23d748115b500b83", "0x08f05b3be923ed44d65ad49d8a61e9a676d991e3a77513d9980c232dfa4a4f84", "0x22719e2a070bcd0852bf8e21984d0443e7284925dc0758a325a2dd510c047ef6", "0x041f596a9ee1cb2bc060f7fcc3a1ab4c7bdbf036119982c0f41f62b2f26830c0", "0x233fd35de1be520a87628eb06f6b1d4c021be1c2d0dc464a19fcdd0986b10f89", "0x0524b46d1aa87a5e4325e0a423ebc810d31e078aa1b4707eefcb453c61c9c267", "0x2c34f424c81e5716ce47fcac894b85824227bb954b0f3199cc4486237c515211", "0x0b5f2a4b63387819207effc2b5541fb72dd2025b5457cc97f33010327de4915e", "0x22207856082ccc54c5b72fe439d2cfd6c17435d2f57af6ceaefac41fe05c659f", "0x24d57a8bf5da63fe4e24159b7f8950b5cdfb210194caf79f27854048ce2c8171", "0x0afab181fdd5e0583b371d75bd693f98374ad7097bb01a8573919bb23b79396e", "0x2dba9b108f208772998a52efac7cbd5676c0057194c16c0bf16290d62b1128ee", "0x26349b66edb8b16f56f881c788f53f83cbb83de0bd592b255aff13e6bce420b3", "0x25af7ce0e5e10357685e95f92339753ad81a56d28ecc193b235288a3e6f137db", "0x25b4ce7bd2294390c094d6a55edd68b970eed7aae88b2bff1f7c0187fe35011f", "0x22c543f10f6c89ec387e53f1908a88e5de9cef28ebdf30b18cb9d54c1e02b631", "0x0236f93e7789c4724fc7908a9f191e1e425e906a919d7a34df668e74882f87a9", "0x29350b401166ca010e7d27e37d05da99652bdae114eb01659cb497af980c4b52", "0x0eed787d65820d3f6bd31bbab547f75a65edb75d844ebb89ee1260916652363f", "0x07cc1170f13b46f2036a753f520b3291fdcd0e99bd94297d1906f656f4de6fad", "0x22b939233b1d7205f49bcf613a3d30b1908786d7f9f5d10c2059435689e8acea", "0x01451762a0aab81c8aad1dc8bc33e870740f083a5aa85438add650ace60ae5a6", "0x23506bb5d8727d4461fabf1025d46d1fe32eaa61dec7da57e704fec0892fce89", "0x2e484c44e838aea0bac06ae3f71bdd092a3709531e1efea97f8bd68907355522", "0x0f4bc7d07ebafd64379e78c50bd2e42baf4a594545cedc2545418da26835b54c", "0x1f4d3c8f6583e9e5fa76637862faaee851582388725df460e620996d50d8e74e", "0x093514e0c70711f82660d07be0e4a988fae02abc7b681d9153eb9bcb48fe7389", "0x1adab0c8e2b3bad346699a2b5f3bc03643ee83ece47228f24a58e0a347e153d8", "0x1672b1726057d99dd14709ebb474641a378c1b94b8072bac1a22dbef9e80dad2", "0x1dfd53d4576af2e38f44f53fdcab468cc5d8e2fae0acc4ee30d47b239b479c14", "0x0c6888a10b75b0f3a70a36263a37e17fe6d77d640f6fc3debc7f207753205c60", "0x1addb933a65be77092b34a7e77d12fe8611a61e00ee6848b85091ecca9d1e508", "0x00d7540dcd268a845c10ae18d1de933cf638ff5425f0afff7935628e299d1791", "0x140c0e42687e9ead01b2827a5664ca9c26fedde4acd99db1d316939d20b82c0e", "0x2f0c3a115d4317d191ba89b8d13d1806c20a0f9b24f8c5edc091e2ae56565984", "0x0c4ee778ff7c14553006ed220cf9c81008a0cff670b22b82d8c538a1dc958c61", "0x1704f2766d46f82c3693f00440ccc3609424ed26c0acc66227c3d7485de74c69", "0x2f2d19cc3ea5d78ea7a02c1b51d244abf0769c9f8544e40239b66fe9009c3cfa", "0x1ae03853b75fcaba5053f112e2a8e8dcdd7ee6cb9cfed9c7d6c766a806fc6629", "0x0971aabf795241df51d131d0fa61aa5f3556921b2d6f014e4e41a86ddaf056d5", "0x1408c316e6014e1a91d4cf6b6e0de73eda624f8380df1c875f5c29f7bfe2f646", "0x1667f3fe2edbe850248abe42b543093b6c89f1f773ef285341691f39822ef5bd", "0x13bf7c5d0d2c4376a48b0a03557cdf915b81718409e5c133424c69576500fe37", "0x07620a6dfb0b6cec3016adf3d3533c24024b95347856b79719bc0ba743a62c2c", "0x1574c7ef0c43545f36a8ca08bdbdd8b075d2959e2f322b731675de3e1982b4d0", "0x269e4b5b7a2eb21afd567970a717ceec5bd4184571c254fdc06e03a7ff8378f0"], + ["0x0ee9a592ba9a9518d05986d656f40c2114c4993c11bb29938d21d47304cd8e6e", "0x00f1445235f2148c5986587169fc1bcd887b08d4d00868df5696fff40956e864", "0x08dff3487e8ac99e1f29a058d0fa80b930c728730b7ab36ce879f3890ecf73f5", "0x2f27be690fdaee46c3ce28f7532b13c856c35342c84bda6e20966310fadc01d0", "0x2b2ae1acf68b7b8d2416bebf3d4f6234b763fe04b8043ee48b8327bebca16cf2", "0x0319d062072bef7ecca5eac06f97d4d55952c175ab6b03eae64b44c7dbf11cfa", "0x28813dcaebaeaa828a376df87af4a63bc8b7bf27ad49c6298ef7b387bf28526d", "0x2727673b2ccbc903f181bf38e1c1d40d2033865200c352bc150928adddf9cb78", "0x234ec45ca27727c2e74abd2b2a1494cd6efbd43e340587d6b8fb9e31e65cc632", "0x15b52534031ae18f7f862cb2cf7cf760ab10a8150a337b1ccd99ff6e8797d428", "0x0dc8fad6d9e4b35f5ed9a3d186b79ce38e0e8a8d1b58b132d701d4eecf68d1f6", "0x1bcd95ffc211fbca600f705fad3fb567ea4eb378f62e1fec97805518a47e4d9c", "0x10520b0ab721cadfe9eff81b016fc34dc76da36c2578937817cb978d069de559", "0x1f6d48149b8e7f7d9b257d8ed5fbbaf42932498075fed0ace88a9eb81f5627f6", "0x1d9655f652309014d29e00ef35a2089bfff8dc1c816f0dc9ca34bdb5460c8705", "0x04df5a56ff95bcafb051f7b1cd43a99ba731ff67e47032058fe3d4185697cc7d", "0x0672d995f8fff640151b3d290cedaf148690a10a8c8424a7f6ec282b6e4be828", "0x099952b414884454b21200d7ffafdd5f0c9a9dcc06f2708e9fc1d8209b5c75b9", "0x052cba2255dfd00c7c483143ba8d469448e43586a9b4cd9183fd0e843a6b9fa6", "0x0b8badee690adb8eb0bd74712b7999af82de55707251ad7716077cb93c464ddc", "0x119b1590f13307af5a1ee651020c07c749c15d60683a8050b963d0a8e4b2bdd1", "0x03150b7cd6d5d17b2529d36be0f67b832c4acfc884ef4ee5ce15be0bfb4a8d09", "0x2cc6182c5e14546e3cf1951f173912355374efb83d80898abe69cb317c9ea565", "0x005032551e6378c450cfe129a404b3764218cadedac14e2b92d2cd73111bf0f9", "0x233237e3289baa34bb147e972ebcb9516469c399fcc069fb88f9da2cc28276b5", "0x05c8f4f4ebd4a6e3c980d31674bfbe6323037f21b34ae5a4e80c2d4c24d60280", "0x0a7b1db13042d396ba05d818a319f25252bcf35ef3aeed91ee1f09b2590fc65b", "0x2a73b71f9b210cf5b14296572c9d32dbf156e2b086ff47dc5df542365a404ec0", "0x1ac9b0417abcc9a1935107e9ffc91dc3ec18f2c4dbe7f22976a760bb5c50c460", "0x12c0339ae08374823fabb076707ef479269f3e4d6cb104349015ee046dc93fc0", "0x0b7475b102a165ad7f5b18db4e1e704f52900aa3253baac68246682e56e9a28e", "0x037c2849e191ca3edb1c5e49f6e8b8917c843e379366f2ea32ab3aa88d7f8448", "0x05a6811f8556f014e92674661e217e9bd5206c5c93a07dc145fdb176a716346f", "0x29a795e7d98028946e947b75d54e9f044076e87a7b2883b47b675ef5f38bd66e", "0x20439a0c84b322eb45a3857afc18f5826e8c7382c8a1585c507be199981fd22f", "0x2e0ba8d94d9ecf4a94ec2050c7371ff1bb50f27799a84b6d4a2a6f2a0982c887", "0x143fd115ce08fb27ca38eb7cce822b4517822cd2109048d2e6d0ddcca17d71c8", "0x0c64cbecb1c734b857968dbbdcf813cdf8611659323dbcbfc84323623be9caf1", "0x028a305847c683f646fca925c163ff5ae74f348d62c2b670f1426cef9403da53", "0x2e4ef510ff0b6fda5fa940ab4c4380f26a6bcb64d89427b824d6755b5db9e30c", "0x0081c95bc43384e663d79270c956ce3b8925b4f6d033b078b96384f50579400e", "0x2ed5f0c91cbd9749187e2fade687e05ee2491b349c039a0bba8a9f4023a0bb38", "0x30509991f88da3504bbf374ed5aae2f03448a22c76234c8c990f01f33a735206", "0x1c3f20fd55409a53221b7c4d49a356b9f0a1119fb2067b41a7529094424ec6ad", "0x10b4e7f3ab5df003049514459b6e18eec46bb2213e8e131e170887b47ddcb96c", "0x2a1982979c3ff7f43ddd543d891c2abddd80f804c077d775039aa3502e43adef", "0x1c74ee64f15e1db6feddbead56d6d55dba431ebc396c9af95cad0f1315bd5c91", "0x07533ec850ba7f98eab9303cace01b4b9e4f2e8b82708cfa9c2fe45a0ae146a0", "0x21576b438e500449a151e4eeaf17b154285c68f42d42c1808a11abf3764c0750", "0x2f17c0559b8fe79608ad5ca193d62f10bce8384c815f0906743d6930836d4a9e", "0x2d477e3862d07708a79e8aae946170bc9775a4201318474ae665b0b1b7e2730e", "0x162f5243967064c390e095577984f291afba2266c38f5abcd89be0f5b2747eab", "0x2b4cb233ede9ba48264ecd2c8ae50d1ad7a8596a87f29f8a7777a70092393311", "0x2c8fbcb2dd8573dc1dbaf8f4622854776db2eece6d85c4cf4254e7c35e03b07a", "0x1d6f347725e4816af2ff453f0cd56b199e1b61e9f601e9ade5e88db870949da9", "0x204b0c397f4ebe71ebc2d8b3df5b913df9e6ac02b68d31324cd49af5c4565529", "0x0c4cb9dc3c4fd8174f1149b3c63c3c2f9ecb827cd7dc25534ff8fb75bc79c502", "0x174ad61a1448c899a25416474f4930301e5c49475279e0639a616ddc45bc7b54", "0x1a96177bcf4d8d89f759df4ec2f3cde2eaaa28c177cc0fa13a9816d49a38d2ef", "0x066d04b24331d71cd0ef8054bc60c4ff05202c126a233c1a8242ace360b8a30a", "0x2a4c4fc6ec0b0cf52195782871c6dd3b381cc65f72e02ad527037a62aa1bd804", "0x13ab2d136ccf37d447e9f2e14a7cedc95e727f8446f6d9d7e55afc01219fd649", "0x1121552fca26061619d24d843dc82769c1b04fcec26f55194c2e3e869acc6a9a", "0x00ef653322b13d6c889bc81715c37d77a6cd267d595c4a8909a5546c7c97cff1", "0x0e25483e45a665208b261d8ba74051e6400c776d652595d9845aca35d8a397d3", "0x29f536dcb9dd7682245264659e15d88e395ac3d4dde92d8c46448db979eeba89", "0x2a56ef9f2c53febadfda33575dbdbd885a124e2780bbea170e456baace0fa5be", "0x1c8361c78eb5cf5decfb7a2d17b5c409f2ae2999a46762e8ee416240a8cb9af1", "0x151aff5f38b20a0fc0473089aaf0206b83e8e68a764507bfd3d0ab4be74319c5", "0x04c6187e41ed881dc1b239c88f7f9d43a9f52fc8c8b6cdd1e76e47615b51f100", "0x13b37bd80f4d27fb10d84331f6fb6d534b81c61ed15776449e801b7ddc9c2967", "0x01a5c536273c2d9df578bfbd32c17b7a2ce3664c2a52032c9321ceb1c4e8a8e4", "0x2ab3561834ca73835ad05f5d7acb950b4a9a2c666b9726da832239065b7c3b02", "0x1d4d8ec291e720db200fe6d686c0d613acaf6af4e95d3bf69f7ed516a597b646", "0x041294d2cc484d228f5784fe7919fd2bb925351240a04b711514c9c80b65af1d", "0x154ac98e01708c611c4fa715991f004898f57939d126e392042971dd90e81fc6", "0x0b339d8acca7d4f83eedd84093aef51050b3684c88f8b0b04524563bc6ea4da4", "0x0955e49e6610c94254a4f84cfbab344598f0e71eaff4a7dd81ed95b50839c82e", "0x06746a6156eba54426b9e22206f15abca9a6f41e6f535c6f3525401ea0654626", "0x0f18f5a0ecd1423c496f3820c549c27838e5790e2bd0a196ac917c7ff32077fb", "0x04f6eeca1751f7308ac59eff5beb261e4bb563583ede7bc92a738223d6f76e13", "0x2b56973364c4c4f5c1a3ec4da3cdce038811eb116fb3e45bc1768d26fc0b3758", "0x123769dd49d5b054dcd76b89804b1bcb8e1392b385716a5d83feb65d437f29ef", "0x2147b424fc48c80a88ee52b91169aacea989f6446471150994257b2fb01c63e9", "0x0fdc1f58548b85701a6c5505ea332a29647e6f34ad4243c2ea54ad897cebe54d", "0x12373a8251fea004df68abcf0f7786d4bceff28c5dbbe0c3944f685cc0a0b1f2", "0x21e4f4ea5f35f85bad7ea52ff742c9e8a642756b6af44203dd8a1f35c1a90035", "0x16243916d69d2ca3dfb4722224d4c462b57366492f45e90d8a81934f1bc3b147", "0x1efbe46dd7a578b4f66f9adbc88b4378abc21566e1a0453ca13a4159cac04ac2", "0x07ea5e8537cf5dd08886020e23a7f387d468d5525be66f853b672cc96a88969a", "0x05a8c4f9968b8aa3b7b478a30f9a5b63650f19a75e7ce11ca9fe16c0b76c00bc", "0x20f057712cc21654fbfe59bd345e8dac3f7818c701b9c7882d9d57b72a32e83f", "0x04a12ededa9dfd689672f8c67fee31636dcd8e88d01d49019bd90b33eb33db69", "0x27e88d8c15f37dcee44f1e5425a51decbd136ce5091a6767e49ec9544ccd101a", "0x2feed17b84285ed9b8a5c8c5e95a41f66e096619a7703223176c41ee433de4d1", "0x1ed7cc76edf45c7c404241420f729cf394e5942911312a0d6972b8bd53aff2b8", "0x15742e99b9bfa323157ff8c586f5660eac6783476144cdcadf2874be45466b1a", "0x1aac285387f65e82c895fc6887ddf40577107454c6ec0317284f033f27d0c785", "0x25851c3c845d4790f9ddadbdb6057357832e2e7a49775f71ec75a96554d67c77", "0x15a5821565cc2ec2ce78457db197edf353b7ebba2c5523370ddccc3d9f146a67", "0x2411d57a4813b9980efa7e31a1db5966dcf64f36044277502f15485f28c71727", "0x002e6f8d6520cd4713e335b8c0b6d2e647e9a98e12f4cd2558828b5ef6cb4c9b", "0x2ff7bc8f4380cde997da00b616b0fcd1af8f0e91e2fe1ed7398834609e0315d2", "0x00b9831b948525595ee02724471bcd182e9521f6b7bb68f1e93be4febb0d3cbe", "0x0a2f53768b8ebf6a86913b0e57c04e011ca408648a4743a87d77adbf0c9c3512", "0x00248156142fd0373a479f91ff239e960f599ff7e94be69b7f2a290305e1198d", "0x171d5620b87bfb1328cf8c02ab3f0c9a397196aa6a542c2350eb512a2b2bcda9", "0x170a4f55536f7dc970087c7c10d6fad760c952172dd54dd99d1045e4ec34a808", "0x29aba33f799fe66c2ef3134aea04336ecc37e38c1cd211ba482eca17e2dbfae1", "0x1e9bc179a4fdd758fdd1bb1945088d47e70d114a03f6a0e8b5ba650369e64973", "0x1dd269799b660fad58f7f4892dfb0b5afeaad869a9c4b44f9c9e1c43bdaf8f09", "0x22cdbc8b70117ad1401181d02e15459e7ccd426fe869c7c95d1dd2cb0f24af38", "0x0ef042e454771c533a9f57a55c503fcefd3150f52ed94a7cd5ba93b9c7dacefd", "0x11609e06ad6c8fe2f287f3036037e8851318e8b08a0359a03b304ffca62e8284", "0x1166d9e554616dba9e753eea427c17b7fecd58c076dfe42708b08f5b783aa9af", "0x2de52989431a859593413026354413db177fbf4cd2ac0b56f855a888357ee466", "0x3006eb4ffc7a85819a6da492f3a8ac1df51aee5b17b8e89d74bf01cf5f71e9ad", "0x2af41fbb61ba8a80fdcf6fff9e3f6f422993fe8f0a4639f962344c8225145086", "0x119e684de476155fe5a6b41a8ebc85db8718ab27889e85e781b214bace4827c3", "0x1835b786e2e8925e188bea59ae363537b51248c23828f047cff784b97b3fd800", "0x28201a34c594dfa34d794996c6433a20d152bac2a7905c926c40e285ab32eeb6", "0x083efd7a27d1751094e80fefaf78b000864c82eb571187724a761f88c22cc4e7", "0x0b6f88a3577199526158e61ceea27be811c16df7774dd8519e079564f61fd13b", "0x0ec868e6d15e51d9644f66e1d6471a94589511ca00d29e1014390e6ee4254f5b", "0x2af33e3f866771271ac0c9b3ed2e1142ecd3e74b939cd40d00d937ab84c98591", "0x0b520211f904b5e7d09b5d961c6ace7734568c547dd6858b364ce5e47951f178", "0x0b2d722d0919a1aad8db58f10062a92ea0c56ac4270e822cca228620188a1d40", "0x1f790d4d7f8cf094d980ceb37c2453e957b54a9991ca38bbe0061d1ed6e562d4", "0x0171eb95dfbf7d1eaea97cd385f780150885c16235a2a6a8da92ceb01e504233", "0x0c2d0e3b5fd57549329bf6885da66b9b790b40defd2c8650762305381b168873", "0x1162fb28689c27154e5a8228b4e72b377cbcafa589e283c35d3803054407a18d", "0x2f1459b65dee441b64ad386a91e8310f282c5a92a89e19921623ef8249711bc0", "0x1e6ff3216b688c3d996d74367d5cd4c1bc489d46754eb712c243f70d1b53cfbb", "0x01ca8be73832b8d0681487d27d157802d741a6f36cdc2a0576881f9326478875", "0x1f7735706ffe9fc586f976d5bdf223dc680286080b10cea00b9b5de315f9650e", "0x2522b60f4ea3307640a0c2dce041fba921ac10a3d5f096ef4745ca838285f019", "0x23f0bee001b1029d5255075ddc957f833418cad4f52b6c3f8ce16c235572575b", "0x2bc1ae8b8ddbb81fcaac2d44555ed5685d142633e9df905f66d9401093082d59", "0x0f9406b8296564a37304507b8dba3ed162371273a07b1fc98011fcd6ad72205f", "0x2360a8eb0cc7defa67b72998de90714e17e75b174a52ee4acb126c8cd995f0a8", "0x15871a5cddead976804c803cbaef255eb4815a5e96df8b006dcbbc2767f88948", "0x193a56766998ee9e0a8652dd2f3b1da0362f4f54f72379544f957ccdeefb420f", "0x2a394a43934f86982f9be56ff4fab1703b2e63c8ad334834e4309805e777ae0f", "0x1859954cfeb8695f3e8b635dcb345192892cd11223443ba7b4166e8876c0d142", "0x04e1181763050e58013444dbcb99f1902b11bc25d90bbdca408d3819f4fed32b", "0x0fdb253dee83869d40c335ea64de8c5bb10eb82db08b5e8b1f5e5552bfd05f23", "0x058cbe8a9a5027bdaa4efb623adead6275f08686f1c08984a9d7c5bae9b4f1c0", "0x1382edce9971e186497eadb1aeb1f52b23b4b83bef023ab0d15228b4cceca59a", "0x03464990f045c6ee0819ca51fd11b0be7f61b8eb99f14b77e1e6634601d9e8b5", "0x23f7bfc8720dc296fff33b41f98ff83c6fcab4605db2eb5aaa5bc137aeb70a58", "0x0a59a158e3eec2117e6e94e7f0e9decf18c3ffd5e1531a9219636158bbaf62f2", "0x06ec54c80381c052b58bf23b312ffd3ce2c4eba065420af8f4c23ed0075fd07b", "0x118872dc832e0eb5476b56648e867ec8b09340f7a7bcb1b4962f0ff9ed1f9d01", "0x13d69fa127d834165ad5c7cba7ad59ed52e0b0f0e42d7fea95e1906b520921b1", "0x169a177f63ea681270b1c6877a73d21bde143942fb71dc55fd8a49f19f10c77b", "0x04ef51591c6ead97ef42f287adce40d93abeb032b922f66ffb7e9a5a7450544d", "0x256e175a1dc079390ecd7ca703fb2e3b19ec61805d4f03ced5f45ee6dd0f69ec", "0x30102d28636abd5fe5f2af412ff6004f75cc360d3205dd2da002813d3e2ceeb2", "0x10998e42dfcd3bbf1c0714bc73eb1bf40443a3fa99bef4a31fd31be182fcc792", "0x193edd8e9fcf3d7625fa7d24b598a1d89f3362eaf4d582efecad76f879e36860", "0x18168afd34f2d915d0368ce80b7b3347d1c7a561ce611425f2664d7aa51f0b5d", "0x29383c01ebd3b6ab0c017656ebe658b6a328ec77bc33626e29e2e95b33ea6111", "0x10646d2f2603de39a1f4ae5e7771a64a702db6e86fb76ab600bf573f9010c711", "0x0beb5e07d1b27145f575f1395a55bf132f90c25b40da7b3864d0242dcb1117fb", "0x16d685252078c133dc0d3ecad62b5c8830f95bb2e54b59abdffbf018d96fa336", "0x0a6abd1d833938f33c74154e0404b4b40a555bbbec21ddfafd672dd62047f01a", "0x1a679f5d36eb7b5c8ea12a4c2dedc8feb12dffeec450317270a6f19b34cf1860", "0x0980fb233bd456c23974d50e0ebfde4726a423eada4e8f6ffbc7592e3f1b93d6", "0x161b42232e61b84cbf1810af93a38fc0cece3d5628c9282003ebacb5c312c72b", "0x0ada10a90c7f0520950f7d47a60d5e6a493f09787f1564e5d09203db47de1a0b", "0x1a730d372310ba82320345a29ac4238ed3f07a8a2b4e121bb50ddb9af407f451", "0x2c8120f268ef054f817064c369dda7ea908377feaba5c4dffbda10ef58e8c556", "0x1c7c8824f758753fa57c00789c684217b930e95313bcb73e6e7b8649a4968f70", "0x2cd9ed31f5f8691c8e39e4077a74faa0f400ad8b491eb3f7b47b27fa3fd1cf77", "0x23ff4f9d46813457cf60d92f57618399a5e022ac321ca550854ae23918a22eea", "0x09945a5d147a4f66ceece6405dddd9d0af5a2c5103529407dff1ea58f180426d", "0x188d9c528025d4c2b67660c6b771b90f7c7da6eaa29d3f268a6dd223ec6fc630", "0x3050e37996596b7f81f68311431d8734dba7d926d3633595e0c0d8ddf4f0f47f", "0x15af1169396830a91600ca8102c35c426ceae5461e3f95d89d829518d30afd78", "0x1da6d09885432ea9a06d9f37f873d985dae933e351466b2904284da3320d8acc", "0x2796ea90d269af29f5f8acf33921124e4e4fad3dbe658945e546ee411ddaa9cb", "0x202d7dd1da0f6b4b0325c8b3307742f01e15612ec8e9304a7cb0319e01d32d60", "0x096d6790d05bb759156a952ba263d672a2d7f9c788f4c831a29dace4c0f8be5f", "0x054efa1f65b0fce283808965275d877b438da23ce5b13e1963798cb1447d25a4", "0x1b162f83d917e93edb3308c29802deb9d8aa690113b2e14864ccf6e18e4165f1", "0x21e5241e12564dd6fd9f1cdd2a0de39eedfefc1466cc568ec5ceb745a0506edc", "0x1cfb5662e8cf5ac9226a80ee17b36abecb73ab5f87e161927b4349e10e4bdf08", "0x0f21177e302a771bbae6d8d1ecb373b62c99af346220ac0129c53f666eb24100", "0x1671522374606992affb0dd7f71b12bec4236aede6290546bcef7e1f515c2320", "0x0fa3ec5b9488259c2eb4cf24501bfad9be2ec9e42c5cc8ccd419d2a692cad870", "0x193c0e04e0bd298357cb266c1506080ed36edce85c648cc085e8c57b1ab54bba", "0x102adf8ef74735a27e9128306dcbc3c99f6f7291cd406578ce14ea2adaba68f8", "0x0fe0af7858e49859e2a54d6f1ad945b1316aa24bfbdd23ae40a6d0cb70c3eab1", "0x216f6717bbc7dedb08536a2220843f4e2da5f1daa9ebdefde8a5ea7344798d22", "0x1da55cc900f0d21f4a3e694391918a1b3c23b2ac773c6b3ef88e2e4228325161"], + ["0x19b849f69450b06848da1d39bd5e4a4302bb86744edc26238b0878e269ed23e5", "0x265ddfe127dd51bd7239347b758f0a1320eb2cc7450acc1dad47f80c8dcf34d6", "0x199750ec472f1809e0f66a545e1e51624108ac845015c2aa3dfc36bab497d8aa", "0x157ff3fe65ac7208110f06a5f74302b14d743ea25067f0ffd032f787c7f1cdf8", "0x2e49c43c4569dd9c5fd35ac45fca33f10b15c590692f8beefe18f4896ac94902", "0x0e35fb89981890520d4aef2b6d6506c3cb2f0b6973c24fa82731345ffa2d1f1e", "0x251ad47cb15c4f1105f109ae5e944f1ba9d9e7806d667ffec6fe723002e0b996", "0x13da07dc64d428369873e97160234641f8beb56fdd05e5f3563fa39d9c22df4e", "0x0c009b84e650e6d23dc00c7dccef7483a553939689d350cd46e7b89055fd4738", "0x011f16b1c63a854f01992e3956f42d8b04eb650c6d535eb0203dec74befdca06", "0x0ed69e5e383a688f209d9a561daa79612f3f78d0467ad45485df07093f367549", "0x04dba94a7b0ce9e221acad41472b6bbe3aec507f5eb3d33f463672264c9f789b", "0x0a3f2637d840f3a16eb094271c9d237b6036757d4bb50bf7ce732ff1d4fa28e8", "0x259a666f129eea198f8a1c502fdb38fa39b1f075569564b6e54a485d1182323f", "0x28bf7459c9b2f4c6d8e7d06a4ee3a47f7745d4271038e5157a32fdf7ede0d6a1", "0x0a1ca941f057037526ea200f489be8d4c37c85bbcce6a2aeec91bd6941432447", "0x0c6f8f958be0e93053d7fd4fc54512855535ed1539f051dcb43a26fd926361cf", "0x123106a93cd17578d426e8128ac9d90aa9e8a00708e296e084dd57e69caaf811", "0x26e1ba52ad9285d97dd3ab52f8e840085e8fa83ff1e8f1877b074867cd2dee75", "0x1cb55cad7bd133de18a64c5c47b9c97cbe4d8b7bf9e095864471537e6a4ae2c5", "0x1dcd73e46acd8f8e0e2c7ce04bde7f6d2a53043d5060a41c7143f08e6e9055d0", "0x011003e32f6d9c66f5852f05474a4def0cda294a0eb4e9b9b12b9bb4512e5574", "0x2b1e809ac1d10ab29ad5f20d03a57dfebadfe5903f58bafed7c508dd2287ae8c", "0x2539de1785b735999fb4dac35ee17ed0ef995d05ab2fc5faeaa69ae87bcec0a5", "0x0c246c5a2ef8ee0126497f222b3e0a0ef4e1c3d41c86d46e43982cb11d77951d", "0x192089c4974f68e95408148f7c0632edbb09e6a6ad1a1c2f3f0305f5d03b527b", "0x1eae0ad8ab68b2f06a0ee36eeb0d0c058529097d91096b756d8fdc2fb5a60d85", "0x179190e5d0e22179e46f8282872abc88db6e2fdc0dee99e69768bd98c5d06bfb", "0x29bb9e2c9076732576e9a81c7ac4b83214528f7db00f31bf6cafe794a9b3cd1c", "0x225d394e42207599403efd0c2464a90d52652645882aac35b10e590e6e691e08", "0x064760623c25c8cf753d238055b444532be13557451c087de09efd454b23fd59", "0x10ba3a0e01df92e87f301c4b716d8a394d67f4bf42a75c10922910a78f6b5b87", "0x0e070bf53f8451b24f9c6e96b0c2a801cb511bc0c242eb9d361b77693f21471c", "0x1b94cd61b051b04dd39755ff93821a73ccd6cb11d2491d8aa7f921014de252fb", "0x1d7cb39bafb8c744e148787a2e70230f9d4e917d5713bb050487b5aa7d74070b", "0x2ec93189bd1ab4f69117d0fe980c80ff8785c2961829f701bb74ac1f303b17db", "0x2db366bfdd36d277a692bb825b86275beac404a19ae07a9082ea46bd83517926", "0x062100eb485db06269655cf186a68532985275428450359adc99cec6960711b8", "0x0761d33c66614aaa570e7f1e8244ca1120243f92fa59e4f900c567bf41f5a59b", "0x20fc411a114d13992c2705aa034e3f315d78608a0f7de4ccf7a72e494855ad0d", "0x25b5c004a4bdfcb5add9ec4e9ab219ba102c67e8b3effb5fc3a30f317250bc5a", "0x23b1822d278ed632a494e58f6df6f5ed038b186d8474155ad87e7dff62b37f4b", "0x22734b4c5c3f9493606c4ba9012499bf0f14d13bfcfcccaa16102a29cc2f69e0", "0x26c0c8fe09eb30b7e27a74dc33492347e5bdff409aa3610254413d3fad795ce5", "0x070dd0ccb6bd7bbae88eac03fa1fbb26196be3083a809829bbd626df348ccad9", "0x12b6595bdb329b6fb043ba78bb28c3bec2c0a6de46d8c5ad6067c4ebfd4250da", "0x248d97d7f76283d63bec30e7a5876c11c06fca9b275c671c5e33d95bb7e8d729", "0x1a306d439d463b0816fc6fd64cc939318b45eb759ddde4aa106d15d9bd9baaaa", "0x28a8f8372e3c38daced7c00421cb4621f4f1b54ddc27821b0d62d3d6ec7c56cf", "0x0094975717f9a8a8bb35152f24d43294071ce320c829f388bc852183e1e2ce7e", "0x04d5ee4c3aa78f7d80fde60d716480d3593f74d4f653ae83f4103246db2e8d65", "0x2a6cf5e9aa03d4336349ad6fb8ed2269c7bef54b8822cc76d08495c12efde187", "0x2304d31eaab960ba9274da43e19ddeb7f792180808fd6e43baae48d7efcba3f3", "0x03fd9ac865a4b2a6d5e7009785817249bff08a7e0726fcb4e1c11d39d199f0b0", "0x00b7258ded52bbda2248404d55ee5044798afc3a209193073f7954d4d63b0b64", "0x159f81ada0771799ec38fca2d4bf65ebb13d3a74f3298db36272c5ca65e92d9a", "0x1ef90e67437fbc8550237a75bc28e3bb9000130ea25f0c5471e144cf4264431f", "0x1e65f838515e5ff0196b49aa41a2d2568df739bc176b08ec95a79ed82932e30d", "0x2b1b045def3a166cec6ce768d079ba74b18c844e570e1f826575c1068c94c33f", "0x0832e5753ceb0ff6402543b1109229c165dc2d73bef715e3f1c6e07c168bb173", "0x02f614e9cedfb3dc6b762ae0a37d41bab1b841c2e8b6451bc5a8e3c390b6ad16", "0x0e2427d38bd46a60dd640b8e362cad967370ebb777bedff40f6a0be27e7ed705", "0x0493630b7c670b6deb7c84d414e7ce79049f0ec098c3c7c50768bbe29214a53a", "0x22ead100e8e482674decdab17066c5a26bb1515355d5461a3dc06cc85327cea9", "0x25b3e56e655b42cdaae2626ed2554d48583f1ae35626d04de5084e0b6d2a6f16", "0x1e32752ada8836ef5837a6cde8ff13dbb599c336349e4c584b4fdc0a0cf6f9d0", "0x2fa2a871c15a387cc50f68f6f3c3455b23c00995f05078f672a9864074d412e5", "0x2f569b8a9a4424c9278e1db7311e889f54ccbf10661bab7fcd18e7c7a7d83505", "0x044cb455110a8fdd531ade530234c518a7df93f7332ffd2144165374b246b43d", "0x227808de93906d5d420246157f2e42b191fe8c90adfe118178ddc723a5319025", "0x02fcca2934e046bc623adead873579865d03781ae090ad4a8579d2e7a6800355", "0x0ef915f0ac120b876abccceb344a1d36bad3f3c5ab91a8ddcbec2e060d8befac", "0x1797130f4b7a3e1777eb757bc6f287f6ab0fb85f6be63b09f3b16ef2b1405d38", "0x0a76225dc04170ae3306c85abab59e608c7f497c20156d4d36c668555decc6e5", "0x1fffb9ec1992d66ba1e77a7b93209af6f8fa76d48acb664796174b5326a31a5c", "0x25721c4fc15a3f2853b57c338fa538d85f8fbba6c6b9c6090611889b797b9c5f", "0x0c817fd42d5f7a41215e3d07ba197216adb4c3790705da95eb63b982bfcaf75a", "0x13abe3f5239915d39f7e13c2c24970b6df8cf86ce00a22002bc15866e52b5a96", "0x2106feea546224ea12ef7f39987a46c85c1bc3dc29bdbd7a92cd60acb4d391ce", "0x21ca859468a746b6aaa79474a37dab49f1ca5a28c748bc7157e1b3345bb0f959", "0x05ccd6255c1e6f0c5cf1f0df934194c62911d14d0321662a8f1a48999e34185b", "0x0f0e34a64b70a626e464d846674c4c8816c4fb267fe44fe6ea28678cb09490a4", "0x0558531a4e25470c6157794ca36d0e9647dbfcfe350d64838f5b1a8a2de0d4bf", "0x09d3dca9173ed2faceea125157683d18924cadad3f655a60b72f5864961f1455", "0x0328cbd54e8c0913493f866ed03d218bf23f92d68aaec48617d4c722e5bd4335", "0x2bf07216e2aff0a223a487b1a7094e07e79e7bcc9798c648ee3347dd5329d34b", "0x1daf345a58006b736499c583cb76c316d6f78ed6a6dffc82111e11a63fe412df", "0x176563472456aaa746b694c60e1823611ef39039b2edc7ff391e6f2293d2c404", "0x2ef1e0fad9f08e87a3bb5e47d7e33538ca964d2b7d1083d4fb0225035bd3f8db", "0x226c9b1af95babcf17b2b1f57c7310179c1803dec5ae8f0a1779ed36c817ae2a", "0x14bce3549cc3db7428126b4c3a15ae0ff8148c89f13fb35d35734eb5d4ad0def", "0x2debff156e276bb5742c3373f2635b48b8e923d301f372f8e550cfd4034212c7", "0x2d4083cf5a87f5b6fc2395b22e356b6441afe1b6b29c47add7d0432d1d4760c7", "0x0c225b7bcd04bf9c34b911262fdc9c1b91bf79a10c0184d89c317c53d7161c29", "0x03152169d4f3d06ec33a79bfac91a02c99aa0200db66d5aa7b835265f9c9c8f3", "0x0b61811a9210be78b05974587486d58bddc8f51bfdfebbb87afe8b7aa7d3199c", "0x203e000cad298daaf7eba6a5c5921878b8ae48acf7048f16046d637a533b6f78", "0x1a44bf0937c722d1376672b69f6c9655ba7ee386fda1112c0757143d1bfa9146", "0x0376b4fae08cb03d3500afec1a1f56acb8e0fde75a2106d7002f59c5611d4daa", "0x00780af2ca1cad6465a2171250fdfc32d6fc241d3214177f3d553ef363182185", "0x10774d9ab80c25bdeb808bedfd72a8d9b75dbe18d5221c87e9d857079bdc31d5", "0x10dc6e9c006ea38b04b1e03b4bd9490c0d03f98929ca1d7fb56821fd19d3b6e8", "0x00544b8338791518b2c7645a50392798b21f75bb60e3596170067d00141cac16", "0x222c01175718386f2e2e82eb122789e352e105a3b8fa852613bc534433ee428c", "0x2840d045e9bc22b259cfb8811b1e0f45b77f7bdb7f7e2b46151a1430f608e3c5", "0x062752f86eebe11a009c937e468c335b04554574c2990196508e01fa5860186b", "0x06041bdac48205ac87adb87c20a478a71c9950c12a80bc0a55a8e83eaaf04746", "0x04a533f236c422d1ff900a368949b0022c7a2ae092f308d82b1dcbbf51f5000d", "0x13e31d7a67232fd811d6a955b3d4f25dfe066d1e7dc33df04bde50a2b2d05b2a", "0x011c2683ae91eb4dfbc13d6357e8599a9279d1648ff2c95d2f79905bb13920f1", "0x0b0d219346b8574525b1a270e0b4cba5d56c928e3e2c2bd0a1ecaed015aaf6ae", "0x14abdec8db9c6dc970291ee638690209b65080781ef9fd13d84c7a726b5f1364", "0x1a0b70b4b26fdc28fcd32aa3d266478801eb12202ef47ced988d0376610be106", "0x278543721f96d1307b6943f9804e7fe56401deb2ef99c4d12704882e7278b607", "0x16eb59494a9776cf57866214dbd1473f3f0738a325638d8ba36535e011d58259", "0x2567a658a81ffb444f240088fa5524c69a9e53eeab6b7f8c41c3479dcf8c644a", "0x29aa1d7c151e9ad0a7ab39f1abd9cf77ab78e0215a5715a6b882ade840bb13d8", "0x15c091233e60efe0d4bbfce2b36415006a4f017f9a85388ce206b91f99f2c984", "0x16bd7d22ff858e5e0882c2c999558d77e7673ad5f1915f9feb679a8115f014cf", "0x02db50480a07be0eb2c2e13ed6ef4074c0182d9b668b8e08ffe6769250042025", "0x05e4a220e6a3bc9f7b6806ec9d6cdba186330ef2bf7adb4c13ba866343b73119", "0x1dda05ebc30170bc98cbf2a5ee3b50e8b5f70bc424d39fa4104d37f1cbcf7a42", "0x0184bef721888187f645b6fee3667f3c91da214414d89ba5cd301f22b0de8990", "0x1498a307e68900065f5e8276f62aef1c37414b84494e1577ad1a6d64341b78ec", "0x25f40f82b31dacc4f4939800b9d2c3eacef737b8fab1f864fe33548ad46bd49d", "0x09d317cc670251943f6f5862a30d2ea9e83056ce4907bfbbcb1ff31ce5bb9650", "0x2f77d77786d979b23ba4ce4a4c1b3bd0a41132cd467a86ab29b913b6cf3149d0", "0x0f53dafd535a9f4473dc266b6fccc6841bbd336963f254c152f89e785f729bbf", "0x25c1fd72e223045265c3a099e17526fa0e6976e1c00baf16de96de85deef2fa2", "0x2a902c8980c17faae368d385d52d16be41af95c84eaea3cf893e65d6ce4a8f62", "0x1ce1580a3452ecf302878c8976b82be96676dd114d1dc8d25527405762f83529", "0x24a6073f91addc33a49a1fa306df008801c5ec569609034d2fc50f7f0f4d0056", "0x25e52dbd6124530d9fc27fe306d71d4583e07ca554b5d1577f256c68b0be2b74", "0x23dffae3c423fa7a93468dbccfb029855974be4d0a7b29946796e5b6cd70f15d", "0x06342da370cc0d8c49b77594f6b027c480615d50be36243a99591bc9924ed6f5", "0x2754114281286546b75f09f115fc751b4778303d0405c1b4cc7df0d8e9f63925", "0x15c19e8534c5c1a8862c2bc1d119eddeabf214153833d7bdb59ee197f8187cf5", "0x265fe062766d08fab4c78d0d9ef3cabe366f3be0a821061679b4b3d2d77d5f3e", "0x13ccf689d67a3ec9f22cb7cd0ac3a327d377ac5cd0146f048debfd098d3ec7be", "0x17662f7456789739f81cd3974827a887d92a5e05bdf3fe6b9fbccca4524aaebd", "0x21b29c76329b31c8ef18631e515f7f2f82ca6a5cca70cee4e809fd624be7ad5d", "0x18137478382aadba441eb97fe27901989c06738165215319939eb17b01fa975c", "0x2bc07ea2bfad68e8dc724f5fef2b37c2d34f761935ffd3b739ceec4668f37e88", "0x2ddb2e376f54d64a563840480df993feb4173203c2bd94ad0e602077aef9a03e", "0x277eb50f2baa706106b41cb24c602609e8a20f8d72f613708adb25373596c3f7", "0x0d4de47e1aba34269d0c620904f01a56b33fc4b450c0db50bb7f87734c9a1fe5", "0x0b8442bfe9e4a1b4428673b6bd3eea6f9f445697058f134aae908d0279a29f0c", "0x11fe5b18fbbea1a86e06930cb89f7d4a26e186a65945e96574247fddb720f8f5", "0x224026f6dfaf71e24d25d8f6d9f90021df5b774dcad4d883170e4ad89c33a0d6", "0x0b2ca6a999fe6887e0704dad58d03465a96bc9e37d1091f61bc9f9c62bbeb824", "0x221b63d66f0b45f9d40c54053a28a06b1d0a4ce41d364797a1a7e0c96529f421", "0x30185c48b7b2f1d53d4120801b047d087493bce64d4d24aedce2f4836bb84ad4", "0x23f5d372a3f0e3cba989e223056227d3533356f0faa48f27f8267318632a61f0", "0x2716683b32c755fd1bf8235ea162b1f388e1e0090d06162e8e6dfbe4328f3e3b", "0x0977545836866fa204ca1d853ec0909e3d140770c80ac67dc930c69748d5d4bc", "0x1444e8f592bdbfd8025d91ab4982dd425f51682d31472b05e81c43c0f9434b31", "0x26e04b65e9ca8270beb74a1c5cb8fee8be3ffbfe583f7012a00f874e7718fbe3", "0x22a5c2fa860d11fe34ee47a5cd9f869800f48f4febe29ad6df69816fb1a914d2", "0x174b54d9907d8f5c6afd672a738f42737ec338f3a0964c629f7474dd44c5c8d7", "0x1db1db8aa45283f31168fa66694cf2808d2189b87c8c8143d56c871907b39b87", "0x1530bf0f46527e889030b8c7b7dfde126f65faf8cce0ab66387341d813d1bfd1", "0x0b73f613993229f59f01c1cec8760e9936ead9edc8f2814889330a2f2bade457", "0x29c25a22fe2164604552aaea377f448d587ab977fc8227787bd2dc0f36bcf41e", "0x2b30d53ed1759bfb8503da66c92cf4077abe82795dc272b377df57d77c875526", "0x12f6d703b5702aab7b7b7e69359d53a2756c08c85ede7227cf5f0a2916787cd2", "0x2520e18300afda3f61a40a0b8837293a55ad01071028d4841ffa9ac706364113", "0x1ec9daea860971ecdda8ed4f346fa967ac9bc59278277393c68f09fa03b8b95f", "0x0a99b3e178db2e2e432f5cd5bef8fe4483bf5cbf70ed407c08aae24b830ad725", "0x07cda9e63db6e39f086b89b601c2bbe407ee0abac3c817a1317abad7c5778492", "0x08c9c65a4f955e8952d571b191bb0adb49bd8290963203b35d48aab38f8fc3a3", "0x2737f8ce1d5a67b349590ddbfbd709ed9af54a2a3f2719d33801c9c17bdd9c9e", "0x1049a6c65ff019f0d28770072798e8b7909432bd0c129813a9f179ba627f7d6a", "0x18b4fe968732c462c0ea5a9beb27cecbde8868944fdf64ee60a5122361daeddb", "0x2ff2b6fd22df49d2440b2eaeeefa8c02a6f478cfcf11f1b2a4f7473483885d19", "0x2ec5f2f1928fe932e56c789b8f6bbcb3e8be4057cbd8dbd18a1b352f5cef42ff", "0x265a5eccd8b92975e33ad9f75bf3426d424a4c6a7794ee3f08c1d100378e545e", "0x2405eaa4c0bde1129d6242bb5ada0e68778e656cfcb366bf20517da1dfd4279c", "0x094c97d8c194c42e88018004cbbf2bc5fdb51955d8b2d66b76dd98a2dbf60417", "0x2c30d5f33bb32c5c22b9979a605bf64d508b705221e6a686330c9625c2afe0b8", "0x01a75666f6241f6825d01cc6dcb1622d4886ea583e87299e6aa2fc716fdb6cf5", "0x0a3290e8398113ea4d12ac091e87be7c6d359ab9a66979fcf47bf2e87d382fcb", "0x154ade9ca36e268dfeb38461425bb0d8c31219d8fa0dfc75ecd21bf69aa0cc74", "0x27aa8d3e25380c0b1b172d79c6f22eee99231ef5dc69d8dc13a4b5095d028772", "0x2cf4051e6cab48301a8b2e3bca6099d756bbdf485afa1f549d395bbcbd806461", "0x301e70f729f3c94b1d3f517ddff9f2015131feab8afa5eebb0843d7f84b23e71", "0x298beb64f812d25d8b4d9620347ab02332dc4cef113ae60d17a8d7a4c91f83bc", "0x1b362e72a5f847f84d03fd291c3c471ed1c14a15b221680acf11a3f02e46aa95", "0x0dc8a2146110c0b375432902999223d5aa1ef6e78e1e5ebcbc1d9ba41dc1c737", "0x0a48663b34ce5e1c05dc93092cb69778cb21729a72ddc03a08afa1eb922ff279", "0x0a87391fb1cd8cdf6096b64a82f9e95f0fe46f143b702d74545bb314881098ee", "0x1b5b2946f7c28975f0512ff8e6ca362f8826edd7ea9c29f382ba8a2a0892fd5d", "0x01001cf512ac241d47ebe2239219bc6a173a8bbcb8a5b987b4eac1f533315b6b", "0x2fd977c70f645db4f704fa7d7693da727ac093d3fb5f5febc72beb17d8358a32", "0x23c0039a3fab4ad3c2d7cc688164f39e761d5355c05444d99be763a97793a9c4", "0x19d43ee0c6081c052c9c0df6161eaac1aec356cf435888e79f27f22ff03fa25d", "0x2d9b10c2f2e7ac1afddccffd94a563028bf29b646d020830919f9d5ca1cefe59", "0x2457ca6c2f2aa30ec47e4aff5a66f5ce2799283e166fc81cdae2f2b9f83e4267", "0x0abc392fe85eda855820592445094022811ee8676ed6f0c3044dfb54a7c10b35", "0x19d2cc5ca549d1d40cebcd37f3ea54f31161ac3993acf3101d2c2bc30eac1eb0", "0x0f97ae3033ffa01608aafb26ae13cd393ee0e4ec041ba644a3d3ab546e98c9c8", "0x16dbc78fd28b7fb8260e404cf1d427a7fa15537ea4e168e88a166496e88cfeca", "0x240faf28f11499b916f085f73bc4f22eef8344e576f8ad3d1827820366d5e07b", "0x0a1bb075aa37ff0cfe6c8531e55e1770eaba808c8fdb6dbf46f8cab58d9ef1af", "0x2e47e15ea4a47ff1a6a853aaf3a644ca38d5b085ac1042fdc4a705a7ce089f4d", "0x166e5bf073378348860ca4a9c09d39e1673ab059935f4df35fb14528375772b6", "0x18b42d7ffdd2ea4faf235902f057a2740cacccd027233001ed10f96538f0916f", "0x089cb1b032238f5e4914788e3e3c7ead4fc368020b3ed38221deab1051c37702", "0x242acd3eb3a2f72baf7c7076dd165adf89f9339c7b971921d9e70863451dd8d1", "0x174fbb104a4ee302bf47f2bd82fce896eac9a068283f326474af860457245c3b", "0x17340e71d96f466d61f3058ce092c67d2891fb2bb318613f780c275fe1116c6b", "0x1e8e40ac853b7d42f00f2e383982d024f098b9f8fd455953a2fd380c4df7f6b2", "0x0529898dc0649907e1d4d5e284b8d1075198c55cad66e8a9bf40f92938e2e961", "0x2162754db0baa030bf7de5bb797364dce8c77aa017ee1d7bf65f21c4d4e5df8f", "0x12c7553698c4bf6f3ceb250ae00c58c2a9f9291efbde4c8421bef44741752ec6", "0x292643e3ba2026affcb8c5279313bd51a733c93353e9d9c79cb723136526508e", "0x00ccf13e0cb6f9d81d52951bea990bd5b6c07c5d98e66ff71db6e74d5b87d158", "0x185d1e20e23b0917dd654128cf2f3aaab6723873cb30fc22b0f86c15ab645b4b", "0x14c61c836d55d3df742bdf11c60efa186778e3de0f024c0f13fe53f8d8764e1f", "0x0f356841b3f556fce5dbe4680457691c2919e2af53008184d03ee1195d72449e", "0x1b8fd9ff39714e075df124f887bf40b383143374fd2080ba0c0a6b6e8fa5b3e8", "0x0e86a8c2009c140ca3f873924e2aaa14fc3c8ae04e9df0b3e9103418796f6024", "0x2e6c5e898f5547770e5462ad932fcdd2373fc43820ca2b16b0861421e79155c8", "0x05d797f1ab3647237c14f9d1df032bc9ff9fe1a0ecd377972ce5fd5a0c014604", "0x29a3110463a5aae76c3d152875981d0c1daf2dcd65519ef5ca8929851da8c008", "0x2974da7bc074322273c3a4b91c05354cdc71640a8bbd1f864b732f8163883314", "0x1ed0fb06699ba249b2a30621c05eb12ca29cb91aa082c8bfcce9c522889b47dc", "0x1c793ef0dcc51123654ff26d8d863feeae29e8c572eca912d80c8ae36e40fe9b", "0x1e6aac1c6d3dd3157956257d3d234ef18c91e82589a78169fbb4a8770977dc2f", "0x1a20ada7576234eee6273dd6fa98b25ed037748080a47d948fcda33256fb6bf5", "0x191033d6d85ceaa6fc7a9a23a6fd9996642d772045ece51335d49306728af96c", "0x006e5979da7e7ef53a825aa6fddc3abfc76f200b3740b8b232ef481f5d06297b", "0x0b0d7e69c651910bbef3e68d417e9fa0fbd57f596c8f29831eff8c0174cdb06d", "0x25caf5b0c1b93bc516435ec084e2ecd44ac46dbbb033c5112c4b20a25c9cdf9d", "0x12c1ea892cc31e0d9af8b796d9645872f7f77442d62fd4c8085b2f150f72472a", "0x16af29695157aba9b8bbe3afeb245feee5a929d9f928b9b81de6dadc78c32aae", "0x0136df457c80588dd687fb2f3be18691705b87ec5a4cfdc168d31084256b67dc", "0x1639a28c5b4c81166aea984fba6e71479e07b1efbc74434db95a285060e7b089", "0x03d62fbf82fd1d4313f8e650f587ec06816c28b700bdc50f7e232bd9b5ca9b76", "0x11aeeb527dc8ce44b4d14aaddca3cfe2f77a1e40fc6da97c249830de1edfde54", "0x13f9b9a41274129479c5e6138c6c8ee36a670e6bc68c7a49642b645807bfc824", "0x0e4772fa3d75179dc8484cd26c7c1f635ddeeed7a939440c506cae8b7ebcd15b", "0x1b39a00cbc81e427de4bdec58febe8d8b5971752067a612b39fc46a68c5d4db4", "0x2bedb66e1ad5a1d571e16e2953f48731f66463c2eb54a245444d1c0a3a25707e", "0x2cf0a09a55ca93af8abd068f06a7287fb08b193b608582a27379ce35da915dec", "0x2d1bd78fa90e77aa88830cabfef2f8d27d1a512050ba7db0753c8fb863efb387", "0x065610c6f4f92491f423d3071eb83539f7c0d49c1387062e630d7fd283dc3394", "0x2d933ff19217a5545013b12873452bebcc5f9969033f15ec642fb464bd607368", "0x1aa9d3fe4c644910f76b92b3e13b30d500dae5354e79508c3c49c8aa99e0258b", "0x027ef04869e482b1c748638c59111c6b27095fa773e1aca078cea1f1c8450bdd", "0x2b7d524c5172cbbb15db4e00668a8c449f67a2605d9ec03802e3fa136ad0b8fb", "0x0c7c382443c6aa787c8718d86747c7f74693ae25b1e55df13f7c3c1dd735db0f", "0x00b4567186bc3f7c62a7b56acf4f76207a1f43c2d30d0fe4a627dcdd9bd79078", "0x1e41fc29b825454fe6d61737fe08b47fb07fe739e4c1e61d0337490883db4fd5", "0x12507cd556b7bbcc72ee6dafc616584421e1af872d8c0e89002ae8d3ba0653b6", "0x13d437083553006bcef312e5e6f52a5d97eb36617ef36fe4d77d3e97f71cb5db", "0x163ec73251f85443687222487dda9a65467d90b22f0b38664686077c6a4486d5"], + ["0x0eb544fee2815dda7f53e29ccac98ed7d889bb4ebd47c3864f3c2bd81a6da891", "0x0554d736315b8662f02fdba7dd737fbca197aeb12ea64713ba733f28475128cb", "0x2f83b9df259b2b68bcd748056307c37754907df0c0fb0035f5087c58d5e8c2d4", "0x2ca70e2e8d7f39a12447ac83052451b461f15f8b41a75ef31915208f5aba9683", "0x1cb5f9319be6a45e91b04d7222271c94994196f12ed22c5d4ec719cb83ecfea9", "0x2eb4f99c69f966ebf8a42192de7ff61621c7bb47b93750c2b9ea08d18446c122", "0x224a28e5a35385a7c5198169e405d9ea0fc7da8b93ee13b6d5f7d099e299520e", "0x0f7411b465e600eed8afdd6afca49c3036f33ecbd9a0f97823796b993bbd82f7", "0x0f9d0d5aad2c9555a2be7150392d8d9819b208ae3370f99a0626f9ff5d90e4e3", "0x1e9a96dc8292bb596f52a59538d329229732b25259cf744b6a12d30702d6fba0", "0x08780514ccd90380887d578c45555e593cfe52eab4b945c6c2cd4d528fb3fe3c", "0x272498fced686c7ac8149fa3f73ef8c2ced64717e3556d5a59f119d629ccb5fc", "0x01ef8f9dd7c93aac4b7cb80930bd06eb45bd350aff585f10e3d0ef8a782ef7df", "0x045b9f59b6595e614dc08f222b469b138e886e64bf3c40aa97ea0ae754934d30", "0x0ac1e91c57d9da919fd6f59d2a40ff8ea3e41e24e247a387adf2584295d61c66", "0x028a1621a94054b0c7f9a421353cd89d0fd67061aee99979d12e68f04e62d134", "0x26b41802c071ea4c9632647ed059236e50c19c3fb3c96d09d02aae2a0dcd9dbc", "0x2fb5dda8072bb72cbaac2f63e468215e05c9de06758db6a94af34384aedb462b", "0x2212d3a0f5fccaf244ff3547fd823249ad8ab8ba2a18d383dd05c56ee894d850", "0x1b041ad5b2f0684258e4dfaeea09be56a3276fdb19f44c015cd0c7eed465e2e3", "0x0a01776bb22f4b6b8eccff33e76fded3144fb7e3ac14e846a91e64afb1500eff", "0x2b7b5674aaecc3cbf34d3f275066d549a4f33ae8c15cf827f7936440810ace43", "0x29d299b80cd4489e4cf75779ed54b48c60b042257b78fc004c1b803381a3bdfd", "0x1c46831d9a74529357641c219d721a74a427110032b5e1dd19dde30424be401e", "0x06d7626c953ccb72f37141dc34d578e036296c0657674f80739ae1d883e91269", "0x28ffddc86f18c136c54002748e0c410edc5c440a3022cd960f108c71cda2930c", "0x2e67f7ee5e4aa295f85deed09e400b17be67f1b7ed2ab6adb8ec0619f6fbc5e9", "0x26ce38fa636c90630e97f25114a79a2dca56859ef759e53ce7abf22c24e80f27", "0x2e6e07c3c95bf7c34dd7a01d00a7ffec42cb3d16a1f72721afacb4c4cfd35db1", "0x2aa74f7597f0c9f45f91d7961c3a54fb8890d276612e1246384b1470da24d8cc", "0x287d681a46a2faae2c7c090f668ab45b8a71313c1509183e2ec0ca639b7f73fe", "0x212bd19df812eaaef4a40600528f3d7da5d3106ff565aa3b11e29f3305e73c04", "0x1154f7cf519186bf1aafb14b350eb860f97fd9740926dab93809c28404713504", "0x1dff6385cb31f1c24637810a4bd1b16fbf5152905be36583da747e79661fc207", "0x0e444582d22b4e76c081d34c44c18e424011a34d5476252863ea3c606b551e5c", "0x0323c9e433ba66c4abab6638328f02f1815773e9c2846323ff72d3aab7e4eff8", "0x12746bbd71791059193bba79cdec448f25b8cf002740112db70f2c6876a9c29d", "0x1173b7d112c2a798fd9b9d3751842c75d466c837cf50d73efd049eb4438a2240", "0x13d51c1090a1ad4876d1e555d7fed13da8e5713b25026ebe5fdb4808703243da", "0x00874c1344a4ad51ff8dcb7cbd2d9743cb72743f0394efe7f4a58ebeb956baa1", "0x22df22131aaab85865ce236b07f244fa0eea48d3546e97d6a32a562074fef08f", "0x0bf964d2dbd25b908708b437a445fc3e984524a59101e6c18bf5eb05a919f155", "0x09b18d9b917a55bca302be1f7f181e0e640b9d73a9ab298c69b435b5fc502f32", "0x094f5534444fae36a4bfc1d5bf3dc05bfbbbc70a6365366dd6745a5067289e43", "0x2999bab1a5f25210519fa6622af53a15a3e240c0da5701cb784fddc0dc23f01f", "0x2f6898c07581f6371ca94db73710e88084301bce8a93d13669575a11b03a3d23", "0x07268eaaba08bc19ec16d7e1318a4740565deb1e8e5742f862174b1a6866fccb", "0x186279b003454db01339ff77113bc9eb62603e078e1c6689a6c9582c41a0529f", "0x18a3f736509197d6e4915bdd04d3e5ddb67e2cc5de9a22750768e5524737172c", "0x0a21fa1988cf38d877cc1e2ed24c808c725e2d4bcb2d3a007b5987b87085671d", "0x15b285cbe26c467f1faf5ef6a64625228328c184a2c43bc00b36a135e785fba2", "0x164b7062c4671cf08c08b8c3f9806d560b7775b7c902f5788cd28de3e779f161", "0x0890ba0819ac0a6f86d9865fe7e50ef361c61d3d43b6e65d7a24f651249baa70", "0x2fbea4d65d7ed425a42712e5a721e4eaa627ac5cb0eb878ccc2ee0aed543e922", "0x0492bf383c36fa55540303a3b536f85e7b70a58e854ab9b9103d7f5f379abaaa", "0x05e91fe944e944104e20251c565142d61d6185a9ce85675f6a969d56292dc24e", "0x12fe5c2029e4b33893d463cb041acad0995b9621e6e49c3b7e380a76e36e6c1c", "0x024154adf0255d47958f7723921474131f2629fadc89496906cd01dc6fa0784e", "0x18824a09e6afaf4a36ed2462a86bd0bad798815644f2bbde8813c13457a45550", "0x0c8b482dba0ad51be9f255de0c3dbddddf84a630af68d50bbb06983e3d5d58a5", "0x17325fd0ab635871363e0a1667d3b67c5a4fa67fcd6aaf86441392878fdb05e6", "0x050ae95f6d2f1519122f5af67b690f31e550773fa8d18bf71cc6d0e911fa402e", "0x0f0d139a0e81e943038cb288d62636764bbb6295f07569885771ec84edc50c40", "0x1c0f8697795689cdf70fd2f2c0f93d1a79b39ebc7a1b1c549dbbca7b8e747cd6", "0x2bd0f940ad936b796d2bc2e048bc979e49be23a4b13598f9fe536a16dc1d81e6", "0x27eb1be27c9c4e934778c09a0053337fa06ebb275e096d167ce54d1e96ee62cb", "0x2e4889d830a67e5a8f96bdd3155a7ca3284fbd307d1f71b0f151be62548e2aea", "0x193fe3db0ab47d3c5d2ec5e9c5bd9983c9891f2cadc165db6064bbe6fcc1e305", "0x2bf3086e96c36c7bce415907ad0c40ed6e9661c009679e4e37cb13027c83e525", "0x12f16e2de6d4ad46a98cdb697c6cad5dd5e7e413f741ccf29ff2ea486e59bb28", "0x2a72147d230119f3a0262e3653ddd19f33f3d5d6ec6c4bf0ad919b0343b92d2f", "0x21be0e2c4bfd64e56dc47f957806dc5f0a2d9bcc26412e2977df79acc10ba974", "0x0e2d7e1dc946d70b2749a3b54367b25a71b84fb911aa57ae137fd4b6c21b444a", "0x2667f7fb5a4fa1246170a745d8a4188cc31adb0eae3325dc9f3f07d4b92b3e2e", "0x2ccc6f431fb7400730a783b66064697a1550c12b08dfeb72830e107da78e3405", "0x08888a94fc5a2ca34f0201462420001fae6dbee9e8ca0c242ec50621e38e6e5d", "0x02977b34eeaa3cb6ad40dd42c9b6fdd7a0d2fbe753af88b36acfcd3ccbc53f2a", "0x120ccce13d28b75cfd6fb6c9ea13a648bfcfe0d7e6ff8e9610b5e9f971e16b9a", "0x09fad2269c4a8e93c81e1b9770ea098c92787a4575b2bd73a0bf2af32f86ff3c", "0x026091fd3d4c44d50a4b310e4ac6f0fa0debdb70775eeb8af630cffb60092d6f", "0x29404aa2ba565b77bb7fba9dfb6fc3212543cc56afad6afcb904fd2bca893994", "0x2749475c399aaf39d4e87c2548695b4ef1ffd86590e0827de7201351b7c883f9", "0x098c842322479f7239912b50424685cba2ebe2dc2e4da70ac7557dab65ffa222", "0x18cef581222b647e31238e57fead7d5c758ace14c93c4da40191d0c053b51936", "0x13177839c68a5080d4e746745e43711d3cbc0ca4a108f98d63b2aa681698de60", "0x020ca696f531e43ec088f56f4b74325626cc4df712c0e5f0a907d88e5f0deffd", "0x27230eede9cccfc9fa805a30fc548db693d13708c646841d16e028387c7ac022", "0x01645911c1198b01d64fde34a342a1786497c05969a015439057d2fe75bb281c", "0x2c323fe16481bf496e439c88341ce25f198971e14487056cfdca4a451a5d8643", "0x0fc082dfe70728e8450bd2074c3e22e1b022c124d3bffe8b5af88ae6db5085c8", "0x2052c174800db209d8cdca568dcc25b3be9642116ac4c77efe8a488b423521ee", "0x28e420e10df2fbb5af96d621d55423190be351ce8129065a8dd9fd05b3ece9c0", "0x25698ca5e24a1b799f783c4462a24db655d6ae1bdacd1cb549d6e0bc3ae5069a", "0x160a9981a5c89a57cf8ffbfa57d51049a297b61074422ac134d9b857d6984d35", "0x21c91a39e145c3bc34d9b694b843f3bf8b7cebf59ddbb0a064642b069997f3d4", "0x1ac8d80dcd5ee876d2b09345ef112345d6eaa029d93f03b6d10975461e41734c", "0x0ab3e6ad0ecf8b8e7c1662a4174c52225d822895e2755544b8dbcea5657ce02c", "0x1c675182512620ae27e3b0b917b3a21ca52ef3ef5909b4e1c5b2237cbdab3377", "0x2cdbc998dfd7affd3d948d0c85bad2e2e37a4a3e07a7d75d0c8a9092ac2bed45", "0x23b584a56e2117b0774bf67cc0dee33324337350309dff833e491a133bb63b2e", "0x1e9e2b310f60ba9f8cb73030a3c9d2a10d133bc6ba4ec1152f3d20de1465e9a5", "0x0e01e365ba5b3031abc3e720140ae746c9ab5dab987520c460bcd4f1fa5b22db", "0x040884cdcfc64bfc7b7127340498d5c443382011b61c9a4b1387d85bc1264e68", "0x190b1ee1205eb9500c74a3998f2bea36353f1724d6067ed0a0a17de311ef9668", "0x1647c72aec6c4388d04f52fc23cd9c08c1dfcf65ce61e165fc28d1f832bd3b2c", "0x2430006346a0145f799880cc4c8736269f5494d89fb48b02842e595b71e4541d", "0x177b9a08343917e1365107a3da3ae7f69d853902bb16bacb3221850252b757af", "0x04a420e642b11ae94e58862a68f5e32609cd53d0ae29423439b11d04666df4f8", "0x25d0e0f739fb39fc105a88fab0afd810de2461858e956ccccdfabeddb6a25c8f", "0x04476d91b7eff2fd85905cbf58651edc320cb15610eaed452c4d4ffa0c740a27", "0x1090c0b68b3d7d7b8bc9ca2419eb8dea1c28f6d5e1250cb5e9780fd9ca286fae", "0x25393ce3b9256d50448a725c5c7cd5ad376f2d435855c10ebf2899cb5c6617be", "0x25931c0c7371f4f1fc862f306e6e5830ed824388d6b9342697d144f0fab46630", "0x2396cb501700bbe6c82aad51b0fb79cf8a4d353185d5808203f73f22afbf62f6", "0x26a363483348b58954ea748a7129a7b0a3dc9068c3cca7b5b3f0ce03b8724884", "0x27ca107ca204f2a18d6f1535b92c5478c99b893334215f6ba7a0e5b45fcd6897", "0x26da28fc097ed77ce4662bde326b2cceac15f7301178581d8d2d02b3b2d91056", "0x056ab351691d8bb3703e3055070ac9cc655774c1bb35d57572971ba56ee0cb89", "0x2638b57f23b754aec76d109a2f481aa3c22547a11ffc50152d729af632376a90", "0x304754bb8c57d60732f492c2605184fdc33e46a532bdec80ea7bc5519ede7cef", "0x00d1727f8457ee03514f155b5806cbf748ec6857fc554010752ac93a9b7619ac", "0x00ee1f3c66fbc05c43ba295a303c72fab5bca86805ec9419c588e50947761fa3", "0x0afafadcf5b4dd4a4a76b5a1d82415fd10a19fbcfc59078c61f9297eb675d972", "0x0b2449f39746085e86ce45e8eed108ee65a234835a0a6a5ea8996d124dd04d0a", "0x206b0ce2f1b2c5b7c9f37b0045227095f6c6f071ec3bdda76a7ddf4823dd5dd6", "0x0feba4fb87834c7cb696e67433628cd6caffc3a4ef20fea852c7e1029459409c", "0x254dbfac74c49b0b8926752e084e02513b06f1315e6d70e18173e972336e55d3", "0x0addb1372cee4e164655168c367559e19606c5bd17910aeb37719edfa0ca8762", "0x26b25b7e257f3e97c799024fb019f65c6ca4d8d81b1ae16221a589d68831d759", "0x090995b79acec240413b8d4c658787e5a4657b9ab00bdb5b1960b1059e113ba3", "0x08dbdc2e21ef11f2c57299687843cea3eb0d8e40e99131f42974178d44f73b7b", "0x09e8aba671481197679faf752a0f78e342fe9c491596ab6758f170939785179f", "0x1deb05180e833e45659052a7ebaf816c7efd12a7f9eec94b7bc7c683f1363d5c", "0x19a70ec6bdfc9098a926efbcc04aa9ee248997e8b2c24af335fd6523e5250879", "0x21d773660adafb8a879986f9aab4890566353a3777d8a3f1eb93abe10bbf1f64", "0x09f1890f72e9dc713e20ba637b89d5d397a6b01fcd667347f6f46617841c3901", "0x05af459361eb454d2a300c61e446998d48fa1f897bf219d608c2145c33b111c3", "0x0fa1a1d6829f0345664a66dc75a657335f336f15f340756cfa12fc850cc8b513", "0x02e47a35bcc0c3a0bda0b1c0307ad543f4280fcf87f636f853655cf97a628bb0", "0x14f773e9834c6bdeb8f90e78bf4c24b7203411460112491036621895204d0f12", "0x102d98cf502ed843255cf19d29bc7d8e642abe7cfd639992ffb091962fc8f7cc", "0x043dd5f4aa5a76dd4c47f6c65da7ca2320d4c73ad3294738cba686a7e91373c2", "0x21833819c3337194a6c0d29a48d4f2676f0e7c79743a306f4cfdb2b26bd11efa", "0x0f281925cf5ee649b474a6819d116ca3eb4eca246c311ecadc53262a3cff2b53", "0x0d3e2477a7b10beb44709c7746d6824edf625dd60504d5dc93ce662f15c238d6", "0x2cd7f641bedbf66956ff8a01be9cde35d80f80ab51e73b49acbfc3eff5aefc44", "0x29e95b492bf2f95f4d09380f98b74e389149d24045811d7a86dd861310463cf8", "0x22da66bc62e8f011266efca86a6c810f9ae4c51af6ffeb57f8b3c50df83cc13e", "0x0fe6d30de7a82d163023491794f4aca3220db79e8129df3643072d841925554a", "0x0050e842a1299909123c46eff185c23ad312d03fef1adfecc7e07ecb298fd67f", "0x2130a3a7b3221222be34cc53a42d7733666f9ddf714ed7c5885cbbdb63108c21", "0x2df9ee294edf99e3d8d5883fe0566c24aa66731f34a93280e1d328e67b33c9fa", "0x1bf7d6e489ad8c0cf26eb68cc21ff54158132396dc250aeba4b6fc5fc3372762", "0x0c602fa155be958761eaf739617ab136cf7b807728bf7fe35d4778d311780e54", "0x2e50e2c5b36aa20532407d86b8d22d7d5154080a24972faeb63faf0121ed7f21", "0x17c2510982a7b5825710d6290ec4f782f674995ee8409b42b459123b180332e1", "0x0b0d52f03c8af7276803ecf2465b885b21337b538eabd2f6b2ab255f376b42a8", "0x0f5633df1972b9455953d88a63f80647a9ac77c6c0f85d4561972dd8fab8bd14", "0x0ebf7ad29ca13804e1422e939681155124780ff43e76e929035498130a7f1572", "0x1aff13c81bda47e80b02962173bba343e18f94bee27c8a57661b1103a720ffe2", "0x210449dbf5cf3061da2465be85505862d3f31de1a3b58ff35713be57efac6c07", "0x088230c2794e50c57d75cd6d3c7b9dbe19d1e2f1d3001044b93ad1c3ee629817", "0x1c408c256490b0a1da08dc464138dfc78cce9a9e16c7705617a4d6dbb20e7e3a", "0x074517e081eb4c1f22d1771200fb07658f7c77654d58440490dd6f557e9e3903", "0x02d04e9c21df1dbd88524bdb203691b4cee5530559d6cf0fa05adf61e12fdcbf", "0x2eb7a011b8bce91082e13ebd75de3b58eb9b4650dae9f11aa81db32cf1b67b13", "0x2efda77ed35f4af0299f75d6e8a849b54d2ac6bf95368304e6030c18f0cf17b5", "0x09199dcafd50ce642eddbeda65206d4f61a73d10852b8114c51b2440192ae064", "0x268c5cfc446d399c4dd319db666a75b5cb655d8c1797e9fa76181cb4216e1562", "0x2303a652c949071826b0e9a36c80578697b44e912cce6687012854eda11a18dc", "0x27c53563b12a6ee2c3f041f31dc45922bc5353eb110868d237073f4efb35fbdf", "0x1201a87eaf4ae618f02bd82d0a5109049969b5248cfe90f42c278f22615d2b0e", "0x2c43169439fcd69ead8214997bb069becafcb1ba2c51e5706cb4b43dab2a443d", "0x0683597315359040ea03c45d6984c6894f46cbb36d702e3c4fb9847e6304d944", "0x03545706706eab36afb93b128febd16fb0425e158314197b77795ad3a798d183", "0x1a33c254ec117619d35f1fc051b31728740bed23a6a37870edb393b71a0c0e6b", "0x1ffe6968a4470cd567b0c002281caf996e88f71e759b87e6f338e517f1690c78", "0x0fd66e03ba8808ffecb059c899fd80f4140ddd5d2a5c4483107f4e02e355b393", "0x263ab69f13b966f8197394552906b17e6c8617a7bdd5d74a7be3396b7fe013ab", "0x16a425e47d1110625054d5a165de413e3bd87d5aa3958fdd6eb7e03e39ba4046", "0x2dc510a4719ec10cad752f03c673f0e253cc31d13e39e909fcc5f73af9138d9a", "0x24df8e8d856c5b5e1bd1cad23d07dda3423c5179329b7a82cb4aa709a94576e5", "0x2bcc94ff4fc3c76f3cd5c68915a042e87628249a01b09561bdf24a6cdce5620f", "0x076c1e88dc540c8d8de54e343df7c429d3295f52c38cffe6b48be86852da97df", "0x09b5f209a451ac431c051fb12d9a5e4fe40ee1601120947da990fb8e12cb46e1", "0x205f17b0d8729e2eaa88d6a44135a6ab64e9424f55b0f1ea0683af75eb677c07", "0x281c5c688836f6cf912638c38be046cd091681f0a41761720cdd1edf9f237029", "0x1a053e6878e900f45f4d67448c471cf3009a44e7a02ea50e4afa44f2592621f5", "0x100dc7d426debe3007fb7ceac84e4f5468efcb897e7bbee981742839d59e064c", "0x17022672a016a957bb87e2cfadc8b75fb28905bdb62c82c80b1cb31b411e49c8", "0x1086db7e2760fc8b71053a87ebe151239fb8b547182b170de0c27203f954f4d2", "0x15384fe39d73b63302460ae4c2942fac2b41fb65a185536fb85dd24fd7584064", "0x2ebb599fe9136d424bf4abc5342c6c7447b1a853205fcfb5519e551357709008", "0x1b4b5e87cfb9262cfec3c0f0542e4c5a4cf278292b4ce3eed996fac6f4d37288", "0x2465053ae50b6885801f3f82e302cafbbb4a7581bb4fba60b637febe659e5057", "0x114f32edcdea09cd095c5bb5d38f1b97da9f05e18b3708bf6e0ab9d3d54859ef", "0x2bc70dfeb2baab2f6b387cd77be779ac2e5e5519f3d18123ee28d8c2543c7148", "0x01c9bf7a203ce22b775e3a61ad7e77b6a78348b9f6ec68a412e49bfe32c05415", "0x0514b0fe5909ea887bedb0295fbbcec355cfb575ff6a97cd9f4ad00ccb57ee9b", "0x267c76ec81934cc81a132a8b058910a12092520b12a201af03e3202d7b6c1b7e", "0x29170e3322b3d8d5c78c84babbb470adf1622493ce83e95cfb151cf757bde5d6", "0x019f6a8124b19e33af33e5d3873f9c335c6f09a45486cab536dd596ca41d9519", "0x1904aa4d6908544a8b348e9db1981c27009ed8ea171518ae5405d036242b60e9", "0x26f17873949bc679f7f043956694e422b3cee1de9dd6f6473b932a476455ff1a", "0x1ac668f612b8243c193b33720b8aa54040c476031197131ebdcac9b18bc48f75", "0x0996d961a75c0d07196dae45bf624766ccfbf8555be9796da52f81568ef0663d", "0x030c97e1b8cad1d4fd50d1b4383fbe6674d171f99c63febb5425b395c24fc819", "0x06e3ad6a46900e2d3953370255b68f89b3e523f1fe502642ee226f2d8bd0848f", "0x1d6b3755331cd0216b6880e42f9880f565cb94b0e0455153a329890588cc916e", "0x28e4dcba4b96f12a59b041535e730ac8c35189dc0b85ac033dd38c08bae531f2", "0x08b6086046a835508ccf484f2974b6a6b0712a476260376c7a3b3e4bc4a47a14", "0x162cd2ca7fe3b5f1444bcec97812019bb6fd85fba6a0536a89643e15b9bb3b52", "0x28f1e03baaea9bbc05af5b11937e4f5cb5c9a9c1192063d1998c01c64d483a76", "0x1bdb062778d7c15da395af2734c25faa0127d2aab4aa71366031a0bb6791ce10", "0x2375839502e09890cb2914e829627e0e0fc98870b2324a8b50329ebdd24749cb", "0x1fa8662fbcb61fb3ad7c55668dc9423a332dc87cfb2df456e92d33611ed7bb50", "0x1e4fad2dd6b0a6f1f8707f721716c8a446e2fb2c47a5138f3f7f9736079d7694", "0x211256d16c7269fd6df6f5fcdd1fa788ba3bd050059f53d261b0f5f13731ffe7", "0x2e49084b336eceaa4f8e2a2e6af08318f42060e574dda341f4a1079b12bcc5a5", "0x0ce19f54cdc39f7f3bf35192ac6808211aecea08dfe14cab758d25891fb00bb9", "0x0011c5d56c390e893cc394221261d8748dc60451e4ae4e1c84a8468bab2c14cb", "0x17d79ff06b63ac2a8a9e05ee6af3dbb7ca60e17bfa39b47514a8cd8051579b4c", "0x19a7d3a446cb5393dc74560093592b06b1a8b35cd6416a2ecab00173639015fa", "0x030c00a0933dcdba2a808b2e1b9282f331f04596d8928da7aa6c3c97237037a6", "0x16bcb447ce2d50f3ae25ad080695382e935d2d00184c4acc9370be8aab64139c", "0x12341b46b0150aa25ea4ec8715312997e62124f37cab7b6d39255b7cd66feb1d", "0x0e86d13917f44050b72a97b2bf610c84002fc28e296d1044dc89212db6a49ff4", "0x08e6eb4089d37d66d357e00b53d7f30d1052a181f8f2eb14d059025b110c7262", "0x2ea123856245f6c84738d15dd1481a0c0415ccb351a1e0cee10c48ce97ca7b18", "0x2dca72b2ebcab8c23446e00330b163104195789025413abf664db0f9c84dfa6f", "0x06ff9ed50d327e8463329f585ec924b3f2f6b4235f036fa4c64a26cbd42b6a6b", "0x246a10b7e3e0089947f7c9bda3d54df8e2a60e0cca84ea2ac630a4535afbf730", "0x22a63501c5f04b9018719ed99d700ee52f846a715ae67ad75c96b39d688b6691", "0x2f4c50477f7fd9c671799ac5d2e224cdb9164f58351d8aa140ec07e514fae937", "0x10ffb7aad1f51c7d13b17f4d876d9a1e38f0ba8a4a23d4b50cda32cad851567e", "0x0e9cefddc3c2d3bea4d39722532d5420784027352187e7af1a056935c35803ae", "0x07af84a4d3141e7ac23352e6dc6ea4afa1656f96a33c8978a3e83bdd4ba62b41", "0x2d9e31a10aebc761f8de00d14b1e566d1a39323d6e89b638e940f3ec8a22c3c5", "0x27f19a6532e66b5333db1afd592f66f1d36034b314dad8447656747be27e64c7", "0x0058fa3c8454d63354b2024c3b4a577a180ed99f8f3155cd7e4d617d47d07ffd", "0x041627b6715b780967957c080699343eb0414a205d3a175d708964956816a5d5", "0x006ac49dd9253edc7f632e57b958ccecd98201471cf1f66589888f12b727c52d", "0x0131adffd8bd7254b1d8c3616bbe3386ec0c9c0d6d25a9a4ec46a6bf18301398", "0x1c4a6f52c9fccf7a4138e413ef62a28377977ad7e25e49a3cf030e1cd8f9f5b6", "0x03f2a6be51ec677f946551b3860ea479fee048ae2078aeb7d1f7958d2c2645f6", "0x2da770aad2c2eb09391a0cb78ef3a9648a1372d8543119564d7376396b8ddc62", "0x15278463665f74cddc1802febfab02cec9d45fe866c359c738062afb75d64a03", "0x12fe278aa36544eac9731027090518d434e38ea966a08a6f8d580638ac54c773", "0x149b9c802182558a4c45d119d3f4cc7fd8587604ca4f0d6e21b06ff30b6a23b6", "0x0812e7b4d847bc8517d19319772f3c9855e044fd60dbac9a0adc4959b691dfe4", "0x02ed8d8ddeafe3d9d8df7f28a0bfaa7f555813c7e7503aea2a66973703a0c61b", "0x0ebd073ba0537b514deb6029f921029e55e5e4d9a03d6b6ba1304038662d4db8", "0x15c754d5b14b2c4205c6ba8d2ccd028255b3e792c6afa08b44ee75b62eff9f59", "0x169515c89ac5479db0ed8fa6fa311b391cc1235270f4cbc5c29e7cbc30e8732a", "0x25479fbfb3a68f982388f2621001101608bdc29f6ff037696d9161f5cd9a4fef", "0x14475c4bd520451f3c852cb0311a578ca7f8e6e972182196ce09486e94be6071", "0x045a691066cc66bec9baf2798833a1dfd3a847502aec8d5f5c4e73363d097799", "0x26029c0c267c799fb833ac8a11e3a3f0147a8ca037221b90013b8bcb37eba683", "0x163facb34ff572fbf7c946969c1c260873ce12a6a94a3e45b8101d5b948d1641", "0x2c714e96e1913b351d969320cc69d5ec13e06a6275e58688af8ee00c4240ee28", "0x1c1661e2a7ce74b75aba84665ecd2bf9ddd6268f06debfe2d52b804eff1d5fa6", "0x06a69ae795ee9bfe5e5af3e6619a47d26635b34c2a0889fea8c3c068b7dc2c71", "0x113d58535d892115c5d28b4c19a3609374dbdbadf54195c731416c85d731d46a", "0x2ab89102e2b8d5e638ff97d761da6042e534f1ff47f7917a2ca1a74063b46101", "0x03c11ca79e41fdfe962730c45e699546349031893da2b4fd39804fd6a15ad1b3", "0x27096c672621403888014ddbbbfc9da1f7f67b4d4cfe846c6adf040faaf2669c", "0x2de32ad15497aef4d504d4deeb53b13c66db790ce486130caa9dc2b57ef5be0d", "0x0dc108f2b0a280d2fd5d341310722a2d28c738dddaec9f3d255754448eefd001", "0x1869f3b763fe8164c96858a1bb9efad5bcdc3eebc409be7c7d34ca50365d832f", "0x022ed3a2d9ff31cbf82559fe6a911843b616945e16a568d48c6d33767129682d", "0x2155d6005210169e3944ed1365bd0e7292fca1f27c19c26610c6aec077d026bc", "0x0de1ba7a562a8f7acae93263f5f1b4bbec0c0556c91af3db3ea5928c8caeae85", "0x05dbb4406024beabcfce5bf46ec7da38126f740bce8d637b6351dfa7da902563", "0x05d4149baac413bed4d8dc8ad778d32c00e789e3fcd72dccc97e5427a368fd5e", "0x01cdf8b452d97c2b9be5046e7397e76ff0b6802fa941c7879212e22172c27b2e", "0x1fc6a71867027f56af8085ff81adce33c4d7c5015eced8c71b0a22279d46c07c", "0x1040bef4c642d0345d4d59a5a7a3a42ba9e185b75306d9c3568e0fda96aaafc2", "0x16b79c3a6bf316e0ff2c91b289334a4d2b21e95676431918a8081475ab8fad0d", "0x20dff1bc30f6db6b434b3a1387e3c8c6a34070e52b601fc13cbe1cdcd59f474e", "0x0212ac2ab7a6eaaec254955030a970f8062dd4171a726a8bdfb7fd8512ae060d", "0x2f29377491474442869a109c9215637cb02dc03134f0044213c8119f6996ae09", "0x0984ca6a5f9185d525ec93c33fea603273be9f3866aa284c5837d9f32d814bfa", "0x0d080a6b6b3b60700d299bd6fa81220de491361c8a6bd19ceb0ee9294b24f028", "0x0e65cd99e84b052f6789530638cb0ad821acc85b6400264dce929ed7c85a4544", "0x2e208875bc7ac1224808f72c716cd05ee30e3d20380ff6a655975da12736920b", "0x2989f3ae477c2fd376a0b0ff3d7dfac1ae2e3b894afd29f64a60d1aa8592bad5", "0x11361ce544e941379222d101e6fac0ce918106a463290a3e3a74c3cea7189459", "0x1e8d014b86cb5a7da539e10c173f6a75d122a822b8fb366c34c8bd05a2061438", "0x173f65adec8deee27ba812ad29558e23a0c2324167ef6c91212ee2c28ee98733", "0x01c36daaf9f01f1bafee8bd0c779ac3e5da5df7ad45499d0991bd695310eddd9", "0x1353acb08c05adb4aa9ab1c485bb85fff277d1a3f2fc89944a6f5741f381e562", "0x2e5abd2537207cad1860e71ea1188ee4009d33deb4f93aeb20f1c87a3b064d34", "0x191d5c5edaef42d3d02eedbb7ab8562513deb4eb34913a13421726ba8f69455c", "0x11d7f8d1f269264282a263fea6d7599d82a04c74c127de9dee7939dd2dcd089e", "0x04218fde366829ed90f79ad5e67997973445cb4cd6bc6f951bad085286cac971", "0x0070772f7cf52453048397ca5f47a202027b73b489301c3227b71c730d76d6dd", "0x038a389baef5d9a7c865b065687a1d9b67681a98cd051634c1dc04dbe3d2b861", "0x09a5eefab8b36a80cda446b2b4b59ccd0f39d00966a50beaf19860789015a6e5", "0x01b588848b8b47c8b969c145109b4b583d9ec99edfacb7489d16212c7584cd8c", "0x0b846e4a390e560f6e1af6dfc3341419545e5abfa323d817fed91e30d42954a6", "0x23a6679c7d9adb660d43a02ddb900040eb1513bc394fc4f985cabfe85ce72fe3", "0x2e0374a699197e343e5caa35f1351e9f4c3402fb7c85ecccf72f31d6fe089254", "0x0752cd899e52dc4d7f7a08af4cde3ff64b8cc0b1176bb9ec37d41913a7a27b48", "0x068f8813127299dac349a2b6d57397a50275142b664b802c99e2873dd7ae55a7", "0x2ba70a102355d549677574167434b3f986872d04a295b5b8b374330f2da202b5", "0x2c467af88748abf6a334d1df03b5521309f9099b825dd289b8609e70a0b50828", "0x05c5f20bef1bd82701009a2b448ae881e3a52c2d1a31957296d29e5763e8f497", "0x0dc6385fdc567be5842a381f6006e2c60cd083a2c649d9f23ac8c9fe61b73871", "0x142d3983f3dc7f7e19d49911b8670fa70378d5b84150d25ed255baa8114b369c", "0x29a01efb2f6aa894fd7e6d98c96a0fa0f36f86a7a99aa35c00fa18c1b2df67bf", "0x0525ffee737d605138c4a5066644ec630ab9e8afc64555b7d2a1af04eb613a76", "0x1e807dca81d79581f076677ca0e822767e164f614910264ef177cf4238301dc8", "0x0385fb3f89c74dc993510816472474d34c0223e0f733a52fdba56082dbd8757c", "0x037640dc1afc0143e1a6298e53cae59fcfabd7016fd6ef1af558f337bab0ea01", "0x1341999a1ed86919f12a6c5260829eee5fd56cf031da8050b7e4c0de896074b4", "0x069eb075866b0af356906d4bafb10ad773afd642efdcc5657b244f65bed8ece7", "0x171c0b81e62136e395b38e8e08b3e646d2726101d3afaa02ea1909a619033696", "0x2c81814c9453f51cb6eb55c311753e84cbbdcb39bfe696f95575107502acced8", "0x29d843c0415d35d9e3b33fadcf274b2ab04b39032adca92ce39b8a86a7c3a604", "0x085d6a1070f3513d8436bccdabb78750d8e15ea5947f2cdaa7669cf3fae7728b", "0x11820363ed541daa10a44ba665bf302cdbf1dd4e6706b02c9e2a5cda412fc394", "0x201935a58f5c57fc02b60d61a83785bddfd3150e05f1df5d105840b751a16317", "0x0a8c2820c56971aae27a952abd33a03d46794eedd686cd8ecfed610e87c02e9a", "0x180638ff301a64ca04abd6d0bd7500b6650b65ff33e6be1fd50dbc163a281877", "0x095c716266f1de59044f97114a4158a3f85ca8a937cfbec63e9b321a812dd36b", "0x17c31ea02fbc378320d86ffed6c7ca1583b618c5c1a687818d4087a497d73490", "0x05b86c4bb8ef318b6a7227e4192d149d3c17a9764ccd660de4d50a77f192a91b", "0x265bc95df4a4c4876ff70d7ea2fde2c7ab15f4a6ae0d237cd6ce74ba986c7a7b", "0x24752b47bc6c6bc8d9bbe48f5fef2f6908701739c5f5b4b3d6c886d4715c7929", "0x14814a1e0f492a4ea0d86e527a96482178d624b98da96ee5e583b9324d974efe", "0x10def931073b6479bd60577378f29381997c8e041d3cfb3dc7523bca906f00bd", "0x14f7ae770bf7e95f7f706c0d8ab4ed03fa0b880d28c69d031b4592c98610175f", "0x1aef50a0cee751b59f926af40e8035d19decc9d428ebe4e775c5cc9dce1ce589", "0x041935607172f68eba65ca60068dfe3b086c2a2d57d09602951214b57e73cf5a", "0x26863e9dd24255d1573bd083959b856c0493fbefe83c819837a151d3bf452cb8", "0x2036efb6f9830965eb3d7a068bd087c9f5adf251ba62052c652738e63ff8b3af", "0x0c712a975b74dc9d766b639a029969ca30be4f75a753f854b00fa4f1b4f4ee9b", "0x08014dab3cd1667e27afc99bfac1e6807afdff6456492ca3375731d387539699", "0x198d07192db4fac2a82a4a79839d6a2b97c4dd4d37b4e8f3b53009f79b34e6a4", "0x29eb1de42a3ad381b23b4131426897a32709b29d53bb946dfd15784d1f63e572"], + ["0x1448614598e00f98e7ae7dea45fbd83bd968653ef8390cde2e86b706ad40c651", "0x0ab7b291388e5c9e43c0dc1f591fb83ecdb65022e1b70af43b8a7b40c1dff7c3", "0x2b7cbb217896f52c9a8c088e654af21e84cde754a3cef5b15c4d5466612d6adf", "0x2bc6b0ddbe1d701b6570428bdc1ca1bf0da59ff3bbbb95fc2bc71c0c6e67a65c", "0x123a55a31980384f3d20b2cecbc44ed60c38c11f7d20e9271efab9a905eefd3c", "0x037501cc8c9dc819309a769f4df098e588b01858bc8eb7e279e2883be9fb8c53", "0x1c2116e47e03a86bb11695b0a5f6dab6b9a460b1eb951ab01c259eca3fd47d51", "0x2c18213489032e85a9c8cb8e9a65839bfaed13e57bc0fae49dbdaebf54f56f93", "0x2ee8fed3d4d2c71a0429eafd8e5db1718f29e2227985fdf2ad8703c835b9e031", "0x28c64d8f5ed7aac004c92029d9e9bf91ba9436d1cce94b9316d111c70a0c1714", "0x18a01d9ffb747ae0de3e83c707f8b24f682c84f15abf571b34254a03478665e0", "0x1c21d92bef197e73b234e4777b60db14e642a56cee71515d54e1ac71cde72bd3", "0x0ad404ccbcb1e195897cb60c80981ebb9d66a6677dbbedad8b6455fe62d807b1", "0x0a9b6de833064f93b6adb99af6c005945cb654cb7bd14c8b97af8b60cc1fb387", "0x13129e3f930aed6d47690331ff09dc5160efa58ddce2c3e6180d45bec3aa3a6f", "0x0d7a614c8991508ab1ce4895813bb1c82f18bf7bfc9e280ccca18079839387f1", "0x0532f7ec36e30041b0486986875c913a49bddf2f5af5febe8c31f2f4094ffea5", "0x06bbcb8e8e180201293e712f4950f1b0bbee808c9d64263c84d9d8ae155cb892", "0x0f558a4db1a3ac07f61e2e6bee947f73586bf40f211ceb4f687ca5678a9dcb33", "0x2be140a60b5b5f2f8edd78a818a969b20c643e419bcf0b577c24a0d0e7acfe98", "0x1c49c4b9a9f09f7b9ad5f74ebacc710512b8e867bace27cb0dea06e89b96f631", "0x170c1a732721b12cde7f33e476a39a1aa77a81c06e2eac503847b00d597652db", "0x19c27d0e52f65ca34f4e31a068e49331c6bfc39d9241f9d4c302041615cf27f1", "0x2f1bdc5254f9220c1a731fc5276964dab26b385fa40b6b04bed9960e2543ba08", "0x05b42d2fbccbf4d39d2be9339cabe9d0dc6d921e855cd91154b639d28d4a1cf0", "0x1220040715a41ad59f4f410e0c05a42c5fd32ac52fe9d06f88188d71f61e0935", "0x25f9526526155b83946609f7bb9507dd4925ef871dee916d9144ebb4ece1343c", "0x017bfe4284299ae7740b6d0e204951e314a8a5d0452419147978a95b34742444", "0x2a5d4764021ca71d78a9674cb6708f1588d2ceaf3578c4111cf8b359eef089cf", "0x17f02dab745fbe3c081321fe5cef845e7b8d070b2514d29b2a7b7d89cc0815da", "0x19da62626db7199b65f4adcf57fa4a3dbaa1764a7bd155708ee6f378c89ef013", "0x0f88e295fa2ed81b426c91fa69366a73edf75f39bf18634cd266ec4038829e05", "0x1fe31c5548546c7948fe4ee1bd7412e3280eff7d20cb09aa85f49f2766148017", "0x10fdc1613bdbf67f38bdde561b2f91e4cc48b59f98d643638fdc0afadbfe126e", "0x1f2618c2ebe9574508b9c52f0000e33ebfddad1a03fdd6bca6ef7f0093127bef", "0x129fe7fc3efac6a8ab23dba6d886f394da11f5953cf98e28269a0dba2a745dd3", "0x15afd4cdf1e4f820c1631d4ab85ca4ba3bafcfee72beade9fae60523102448e3", "0x1f2c74ba5c367e370d728e71e15b268851a7bb8b45528cb734956079ac99b012", "0x1130e1872d76f2f9369cf59b95edf9ce19f01fa89c9c36b26e09def6786dad3c", "0x13523d173f7e6badb73b63fc1c9bbdbee242c61bc68656493327533a5c1b1dca", "0x14da40d0af427a65f1841b5adc96538653368f7254cb5667ddadbbad7a574cd4", "0x0091f96400e4297ea85bb186c17b304e82638e57fd631ff6315976e1a5dd8b86", "0x303329bf9031c5515b9a34d49a64bb6a0267bc7b54a0deca5c450277a002cdcb", "0x14ed47e55c1da1c2f05d3c1a1b2e6c18509fc8336ecfe9db737916e283fa821b", "0x1161f10b357775d810ad53bcc4a20d5add2b03251c747deb04ee94c565e58d6b", "0x17a8a50ae72ce707f22bc070eb992851ca914eb94cc68eafbb8a96a714eb8221", "0x1a6c61d795dbaf62f99250b37ec5df88645a1c153791db6312b932dc250e4f62", "0x1f8bd2ab8aa840664c4eee198c4684dc4b05772bb2a0869da6722b15f447a133", "0x1ffcb852a4f0027a9799f131cd74b98ccfb8cbc06349d8fefcc62f10c8fb3e2f", "0x035e742ec52f19b36d489c720f467ffad77cd53bc2db5dddb246b23021f79f18", "0x1dfaaee41bdf94d783aa29fc62b7ec7b55673aa818d305fd42d175a05f2e3d86", "0x2821378477a02e995005a5635088540945bd333f2d1455f038a219b8c4796b3a", "0x1db4a4d0f238a570b1061c6eec81c02f31ffdd4a7c19e763174f238d04897421", "0x14bf7889457b20b7a1367b34a3a538217d693b52426aff40a4bb72893b1784ca", "0x2ced52c2bf296f87e57410c3ec9a9483a796d164f6049127109ff0d3a9c08465", "0x1ddeac5805a7f4ada4d0441ed108e3149d4ce6584f49ae5bdfd46d6766eea334", "0x2e36b4e5e9c97b462304e8e2b5f9dc88e1c9f2161ba040673f911123f042ae70", "0x0c6840d1cb0666dc59e89b1865275d8a164b447c5ed64347caee63502c238d5e", "0x137e2e3e89e71d461f4c9bc3e8f12183262a4d1db55c589b2caeaac01238f58c", "0x250932e7b0adcf2c84ed4bfb60a36b6b82e55aa94751157b1d45794b081c8aad", "0x170a7292f5634c06dd3bf09ab5c9c4ecd4b00d5ce2f35f972b4555391f16b42d", "0x0d68cbbe77289e78d5cbf51d70f1b75ba215df4e7bd0149d10b2c50f2a4f3b81", "0x0caf74563b90525f645a6d2036ecd1306fa1dc680b49d9ce4ed24c9749973178", "0x20a7d1c0a27fcce78ffe372f4c58306b166f9456ed46cdeb255e395b7d30d42a", "0x0623f3226b5470b2789b8a53040e44443385e96b9cfa0be4d35015158a468465", "0x1632308688c25e790f57d68a5350241242a56305347de4a5009ce46b8cdcb91f", "0x2de4793a6f99cd14e3f6642211f4d0b7bcfa361597c544ffcb5a567e9076f47f", "0x1d4d06d19ea1b09cad79086d51bde11725a554fa99559ca2f09f3bb73d728c66", "0x0480e7479a66a7cd9ea61c8b28974389908350abc4aafc18cd75e33dd130c144", "0x30430b03368ebcaa91246960490bcf917d78681463e2e7d744bfb44335dac24d", "0x0b57b37320127d4c50f269124b0dbdcb2b1f1352241a5d12103283e089c0c742", "0x2cf4890650d27240e195f60a4f698eda249b8dd614b23376b50178d2df6d2b8f", "0x1e221c5526898bfd12de86851a0d9703751a2f239008ab5f9b7d3b6911c64184", "0x28e07485ad7d992ed1a58f329ca12adce4ec693ebddbb2952e54d339f2eebda5", "0x2f44d64f84de16dc67bd5ead51efb1dc8381c84520c12854dd5ef3a079acd4e0", "0x050a76bc32ebd1dfe2be330f304edc7ace7167ab7ba1516f4021c62cf0d4fac2", "0x2f58c45e5d659a67d781367241f6c35d8cb46361d97b28947d29421c270594a9", "0x25e8da9ae0e42e840e04b230370e782bdb67534844325ba36fc7e5e160c66a74", "0x2fec734da20fe32003ea04f127f844724f38a368ba10c29544252be796040f7f", "0x288a6778f3a83988a8ed1727f15e93b4cb14f4e3a3bbb91dd6d1facafffd5eef", "0x20dcc6c75fd89259be7f406750b3db679a25a8cd2715d245b9175390ac922c84", "0x17f42ba10942df25cb8a541782a18b6fd31cf965d11178c7b04ac45b4dea5dd3", "0x028eeb85d115a904020e0c6148eec6603e9cedabc664abee764aafd455986ba5", "0x0b1d7cecf3a79b2ad3fa298f6cea7ae95d80c0299ecc918e9f8c9c3d38d59d40", "0x0440339c9764cec79c16efdb834a26261db8e3f12ce1cf722d23c0e11ff4cf07", "0x06ca647c29727c1962a002177da2d504f4b07a5f7eb57c79b88e6b7abbbdad5c", "0x2ea120a864f5c4093dd1a962e8f013c7b8ef778b04d2ba5bfc3cab28619ba9e3", "0x2bb737546c4aee7c0cc2ba87c1157e2a77c479ebfb5dc76adbb39cf8697633fd", "0x0e30da6490625d33e79cd50176f568f9a2c28c2f449a2bd51a25d15686803a93", "0x0df7ca7278a13650b919d85497b2ebb0f71035a7c20430d4131d903ab7f57521", "0x27cc589f5bf585794abace589fb8a74a2f784c0990b80fcaa6944097f870e2d5", "0x2255c36a38c8735de45cedf452afa842332d33042f78e60c43c7455421b325bf", "0x133d9602bd3378d69f681c27b05bdffc98b7d86cca63d73a60caed485784d087", "0x0e1548e942ae9d3e26860699b93727c817a9948616c93ef4accd981b1dc3d78a", "0x0f20f0e55d93689fe09ec312f6af47627482e4bde0a1602a8e2c8d6e84e8a6ae", "0x2e52328483cb5b7ff2eb4e45b12e51b26232c9bc17b7292954c0a9f6bfa51bb9", "0x02b2162d533e059a6eda2abb74712edb3a7860beea95dd8a4abfc957660804f4", "0x19e0927715d1cc6d389429947fb3737dad733974c6b2e13e5b3d432519516c74", "0x0d3a800457d77785636303b8b94f17dcffcb46048872ac9f74ef7f27ee573705", "0x2c974d1952557a1aac5f7bae4996616da619b73f441c4e504dc8fe9cfb559e32", "0x0766bfeeede2ccf3708e1b4ff30714c22c1d434cdbe8f55514babc2dd5d97bef", "0x23dac8ea54082fc131e173ae55e4630cd4ca7c871b2a0a479c1e74e7f191e62c", "0x17d5fb6c2cb37010e3e358ab2d575376870ed33186b8eae49ad3b47e340a8d7f", "0x175dcac76d8a8126139b583ae38853290246e43e783fa6903ec8007f178c0023", "0x0c4fd08fede5d221adb7abf549898c91e5be7e85bf1fd2a611bf182cc2e71655", "0x277934b909e72d3a3475bb1ec766ab7a38ad59b128303fc5002f02a65bdfe729", "0x0e88349998dfe703f1b184524f9c394d6004ccacf9cb952896e8cfdb0b078b68", "0x1f1b2078b60b0fce07824e2a2bc8cae8ee673514b0070a8b45710cc78cbb9942", "0x2eb1559566c536ddbc316f6482d51fa340557657700f5b8a846e812a0ed334d1", "0x1c4dbdc335cf6764355208b4c9d243d34541d623c669dec2c3ba066bbeaf6773", "0x2374a6b2da6f8cab8e5cfe8d805dd3a2dfca1e8b7eba5dc8574021fd1241e3b4", "0x19dd342533ccc603a99738e3fb5a569b94ef71b3e49f90fb874f6161733072f4", "0x217d66db6c7fb3effa508800587d2eb3c6d03d8385132f2fcce7f35f2705cccf", "0x0815fb8591fe01038cd3a3b38b236f9efca77c618d3bfc6c2a7fa89296c7e64f", "0x2bb943b40c2bd456a6c17853b1ca88eb0ff36f5974b2ff9a5f5093e9bf63a16f", "0x11a5153fce659513ee7cb9974ae6cba581e3b4cd14570c5709fec3d8d3fc82e9", "0x1b72bfd07635d8501b2eff8785a2495bae74c7653cf90e6d5c9f144426836df4", "0x14902c0700eec897ae178ba8caf850d793f1d87512bea0ecea39cf6b1fee233d", "0x09c138c6e0a616a49ff90d43a6b043f3b745b78865856dc4c1a45e2fd84cb3f4", "0x05b58a3dce57b281a271d69895052d887458a715783e8317e024a61a35ec10bc", "0x2be8d29525c0cfdd5e6b3125e3bde3bf558e55fbe867f024457a96765474d037", "0x061d72f78f1ba9dc6b4d7f7784225d6a81bdfc1b5ad6c24369f9c0560523d9ad", "0x0bf18aefcacffabdf4112eddadca6145738b4803b36145bb9516db501a0692e9", "0x2e73dd105fa8b2ec931d8cdf29ec679e3a9801a93071a7d5ea30659255f03bc6", "0x0f8440ef667c9ae81337ba5d8c927a5347de7296860b211cad1ecbfb5d3598ef", "0x004d303b2dea627b2731be83f93ac34e7d14d178a13800558ca7396395eb118f", "0x234541ad72040a70da2996a35269230c94699eef313a4d480508008cbc3d37c1", "0x0d123f1e72d26b92bdd8fd73d14286c312ad4c23acb46b2e08c157104409e174", "0x2fb360776f0de79d7098ee7aa4123c05ee6b05a8be460a774f3a048e138545bb", "0x03685c079434e167276c57d3cc79703b7dfdc41c156ea1e8b7f99b6956a55326", "0x260af0e0fffcc9772c1631b179344566b47aaada3681eb9034c6f75c3705c1c7", "0x2862b41374f89b695274b33b773f2554916e2bff9ff672545fc2f49563f62767", "0x02a9912fe170310227189ea1e691d0362f18b38b400b0eff192ca59513eba8d5", "0x08e513ade694a0d8ac1f3ebf1a96440d32c713d5058e1224e070348c281f4a6f", "0x140a4a431e2ee79400ed7465978d84773213c628264ff80f21ac7a6b673d09ab", "0x296af4d019cb5df7d959b29d549c3f071202b4eba8b53dc5ee979ed143377927", "0x01832e284a7f4c81614882b6939fc0f185573bd2023e3e505765470bb812b349", "0x1a84d56a67bfdd3d965abdcd329aa78d4fe93434496f2d103861fd19d66d7260", "0x040cb82847773927d2aefdc07489037a9d1f7631eca75c9fb0dda0cb9dbde143", "0x010dcf084cc29cb7caecf26aa633bce4ed2b019f2887cee7b1a78f89d3fabe2f", "0x07edc22a0911ea214425ef542b776db23b0fe5817810d40c72ca98aabd9afa83", "0x2eea4ab08aec775f2148479ea36fbb96936da58ba48bd1d2d3acd48173aaabe7", "0x1e40c0e8257fe4a61005cdcfad148cf7f47d1b5cfddfaa082738695518245f19", "0x23a27809583bd1ea51f436de5443e108f69d44cdf51dc1f03e21948b4980b876", "0x2e4652b044dbfe40e63b6b232fcd5f3f39abfbd2051ee68adc754080d49250a9", "0x11e7abdb6ecbafc2e7d8cdefe9c7b9c50475eb475db3c2caf7f7d67f485775f2", "0x199d52350cc30e8c73821f802096f0e547a13551b27bf6b899396f63ac5cf8e7", "0x0f575d6ee67cbecd98345624e032a37c859a7cbef30b3fddc949cd0978484101", "0x1c4b6f9a2ae2b418e6265acba9c96b06184d07028e5fb784f3475ae7772ff057", "0x2dcb5cf8896de39f228e157c0c5593f4626fb9bc225206383db20360abf0c925", "0x1340abb9f4e113186bdc26cbdf4bcca50b531a107f863ca544575e3cf870f8e1", "0x2368e692b72787cb8870ea888e714e006f59d2b4460cfb74c48a8cc73b1d1a5b", "0x1fab9add9baa4a4f56f23165775c6f2d922a7632a94f96374b7dc852756f54b6", "0x0c7f7b82300d3c6ce3f8957ba1e4add54c4c015e20d9765d220571c16ab8680f", "0x15d63e86beacd93c6083688e5d9c8f3c6947929f9f1f99ab578a4c3a922eff03", "0x0be843ae5f9b07e52572178af7dae8ed05d36b12c0607862929355ea74023d9e", "0x1332749c523694cb6935e0963a07e81b05967ce1d950c0b731058ec92a7a0c9a", "0x25439408810e074c0bdd4598b9815fee892bb95ca51029ecf009bffa5b9b9682", "0x057e8d19dd999a918da29b0940b383ba9fd15db0b0f64996dff67feb55f9a742", "0x1e014e37e9b117cf3b4870d999f2b55d3534d0a6be98e9e357fa43f01e70a29d", "0x1a4ed24e6e03aebcd6bdb100533dc966597afe15c851b4b863f6e889084c6479", "0x253420007083f1aa863ad4760905c1039ed4111c9f053f27710452f83ce36a90", "0x2276a1441971709affe6d2a99320001ec45ec72155c575ddeecac0e32759ab06", "0x28957dd1218ea799fd3411eb19325853adf7ae8ae1281f753302fe7d31dfa7b0", "0x2fd925726ab794c88bd75796aa3e7f1e6692f2914cf802267ddf01e37902a008", "0x1cf8a5c9c76a84b147c8238d9253cd55b47c0c43d82966c4636a28674705fd9a", "0x0373cbbc306e1bab9e7077368715e6230b4b2e2e4a1db9c674b8c359a41e9108", "0x060283d2fe7f23dff513d9110b3dc62448bc48f531ce0c1eab5920bf23290a40", "0x0dab465d6d910740f33ef6cc0eadc71bf8119bdfd5a3527dc8bbfadfaa40263c", "0x0cba7bcbc8224b2a8e4aba17977230a686cd6421dc0ca5346f3446b62439c4c3", "0x1e4365db0790c9c4f445b0653c466ff21db96c38b4076ba8bd68bcb4dea6911d", "0x1bb2dba2199a9ab3bc86ef5f9de7f6c5ca13d60eab42ced68de98fc643800a8d", "0x0ad3c1870c6d6ef40eebad52123cd1a2913d9d62e80bfbacae812e082021f9ca", "0x01b098c91e7b0cbb5c34588077c0ddf95300ddf614935630c0ce3a2627245308", "0x19fd5c0eac14fae7598bd4ceea3b1e2998b0c168493b6d72ae41b576e55b9c3f", "0x0d4749d79cc163f17110a404a46fe427c6434f3fe67b7e7b4ccfa6ab95bd7e18", "0x1ebbfe8114a41bb809e0b33399241232eb940ad8728c8a516d40ada440dbfdcf", "0x2704e5b6133d9764d6d3f17d49d833223e3937f80eb9faeabbfba9baf4b4c1b8", "0x2165e1c8027305b1ae0e323571635e5d540d13d710c3f9a390b6913f14d035e3", "0x2e3497e4d35fda596c06afa63bc3a0f2e55d4eeba4aceb60e65081ad63aa8b8a", "0x031da4345eecd6db6c0f7b07c7815d7add1fe0546d738f4d79ab5c57aa841edf", "0x089ece54e47aa5c908e43e5f08737c1436967089006acab1c9cd19eac4a20876", "0x2f53c15e2aded33c47f55a070483e6cc7f3821fbf8aa40677d0552ed9d10d847", "0x142aa34f4b2e8ad0df7a21b3e39c00c8b0aa2857094801eaafd72befed077f93", "0x17aea4da4c7bcf0d7588b014eb8b40979dd2725eda4e6ace331982467c7ff2bf", "0x0e970c19d19748d8c465104d8f02200363f9a41786f02f1827742b20dc0d1727", "0x04bcad9e553795642f59baf714a6bdb432fc45a0a0b77f1aba3a9823476df9b9", "0x242c0bfbcdaa76f715dbd4ba825c71fcfed671c1b1901fa484c87f810315d0ce", "0x25db1343c24104071023fb6ed34d9909078311e1efe85af0a11b19114fa9e790", "0x2ffe4d9c420a59e9cdc7c31ab2bf35187ca147cb898a3942deb3677786036a80", "0x125bb03af3e2cf18bbe6f5b590eb3bf8d0d1ba63be696483e98f283bc7cd07a3", "0x0816be42745b7dbb4ceffe5b8e24ea60fd8b719deba50037ac7b75948745c6bc", "0x111160f9acf6ec360d1b6a712313a0dbcbe23e64420055471d2ee4c5dedb35d4", "0x1377978e1b1f6a8925fa8e7b7941bdf8fb59ab9542342419283d8203435c9391", "0x0defc1d8882166ef3ccde53a4f236fba83d384621937cee57e421a513d0d3397", "0x2f8fa5c78c706e3a5d4a03f2a7a3953046d7e94cb88a7ef350e67b5ba0f0debf", "0x1a2a957ec0a723da61c2134bab0bf17beb00e6dcd84690c230dcb9e58da94827", "0x1cdf8710995f5e03412b4a7f699532f9fd01f0ea167a8dfc1ddf37e2805addef", "0x26fd31471828c36ae36c27b748054b0c0c4fe5239b301699e3765eebecc18946", "0x0775d996cc2c4456f303a2c1f9007647e11a921d9fea3f7b926143b99d2fa0be", "0x016fb9337708ca638cdfda91bd0daea6b97224ef7b2062672addd1bd18bb8900", "0x2c392fbe7d3fde42fca4f9478bb439331258255356f184af6f76f119054117d7", "0x187a2a3bf79a69fa3e5089ef9f1fd56fdb47c55eece77aa228aa3de1b486bcb1", "0x0271a863a280a32641ffa33510b2edd278c98630359532f3e506b275fd5d20ce", "0x1557459c9c74c94aa00e5af69a1e3112fb69537ce897ec0c718958d96516f2ab", "0x2a8e26ca8d647d9a6388516ea9dcff89083d539e58168c2a50c6dae30f109f21", "0x21cb752194cf43f3b51942eb0040eba9de2bcfb1c2a3fae97924b710f26832cd", "0x2c26daf996be247acd6dd4acad60d38b5a471e6322188d02c137e7cb484377ec", "0x0240176ee0e7982eebe92a68d3e3a38c26821acc0f5d058cf8c137bca2d26f1b", "0x2636e0973c865c1bd974dd78daaa8d0a84cdaf6be1ad47ecf2a0d18f117318f2", "0x19e84f4f25a799496041661dc5d975b681f6e06744cee89b7be5d9fde1744ac0", "0x0ebf89064a3af247ca1f36f6f3570188e271e0b326c4fb26664e89e1454ca110", "0x25c7e97b475be00e8b559a38c452364f4c9c531fecb8ac698f7fd73ce22e71ec", "0x0444c99e592353e5aecaa302add901c14d8c55270a160afed4429ef5598ad74f", "0x138db8887830565f2693d0e0f02e4e79e144967f0ba53b03519aba764b5c994a", "0x24d40f462114fe9ee02aafcf74b4fca24e1ae365dc75c3b52bb13cbbb2f21edd", "0x21e65d6d8ee43760bca40e730b5df4c4cf3a8a732db148f4b2951b4c61d68e8c", "0x248dd79669ec09dbf0350a15d6c75c6a9bdaacefca14d51300978f13d1ab6d1c", "0x2b8238c1548f9cbe29fd35cf91e7b48f0ebda7e639edf69fe8d5aba7924d5362", "0x2439fd239257f38181c7be3cf513f1bf7235eba94f6b8942a94cbddecf6f62f7", "0x200958235281a61ba2c4be0aa3282a18c74b6d262f5de7c2e33d2bb3e893dfec", "0x0e1eca5df88ee5f60cfa7e1fe5befbb719fad8211fa9b2d02fcc233190c17f12", "0x26b53427f9b3ea2c769d9c660fc60881a169c12732d001b7158ee4b1b842ca24", "0x20f3b3f4acafe9f8af3e06661b3a8f778fa2812522b9d70a67402cff8db2b1b4", "0x211e5d2b39d62520a7a627ece8cacbac9f97506def4ec286928ba6c27d463b17", "0x0bb743ee34802129c556731aed9d302dcd085313ce572f6242d13832e536b4b4", "0x23cb2661b488ee71e4c753ff23ae4bd25d8a44094f66b6532977e22140eba5cb", "0x03a35aa3123911cdb4535baed3359f5f6a5205b9c93ef31d35323a47807b8bc9", "0x27803848a0aed96a93fa943b6635e450217e137f4ade74a62d7917322714b697", "0x0cb37839c2c9a7ff79884cbec75f41e9be5e47c76d61538231bd8162996d6f67", "0x1f0026d0bf1f8e1dd5423cc2fec1fb5cdaa1ecdc4c3cb218dbceef77c00d2f93", "0x02a7d7bb970b8a6ed2ee66fabbba956b6da3b100f5b5fb928eef42f9708273c9", "0x0cfd7f4215e434c8da17ec3258b0bc605ad1ab2e90aa494351e4ee40bbc491fa", "0x180b11b720622a156849dc6f7f6e7f571659be69682230c5ed9ac339700a7cde", "0x04e96a965bce3d3a0a24a4a457c951582c871349ce7eee1aabfe578a94c65011", "0x15931f782b45f7fb656f2cdbd1f7705c353a23fe1d30a5a46a1522ed160df3ad", "0x2e296e57c97a5309acd26febf55ac963a5444c1c5f703ad88a0d7b97b9dd38b1", "0x26157bceb78e846bbb262f9a1e06d4271bde5a5bce8f0419952f97ffd13eaca8", "0x2194eb89847d6b0f1897f675f19c0c56b61b13248eff3ca36e34fb9d1c79ee43", "0x2350bf35477656899151ad7dde96ea7857e15501447008dab6b3d27c8ffa274f", "0x1a486f0ae591cacdaf09c58a49c4d1795405435340819e003f0469d110b7752b", "0x1b56dcf76fb23cc4a834d455a4065e133571402b7df309d59bc3105d42a8c301", "0x1a749d7964af0b7202913ef204c653f2b4bfb65ceab7b685233ab59ce3bb6925", "0x18ae590073f969696af762ffa4e8f0ebbf97f8cc787e37cddd1f321be3beadbb", "0x21c47b275d82dde6460d5e769a99421144b1c5a9da59294ade9cbb317103f249", "0x0473ddbd52e737e527364e8eb63207975c38d5fd6cc32b272102b082cd1518fb", "0x0b12fac95b6d3a881d892657c8424e645ac4e6b00515f902d594574302b26e02", "0x08ae7616a260cf6657f8f73ac284588d2c5f07ff425d837aa7cdcef63e3e2103", "0x039daf6876280b80e873bf2a32fd2834a83c69757badd58a888ef819e926ce28", "0x25e7b1d7470a3c75f13f0b56546c8e09f2d8efeff06ef766f9c783ca869d130d", "0x1e8fd3634c3ff764184d03435f98584b11b5b15aeb9c75262da3f1ea2c2a9e7a", "0x241dcc51ac37808a415dd1e3c281f05aff11789dc0cafdd77a35484e0993f9a4", "0x1ffc3153c56ef9755932cea2be0573749bdafe1c4fa0781a4b8b4078ce9d7547", "0x17630d62d9a3e510c88a4d43c360f92bc0fa00b66031adec29bd9543fd3a17ee", "0x2980400edd1d74e3d69db5458d2ccd5fabdb236ec16a82a4301a0ab59ea4a6e9", "0x3034fb24366123ec6dcafcad35726dbfb16194c036dcd648fa69439bfcd00cd4", "0x1aa7e8f4189ca9dff3db2ab7648be0a2392995ce46041e04680dca8ad7232df0", "0x1fa195f834a69e62372f60eb497da167646eae14153d803b39dc5d11f5d7800b", "0x0f23f1c74d5fbf6195ad5a6aee5e56993c5477e8453f5b93a0d7bafd333036d3", "0x016556fac9348a735ab50aa089c97151b3caaf0a20a34fb9d9370505a1515729", "0x23d92b793648110fc5aeef0633f0c77cacb0dbbca1879b8a6f6e5df445e5f70b", "0x2e4c10ec5e65e2f239bbc43c13031df2686ab40fd79a304b05d611b823f23b73", "0x12418bbfd77b63ad5e16864ad9c32ffbfc5a3dd9b78ec2b79329fe5e0a8d2953", "0x1e4a8aace15abc1d5b76a9e848431d2c06a78f72b6bebb1293e6c58e5185696d", "0x0f3e96107decdbd6872c20ea09acf92cdf17a3ee1d1331488092d96176deb755", "0x012c3780207f395cc21deb0abd951681eea32498ddba6ce897a8f9f0c2357067", "0x13eab1b4e672ba1b1c1bb901769301f1e5659d03ea10c61de2477ff0ac221421", "0x20dc664abb20b7456c06629ce37a1ecb1a27a4e8b24e31b48b9c4635aa30323e", "0x2c6b1e2cfea78e2c36785e76a8cfb1b057e9471f24f5b391175c3decb01e000f", "0x188c926255f5b7af3da96355729c2a8670ab4c2c70400481b2ac903740e0c5ab", "0x2f9913208e09e3d6e9e6fba6384fd076ab89f2662976e3e30e0870bb30eb54f2", "0x2b33803d90889706e714f720b5628d26fb60b545a1f3e9ce49a6ae912b024086", "0x26ccabc10eb04327cb5cc3dde2abb36f097086c97e738c133c9f57077e748b09", "0x1b16ae0d7c54408cb75fd931f246751f2b0c3dc20d79e82a2531b76c22b4d5df", "0x11d0bb461bd8af2844f49f0f840c94ef9518b2511344742d1f5438fe3d415ae4", "0x233031847b476bead0118d3db338e89133ec420d673e504ad647259df655571e", "0x1f84e97895bee438eb3c92dc9b1846c9ad29c164387b06aeb6ed1841ed8c4dca", "0x277f7f9b542f0c2bb5f45bed054f09624536010c3cf9452d2273193327f801d6", "0x1efc9c9069e5068baac13d2e6645641b7d27e80fc23077161535c44682ee57a9", "0x0d6ec477761e2efbac4f14b3bf3d5257a99e64c3f25fe104faf988b20fe5ff44", "0x0e0e7d7c5501999b7d16173b59b7cae1f203bef21aebf00251881439ccf93013", "0x217bef2f4f12c6dcc91c2058a23391cb77de53ca6e44dcdc6ea3d36fea326ea6", "0x05780c88adf01531b50f817e3fe44447d29b35aa8a389c71e8cf1226acef68ba", "0x18733887a6b2b3b4c90d8e4990196e23445e47d7ea5939ebfb89a3ee3d67b4bd", "0x20bace63acfcae0b1c9f2bee24b8e9da85ba597d37b0905720c4f15db231b07a", "0x166ea595375a6786ac527ee9eced73ed6bf550876abcaf3ac92b42c808b00d8f", "0x304262a9eff4040acf43e322d6f52676ae2f853ec2e7a80db00c488cf917c74e", "0x226bac7050166e5f6db78cd0b12d36f305b6e8c9a055114ad7709e6f57245b6b", "0x26b2f539c573829f6aca91baa954505bc5c3eb4e1df1d638582717fbdf2388cc", "0x06a0fbf4cd52e93ba5e4c6c4af65db02ee96297f8ad200f2f1cff252e769b551", "0x2cb9c24112d35341aceac88360fb528924e58b6ecac321b9fb29e6aa3368ff23", "0x20e88a4d607526dd07fe08a3552a44669129eb87fcc0b13aac8fe8afd9301521", "0x1544649a2bd73e3ba72f396df91dd65401dd8faf51de325fbaedb9d536ad94fc", "0x1980077457995712c44da7e17713258e3f8eb354bfd80ed9eaf3ecbaf6960105", "0x25d1d22ff13e7705d3c085f97fc4e4f6914b82ffaa5d2091ec64dac423765ef7", "0x2fec990ef556efe1035a464ff5581e74067445cd54abcaf6b8c0399fe0d24cfc", "0x1bd9563506d9544ef3e4830e13545012c579379c2dcc1330416c4ae49bc4ec61", "0x00affcd17ba6003c56dfa85571fc29737b225a80d480e7dd7edec01f14f23010", "0x23670dbaef966881f07f919a2d883128c7b23cf767a477b2b2e0762bc0dbc18b", "0x1f93a532917394c7e22fd17abeea6389c66fd7ae2dd9f02f860f6d96947f0edd", "0x2de42e9f537b7d61b0213771c0e74f555512be07b6a50934734e2c5beb40be37", "0x25c557f45b99781cd37d3bb22931662a67f78b37782c885b456bb96d55e88404", "0x2074c8b709705c9888538a7f8a3c4aff647731bd16f8e254fa74ea9f2be7662c", "0x2738355956298138949e442171d6a4e4b74ef2065740db7cfc3a0b60fd573acb", "0x13d36ad0a4ebeb81969778649659c65cb7d0c41cc519871fdb71a9ea6a0caa56", "0x08a2c18ba41381348c1acfbf9617716806b462a1691bc2e343b79b8085e376b0", "0x059092fc395aed285807bbf557ad9a1041f59c079822b1088457882fee7b612c", "0x161924151b5a5ad2d8cac119522a991a906f15e8531dc70567f6b28371cc24e3", "0x1c68ca8f7aa17659075405ef6341b8e69a298b9a4d72f3bb854b309e4ba87a1b", "0x27f5d03bca1c8207f7239a4b2cf73ae559a15aa37e7bdddf3aab05eec5ce5592", "0x0ecbff4846962a975d347ea9a8fc465fb46861557622f2c2564a7e639833c169", "0x277c4de2363d8b5b456cfc5a7ff8e46ff2ec8daa59855f5ad64bc0521f3ac567", "0x1b11862c52acd351b7a464793f4fbb57fec99f832b63226f95d175c8d2fc08b2", "0x06a719c584c74ffbdd7218eb565cb4c8bd86c92e3dfb3c73e1527201aa51234e", "0x230e4adeecb799877f7ce9a58c836b99d533584a195c1d77a313abe1c7d126bd", "0x10b109b864809c4767a133cce6cbad6c88628173b8ea51e8cca85830ca7de522", "0x0e21117970dcfbd4b1526b253636f377538d3b4faaeb5a8b24bf6200d14cc591", "0x2667349978401362f6b17939eeb0e64ff55607ebdb35c7071db46bb3e7ba4778", "0x05000fa5fda505e029a13bfe304c267b0d86c72c039babf6d3ff02ee246be02e", "0x264d9e094aed5f41a60242220a34a284089087b2436a9bfce8174cc9be8c2e20", "0x08076f9c4743de6130ff622cf401edd2c92f24bfe114f3c5e724891746315c47", "0x132370abddbb0b1dd57f2a520c25336bd7cede94b95bbf5c2151d6d88e641b64", "0x08ff1116b7a227bfdfd4465a67890882b615c8c4c17f28d8d24958edf602ddcb", "0x2bcb0b0db8b9e3e02b7e9c1c9460fdd9c6cd98562332e648d8a3e0ab94597520", "0x12ea68ce6881becad7f8a6b117b03ab976f7abd597f903b0bf230d20d21a943a", "0x27439c98a76688067a097b19b6fdd7d78d5f88e274e0d8fea5ea6b7406fdda7f", "0x02f40d0ad05f5652e31ef9440ad71ebc8419e393493937f05f00499d02a99e36", "0x2fbf04284327ee4f680f06bd390e309d0d13acc74b9c5b14b63059b8cc7abff5", "0x1be686d53e2a8ad57a828b0651425cfc6978c7027edbf247f6b6723c21df86e7", "0x2683b425e85a508f96852f14b4220fcfe9f7ad8b17bfefc0e348c47ca78bb57f", "0x16dace9b2e8012e31db1c7ebe672d86bbe61a1aa3e1693e0eddfc0de0a9dd951", "0x27a321f8c7d3c9022e962f7fef2e3c848b4539dbb75aa139f30430fe545bcedb", "0x06ccd7210dee1d6b0e22b79e12d19082d8078b788d71007b95e7a774ed86a651", "0x0a41dd42221653752bef350f6d74a917b6cbb1fd76a3a12166f4d0be978e4026", "0x220a02881e4d47ac94d950cdf8386274d1782e27cbd0d845978deec91298f165", "0x0e2155a545fe5f3cbb6397606589eac19cd92639339c6b017298a4ad3408b4b9", "0x0f0f19c6291e51546a267c60cc774e5fb9d088bac530782d891ec1af4b847073", "0x0e925bcd1c6ddb4a3a1c67ec8deefbd40c53c0d33e7aeef1b46795aed5943c9d", "0x2ad000b1748abb812cd6e5411286b9ff3ef0a5bd3d259a36e45ef05b9eb5beeb", "0x0a65aa232d32ed6e8de63d1cdffebc2f3fa616465c27aaf97e8cd3dcff648652", "0x0263d8470ab4b1c61d74d8e896242f4f261dcb167a3a06923893d7cb2c93d6a1", "0x2901d946addc94b040fd58004d9a5f8cd1926540c7a8612cec1c58cb60c2b3a5", "0x1889cfa8209f4952df9022db9dc583b5717a0696da41cee64937d0cd6321e693", "0x236064d71cb6c64c84747ac25fcf8d881502e5f03bff87561b85a116b1f39aca", "0x2ff7a174ffcec29862e04f5dbdc73ebf3661570033576290c0c1f6cd8ced27ae", "0x19e724a1d742cab103455f0040edf745a2696a71084c93e322715450dd4d6f5b", "0x03eed3892b6f0e6c5da1059c5f3793985835aa283500a8129904a94c87f161bf", "0x08e2b8273bfa30c1ac850306d91e468a9e8d05092aee4cbc80c687248463ba30", "0x07adcca76d8337728839a1b6ac3b3ed42afb87d72af98f52f416f2ec58b28cec", "0x171ef37896bae2b1020a0a5839bd51784ce11bb4237d548c171169d32fa19b40", "0x20ffdfcb86f4d005064edbc296918c332d32fbeff1729de5056a26abbc3a35fa", "0x08ecd7a6f1735eed86baa094e608f488f38dbb398fcfed4b994383a0ca8e4647", "0x1c3f5d86e5921fde9890189f1d8c618754288600e6928bc182ac4d5e4c9f0ccb", "0x29c61184ed9d460f337558a1af639aa7e3c0975e4014ed8ebcad4a25d51eabf3", "0x0defd45b28958728228adbb2dbdaef6a5e9b1a64902a734f402b8cefb8ab3b56", "0x0a74ea22d8a09336060610179ac1d82fffa9492df76deed4ea60e0133b0811a8", "0x03a37bf12daf1400d297ac4ac13ba24c17dc262db16c8523deee4e0ccde9a680", "0x11fe1790d5abbf5935ff22318e4f7ffe69966ada2f9136b54f830eacb0a65368", "0x018165842f406375f2346686915afb14bf1fe0564c8858ee3bde0aba3de5f68f", "0x261db25e7cff5a9fb72f276b1f9260b667300fb7d361b50fd5c0e8b6995b05f9", "0x2a3ac3314b2b66e796fbe36df778c5e46972320cc43ec807048826b6704ba7c4", "0x23caa4b80ecfa99e9d3fea2bbc1dbbf369d1bfc8937d03d074061c30fd8cd76b", "0x27db260085e224898df145f23f635f2066d8e4e124e581e8c6261929b1dfe107", "0x274f6c5fd34a784d6b915ef05d424ee6c0babbf369e79ab138b8167b5618ec7f", "0x2c3a29e13a84d26a0911c9289daf1aa4cf5840aada0701d57e23dfc796da6da1", "0x1ea210f2001a334d3e801f4e53270d42da7aaf317a553b4282aa78eaa2282e6d", "0x254dbeb52884b699c1ba7fa0d6e80d610903b18a3e509c36351ccc3b024946e3", "0x059e781d65896ebe0e4ba26dc2f29907f47bcdeda4a2ca2c713d8505ea31fd5d", "0x0b5b1cec63d42d5e615dc269b885a24cef303ec78c972dd17cdbb3e915cc4ffb", "0x2a7c015e9c3b2c57ca8b7d26d39a1bcc85d6ffacb7d9fbd66d2a8f1d64ed0c92", "0x29b736b911d71a79cf63d8a6f786f11bd5abee24161dc567a7c851eae1e43b51", "0x285745a90a7fe3d09af5a808704bc69c6f1701e573912df5cc1e265d596c4141", "0x2d901b8195c3c96c8c36eb99fec0134ec2b8304ae810bd30da554e3080826715", "0x1905d3518355eaba7859b591ed7b8c9c253980f0450dbdf54d7a7782ba058392", "0x23e813026fc0b80064d19b5c5428942fdf7efea80bfa8ec4095272bfdb7b4c9f", "0x23c0a19a252c87e6b1c1c21b1a79800200c3fbff3e3300e7e5568071de9efb81", "0x11c4ae607bae492413bf62cdaa2c2868ed1fec6dc0631b067ca60fab125b9e2a", "0x2cd055ebb7ee4686365dea450f046ff62405fae1b1afc9fb01707cf81da0e3b9", "0x053c9fef2e021fa9a20fada22fdea1505b58a3159bbb47337dbf791b215b1452", "0x0a35bd74e87cbabaabe89ad1319d2c9e863b4c631c21938c9a5395bf97872a9f", "0x1c115056539ce20cd5a04d1a5c43e2b00fbe83b25901be36f5ddc4666fc383fe", "0x242954047e5772fd3bded590ec8beb4c542f2e264c8c3e284cdc473505c51a90", "0x0e2abd315b47c0dc93849c0cdf267e811cbdbdb200a6e7c2b67edf7cb0174214", "0x282b37020c0890d751c3fd76950d8068668e1dfeae621dd552d2de887da2ea75", "0x28933852266b52d9ea6b5bb923d9d94f2e5a5be5c778e75e07942c234b643bd9", "0x099ab6765505ba1198ef140e77b7954d4fbe79a056ce72bace39c048c00da3cf", "0x2af211d8e0ac2d8fda7f849b8f229a225c6186b55762c7a7b2ae2d1dd85c57cb", "0x0cd070f234014a2809ab90c71c1da61e98a96322fedd99b6aaae1ca104f3facf", "0x26793e2abc8d3c30c60626fbaa158f263587d6bd15833d448b116264b930256a", "0x225be36ed0ee85e1f845ada84e5748a56699152113ff61b5056b6d8bde60c19d", "0x02174f49edb02d5154d2beca2dc92b9cc595383da1fde8f09e4b5ee3ea5a065e", "0x0f64891c2c8b020e46c3594cb758f0bddcdbd09bd0308816fb41734a869872c3", "0x192a84ca2f99d36991e2d2b1deff3989d1c156c239e10e9f56140e1854576067", "0x29dfcd7b63f05abf2753a8c341d6b7a60c6243b04c9a1b8b3320bba04a4d4787", "0x1ee27ad6b9b5a867733afc61a2b3e76a52ba3e4bd5e657ade91fc038819dba5b", "0x0ab4773f150c3f8ad3bc9538f43cec395a7e3731ae973fefeb623a09217e64c7", "0x13c352a02f595186202cb0b99fa58c5542ab67f9b6d3a0afd103deeff6d80f41", "0x2a97cf2c10c4bfbfd299f67c52a169f92c05b7dac56a41c4dd4fe87c8246ce14", "0x00becbb47042bd7f8c9f6bb422162d1aed089a28482f7fd16ab06a13285fe702", "0x008e44da21d738691b881757ef37ed29c5bd9f7a4450fcf53290a92cc2ca2176", "0x2b205a8b6d4b7063d931f3bb5d3464053843fe7fbe4b83c17883f86527882a18", "0x2d9e32a7c90556fe108d255ac01e75df338fcd63b2bf84c19280d427298863fc", "0x29a322a84c25bd2ddf6e2e4200228d95abd6349a02266ac1dbba520738ceca97", "0x0678c9bfc6f2df012f4fe55e33bb68ac14ced1df0d02152792089d046d828c43", "0x0faff3a5e7425794fe20a7e0eb615b8b1760394b7f2304286a3ae4009124db23", "0x1f8f5b611af9feb9cea86c084058120553e404103aee213f5a41d1d02541c0d3", "0x160875d8479602f96f40acc2d042ee52c1588b6a29de4284965a6dc6c930ea07", "0x16d87a5183a316a1d70afc951efe2cd667c77328fcfda458cbf5fe3045f46d9e"], + ["0x2197703fceb4cbf07c6dbf46c4ad93e7d14e554db66d09102ff84824743fe4e7", "0x1322f0fffc7e4854bd8b5fc23e7106b51f59bd5061d8b565aca2fd3efe512f79", "0x19e414f80380aa2d222133118c337d82a8c5894c2f88861ee46f448fa9d61359", "0x22241199a4df9cb7d65249d9562cad6c65f16460e79a7939cbfdd6d7b9209d9a", "0x0301061735384dfcecf9a311c22ade327b51c78b211615f41c77f6d85e8a41b6", "0x229e1d86c1f2810f4a2633b7b4b5bb61b7dc5d19ac95fd8d379548ff2b6850ee", "0x0e31dcf9c53209a817eeb292e989727c3f56bff65883afe5fdc28ac3dfbea675", "0x222c7318ebe96306c9d79ac11237263c6b8eb25272eb88407e8c29a358b40f2a", "0x0cb416b42c53a829cf4fc823be8f4fedd12593394cd529053ff4e3604974a2c6", "0x0892729d09594a8d8b1adfbf2e2ed75399dee612842b6db3d2d2c2aaddb6c0aa", "0x18e39e9ae45f14ba97a15bd672711ae124375d9f482a4487a0e334dee2d27c71", "0x2560c9ff672e6ea69dbb33844d0d22870461d18eaf0f8992d4d7ac649edd6610", "0x21bee2b8ed54b726ef17f77366b1dcfbda7ccf1e487f9916e5f963e814c57312", "0x300e1b28dabebdc0d4bdbc19be29a3dee4eda8425dd0c7c6e82fec147cb070ba", "0x2c44a5ff45deea69dd2961d67011af4982b9405f9fe38de4a732d2aeae88cc23", "0x0c8d59fe1b7f55095e6aaad9e3b4e7b1c93d876ba3234dd1ac5ec64108291bfd", "0x06cf82bc5fd115d348a30b0c45378d90cca1660446ba049759fa53103fcd78b5", "0x2f80ed01a2118d02e2145111c3fe6ca70efdf95d8abeaee8829293347dc9061c", "0x0bdfe7f6803e4dee7b026e079075908cb8414e3d651dd12fda67df08dded9e42", "0x06cc48ed882405595b34d39138f50bb5b31a963a0dba66aef17c19ad622e29b1", "0x2a67f3ba6d15949932ac5622cf9e2b493801bf16a50336a4518258bcc6867c95", "0x2572725a67c60718df656934aa78fbeb80c8f395aeb6a20cd833c4b14fef412a", "0x03bb7f6ca43545b11f19721265b416166579cb753330b1879b79685d1df0bfa7", "0x2412815e863f8f3bc28bfcbb957faa5f393300b25133e9221b8eb3156ed5c12b", "0x0dbf64d58df212e4307871966de097a5db09a93e5bc305cebdcd0630f433af45", "0x274c06c01158e047ff4a791e25b7bb3db190529df8f50b6386273f810f15c6ab", "0x23cf40693f52abf0ed3d842f7bc85d1a2111d0abecfc18acd0fe3991ee5fd33d", "0x1daaa926528f3368f4e4cf924166b8bd3ff8daefbcf900e6dcc4ee63c4099698", "0x10103789dc9471ad718657bebb6781e39bd92fd20ee1a32d0de3ea2817a01555", "0x0009bc25065080e6c6e9932e34bfde78d1085f19e9ffc8965a4660a4d9b6d607", "0x1312c727cb5489bb174e1dcb82588edfab31a2999b377dabece466e9dcd6afee", "0x20294a462c7d0c25aeb5374618e5e77316682ae3d726824f15f00f7cb9a7009f", "0x25e0c6be89bbb04bd8391c90cf35588f0e9d73fdb06259f47a05513ad7a23e91", "0x0084a0b87e0b336c9a911069f89d875a38be313efc420d28b9ec287f28810fd3", "0x28a03ee29f612aab268f76241d54d477a1d97f5807ba2e1812f4d350d7c6f7da", "0x0b6794182b723a12e0b35f76bd55a7d106ee6a4035527c4d329a6f33068d7eda", "0x015b9a698465428fc686b79db4959c8495b92b85122f6a6932940836facea86d", "0x1bfe52289f811f5c3619f14866138ae9a1279bb76e8cec9a8936fdc36f59df7b", "0x1cd574fe8d5e4c428b92b23a9717342176e1d309a7e259052c31bdc9af091fa3", "0x212d1bbdfaaf0200735bc5851a156adcbfa4f607f5da122e1f63afaecd38cab7", "0x0b0479e28820e883d903a951f95b13093788e9e1ca64ddf2abb94b13fee9edbc", "0x0110f5257c21c9379d73b76e9ca95c513c77a15cc8ee0ef726d8460d4fbbdaaa", "0x08c52e9401a9764f0c2487dfed34e215c186b6c2838e38eb5a50cca4f0bc6994", "0x2e422b4323cb4c0af46f4b0e5052f75744c538abccc7643f339440dc3aaeeca3", "0x2e12482ba160472d45549ff79cd04aebc4a327c4bb9d78c2573b835b05c55fe6", "0x124fa5f9c5a96d6cce92cfc73ea2446202f09100eed203ae4267aa637a032d36", "0x0bf651f82f83ca1fa037a941d4e2a4b3e08f5e1603f933a1723adf4135796de7", "0x21c674ea7b834741cbad39b21b242ab9a5554c6c9f92e801cb1fe4382b619463", "0x214f91d6c4aef57e83186b57fd9fa48a193e1caf16d7f6dc1559d144a271b341", "0x203e2218389729c26c6f66213f2269c262785ec68c759599c2d8e3f68035055b", "0x1aa934198713ce17658f51293fad44b1c22fc80391405ce76c92b2349b7eb3a2", "0x1014d4e5ddd9c17b3c2b29684476afdbaf7fc56e8b799616a67bbc6678e45351", "0x033c13ed45b4762a47e1d2d45d7fc8fbf9d4e24546e20dc596911fb991710358", "0x09bc1c3274c569e7e5c5d77c51fe69b23b7e435138f4f3217016a2d70ce71d5e", "0x1803171c9dbc0610e38d8308db101d6a99ca90137f6ab8cdab2a91b36b63322a", "0x0ba6071aa98afec3fbdeb46a88e4a5d17bd4454c0e7da8c74b15b084488cfdcf", "0x179e90ab4b08a4ead281a8709057487e077b710879911f215fbd6e8ebf838e97", "0x1cbca88b8ab3f0588ff87deea978d00008adbad808e6510897238ea007f491a4", "0x2f50b20b33692bb0f62777de5e3198377d7923ef2fa8ede08831e10f7e9b9f5a", "0x15ba030e8f1ef6f260566fd6fcfffcd21a1cfc1232f7ec7148ff076d1ba68707", "0x0dbe053da01aa4b7c0fad83a3cc966f0b8281bb4940f97a5516cfb9dcd543a6f", "0x222eca5d754afeca8997f31d6fcb94a5d799afb795e68d4d8b0ce6d839f6dd7e", "0x2abffa43d756ef242db7f584bd62405991112618362f1b29a33ee2131b46a446", "0x03c92524ebe67300d0dd0aac464f0e6ecf962d6ad41bf2685f077bfd788eb3fd", "0x282241758ade4ef8ff3858305288d3b4a52209295d1a4bc89d885b2f5dc3341a", "0x02635cb973d71bb3d2137bd81680dd3bc607fc5487e898c4c2d83c1dc2817687", "0x13c866aa66e8d506079dc24c2df7b1e691994887d35622f4cfcf014bbea223e9", "0x151f0007ccf42a7ef969f1b6f6315992e6594bb5344d2839fee6620b60e2c023", "0x1c1c6a5ebccee8caa4dc7ef18e194274f6e198d2b140ddcc97cb15c92ba1409c", "0x18330c9e67d62f7861a996d7ed69bba904b0dd459f2b254fc7cc53dd28e45a65", "0x26b747740c95bf139cb11bdf02fa63a4bdb29a90f158933a1822cdde5387290d", "0x1475676fb205084246ef9bc7234f312c214f426852dcb2ec7dc3772f579af8b1", "0x1b03ad9080d29b70aaf30bbc3200efffe73ee269dc032d2e32bd190767bc380d", "0x21c175f937c2f82e99735bc7c201284f89577b27a1f84fa24642eceb552f4455", "0x1192e0269a6b66a8c5887527aa4474c2de91cf8c71ebda835df2cdccdd4a4e4b", "0x0f3a12c0ee52f0d34f2b4a0dcd13541b48aeb3d5121d311113bba9792a45a58d", "0x07fb521883bdf78b33689205b45e52269458a061bcb87eeb3b1e183c6d7eb5b7", "0x248d0e8051c1a965640c96c6f010c4931fe648b96f95ef6f5b8e474f64cf3169", "0x2ab553db9ead2c82ce91febe180529eff3521875f7e90a9b8b7a3c4de4877cd6", "0x211ee3bda3c95f1954eef22a0a82c2ede8444e42a72a8200bab6a133846d5b5c", "0x111db3b5184ff7412f79c129904a9cac4ee65a51c2062d66732f54bcdf767be4", "0x1a73843264cf9a3a1bb6fb68ef76037c4fa98337e5c10096c630b449ec4a5f67", "0x1c2e5a2d9332f65128c85358662d6a7c44353add09c27cd07da02f9144da855e", "0x0e2b35fe1021b879de5b67a7458fa6188bbdea39e2bf468a1a24e3625cafff98", "0x2e568594e5dfbfadf272b8d6e8c99bd785c4fa94ce9e87fa8a9a37e32c7a28de", "0x07043c7571cb7dc5205bfda42d693527a4bcb58238ed6a6a248e7917ddaf0c3a", "0x239e18a0c85b845ffd6b85e96343f1a8378f3c691dadfb228da6ff7aa79efe1f", "0x25e247af250c564c00f5ff1cf1f2bc8606600f173cb65ef0780af9f5a1b676c8", "0x031ba3385664544e3e0801f1698b15033a6049b2504e9cdc2c6e3eb2fd12100d", "0x2a33777739e2ab0adfb1ca5687db1e059b20370cbeeccad32da5c3609431ff65", "0x2bfd6f0e9e996ba13749327b9c5cec69903d413b2df29b777d05384b3e7af952", "0x2d453d93fb36fbf8e36747ee92d90cad9e02e692d0748c07fd43eafc2cc5e823", "0x187bd8043f8642cda2b6bad82958d115818880eb80f6b730381d974ac5d5037e", "0x21aca605f92a48ac35708fe5140729fb35c3e48ccec441217713b08649443930", "0x173fd164f5224ac06c2e99f3e2eaa6379df113de30aa485e8bbcc7f0fd2d1e03", "0x071c66a6463c3fd4292bf1e5acb6de611142d73cd1db590e89b61b57d44d69bd", "0x044a40e396855be550d8ccce7b82ee2caaef6675bebe92266c666982ff72bbf8", "0x1176d9f52e12df67f087110a15aaf98d1ded293ffdf99599fedef2e51569e4f6", "0x06e8eb7dd026d257b15c6624bee2f37d5b67b4a671cfcdfee5797e8457b63916", "0x0696aa48c1d5fe84ca5cf59009ab0baaefbb612e32c91d5ef306def38dc5673a", "0x0853c33a9c7a7c3b355c92c75de444365db82d241eef9f3fac417004a3a1accc", "0x3016c0ba34678e0a67f59cf96ce16e908154f5f9802591717e66e95ba25ab77f", "0x0af008601dc9552517f303ff9e22c793a682caa93256f2f09a4f746542603b0e", "0x04cb6d76b5a27a5aae387cb647790318c25fc16f8d7d1855a38765f847f731b0", "0x2ecf70c372d8e5edcad49e58d47875f26933d62614f266e6b4f586177148565f", "0x01f393a6ee74dd6c4d52b0e7820a7132f8c4889742313c06caa6ecc55f3dd413", "0x2e4d4ce3f97bf96ff86b88e969d13e415e14721282769f7cf8c3a73723f094db", "0x306000ef24a7f5a9c652e3a9367578554ea59bf8efa0bd8bc5776460c18c1add", "0x26e58d6287678f3db9c225c1d3b93ae7c43a69024ebf249c8bde40617c2b3d49", "0x09eee09f873d1bf683971df4d7ce56c8f0b8b98ddc05b9612c0a0d317310655a", "0x0f08879dfd4fa0dc11ded556ef01c6f94cc6f4d18553b08bcb1dd604392ec00c", "0x11459f7e9f0e3c727777e34d6d93ec28a25bd867171523bad5be0d5a20029eb7", "0x04e9cbb6f6e8e805a20fbd801a53b723f78c1f5acd227880f7f37f4e5b0528ad", "0x2d2ff32eb7a0c0266dd46bd5939c9a9aae88b3e9af5dad01a7304f9868f7c7c6", "0x23b77eb0f27e950200a590447d645a723d9b405fa2538a5cb76fc5fdae16d839", "0x2cd6d2c5658ec0792daee2067e2f958d6849886318a6c1c27233a469e9998c2f", "0x0ae1daa420bac90780d0c83026bfcc84af83953e26eca839da76861e739855e7", "0x2b495b854553d02a75b68763bda6dd8ef0e81fe32b5cb072d3f580a914967bf0", "0x056fa5d7ce2c32bc5735351d2d48af5d6c9256a4b72e12a35640b53ea959e296", "0x2ecbe1a06b28ec78ea7d22df11cd224a0e1a0ac7a3476c5cc3c4e50da961a87b", "0x143053c1c387f9353bd677e5db6e9975792bffeecf02d6aa0fe8f627579fe6cf", "0x04064b25584499a011ea74ac047a8b37494189bc63342bb1182e234212d42bdb", "0x100f61f6b81542156760a6d29af5dd8644c82deab5b90e6ac66de8b4a069564a", "0x18d331b2e8180b7aa7055c029fa77aff4f02b0e2a2078bff67688ed65b51d6dd", "0x0fcf9b89e19b1a55f9b03255cf80ccb9fb6aafde2b46207d873fac80ccef085c", "0x254f801f3c89c62436ef63df67d912c1f231bb1f76c6c7b497f7708dbcfdc17b", "0x16d8e85e57819a10a61461bcd8d3d3c963c4f95afba3e4d8fd0d6ec882b9d161", "0x29c9565aa702088bd443e4620d84bb2bfb93253a8f0f04e5cf408c92820ada84", "0x294fb68064643d8beb237bd705a557871b5f1408624eda46d47b583a60d29cf9", "0x2c26f3083140c104baf24c3df922317584aa11770451e6a846de7dc795197313", "0x231811279854707dbaa537cb27241e7021a949a1d9671380a7d6944c838904cb", "0x1419365adbb91f1f7d1bb0aa8a4b5d11c7ad0570cc6cf3638be9c5a2a275b495", "0x1674425f2e9fcaa66eb001feca48ddd4b2a29e86d451f00d176ea35b4e02fb84", "0x291f956def59b878028000cef03d7b54dcc2fe1dd5a75dc180d6d5bed898cd30", "0x2f1302894fe6a26b5bc03fbaa69c4d95012394d78de494549c7057b7ef965bcc", "0x0627d6d6d94d0a19a17db45c0796f7db8de13d278a2b24c99ac5d92d0a1a1ce2", "0x2ee297662bafebcb01df8e62bd5f50f03025515b10465d59f3a294f0bfbb2fc5", "0x118029945df773f52fef5429da766b902eeae7d967062fdd879c60a1bfaba75b", "0x306042d262f6268ba789eb4323c2169279752ffec6b8536cc68b53bd4df0e858", "0x0472a13ac7da9ebe1132e05f9ef609135c82a0ebd9278def2b34f8ce709aee4a", "0x2e8f76b27b474180f00c5a6c2d65850bbf96019bf0d76dbb4743a970f42a130f", "0x1e33984165f47c204a33fee31f613544b7d846a7d5ea45280ede4b362c32aaa4", "0x17f22e27252bdcf91a72b59eb276a666ce4fea7adfbacb2ea9fdf28524b7b43d", "0x00547e7c70ee4e3fb4a4d386c8baa55d823a0f02bc963b43039b8847cff6e6c9", "0x08ea4ccbf815be325ccd15494f38f3f97153ab09c54a87a852b2a99480724e25", "0x277cb45f3e632718673ba05d48c712fe7404df9eff5401cebe45d194c67fa8db", "0x0159ec7ea49aadb3a8b0a23c1dba0023807b0d099d3c40b69df866a92dc87b37", "0x0c33489297e244956de579c5c112ab40c7fb2d89866a28418f660a86ee18524e", "0x01bb4fcbae28a2f3399568c6b3849da27d6ddf4fe6adabb591151679ed37d21f", "0x2a23343d24a9cfa3b8f413f52ee1b233ce4c1d5b9bf34b03dbc6d733d52305c9", "0x0707a6d515b3bad03a9b06d6be048defa850134aacd120f38fa93264016b7786", "0x1837db5401dd6ec30ba6b866184da56e8db439ffd04154ec469b62120ce35cb4", "0x244872a0d2766b8547e6b6a5afeabf198e1409a0f0026de36c101793952f6cfb", "0x204fb17927ce873c761196395f7da46f679ca331832a59fddd2ae31e84eba1f5", "0x056f53037d5d8efc7cf6a6feba18d102bf818bbba70b86dd9b763a12072f4c2e", "0x1df4bc5d73239f5ec3b89efad53df9cd8ad8fca543be01f5f40fea2952071bd6", "0x1ffb6ccbba001155d46e167d1fad1c13bf2892ac87cd9c347c734ab5ef658367", "0x08ee36e881496539b0abd647d353e51b63fef91fc944880006f2c26c2ecf2a24", "0x1c3080c254443332a3e6283d5bab6f7fce8aaa68487b9ee4e372cbc6cc172665", "0x2dc6040500e7329f75a3cefa4db49f9b47085b1660f8873b3e81b7b1af82af53", "0x2c8bca9dd293bb67db1f66ff2e82047ae9385ce67d7f33568cd4c216a89994b7", "0x2a157b9786f9224cf63648aaec1b9f61c7a7087ed6eb8ab20c6c5469d401b7df", "0x1e0fb0cdd8a54591c42e7c26b9027b77417e4e6522b472bfe61ff89c39bc40e9", "0x250144d1cea033fd78bd73ee4ea4cfdcd6a42f7c00e2d7ee6794d464207d2b3d", "0x0b6b3fe9a7a525ca60443c4b78a8e830957aae0403116d22983a2e680eedff65", "0x2fdf613e67d176569f4743b4963f8c53e52482fa32e705247eb650bc7bd616e9", "0x048f64b14275fb86fc55b3c0469cd89306752827c3c04463be5bea66fbd7b38c", "0x0f2027b781c2c52490e11ed4b7b494d66cdc16e690b6a4b3c924dc9d6e854832", "0x29652785160b261c1c20c741524a26147cc3191f33b74ebf17d44ce2f88b0f91", "0x1176909e02a5b37bfd47810fcbe73af87fea130470aa44bdf6b058c4d359e179", "0x180f26c6ce2a3a477baf0da58d069769c2bf0156d636f2255e1bc35c01e98993", "0x2afeedcc2cec57285ad22e734fb7fe3dd65f62601c1ca4884a86c7a6a05f083d", "0x0dd21a87ee22626998dbcd73dd751affb49d47a02e995a41bca26399103087d2", "0x1d21baa09d7f50f0159fa8a0b6e0d61446d1c7db5d1566469da6a85aa7224962", "0x2dc59c4c9e275cd8c2506282cc5bb842c014bea4236b1bc27a856351b48af802", "0x2cf62d08541dff0919ba68a697f44f4791c42d1447a41513ab9d5f755eb1f38a", "0x2f5b8853e2cd2e47a9fedeea4047e46083c97acd4b687aebd2264e7a0eb354b1", "0x05865328a9b2fd469170c391c5ba8db5c66eef9938e4da5bae33f2703c470730", "0x29761c9fc3d2c4cc1b126be1dc0470a97b8f2725d327c6d1ca923c2aa8092b1e", "0x1d3fb1f8dc3c77cb515c37bc810d3a5e3b96552d4bbb57fdb01c2aeeb1d9a048", "0x05f2fbeb7cae0a35ee2f3a4d2964d241a0ceeb47b3f7c4c87bb3b052c8705d90", "0x1f445014a0f266082a50257152609cc219062154f4d7c13288746954b97998f8", "0x2d35917cb1d0ca611ee37cfd9078c924fc84bd1a4bfd7db3ce39e05b38f698b1", "0x05a89a4eb40387b8512f2f398b6526efe76716951c500fc8dabc835775335ced", "0x04e26aa3f02601174f46ced15594329e4f4e5bd5d7d53d5df6c8633a94dd01de", "0x204d587d61526c1e047e1dc6b6d403b9eb8730f2e2dfb7bc7350d939bac5b90f", "0x21c8ca213d2f44446ae90a6bdae5843b7c2cb53ed699f36675ea8280a2a420e5", "0x1303bd921f32fa4c4e73af21457c46b6d69e2e6a2c396716217787b46e822ebf", "0x0613823c5b6abeef14387465317e713b45ace79c0e4433d7c4d352097e5c8399", "0x0f27c5305ee978f4f775e213e3ba12a901f51144ce1ea89bb5046930f5ec55d1", "0x2cad11c693c6a627531950a307e07b30ea8a495115f5a5388827792120c7bdb0", "0x16bb256883c44cf37366618e46c6db4e3da97a9d4ae7d5c585959de3272f82b1", "0x29afe50bd78f72cc763695976410324bfd67157a5ccdb7ae45b00032e1d57a51", "0x09329902e59e5243a726ae5ca35408a207148609ab3698139725aefe29aeb167", "0x04b1800e600c90ec4776bc6af1764ccbdc10bf55c3314f42acd0531ad53420fd", "0x298d0110bb90e4c35e293c7a7dacedef7ee9342a591b4330e27276aa13b67ad1", "0x024ea6e68cb1aa6b407e022649aa32d1b7ea4a350e510c07eee43929395e4f82", "0x22ae3a1a81c4550f5fa0116e135d2df2bd9f6835a0f0d03f4dd934e1320a3d8d", "0x1f0f5eee9e9abb2a2f4ae04d6fe09311fe0115c1e199c28e22705e681442ed37", "0x023c86606616f317af022464f350b4bee80c2fca32064bcbf83e8cd35dac06c7", "0x2a89c4e5b074fbe67d04cb03efe18c4bf904bec4759b33dad6b2c86ebfd2b9d5", "0x04b0f48c4f2e05bda4b9cf806075f9c275df2cf60b5fd11470eaa7394a82727e", "0x0edde5a2c01327ad042a686f443417bd8f107c99eb7c02900c931a7bd8cb349e", "0x2cacacc9c9d8b0004d8932080f9378b60675a8bd853aad1dc50672f137212cc1", "0x0816f33508621f2d56371156b0a3f7731030e4b218e44c90a88cecaf07170dec", "0x2ef8e0a455d472b49bffda935c8d3bee1ae9248608e2a52d53f4b76313c97920", "0x17184a8af9199aba605dd1f2dd18ebc02e3055ce408068eccaaf3ea7c0a334af", "0x16395e153937a83660db6f78446cb995836436602777d81f0607130b44881448", "0x0e174088223c38e9440fc77307d6720ac32784c9d2f591e2437eaea9b8f5e2bb", "0x19e70fa937788f7a2127573d56c8197bd0dd096140f39064865c65c31b47d402", "0x0e434c329d5242adbdab24780495ff97230beb344b918f6f8d6bd7d21b03692e", "0x2c88a82eb87c81ba42a211bf2ef3c15875ac157c7f3868fff35af9f55a8c22bc", "0x111dc223e3c9fc7452a9c2de469383915f33adf4cf5b49fd2e01c51d09ccf436", "0x10647353de3197b9cb48f4539b507e45393b000842e8baa1218af097f871baea", "0x0e53d64121c0a851c1b3f07423582034abce698525d0a47724354c07152f703b", "0x2891938acb83ee193754969f4aa5a62a531081dbca4dec226258ea92984b4348", "0x04106f95e4ba3fb74dbe4bc53abc170262ba00c7c63ed8c457c3227532c12ce3", "0x2a73e61b8f1babfbb38b186f401eed0d92c5613ba25dd2ff4d099f7dd3c19fe5", "0x18e16b24642f19193b798b923b8dd25f6e4856d6b21b729aed2281ab154f7c5f", "0x0d5f849b166ab9f6fc1a64467c5557029f359a2d0f194030c4dd875e12ae3485", "0x0e25250c57365a29c63a4f1531b8b0ef523eaa93c1d70acd0aa7cd7844dd0442", "0x0f813d14af0c85bcedfbf480b3d80b9f335853c60188526d80761274074a599a", "0x0d2356a92dbaae8c24a8cebed6428083ef2f469460f166a6e774377e78055435", "0x1fb6dceb495bf90fff56c8aad70b40bf773ea1003cdd092fd77a43961e9d7dc7", "0x2c0a70ced79951a75e23c5a323fd706c2ab87c381cfc3c269081627741c2bbe8", "0x13dc6b3bdb05167dceb4b11037064ac5fd22db5e229e4c6ba55e8382321dc5ee", "0x210fa8b777907ec30bb88dbd7c0e6ca9004eb3425d498025da6c90a47c35025c", "0x0c5cfa957139b45a72fbbf80a410aab5454a982668baf24b0dd3c04e4d599cd9", "0x1f1f3bc4c21d633400fcf8bdb7be59b7f65cedc06bb2fc93a873b6ef12e0f52b", "0x188f0ee95a9dfb03cd5e3fb30827057e933711644ee7bd57490374c0d67532e1", "0x0823877ebf8a842b77e8e0f3b44873e9409727101b186cae2b80d0cfa726ec8c", "0x0fe81603de39ccf148ca6390d6f8bdc9395ca2f3f50878283d98f1f0e61b1aff", "0x2ef61fe192f52a9d7cebf41c134098f2ccae35cabcaa12963566768ff1b83706", "0x0db6d076b2dd1b9f4d56d2f66fab4d7bfc6a38fef7f9ae1d4c2f8c44b1510f51", "0x2a194a4ae8583f28189f9c011d107b82f279e6a0f8ca8bc9cb0aa581831c7d06", "0x0ae539fa9ca67d4af48fb292f9188c9e72f2eeaae2e500b7e7201718c8da8de9", "0x23f66a894b1df4d26a8baa6d05b1ace511faffd4605b36cfd12bb4c6dc2bb4d7", "0x137cef522af2942aee9a4fb8017bf330e64601f466b56d32245669d9fe5ba707", "0x187aafcb87841b2df9d64c1767789a6b221767e4634f0d550063a0bf92788c32", "0x23212e75f4b89992a3647036ee36d74938bb9a9851e13d7b6e52daf66c4cbd25", "0x0f54cbe967770dfa9d068b2fc53abc96489bb7d266212654d326de6b9af16d63", "0x23d83a60b9887ab4359b8569ff3a219bb81367955fde72a62002d3cd51101fcc", "0x2ea676fe7f21fc583ab0b0e189020d42cb22f044607ee15bfac7dd66da5ebe76", "0x16f37f357a0c584821a356ab56a16d41f045029cb515f58ede001f05a807890b", "0x139093b78fc9603a4288ae5811ed1311be916e4c97d35a5cf18e4b7e47d13b03", "0x0aaba5fcad1c047030c8bf246f41610b68d60bad285cc15f55900f52778a11ba", "0x1611827956f3435c1fc67dd3d37954a255eaa0196cddc5d5a6187fa0a2839efb", "0x23db56362f248912421e5f087ad16e0c9e6d2bb59db30a52818e41964b7d8126", "0x2f215e640207a88b02999c98f1af8fa17331d19ea3de1decfe8f2e478224209c", "0x2b2a261917c0fecf2bce19021f8506e378e9d3e1afb451e9d162b3d93eed8612", "0x2f662e4cdfef5f822cb956df75b17b46f17b08f930f54bab4324a0363e23384b", "0x0870eeab2e7bb1e82c426c2ab1d65fda25d426749a538b4ea669eaa31f661a00", "0x169418dffc99f2ef5dc6b1013717c134409349d846457985725b15ac6a152fac", "0x021d3cb240d6400339ad5bc535b4fbb40919ce6b90162e51ec6895a7cabb4375", "0x12e45c46c45b660b6addc149e4216eeb6fb19474c8cce4d78e34c3cc18024afb", "0x0c7c86394b7ad61d8c348d185403dc77152fd310b5d05970375a11b5abd03548", "0x3024e78b217f85d8efeb60008ff70d33c3e84c238d9c21a04121b498a2fbb131", "0x235977101b56071ced3163c1ec7187909a3ed7679bb54ad40811ba318e1afc81", "0x14bf885e66f7c01fd974efdc0bc2d628ed79ad6fc6ba511c5a8ec383e1a73a70", "0x223325ae7e73cf093e1d5891aa92ed43f82610f1283f265f56548b38072f38d3", "0x239a5ae138dce6a019f44560ef7c19d2b8025dadf040559226f54870d318a57e", "0x01dcc35115d9057efaf468d7c8a7d46048e01359c974855bc99738f0b247672e", "0x1359a40012c5332587a4deb5604a436e269c282ba240cca0a6d77b343e76bbf3", "0x0a9ee39712223d4c0c37c26a96f267c85fc8e31acaee0c07354d3798dc5003e7", "0x11812d1ca3671ae688a9877233eeb5ec29868f7cd7c5e13275391a84167e0231", "0x2435cd699bc94985945d878960770f9298d40c0e28b6b5979069e0590952f0b8", "0x2bf020785e4117a1ea5930cd5355303bf9aab2a1ea0d6685391f40eeab2af0a0", "0x2cef6c78577c9e97a76855292ca92e4269ac53e9b7439dffbac2eda5c6758024", "0x09a30e00c9f0f6f260f05f029cdaa7c7afca506a5ce562c877b3b8d543135429", "0x1fd85928f8c8053c9b264a74f121b90bbf9ae8063e0e89670165b9ba66a3e7cd", "0x24482279d9efa57862a6cd4524aa289e6950606df8cdf8fbcaed4b674fdade91", "0x10260a39cfb0d82ad8182a6951f9c780a455fc1de48c417d6ce6b27f36462185", "0x25207827a76052d489bb2698730d5c3fc97192a4420578d2474a37ae7d7e3148", "0x28e36b634ecbdf7b8e4f9e1a347df95d771f15d97f2d5c401edf6a6e375874bd", "0x073f0dea6f83d443ee3ba27c5b7f0064ab7cc0d34babae859f6bf66d46a1e165", "0x14c6618569f748ff65514437adbcfa97f87b9b0d169048e84c553ba9888c451e", "0x0c7675a042ba6cc74fa588a0b26fdc4f2d1f119a0fe6ef111be6a2d45b4bbcad", "0x03dfad7db3f32c6ed8130c43cff604dbe1c29dbff250c684c955f09e495fb34c", "0x20114281fbe35c188164fc6d4144200fc1d9ec433efc677480bd2cdcb35b64e6", "0x29e42f5218b1ea3fad06a48e2292c0fe3df08a2c4a823a3be4b998955da8a21d", "0x13bf4039488d94b1b6a67f256296daeb6c7c80fad2726d6e9be11e17c2352816", "0x1847a4e36b3eace13de58fa4662a9f88c9c17a464e6dbd2083c2938c227ee3fa", "0x0a7a2056c7b79384af9fe3c6826830145f51f6f8ca5d1a344e295ca7663ada27", "0x181278caa15bdfb5940cff2bc3216ff06a45962d4979dfc0d6c94993bb7de86d", "0x0a8a6f4fbba2ee09a36d390fbb1485fb789cf3f9f641dae011520c8f10e57a43", "0x08f6b4c0d7bd5e4c87fbc6874520e3329c067b6841fc833aa37514435e987cea", "0x2206b2c18f3292e7a9a91039683a55d813dd914b0c7d523210424ff0f2817df7", "0x0186cef5c04b3a6c32da26405a16cdd359df57be8e93291acbeba3f487329cfc", "0x075aff67570ea17c7c79c9114c7a10d533c6080b6d15a5bebd1204fdcde772f0", "0x2b06d8389ba9621c3869d2e8b25ac15e2c97389caaf7f97a35700be66c1655a8", "0x04fc6d0a6b67744428161cb5228a94e7c0e95dede804b2b47a18055acd737aeb", "0x25e4a295b4e7a2dc71394d41ec2a8f4b124e58c234448a028a2c3bc6ad25e69b", "0x0094c24ab01c6db594fda907b639a7b3a54301439340e889b6ca9cb6cba067b0", "0x2751821a6e3b2206cd6bc3cd5d98cbae8850745ec6cbbea413e7254d2a514549", "0x145aaecc24e3878db9a8d77149b2419ed5b42df025ecbd1a8e97d8b817904bb9", "0x0d2aa00cc6e5167d845ee1877b7aa059b5e5151c57e4c163da3403f9a95755f2", "0x24233b69861c70c449ebd36e4420ddfc3c242b69ff6e3d4c6090c2bd08a764c2", "0x2c55fe1a75147c9c826f762f836d5645ac4184ba1927dd56a76dc056a9895667", "0x19779b1cb16a9c79654016674978b8b6ee1a78b64579de93ed2d67b9e49f098e", "0x1807721ba60fbae476ff60120c1f47ec0bce692cfc00102ae50bd9376c5a22a1", "0x1c0208f5aba12750802fbdc3bf12eac9e00ada708f167d4b167bd7d4b03d76f1", "0x090b6e28ff541cc38869abe2f5dbfb9fbe888d21021f29d2bddb9127d3c273be", "0x193d6c7e76ad94eb59a20010a799c7bf96a8dda8c90887d65214c8665ecda01b", "0x09ddd5bc0b1f8d4c4f1a7a102c1ba12ec7e7540cda285a564ea7c4753af8a8d1", "0x300a1dd5fda15d1a9cfe2a287801817168721da2f970139549e16811f555be1f", "0x1520908df2eefba075bb41cfe0740e1e5a1ee181ce492016e152706e493cf470", "0x0b3f215d52e85ec3c682698ebcb6228233ae9518f9450f480689e7cf30137846", "0x050996a07af6765c56a8ee2f736650deb4972bfcddb194a0efeb1954daa8a4d7", "0x23a59326daf5f94f3b5192c18ed06cc58cd9608e44138686399dc4f1ee807add", "0x1d220b9add0592866898ce834b1bdc2003976e815c0cf7d3f6b8bf967ad56496", "0x19b49c4da3d9e3a26d36566738658923477c504e76a38a82b1b1247104f681e1", "0x139decc567b06b495bd6f3cf006c05b7e1f25d5b7ac554445c37dd285beaae7a", "0x1a5a7d8bca8d4f07d4cd6e9bcd00c009e3099e99af3080debbb21f90f8e5b425", "0x0621e3811d3dcb9584d0a8be41e431d588c93274c8549e625f98fd15983a809e", "0x02a41c2d2bcf14664a0130a021daa6efd4a3b0c3aded38635bff97e3785ed6bd", "0x21cfb54ba72fc06794947cc3bda33d815355416e2aae19084d84471eedca399d", "0x05115093894089a202a4cf8d0aea329d83cbe0ece741160f9975cf01b7c85dc6", "0x2e40541caca7653212827129559ab422a1c06a6f48c974291470c65fc070dfb6", "0x07eeadd730284f5ab60778900b60300d27970001aa63e46ebb7f9cda1157600e", "0x0cf33e4964d350adf2051f8e2e8448d3324d24d3f4858407f4fd60d3333bd98d", "0x287c60483e2db313f1a2bda92c1e1c28b65ef0b99df4acfb75709edf6a3bfcb9", "0x289440f4b7fdb8b2b22661d0742e9695139c1a1ecef53c3febde0b5f6d9bb4a5", "0x291bda2c37fac962a24555a7abeb36d8e8b9eb25222f97f4817ef2e5b0bc7208", "0x0e105449589412404cda7b82f14d527594ff99d04cea894d6ecc315119f42b73", "0x0e6097f0ad418ac7123ae7eba6cd4522b7ffa8dc8cf60a1f836be23e41ec25e5", "0x22fdb676724017afa8a8069c62d307aa4ff52c1445ad41b94c3e406e33e0def1", "0x0204d594ad7855ad0f6950742b19e60c2c5338817aab7ee7bf631c3aa92160f1", "0x0b6a643dad3f953877110517f7b336518c8fc11d868bc72e76cd76c3b2f7dc1b", "0x04189ea6c2bd4b00fa6349adde17027eb7d76353a10bd07d0942639447cb43d3", "0x23bc8449d898a7524b2dfde263036cac2e14935134f8c3baf7f1e13ea2deec3c", "0x0017efa608d9941bc64d39e0b2593b742576dba257fab323d4c99c7a42107a16", "0x02f061475e9d8888b3877f9308e7758a16f91e3a34a5856f15ad0b9f2f92e2b4", "0x1f257d4d6f3277674a061330d73d6ba135da7cb0cba318686872fe1ef6d52e25", "0x195340f6c1f7b5f6158884bd237715149cea488edbfd80fc9b9cc61c384853ab", "0x273e200179c5c45d860b26a20b2c0853c1008f942459d5cdbed633ede031aa1d", "0x24bd0ecea1e1df97af0f296c0e792d676e2c8e02e808a158bdbe01431c5e4a48", "0x0c6e6f0f7c20811f404599d458af5c6cb41ab671599d6350df38e82104bc6835", "0x1dee1352470235cd8e129b5611fa953706bc08d58f6a3ef3d80370d8d19683a2", "0x1be0cc30343a168fda7c757ac0c7e5e16afddbfb7265878080725a12fa12ad4c", "0x1a449abf644f68a64c217c6a042a231107ca8d9c619208580eb76bbd9215d984", "0x080117dde58f228a459f59d90e64babe2daf476a9a2ca018faa3c5fecaac1789", "0x24ab9a167b61855e0f2c60bff098d5eb7d15166fab51f2b62c809de318d6d176", "0x2b56aca9d595460503363292bccdc80e823201f71b54bda684c93eb0893784f6", "0x057361ec23c87b30080ff1cdf3467d57c95a12afbfc48ab5e1e4de0162a41b5a", "0x1baed177177a25ecbbfaf4f204d9921eade3689ba1378cd9362cc14145089f95", "0x00ccdb6d5f4913d7656889c312975fdbe0e0309a841849fd808d75f593a71481", "0x2c52f5e1ef57de5dde528471cc1f0ee7839929df98ee743d9eff962515561910", "0x0234a4a32f767f2e1ca48dad3a2fdd3ff54b2ca3d53ce13fc9052414ad7f7555", "0x182b4c0c551ab0ce1990b472278f794ba9cc62abcc90a89efdd80776558e3433", "0x001ab2bbdbd043d2d7d1a4eb76db4de71fddf19edf10d7cdb9550e1846e53fd5", "0x206e6cd1e3154c113a762a628e24940907b41e90e7c2d43aa256ea5249978358", "0x27816cab4bec18577bd335bdaf8298798a261bb175137177d46ba95dd03dc8bb", "0x1680b632a04be3eb1ed64ef589440b3f9526b2ad82cf0b8839d3e7b0f585bc8c", "0x196b2cc0e6e07628df8234f58c027c190c75b0342511efea4c3724c4fedd6e75", "0x29ab0b6065ebbefc684608acc6bf3b5fc693770c38bf91b4be38fe6f72647486", "0x224ce814d39c382da2d65eccd9deb48056ede18c5efcb8e25515b727e540a859", "0x195e1cb28f38a9cb57b2c719b504f5fdd1d42559b6a368264fd0fbfefa66559f", "0x0e9e5eb70f4490ba6dbd1c0ee1d6724ccdd58acdf138785ce98ee3848ffb7840", "0x1995c9c8e520014e4412ec653839d781548cf71f46fbeb51919582226cbd5b21", "0x0886095cc376c87fa653000283a6eae11008982f27104afee198fc377f26e324", "0x13761e206b3e89b23de2342bfca860f9b0d9a36d486aa115565f9f52369c124d", "0x22a8c6cfc0e38a500a47515c519ad6a72506ec0d508de25942c10f51f0dfab81", "0x18985e9c7ea6f1a16962e4e27cf1aa4aa3086938b13f8ee9465a5ec7bebdee03", "0x215b523ce3f055c92eb148c00027d1ad406a2abd64081043e0d15492845b31a4", "0x0102f78c7513b093b885726b7df2e70298801b3e4019cdd42239d76448588c31", "0x0bce88602fd3a0f0ab8885891ad44045058f9ace11fdabd24e8dfa1b0a4ae727", "0x0745f760f8d466fc21043e2292e6cbb20b6227517f5200251129c5481f52fa4b", "0x0406de3807445c6d3cbdf7b174c410a998a1530fcca991535a2a262de4e2ee56", "0x26779e7346349068dbba66f784f87e243cc27cab59e887f7ed7a0117887d1acd", "0x25150652a08af8ca574c7c5c77ffd98b17259a1d914a6ea41db75014267949d8", "0x00bb8d13438040f674a79ed42202c5bf6e67de6fc3f6b65ca837ceab795fcc6f", "0x0c1ebf40eeaac3d4a192dd50ee25c0067f66eff6229d045d5a801067639ccf2c", "0x1a39731eb32fdb51dd793754f76103b5cab86947aad12d490d4951932ff20727", "0x2baad3d41b18ae10c463af1662ecb28c6988524edded36943672a0e857b960f8", "0x2e778da1518b6a4fad2e833e41466fb2fe82f4f8df1b5c218cdd3b7e49af67e1", "0x156dc717930d6490167743911e9bf4d4634ae049b53adab281698645f8b16dc6", "0x117f2ef1712692ab9dbdc51db4968b45f5e0104f9e5281329349d908b23e231c", "0x0b281b5d9dd2ca1a92e2d83b5087b6a08d6ab08330f47512aa047b2f88ba68cc", "0x1c2803766dd9096567a3366061764f8c916f2a2dd640b6eec0942ccb75d40767", "0x120174d53ba57d1a141bf40e4c705683668bd55800000aab6f34766b7b6575a2", "0x0c37b25020f8c76ea5536de54c722e47d01795d31b5ed73466e7d8b8ad376d46", "0x0a508f345cc9a8b0c30ba27651ba1c3ad8398025a4000a5c2500228c44fa91b8", "0x12afa49ff4d8b4c6c372f7e065840783cb9497eeacc847a340f61f1823cb2a8d", "0x29fc37eb5ec7cd004809516b7aa3c716f4f7f6e7772f443e0730b01dd5071a55", "0x2048fb9c1fdaced0fdc5159490db2977e57dbcbff7514ad1e52a271bf84dd1a8", "0x00a6c4223aabe583e899bbcd0314a4743181f1d5e03dbc11c8a4d02550fab64f", "0x15f462ab5b21c31557e25d9c22d8dc6a0cca93c8ed68a35655cff745686764d0", "0x27bc1c9af68edf8e3730197124be559f1472e7e3bba0d35e079b2d1b9e4271ef", "0x1a2ec148f900eeae38c0d3d6efda64e146929c71eb82da3139a3a85968ec6ebc", "0x04ff41cb553ca616d0616545922f2030b71b2354bcd1c55d7eabcaea8904c22e", "0x2f2c4e7b18a845fcd6add67009fc237b14a984619260a7b3d38712e03a0849b7", "0x22925c606a1f091c1d5c7122f8e1a8ffea6a140031106826ac53a9c69d84c0ab", "0x10e2a8c7b12bf70266c257573ca2594d8811633f77822d7c232b329c5b4e7279", "0x1712319595ae464992524bf8e488b783fa45b3548cd3f162d586bce31ec7184c", "0x2e9616987d3333388ea5a1cb56b4c161f279ff19454a64ade43daed4dcda5c0b", "0x2c68210d75660df5d9a8392a2805ea1612fc6137cf5b35a68fc1f03acfbfe4ca", "0x053cf3707283df8730b6e1f637d23c67b0b3533061a35bcb0cb0f9bbe4e8adc2", "0x07577491483d03d7769dacc79607b9897081c0095decdce3d227c059ddeddb66", "0x05639b2324c0b0af81c5b256ca6b2d46b95eaf855fc26cedbf90411312de4a12", "0x0ec90944eb8fc36c52f3fd13763714f41cea1ff487ea39d70bd94e9b7f8f16d5", "0x1e96cd3ac345bb2e5bd3e755922f84afaf303d6fb227fc68f703b93665f5ea96", "0x0408425405c66baa7d49858e6d5871e5b42ffebb0df885a824942da1e2e36d58", "0x284d77566b42f3913d41ebb0528b899426e0805aadb9957a534b022b081aa977", "0x0b044e5984887cda337f58c7ca50a78126deb5624f644516239427948d7d06bc", "0x0486972179ee3496795bded1c2fc9674c0c3f71b58150c9c525063a6f2b340d8", "0x25b7568316c4b2fef9b72543b6033b317a7bfe406623e47cb68e5c79296e6bee", "0x0cec9e74c344198703ceff28a4d11275f6c5c15738aa5a54a19269261ec6a8a8", "0x2bcc34a99345174c97a65e8978194486a9957c9d736f0ca39b98130801d1a114", "0x2ddb2ebc0ac98f6498c0f2be2d73e86a786940a1e8c558d8dbed8d6f44b02551", "0x2642b4a208e503e3480718d4d205351f43da183ed284ed7a385ef7cdca80bea8", "0x23fabdb09b481bc764102ae85ccf1e6ff71c7762f8bad04a2de3f7a025cb5087", "0x0ae4ed0ea6adb74b9d327fbcd01dbf37f5f6c467480c8aa5f495124cf70b823e", "0x09034e1a646d6674bef041afa774e3634faf8adcc7c71bc2ed6e03b0b4492016", "0x2817ea20b471a4bf138dec79d84f9f6c0015e0ca147b650683df4b3372b55ef2", "0x2dfb7f81425c2def6bfa4e833e51e912298397de78fd2aa17f6d1dd2f1379ca9", "0x137b5bdb746523c051d680be08daa6b0d54c9ff7099f2bf5ce894c24a8ef1f37", "0x03900ec7adc8e28af7046833dbad3fa1024e382aebe02bcb535243ddca21aa85", "0x2b285b6c23b25c52f2079863c759e6a10c33df8f191551ead53ea508511cb555", "0x1242067be2202d1b2c32b79c464e2d6c977e6fd12d8b35281e84c375864613d8", "0x1e8690f5b0a8729b9536ef2920abe7e6f3eee805237b158d997db63b17525eef", "0x047f5113e1287b5572c82edb369fb0f717a91f261ef9d81764a5b279ad9c13ba", "0x2d8800f21cd6774d5a6aa58ae2cd32593593d173b687122a4d61c44743902105", "0x274ba1521d5bc5c580647f10d1a4c4cadeef088685d1976979bad813756f84b0", "0x17895b7c10d6a475310d34a0737efaedddca8f1eee9d8d56e7fe4934c8b56441", "0x06eed11ae9f70df5ced09b1a6db258978cf5becad2f66d15761bf61e7dc13440", "0x3036b521c631ce5d3599e37f6a5daf928842cefcbcd2c6bf84e2db5ded748f09", "0x1f52d6e9ac28976c5a6fbf168c818478645c90d72e367609d7d7805a6367482d", "0x2a0e60356875d6ace1055932b3dd9ef39c3dd871091e96a323c1596cedb35e6b", "0x02089633a6194f3ed38eeec2c8f54d0c7f434938fdebb9c0e1830dbe5311c38f", "0x178c73d2769765d85383283fdb0d769457cfef0612baa963336bac1240b604c2", "0x2fc20bcaba9e3d96ebcdd710e3b341837d5d0db849e789f28c4be5004afa19a0", "0x151a423bee67fb14d5ad279f425213db7e0f21494982df872354c01f0f4a722c", "0x25d61619e135690c4e10e4afeb4f5578ad0f8e25c20735366895b31eebcdf47e", "0x15dd579bbd075429301d7295d3e685d832bf9f36c51277d09f2c3a664b045cd7", "0x236fa29b81678c8a109fd361c1ca90adf4423c13cf5b8cc1032b7283bcc959b1", "0x2a80cbac9b884e20368691bf1567cb7320537a977da10e53c5baea3446c01d1d", "0x11d4cb8957937b3628a3b3f4d27f276cc0c179b0c22b2c13fffbde85fd912378", "0x1289bf8ec507bf752a07c9b71efc0f800a52fbeb1637c5010fa54eadab402946", "0x26f842b1a99394297d25799f2f03dc9e4903e77d2ddc03ec2fb155466da6f303", "0x15944b9954b6182314e878fa2f9e091dcc40eadc48d37d39bdd5f09905c3a369", "0x0742166dcd8ebd8576a6bfe0f1fed13793928f84442c7465a0012f584426fadf", "0x08603d5a0e937b5353b56b05768fd50bde792e72fd61c06344cbd735707b68ff", "0x0caa1711c66e9301b6f25e21a31683d80bf58d86032d03bfd25b9777edb74a75", "0x2d6506da695d2087dff87b5f636ee676fab00c32ae45c75b3db345f3fe74a311", "0x0d9244b07af9b6eaeff6f84049cb2e01d75dc4cb68533606e976b8b300758c84", "0x243abc3c3382faa5dde3f1c3b432042d3f030ef6a1f5401aa37acd15cb1c8c46", "0x168416e0a6d275d30eda3989242e0723024727d3b0791b06f8e1bfe8efe40198", "0x1bcdeef03693d1ad0ea80c65688654affe634aa14cb11ae3a491681d9c5f8eeb", "0x02f66bfda3d2a1bdedb0ab8bf7eb1c4e551bef58d94fad7f7c231107e5653909", "0x019f6802171ab82a5922f023fdecc097eb8ac1fd0a1ed349afe9a7b94298975a", "0x195a1c738398feed8c760468a0556c232645a1dd862d87c1f508c949ad52c3ae", "0x0a36a3a46e6ec16567dfae1f853f360e6f24924810e838cb24ed1b0fce37f1e3", "0x002123c29ea87f7ea7b35c25f9e8dd3e81bbc3974c3c17c607cd840c09f374ae", "0x02a717499cb6c31f71f0f0352b0f5bfef3005b80e93a520b6e42b3985789e2d3", "0x0fc053584b0a4607a2293e18baa309c52fdc933e9ba90fd327aaa8c8cfc4daa1", "0x1310d1942129737b32e87a86f4573032b1b99ae3c6d71bafef7b494794855541", "0x1bfadae53fc82900f5761c558fee5e1218e6b2a6657e74b540969eeb49e0b8de", "0x28c08a69e5f3641460ff2c60b7579395650c5b6afb392da142d32de8677556ea", "0x223222ee42b6ca997f44d643ed6a3f2b040f47fe8cd922163d9d9d8b2622d909", "0x064dad4752e708ff29bb0842d2c452a71448b43949345690031cb125588876a0", "0x2d5ddc21797043996b22dcabb9a1ba6c82b71e9a1bc5919db8befd35411056a5", "0x26315fcd9b5e1a266ec8e9f6600f5a6e0bcdb22f926d61591e83fa21069c0e0b", "0x0759273a4177fcdeab23da38b478faf2d4f22e82f346aa754b0a1331bc8371ee", "0x09e13300eade70568fa0a840ea9729896ddd84c364d6279d34a0b9d1478fcf2a", "0x13e97ed3c16fad6cb5b7bb954f278f2434b22f8cc054463a145cbe0240d4f8bc", "0x05cd3486dca58f4eb221bc2cbedb8aa3027cde5765971bb1f61c272c5aa51ad0", "0x005ce523f6bc21daf1df468b12fd3e8665e1c1697816a9a671a3b2b6149c7de4", "0x2103066cc5df55e67cd7914028145fb71f089d671c83c5b537abea482b2d8cbb", "0x039f8077bd9b71f91ca0502eaccc1672c539f72329317aaf8173d2edd7636928", "0x2247bc0cc4373705b89672a2205346e6af3a6422e81b4f4885dc3af7cadcc5c5", "0x27bcc768bd31b9d00687a7e53c3ce53c426762706188790ea20b2e819638df80", "0x0d91cef51a76f7a62c51c73a2809732d79ac350159814ea536487368cfdfd708", "0x20a9ecdc649a26388dc68dc02343a0f167bad46d6aa1cd008537f627ba140730", "0x23134149a0d4567c6dfc911d5cb80c1a1016220d39e0c230325dae2941f528bb", "0x2a07507e9f030a42c6f29ccf1c9cc4f3e5a5b0dbf05874d5edadc03fe74b9474", "0x1bdf66bb1d57fd788e54ef29f06f35fdb2729b718ce81152cf3aafc64966110b", "0x275c33d07f9e7338ddf50783bf158d51be619bf77a12020cf5630b78e7e0d0b9", "0x16411554e55fe604a1ff1b3b5b7afb6a2bfd0f32c4070b55bf1ad234e8b28116", "0x073e6ac7e6af227557249ca1a5c55222a36c641bc2851a0dfcfb60831f6759a8", "0x10a6fde88c5f621d748543c76a218f95c202bbc3baca06838f31331b0556e12f", "0x29c5865a26588ca8a88128a072c8434cc97a1bcec23e136f038d29dcf96b0eb6", "0x233e0ef6ad132ed211b1911cdd569576fea8c17ca64e4d5dd516fcca07212c1a", "0x096f9b92b9cf2c7d664408a29860365f5b6adc238d878a476bded3e4d2e0b840", "0x2fc788fe8aad4c28b943bb57cb90edf6d7b1f1e835de1fbf3192e395db785554", "0x1bac0ed609233148503795fc5e114076ef7c9d722bc648dd0338d9689f6e023a", "0x001c35268aa030d6cd148e106e3fc23094e561573d8c72a69fc383643e2adc82", "0x2bb1f8fe5d998d0b8b92837ffb27bfe7a39ce39ff94fc167ddcc95a7202e34b2", "0x1a98576450a43e5e705b9af68cd0c145422da23945630b10b8e821dd61f9a2b2", "0x2714d37ee506efbc2ba9941043fb23f16af966f123d653f38388bcbdd50e6037", "0x175d0480ba14abf0bcb8075a03f4a2a01ff7ed75413917b53e50ea00cc2a4ad0", "0x203de45a037b75ef63761750dce08da2be7709701ec8158c17fc026fd084d541", "0x265aabfc78b70ca985c329080d6329a12560f76b01cc3d431a7283022193abf8", "0x135468dfbeb70e8c2edaffac8658a6c22b2ad1520ac0819c127af2ea5f3a87a8", "0x216a41e24329deda65a8a82001c84ce8286c61758447ff1bfa9d9293b6711fdd", "0x2887ed49797bd6652bed8bb99ae345ad70d1a27cdb21b9460bb6fd0d4fe482e6", "0x03e2bf82690c804bb6ee3c79dabd1892ea53a9811e2424a19fae446b8ae49cad", "0x0e6dce1bbe6e9e465cbe14dcc615611867414676dd8a8ce9946649b1c4e81116"], + ["0x123992df3b9daa65139ec13fbb52f7d348e134333684c1596feb0e8d8c3ad596", "0x2fa46f5dba9909ce9984a01e2af30b550dfec978be92b49119a3959c7f623703", "0x21d8f94d3bd98f0b63a7aacb175b2cca13b2dd8a8cf68fc36d94ae29401b2d2c", "0x1a8c06c61046e0f8dc6a39bc57aea0d07fd7db34e68f73579da89e116af87eb8", "0x298cd7046f58c0cab77523a58a6fdfd1401b89e7ae5eef4994442d167f7ad1d3", "0x0eac737966715df4a20b31ab693eda86a07f3e830fca475a6574d67fc5f19f63", "0x06b9b718bb3b6d45e0cbe6d5d9a2f096a77beb056821750d072262af2a70a33e", "0x0bccdad6e8b1fdfba846a9553fc7905b3f96e435d653eec3972565e1fbbc302a", "0x1b3ff4a6bc8490993abb7a002393cd1c1c007f49240ffc2ae1f1057cfcd8c7ad", "0x017f0c9452d70eecdf5cc8b6b0b205ec2da1de59750d6d1709751831b7e4ce26", "0x0cf1ab805bc47a10349ae77135ea95a4144a6ed0718fdeed42971c160791b269", "0x18dcacac61318af644ab0f2e61ef48c29a8aecfa0282e9fc325b5c0287103ce0", "0x16fbb3bdf4066e2b2f050b89b685d408711685db7e4638dec90ab1cc794350fe", "0x0eefd0b8617a1ecd7711ffd5f6c4cd0496487a1b1146e9f3d53275af18fc6c6f", "0x03c707d1835066fa30e7295a097a6ff463b85b778ca11d9bd2988d41b600aae2", "0x063ad3f6e3f8443e0908af99ce32d2c09606e84aae5e3ad30ed60d7a660738cb", "0x2cf67cc9cd3a5313d992e315010d90cb501f790bbe35a166392a51d90d117353", "0x2a6e7a7bf7c190d4e4f7f258d890dd41780e28f6b71e893716f70140f4406b34", "0x26140420009b6d8c7314723e66925badcf98440da6c2b97b66a52b98cbdf1d41", "0x212c611149d057b2ffefc9938ab1498d3b265392c73480b9cb02276906e445ba", "0x08918ab686c1a160a55db12010b20150f82632dd5933e27cd01129518cd9e952", "0x173ef7767749a3249b004eac7aa7e94dab20d465c65ebf4bab422f743f17d8b0", "0x049d90fb549e0e25790f5a6570755c68c13c97b18d67bb9199dc765355fcb1fe", "0x0d1aa7cfe6ca9e048ac6ce2cda40c6d64afbb8c15a7cd9e0222566f9922a1547", "0x2d82e2ccd8bd63b2ba44bc0f4cb5ec88142a4408acf1dad452a66e8219f667c9", "0x2ab73a842e0bbfe229ea1154bf8aeb48cf2fc289b939471d6b465b7202eb2354", "0x233f36bb205dd59d045310064408c6eaf710173a118f9ed21153c99a6b0783fc", "0x18c14a50595b8df32124bf57f8b8df430449f35986242a2ff79a644f510cef27", "0x186508d6b75c7902ed6a1948f91088c7cddf973d8cfcdb4e5a5b0cac6b5b22d0", "0x10bf42990104c39b27ef0ba451b510cbb001f8ec39a313d259be4309d6429bd2", "0x163e875fd9e04b255971072c0d2e7614ee1f3c7d2b93799aa1570bf73153f3ac", "0x2925a59f82c1472b8120988e3af6cf24c2ebec9a9f0f830bb5c826061c65eb8c", "0x25caf9ff6543dcc34e2d0b8c2af3b36ebef3d4c3fe62e2937ce590a38df2da1b", "0x14cc417fd674083090f4463f66180e4a3f38ca5ba87f4889e510ada924f6b799", "0x182550aed7fb3b7d92ef0b91f4916ac7f7db3b943103ae7ba2e09ec0f4a08517", "0x216305852467475a9f934d3b1132a99642fb79fb6bb91d948f391ac9e1c3f1c8", "0x0423b771f7215716cf97b3a72ccffe156bb9f8097c77a2b6dc67bb5848689b8d", "0x2247cd5af8b5ce0a983aede949f81dc7d3fc5a2cbbeb8d16ad43fa2c3a882537", "0x04990ce49123ed1eca92df7bca2b271d07ba4ae5a30c6a0119f77b51c3643d2f", "0x064e8bb29cc072af727af1b79af50896a6548dec41bac10f0319fbefc1bfef9d", "0x05f9be83351a037f574fd0f54d4e9ae5cadb930ceb51c91b07894f0160f8fa42", "0x202ce17e96cb24e8986cd09351ab9576d5a5167168f9d5f3877c4c5ce03629b6", "0x098a2fb5cb01868cde6424c4211b9549b8f550a7f03e7fcd8b5121516b3f452d", "0x2cbd947e532cda0f8f1b899ffbcdd5e0b6b08451e637fe53f3b4a8ea7832aa27", "0x0e0fa4620cfc943da81b40b6b42f86fe74e55900f800645ba66137b6b7c728a0", "0x2e1ca081c96d5abf2cc40b3797c38b0ae8a8ef5d76e6d03e9bb06741c2184123", "0x271cf3ea7b06b4e743585ae68997c0143542e405c70855787181163e4ac20b45", "0x09dea127972d2109cadb7e96abba7577c0ac0077312b9550f81b7716a92f5eab", "0x1982cc716da20b119525c64a3fe85f5e31baa97c76c82376999637d8ef1c8a07", "0x226600de8bb65b38ecf996e5bb26fd6288c690f16a5eedb730d939311d0c3ff1", "0x020f7b77fbbcad998e7744ca27c0f7c0c2550a3db90fe28944e73d01d24ae6cb", "0x1c2e445cfc98637aaebc2c1ab7b6d790ebac5027071d1057a945bc90437c49c2", "0x244b349502df4a33563b30237ee750e79bde135f0b0896f0d9cde04f1004171e", "0x10860a875d80bd71c6267c1d54b02fb58c890b1cffc35fa707fe6a94941281cd", "0x2eec5addecc4e24650dbbea531a0fef0dc327dc694f229b2526d2f30b2c499c1", "0x188bb7150b6e40624b02ea2821aeb6b52b1e85b5b724bc0ec512f8fa641182ca", "0x05e56007dabde2cc83d498371e99ada953ecd69e135ef0204d2d3b6cc1f49aa1", "0x2553755b36de611ed557768bb5513731474a0a8cdc6dba8f04f3031b07687b16", "0x1cf267dd9bfb6e678a82c7745857a63e2b57066a8626b52c0fd5ff42418aa65d", "0x106b2a40087375ea2988b8e0700fdd71d3716af2bfd0b6b0ca6e24ab4b4c25e1", "0x0b978e4a10dbcdcbc7e90aae2ca19615df674819cb611d93b4cbf5f2ff9a0a16", "0x2ed68ffba6a646e5047666b8ad69f6cb35ad096d6d34fe1ca67e532b5186bbf4", "0x23c632c2fe68d4f0a71b1ee63951c72b7d349797f07053df2ed33520ea3e94cd", "0x27fda5f826ce6a8340d12a584d4b9c84f0a4ea3c9d33eae8d6c0e23a5a9897e3", "0x2d24aa4c0772256e90344d20d46dfbdbb5e9dc132a4fb07faf8eddaa30da7674", "0x048d52c4e3d71485ce6af122ea136e60053e387d77369eedf8d9bbc663fb98f7", "0x0e0c1f005a1759dd161302fdb233cbac5fe151b5c2192255bd757b3ced899f92", "0x230d641c4552e5e55416e360eaa32900751de5ca53e8654af8d422eec627efb2", "0x02ff6fa8364a8cfb19e30be87d4cdeed9f957dd024f8138d535c6380a8b5d38a", "0x1689a04762a5ab1388f6a7257e7c72838513c57da7f546a2017ff128afe16171", "0x288d8c7325204250e8632f42debee8a31a470312ab2fd00afbc7694f95b827cd", "0x23996135af9f3a42a6db33fd55319a7caed8da2e6e338068d78f5408552c83c1", "0x15d052dadce14506fccd2690c333f8ecac382d2b6734726236cf9c7be278bbe4", "0x1494fb65e5993d96c30bf0bce3f56dce68a2de52299b4809cc119e37d8e042e6", "0x0b800ef8749f91b307947c581095ec9283c3b131be5ad5bda4200992fbff053c", "0x0bac1f53d5a7d39811bae7c1a79dc997fdd5f1270f72805fb05f5c52d77c1cb0", "0x179249893fa86ee067b47bbe8335b8942bc921ae0e082c303e32b809d939786e", "0x0985a7c9b42805d910a89e2dc9563e7e3449fd5b401ff4d5eac75dce7fcb420d", "0x2c1905b5f00c927a57a154c474427e31f3caab81981d621fb7fea525ccda9bfe", "0x0b23502ce04c0f4cb30c0bdb6c4f2a4f81c2ef223936f07ef57856f0a9bb4f70", "0x2dc051c1bcf637233ea7c5e086aed7dcdeb51b7a3525820bdd6eb65e578519ba", "0x273d8a4166dc3f53b1ff24c61f1a3b3007a282b526c7239eec81e92f51c741ae", "0x257988be7dc257a0c5dd7078b72f692c755f01ba3c8e57d82d9b969565dbf0fa", "0x213d0fe5a3e7608fa602f5b5ad5b8260654445ebd72492a32ad3991f3a5a6218", "0x07a383e7a221bc76fb14370d4b3eee8de502601a5e4d54b3370c4c502b097a8a", "0x18ce7b3e647ce9a3a90d0ed9aa57eb9a895d596a54958cc9702d8da219623e81", "0x12320ee10efc1f8118d3ea697574eae2dfaf8f29c183abd123392e3c2829900a", "0x093d0e1304c660fddafdb48295928fb6a83114827566cbcde26ef4c87c9fa89e", "0x2931b9295d96e5b97364b37daefda7dcbf3dc9f48ab3364da9dc6a7234d714c6", "0x1f533a1e4b4878c2fc2e9706e541d28481ce43b1627d0ba46596906cf3281624", "0x2517cb724d12ee6ebfa7b4b0d25cf0315466e98d8cac3ffbfb1a1bcdee0cf064", "0x00e43dc983bc8febeaad40130444ab7f9187185624149a7f274492d9bd8389ea", "0x186bc09a7ffc4edd291579876b77c2fd3eed0b1b83f21ddfb899039ceb77f379", "0x05d22a2f48f64658e181b8ae5e72e1a942796af2bfe6ef74ac9abf53ac65eeb4", "0x1f006e8d2463636bca787f765fd6ac723ad2c2e466ae6324f5d39f3eee58f0cd", "0x28913d42bdf680478ffd17374e895fe7799d9d100196f6ccc30dc08f39a479f7", "0x11b557c8d7e97bd99ae5f49e823308bd6e22694225d4029dfdcd836cb7c0ad7b", "0x0744b53926e1a0ef395bb04908b13326ae1866a68983c41de56fb7cc7dcce297", "0x2bfb2f2456a70989b165fb6a3ee6f944d28362935cabe516114980f141422a03", "0x3027047944ec82cef6240d1637070c622c5d28a74302de0efd6d4addd4dc2db2", "0x1ed0b5e4b29aeb0b5b3eb128cf031759cb3bc47cc1286657cdfe88c5c411d4a2", "0x263479ee77e44e8b2ab953e82ef63a7e4aff48f0e730f4782b225cb22777104f", "0x19904c84e55e1af3147cdb7f3a428265e20c1bbccbec2a5c8b950417ca2ee471", "0x2fa8468fea3204ed2a934a1eef7c78580a8da30c5ec5922fac89ab92ad81a3a4", "0x267c0b4b19662cf09b870e05f7441e042e5b962f73dfd78d23384dc7ea71afa5", "0x2f1504675041755409946e8c5f5432d35849ba7bea0d12512547ae684b83ac2d", "0x204199d64982f574327ff3f400705e0a53b25d59ae91ce0b9d31fdbba1ee2b0c", "0x0a087554e5511426780e457757c175cf6187a2efb9568a3d390d3a51c2297ccf", "0x2ef9b88428465f535cb04119f518d1c2052268455f1ab145ccf1693be92416ab", "0x2a96c9f200b477eba78316fc4497e08b2a4384b26c97c7b4ce877cb65ff5634f", "0x043293e61ef1b614850bc015dd316e2c7c54f12d2db746f7c0cdcb0ec551cfc2", "0x1d81e0e280611bf30989c1a74088493504b818b385d04d96ad298dbed9a7bdfb", "0x1ad9cf17b8368d98002ced2cf6ef9385a074c5e3aa0b2e12f4b768cc4804bde3", "0x19b30a27119ff50da2734b127ab83299a4b099694c31acc182ab453fc000ef95", "0x132d81f00bbef2804901c4073fcd9c817a63832c30d653063f67fd86482e1998", "0x292ea3ef2313863a1276b1f0e4973fa784dea78a1ec98f4d593947f6a4e73924", "0x028cfb5e0c41b0c77d987e737a5018787079f2ffa650102f2feb735c7d9bce84", "0x11afd75dc84353e2f9c2f05d1f3ca734eb45546b92396233a3f29f4e8f6791b3", "0x1aaf43ed6da39b453120bd0312f259294ea101b678dff427843c0fc816409ed6", "0x19db09df83387b1e4185cd79400609e79f37e5a4658dbee0785dab5dcce32868", "0x029cb3dcaf2ebb0f5b0b949e84278fed2d11db8c1fcf35e38189afca16c0cbfd", "0x2881df9352d274f0cfeb55df8ffeb1d0d81fcdab794082e2107e1b0426a730a2", "0x0628a0f9594c159206c7627a8f10748a1df2ce582b7604a8e64a7015ebddb65b", "0x22657393eb7ed9f4572c22cd7b9d5134d1fbce295c2a95f1afc6441de60d7fb8", "0x006325f509f0362714c4850daed8744062fcf8098608005e7d08b509bba33624", "0x171d6498b42b39345d56e8661ccc2b576ef449b1f8e5bdc5ac72d9f93dc3dd9a", "0x1be82f3b1cc9d849595d85e3398331186b6e4b4cbdf43ceeedbf04735315a8d2", "0x154711be62f23cd46086b9311b28eeada8d26323f8864de7e36e5543bcd7a38f", "0x19ece5d8c0b6cc07fa0119746e7f36c9c8d496ac1e1d95cd5bb8d769a6745cd8", "0x26d6162d8d9c9c60244cbcc1bb78814265fef97a53a168c62a43b9e6f4cb2d16", "0x28bb85fef9f65884e4a99a63a59a906d586cdd88bba7c51259b1fe6a375fe4af", "0x267ccac1e34271971e474179c5800526ceef2f1a6fddaac1de2299e92d9d8ce0", "0x2e6b4868d15390d8014248eec0c7f10d8ee9eebfa64025f961ece49a9ffad985", "0x17039023ba24e37bc4cde497e95d134ff35dde6fe093ed788e4839d2bcecf840", "0x214455d91fc747c6aa9908ad92d19b2dc75a84651183dcf43b9a256320c33e57", "0x0a07405f036d30ec77ec64b034b9fc5df2cff5877c3c67b7ab23b9f2d8dad2a4", "0x29f6807284b6e435ccc2fc14579baed0a60617e0ee33a358cb316811b3d8864a", "0x246894f6071fc9630f69187cb5ab506c05084114d2efcf231780b5d4b5c4a0c6", "0x04224081b90a67774d15ff98e6134493c01926f7ec25053de56215c145e5da67", "0x0d99cfe7649d1dfd292f11773bfff1ce3645ce4212787ed369c0a06b602bab21", "0x1fc76023333ba4dc0f2a8dbafbba1bff33b753fd77e6b1bdc4c796a031b7815a", "0x2f60e05fa1f7446735a3717a9d73728a5b20166537ffeb65707e5f7503e8acf3", "0x1a2b7508921fa054f58ca4d6eeb133453663c8979d6216ec9ee1240b8c894e80", "0x0a0aca4924bea6979a56e47af0bfa19c1db7d756bb4aade0a58e5bddd7ddcb4d", "0x262a2365cc780f62557c854566fa2c8822e6fdff8eadb90949faa5abd63a7f82", "0x19ad5a882f1dc4971429545dda3db1857b1ca0a246768b3a2b0014ba5a302439", "0x261e3360fb23c08e87b8f588bd59f08cef07bb48a6f1226a64cdc7d4de7e95ca", "0x069cc67cae46ded18fdc725c9cad9dd64e445c990271b0e2d2ccc42fdce0bf59", "0x162e21896c8d1f6c2b7ec16fb7ae7ef8c8ee19216ae189a6ef2d7ebdb1ce62c8", "0x128d42c08444d8956879995a105a336c4248ff9581139122ed9c9d55464ee9b3", "0x12e9391f7f131f13c39725c4414669bcc64c7a41b6764e687cee8e507433e3e9", "0x1de988e46c2c9a1c00d85dfafb1da7509bcb36422aab6052fd1f927df741c170", "0x2002cb8a779f93de8b44d7fb08cff50828e0771d65011f9954b424e67802cf0d", "0x28f6e5af2752c79d01a3c6c7d2930fdfb164989c20f905ccfc0982c29365d631", "0x19ebacb5354f7f272f5c12d6c71b39d89e14aaa4efbf987377337ffa3c026b2b", "0x05dd47c695cc6c95e2acd1bfc0ce335cb304a3c3380a94e8b7c070682ca869a1", "0x246bc3c037a3c9ae2bba7e73578b1a825e1672a7418801cc0743954534d9c0c7", "0x1b7ee255815ba7020f0cf78ceb9860815c0eeba268a72cecf9e3fd1a6870b3ae", "0x1ce04f643bc9513316211fdc0bc23c9a52bdaf4bccd9ca18590c1703a2d120e1", "0x2e3a6532afa95388b41ad59d7c2705445d7ce10c88d73411b7271f52ed4c44cb", "0x1f91121f2cbd1ead2f70f4f74729a25723721a895a87d73394cc9c1809fccfbb", "0x11082403388a99da0de3ed7d3b873f5abcf71f8bea6e358f5b0f17ca5276d926", "0x03962a691eb42cf5ef779bee82508641329ed9eeb7857f1cecc46dc93046e1f6", "0x0a67910e294583739c2b6d18ea5ad74e141bb2a353fcdd93fc3ef83f4fd7863a", "0x1c20f9bd1323709fda124f71e88901235f44c5e48287bf0f43b45443ddcbae5c", "0x111ab56e19274efd47392b70171dfdab0c8cef5b6de579de67f579e86b506fbd", "0x006e6b88e6f0cdf982de483aa04bb9d0fe288ee5863a6892915d125eaed786b4", "0x29bc59d6fba6d692e2a5e85ba50d6fd9bcfccc57e2bcbdddd65881af445fff84", "0x261d13ac441b2f30096c1f7f66a6d973244c2c070211275a37d49b1d70340edd", "0x077f8d9273ffda37ed1ea683f69349715f95986d26163f00d41c9e3c366ccbfc", "0x1678f9fc6c4502c235267f4b841d9543208542355ed7db420a609acb8e8ebdce", "0x1a65b41dc302b906fd144a594bea6d909f72fb707500b270837c9a249590075b", "0x265359bf0ead777264d18dbb4c4664301a23b10579368f40b433710b97f807a9", "0x2e944ce0eb653745a45632c070b931d08ecc4973ea091e5dc67125cc9045e41e", "0x27e3025a2d3e82614a4dd0550f59359f5643b86835926aed2eb0a7aa4f06219a", "0x0d9848e0d3b8bc8d43e5e6954e6f0181986e575054840f238cab4cb5b03fffc2", "0x1ac3aad815d8ec13b035decf67a685496a87b104bf57ef38cda855877fca7c75", "0x0c910186f912eef95fd673ead2281ffd0d5ce9c80cc51f6f931d0c75b9c0a3af", "0x248b63a76a024d5cf2e42a1bf70a954f01b1849dac31fd545a7cd74c5c3a1e54", "0x1a71fba60cd363b0be3ea3604a386cd1df466b5e69f93503858c69f5a868695e", "0x15a2869b6363cd02a472cbcec5c91bfa17242cedeab83084f0eedf28343178b1", "0x2813c10731f7694540eacde857786ab2443fb1891619243b8d4d9a529a733548", "0x2aa96905ef42bc1e8452087fe13dc3d55ce94062936fde48fc29f8698ed5ec50", "0x0f093d369fad0a0d255bfc311c4a58dc98a1900cf359b3e7d9688f6591b8d384", "0x068dbbc530967765cf7c7e69b8bee4ee08d486b420d5339626c8411ca984027d", "0x1dd0cab71570941ee962bd61dad1cb68a8ed8022adff356a67fcab3a6eaf5aee", "0x29a857f084ae7f2b506efd6cfb0672d63ae960cd1979f78d7f55d78259553777", "0x2081f7713f51b3930dfa0a6df8e83611bc8829cd1f8471b7e2e17f480d853c33", "0x2eea374a60ab1a20648cb908e605c6d8599ba601538635c8ccee00cabc85727b", "0x1a1b68bd2951131e6d71952233647e4165bc412da6d99c2197aa397d8d3ee5ba", "0x1defdf14415a78d5e6f287ae6e49ebb11822b8734c9df91c80e08de57b2d4f2b", "0x10040cc4fd20bacca69e26287138be4dac94040cc6224e2bfdc76661106a7249", "0x20ce67f32e823b988011d0c33abb0f725be96fc9ab5b2eb71012f5f80a55ff40", "0x202ecd50c82c9e1c79f0fe136518b22551c058c21b6eece43585bcd28cc4ea87", "0x10fba50c060fceb989d7536c3692f0c3243338210d145d6187926798b747087d", "0x02680936e402765dd6ccfdfe2dea719d3c507a7c551123c0f9dd59a58bf8dcb5", "0x102beb4a5c4c903eaef9ecb0d5794154620d7e9de84364fe0583be79b4de7cfb", "0x08d01db18faecd1a26c285be65414bf18ab012d7efb2675f4ae1d6f5e1370622", "0x112fe5d217f33c2d2d19762d286841366ba782b4bddfa33bda836fa2de419010", "0x064885f457cfafe6ece2944a9a935efdc717affcb4449ceb31a2792d5eea6765", "0x0bbdc371ab6d4296e73ed2078b99fa47d00c44cf51eec0ad4ad0aab9c09cd886", "0x0b9e59b699aa688dd12143e890b6fd0e34800d6b440f5f6b6c426b30ad078887", "0x0a5aa31d4fab8e109b0fdfc55eb14a5c2d9267d7f986b610170ce5543bfb30b7", "0x03239d50b4a0128e39c7673f2f99d88b5903eb1bb7704c6c0cdd4c31408a7a6b", "0x11a6945949a182759b6f1da60eadaf2c730cce66ea046f8f5eb781e7c45f8c9d", "0x0c502ff1bed8a68726803e222b87d59074956d834f2d63817f2a9efed3dc931e", "0x222d9daa384ae2b40e43e274cc07d2dbb9eb6988d03894b6fbf51336634c917e", "0x1df8fe0dda8e51971b917b0ff0f3e05ed4b00c09545351a1177805c50f6bc009", "0x222bb8290405c5b3373f1b199969c6d0f9ba8eb772f2497c55c0f551775b2635", "0x07902bec23d9f91a003a928eaaff9647ac030289dd5eacd8cafdd31b93264d10", "0x2c706f059d6a86ea496c2e4693d1717e4098ff87d05a82d738fd8883a82b9d5e", "0x05ae261694bee2446a1813608edec696f252922d33e94280aa805bfd843786f5", "0x186ee2ca779c5c26a193adf0ff47d9f333b750f99b77655011c64b3e8ccdf93d", "0x1c2ab6e96f68e3b2cce6da3465b19e3e4a437b1f209c55e6ef99a1ac0736bd11", "0x2fd17db7e1827169c32ccfc0ad14d9f97c7507f8ef88dc5d6f04b02203c37e55", "0x241fad7570628418ab9748ced53646c2e100aeebd62a6c73804f080de66d9720", "0x0016b5b53403ee6f47e6100c2778ca970b40af6be277e98b71032f894e6f6a2f", "0x000a095842f718e71645b2e81c90b3f0857c8c935b135b0cb25df1541d38c7ff", "0x303f2ba04eedf1425b5d7cc4be2c5088b9d2ef2bf478b9e9b8ce6ff1668909bd", "0x1494435142c96fc94e8d66d9b643e019163c6ac2e4e162056fa8feee51956667", "0x031cdbb9ad28ec57c4e1ac8ff66c791d04b25a28abcadae83a5573e3f3d4bfea", "0x0c787dff012f136b89ce3516c1cf867928d7107d218d62d51b0b2d8cc9850498", "0x0b20b314907f522e17a9d5da8c10fcf88cb956556cf077457c1e4a9ad5dc0b0d", "0x11d5cadfd04189c6c14a49e8ba6783540adc7ed70bf25afe25df9e2ffd9bc35f", "0x0852309d50f14538c8b7d35658d89ba30e29aab6626531aaa1185ff0cab8a1ff", "0x257395e7c190b3cdce5f934dbea907705008a30593c69293fd7105622602604a", "0x0aae37af5c3a542202935f590b667f979fb414273cc87931610a4b3144aebfb7", "0x1c1654a77feafcd7feeba94c32605f95ded03e13c08a6274c47edb41134e2444", "0x1480cc4cb3b9d9fc97b99e340fec19823dcd2edf198f7095ee5c70a9200995e0", "0x18711057869189126f88536accea4882a34797a9dd96a94cc87b8ea462417655", "0x0e9c4735ee797b9c70833a7a6be7c2cfcb962f070caaa649466fdf9bbe5828cd", "0x2e2e38ccea7ef6c29a922b027d31d9870ac0f9d27de19d70039bbd1f90ff74fc", "0x1d66369e95c2e76030e380d6538a93278f91ea5dd60e5a316b3dced27fc137a3", "0x29ef9102b5e671edc05f87bcceb6d900484e7ee7402a32ccc77fde2e7866a083", "0x2103b04c1735f7511eb775c7334a0bb6d626fb60937ba3761dad73a84478e3dd", "0x0dd1b6ba84a3c29b62923765068cf63c711bc1d6bb28eefe38a0e4861ad13963", "0x1eab4c7faabec58ab9b73b2baaf21e42880b77b0f0dfd30d38e1c955e9dd721b", "0x002e1a3f669dfc929b9cc84d96d489ece114d5be5db8571469f774cf6f6c8022", "0x1214ca424ea151785150d7db57b93cc6bbc8d75d1929938460a7c67f0c791f11", "0x2e174dd4aafff6103164d9165ff8319d9260c86218510a4d910341f0b4e01d38", "0x20b32f4a423617fef146da5f1a2695fcff6497ffaba30decf6ffe62ae952c435", "0x29f4dd468db0873491468b7009dbafc79951f3b83ab64efb8dd2e56cc9b31a8e", "0x2519801de4e58e4164f7f0d86994311c87f279a38afc4cb3c4d26cf41c642af0", "0x2ca123faf875de4eaad80eba73cb2a00f22eaf5b6109ef41a65d2d286f602cc1", "0x0efed651a61fa30b70937bde9d02b9b6a302a1aab706687b2233ae9b20331267", "0x13e21dbbfd7e5526bdc5075e73dee0aef45a0ed2c880b29b7dbd5c9e6439ee3f", "0x2c2486d85aadbc358b1065dd7b14957e8cf5bf7451afcb394659741cf6be5821", "0x2c97a5d5b9751943bc11e04c2d60a56c43d945b96b0982c8a3f5e63b73550d6b", "0x0d3876b0553694380adc086cc9272e1770e2f86b336ff78040419e5edccd8cf5", "0x12365c7cdd616d258f9ae3504b37d44e958c816a0bba374278e8b7ad79ab9679", "0x1b60354d16b01843540b8fc6961ff84a58ebe5e42b46d22aeb618e2db4ade65f", "0x03778fc723ccd03ad8c90c311c141963dea639d2524ad972d8496d129e1c2434", "0x2ee721dde852879e1238cb7a79207147b3d864e6c8a14a327e2e558b9df57662", "0x11020d0581ff8e79c8f5aa4d50be2dc792a038bcb61aec4ccea2ec4df2d0af4c", "0x1e0e921193e35b3c42ded003dcbbed8eae46712e15e63aec715f3f7031cf4f8f", "0x2a6c13d7afd6636c2d4d5d36f42c09ac3286b67703ac4d2c24dcf5a3add9020d", "0x27bddedea7d8d398b4b6e9152e17c2d092217609b109c14574f932bb02c88440", "0x2e13f9cbc356728e6d2b7a5c593aa9ecc9b900bb98901593d021d61eba6555a3", "0x109af33773e416156885bab0513dc199a0045d405d81bd2a151690bdafba3b66", "0x0bf7a121a985d20eebebf624f3837307415ae480954bf49552dd8c5f3e50301a", "0x0f78ba7c3e6d15d11292dd121aad459483271b5fe2ee56a63814d5db19290567", "0x1625df035eaa992f424ddc6dc88c1b700ac5e6d5981e2ad0df9b290a56bd5001", "0x1ac7d1f33bb598fe9581ac73b0aad4e9ace99ead01981fcf2c502a71afd56762", "0x2d37296ef0cd5676d0809608ba340cd7b202e2e1c2546d989417d303ec319337", "0x019caa62c5238e03ecdf75bb2c276be1805be3fe44a957d8aa3bf07cacf1c114", "0x0f32dea104320ce0f00919d90f9c6c76d496882791146c522a8acaceae3e4a48", "0x2ce5d2452c0a5a9fb65a4a6482f34998865be9a29f266f88a8affa850f5ec6e5", "0x135d590de80a0e717da7325c781aa167a25e5c310d92df83120e891cced24a8b", "0x1d3ce96a7cd79e94492e32b8983d62fac736499850722f7fe7dd1589706ab693", "0x0ea3a1e1f5dca3ff7d8671f2fecfb467f6a4e6516c8038a9306b36dc818321b2", "0x1ed08c4f0e16d144059100f05fb463098e3d869f342e0ef8b4a47afe74a83a25", "0x0adf612bc0c24e826135c7de0dba90fbe1bd249f7424f1970b52e8bb24d986ed", "0x240c424a024e59bea3a14fca73d7b63869eb9b68746ad9c356b93fb6eaa3e22b", "0x24dfab7238b05bf08f66fbe599763f63d5c70a181a7e9fe35daf0479e2b1cbd4", "0x160d79a03959c968dafb76ea3e08ffd2ce117d094e820d5e9f7ce1debd3bb08c", "0x1b65216187a1ca1679642d4c40aa05bff725bfa50248aa89d57f570c2fe9345a", "0x243503bad8adaf14a8e565013863c13a77f6f7a0fff571c1275b18f54bd77351", "0x06c2ad47bf4de574cacfba515d18ddaf782a8addfad1c18ee4391163c541a62c", "0x214366673d387148578fef89434bcfc7e0ce4eb08661904026b30ba10f3a1341", "0x1db81d98b4d4d83226ae4131301c8e3622a32e2b7884860e85257f5f7b7e6de4", "0x29d2bdbc19896e8faf0ce15d7c883bcbfaa38861d7c92299a6bef42f7c443f0f", "0x19295f72c5907e8d9f8d8cdecf7d193fa86404cbb7a85522f7fc33857b7a9c88", "0x0bf015760770cbe8e6f69080f3aca18258f2cd092e33d3ed62d8d19d144baca8", "0x06cb21aac0be8dc2528c3974724b38d73a918530976ff118d08764cd42e0b240", "0x1276fe2c751ba49fd5b75cab5b71f64aa0588ede807db1bd583c3d6ae6941356", "0x2a17fd8041ecd762f528d12067a09204f9296ea57374806c39896fe9499b98cf", "0x1904e2bf9c0512c72559e71e3f132f65259058f7d68b9d7d6da1a8f9f5caf674", "0x115b5eb99233a8a2200170733c4743b804c601b5d8d4656a138212d66eb89d38", "0x006b58885f0e09be6ba91176fc8a6172bc16d680f888a3d92f31a3bf213e7ef8", "0x13c6704e90535352934dcdc0483b4bb974d50beb7a5b6be30af0e46fbd7325ce", "0x0fbbcb96ccaf43c773ba1ce70613892543732feccc872975b8eb73e3fb4d54a5", "0x059b4df63dbd2bb66e0b2a826c5cbda96c338fcc38dbf9e9c46041918bdd8bfc", "0x27d859e7868c99d80f99d181e6ef7ea93a694623a89bbe57a6c8e7ee54be21fe", "0x21eaced08f9d0b42c6fa51f59d65f96598e9ca50d6cd1dd49b84fdc0646ed68f", "0x06815b7a3b80971d05fde6d7dc5cd2823363f38d0af5c0ff8abeaa71a323a2a7", "0x06a778d29aabebb5a3cd940b1c33f05551217b6005248e0e716bd5a10d558c6f", "0x14fe9fb1f167c6257ea010088115769e62b60ef3add0f3a22c9fe7a4918e94c7", "0x090305dff314174e27edebe574bd8f0c8fd85843e7d2627db607b2816e357dc1", "0x2ce23dfbeb8e1874b9ba894cb85f068bfb0497555cfd3dfaf3888aa492d20445", "0x1b0fd94dd9cfe774d9146be584ed0b25cb2c7495a708247f5763c2380e5c1cd5", "0x060bb716ba723a4e5f5faa179363a36774619d1e0cd91bf4789a1aadb3e612aa", "0x043b10c508e8681843eddc05e73b95b7f54da5a93b701cba4d6822f9c9dcf436", "0x126734e9502ba9fae4a314b67ade6ce8890e304a430e6c9f4fd60cb8ad69950d", "0x26edd35db97c2ab2ce27b503592859b4317a25a688f9743ef0dd9cc2619db7e7", "0x27b225e4a981af36cea863f591c8bc5aa95a4beb6d5c9abc5e03ba906ed72062", "0x1102728832f751c313ac6610fae58b9cbd511b51d6121b3bfa60f47db12518da", "0x18276cb011bdc6d75eb1c7d5d06cce10c7c9079c8c9920fa389b116620ee4141", "0x2502d7dece8cd7d7a04a1730bfd2868fc64f835dfe143cee18480c7c3fcada76", "0x06b20beaa575dd846254695068484611bbee1ae48285ba2c3d99c14e62581a2c", "0x063ab4a078fcb212275ff5fd06042bdbd17aceae994e2c27a1ba876139f8ec1a", "0x06372d5952bb69a460bf1333ef4ac6b20b07ad4ab4124dd4066a6cf66f406993", "0x0f41d4e3ef55da71cf4037c49d44c0a641f52a5a174f7abec522476e3c623ce0", "0x0f0ee9841b21b9b223c1d1a906993bd66b0ebcb7dafbe2b802bb8165c6011773", "0x01df2eb2fa423f01396e073390104cad8004a6a5f140a2b18ed658068167521a", "0x1ce05bc55407c883a5a41792ef3486ff22e403d38474cfa90f5ed30c8d30198c", "0x037f1fc7934bbd5fdc34388bfbd0f95467254e5df2b5b62caed0500a2594ddad", "0x1bd6a614004398f329b7080ffe69d3dff6de06c819fedea24aed16e4c47164e7", "0x0fc2e5cff7e9efd46fee62aa3b3f22bcc9f1a3bd8917e2e1cf5aa334d29d2a06", "0x274fa4e3d86e7ef8b0fdf1a81acce8f9ed2f2eb4627de75781a813f106a377e7", "0x193af1c5fa057ce682ec728cea90735935a22b5aff46ea2f803a29421aa950d6", "0x0e72c33ed6055471adad61d027c5ac1bf75444fc4e14988b42268f0787e29875", "0x1c75804a4ef1c81c83684d688c4429ab1a7e517dfc602c9a2443c59f32ee9614", "0x08803f69d83e0c3397e09dd47a80cf9f4e423437008cabad2e50110456c8c60d", "0x2d1214ed17bf81162a5dd43a3fdcf195fbf47426044cb22db538478e942b07e6", "0x0c85b24b79ab57504422135fb1cb0c5e1e3a5f0a06103c2486ee6a3eefac7288", "0x2e29f517dd1b30b791bfab03ce747f950202f0eb8267ef3f71ccec40e91d95e6", "0x13281c94a670fe5ab09773af42606740503509efd74c1ed993bc6afaf3d64174", "0x21a211407cef7b0442160acc9dbfce1a1e1d58c9e98f381a7eb48f7bda0f1e05", "0x085ef1e77f929bcffad1a93f920c1d8c8b3632e1e1a1ccd4ecb01602759e087e", "0x2b6f796de3509ea703c8da6276e3ea154b504170c59a8ec4581e9757d74ba759", "0x1fda5074fa5bae5e16fb4f2d18d589a7230b9a1c1e4d08a8069fc8d45b1de3cd", "0x02d22a3c0d324750d3be31219af32a8282c372dfde4861ef86ef15c3155dcf14", "0x0c21f4f4bdae07a79bb3a98cfb351aa629f3239c4d24aef92ea79bfac9c2fa25", "0x1b721ec1c1df81c83acd7a95ace16b3e2ff4297aabb6f58100b5dab06d3dc404", "0x27ec9e9e923edee58189d6c7f303ee3e5249c5aef78758c7f511cf87b953561f", "0x1ecf1060366dea9506fda0d01cba016db9620090a160d5a760a75d12d5d72e78", "0x25d432df312e005c69a06a1f004ec899575034da26392760d17acc80c39506cd", "0x17a0ea51f9a201ba2a0f857c9969a7f6bc6f5d5bc0e4957e1c0dfe4b202e4a24", "0x02d34c47b847d67c9b4dc313bc714ff223ab01127806ff6c922d8763f142024b", "0x020e59e5e5bb0951a660122fc1aefea294e7ccd5f9c79839282ebd9e119f96ca", "0x249c9c850173dba0ffea3568c28416020121c3d9990dfe2e917377467759267b", "0x01e8ec57b7681d631a02d530c9aeef93775869ef093de92014cdf85ee2d459da", "0x00f739dcb9f3ee6e7b5519774b540b2898bb6cba3629bb6c60e423b7eb6b5ffc", "0x0e016f0724fff85d781aeb1548d76c566e5c26aa7996edf504e4167285fda66e", "0x275270828b9ddc964bb8d68a6258543568c844947ed5ed94b3180cb874c68325", "0x00f1ca3fc28aacb8ac21a5b44bbeb0ae64cc339de13e04c74fce820f4f93e48d", "0x216b2f89c90105f570e0911bd1ce20e0664ffe01811cb777f90376719c0e20f3", "0x1a91edf90950cb2689d2c29cb22f8dea61ec41fb061f1b6002f72265694c784e", "0x2da3342eaf39a2b242713484462971afe53df55bed5f5d50d67d9138cd78fe84", "0x29f79c86f5a9c96fcaf2296be36425b72afaad4865cb9090848249158e2ea4b1", "0x0519426a15a599f20d2979302067dbd1454b46539c9499c65f6195b55c760337", "0x0f9c475cd72b7e2e3865e96baef89a149eacd3ab340210a9c5e0de6fc082e89d", "0x15f1d711979dfe13e45eeb9759a89f51db3d27594985890b88c9bf276922173a", "0x1f083ac0549a1ab00d4bc9066f05494148f60c9569e7989941c3f50fd6acf760", "0x1505ee4f79bc8187856d5f3f5a24de97aa082b8d452c63b17ac3a591451b747e", "0x0f20876d712f147e2fb9f7be6a51f346ea28447df529eb41342948fc2d8f096b", "0x1696d12d9ae779c92120ee715f6b8da11ea93af2673715a2df7731db91e360dc", "0x28485f438eec133b0be36b32fae82da57fb4006bd7f5bb15a267e7746b37bad1", "0x2780436f9da12461fbe31d979656e6d1a13386e0e6a5309b050ca819e10ad945", "0x271ea863673332df2bf2471e6c8935b037ea8318ea5b32379583f611e06b3da6", "0x29f1ba4b29c1daecb9839bdc08431bcabe68391ca540f68b484a4f8e96a9dc61", "0x294f4cc728dd423fdaf37377e069aba66f4d3000f1a559bf4c449103306031e3", "0x146b521b1c08c9181213ebdbc2a34fc3efd87ddeb1bfc5e5d17ca951f55abd17", "0x0dae0af973ea0b0fcdd8158ea51b9efdeed5eb664b84ef67eaa255fe4e55f3e2", "0x2604cccc370f0a50f3f726edf1242bcc131dddf2697853276c079ebfb883d8c2", "0x2873b19db1d03896d3d52d6f9361e3fdade5e7b2e6833e4d5ce4661186bbbb9f", "0x0b04d090bcc4cfabfa47f60043859aeb5f33a6de205dfdf0e3d099d4a8394e08", "0x0508a195c0ca583ec10156f205ca1bb6f6917318b8ed6ebb7347b77d72dcf748", "0x09262dfa80aaa0bc61c5891c237a519d3808c53fc05dce3d71f17c0e3f2a5eeb", "0x0ce6d25b1c6c1b89fa005c23619d877f2ab2fde708d30923669a49fe25b3c7dc", "0x2e69685b46c8050268dbc1040e23c739d7216b2c5e76108136d6895ded3ddc44", "0x0278fb3df3fe913657bccceb553138fa7b8ab6e062a5ddeadfdddd5b305ff822", "0x16da892ade35754e57d8f03f3e6f4110a9dc1639d9b6de65e479165ca49f7a4e", "0x159754924e7334854ff803a1782ffc059927a3c26dc43e661e09a1261bd7c94a", "0x2212ca6487b845ba4d16c09e224297d4b1a16e341e6c593d7fabadada3929d7a", "0x2dd088de831852d169aee1d6be69b52c5dee0b73e18fca91cdcef9b90396a047", "0x24ab42ad6749a14fe2f707ec53ac3b0315deecf421b9753032533e28491db30f", "0x2f6466e50ef3c61a0e6493b18d34911406e2e97d3551887af808d67e1ce9ae27", "0x1f5886fb8618c8711ec08de9477571f0eb6e462b8f5e5349f85631f059594480", "0x05ba34953959784a57c0019e916e2ade5d6a523110437cea9c2b94453dcdf2a0", "0x27aee67a3c6ef783cb55915165a5bbfdd86bc06c776f145048bb2401dcf17341", "0x0f57efc05e9f97e7f68c694ba2b3bf216eefbd5c71710a56f460682a6ba5d5ef", "0x1d35eb4a40a41dd77506d872a458ac93d7336dcb72f15b182a6702ca53b94eef", "0x18a33064586d5a702bc4bf64f70b44b5a77918255c2dffbefc537e40bd5951ff", "0x0b0ae5716e42b440b7423bd899319c880a4a674550b7bd036207e006ac7a2d21", "0x1136a0f6c004a2c57d21a00c40dec6f027b140b36d3594c1cdc1b0e8707b62f1", "0x21cec52ac4b2aa7f80f98eb75b4e0280591977d50b677b8ff10b0a3d028532ac", "0x284a636786fa63579b1541746901d48e440cf0c586f1b089cc45e8b830fad22e", "0x1d4a0aba0cac51c3261f7c483d89628d76748b0833cba6bbfcac5243e4bcb4da", "0x0410a065925e90fc70ed1aaa46477a8ac8193a10c48b5d84fb5e9cf2123ae24f", "0x301453b23d055c184a65ad6a6acffd9f520637fe751ff7b769409d512fc92f0f", "0x037827104287d94bbdc06584d36d4d5e2c46c4ea224f4e0dc0c3bb541f053b79", "0x294641ba8a02768c5e3b7f542d281c69dc2c3f2e8032f864295a64b08a93d993", "0x1c12f993f0f1edd809eeefae6932e5b88738b336bbe6f976f5f7a0a178ffeab0", "0x0cb2d948d38fb8e17c60ba6c67608c9ffd912e0a627eee756b8d22af8b9e5e43", "0x26f1ff731268d9bbd26ab33e588acec09fd5a4b70d60b553904f5e2d05e894c5", "0x09aef8a2029f82b76d80ad8a3926cb6e1174d8b8b89c59707c123473120b4c7d", "0x1be80cab12f4bd1737796bc770f17073c6b0046c327bcbf3a36e26406c775c74", "0x2476e7bc637f243d23d762cb3e2cd8430dad89762576cbdd918428a75828836a", "0x196d707ca5a9edcc0e3103aedfc60abdd1c9e577354d930be0d5b6d03617c209", "0x1d262487237e8503908d5375a1a798a9b8c0faccc056eddd8aa87d0a66b07d24", "0x2a21e03d41154bf3191f1a834b9af6b23d40bc01d027c2b4841fb23dc9ff715b", "0x029c647822a1ae565b2bf1249edaeba0cbb3ad730deb6d2e6618fbf9e74daad9", "0x23e1971175b8fbb26c0989dea82d8f4a3f708774c286e4ed2f8dfaedaf3db5e3", "0x1306188b792368ebda1f2e31e846854cbb34f175e01c92457959ee1c6da0ff3d", "0x127d0f7eb9804fc20ab4f8b9409834ae521645fffa86b0c221d9223fa0e9d2b2", "0x2441985bcace35a81b1f81fc6621215df0ba42441e450fc65e3519a0393b1196", "0x2df7d4eb115114544ac4f52fca36d6b33f09f639253e9e3549d5987b0e097136", "0x0f6c5518f92ee2e549d31adbb4e78036ef9aa3c2164c317aca92203e3b99f940", "0x26e2cc9dea47dc6807f87cd87c531b17a7f2f5ea86ac094e5d5a22fc3433dcdc", "0x1c71e33c864b0a8de4d10dc26f76bed55771d1601a0e04d399cb2397064c5cf8", "0x2a2f0b563b4083766c8b6c60872c32eeff2b207a1981c05b1f396178f01207af", "0x0c1af0bc5546250a7fddf1cbd3e7bcdbaf74ebb979535e0b343676dc9f9433ca", "0x018bdf2e7078dc40af1cbe488cb562fd32120499c4c972a6d43b92ce167ddfe5", "0x22b36859a16a8cdc3df10af2820715891f779660a1f9a25ef652019f640bef06", "0x10e697dbbc43c7ae2030f5d49974f8344d5e48ab66d635b41e7b96fbc7c6289e", "0x057deb4fe56390abbbdcd8822cab5da1207a0ad79423920622b0c4a12fef3552", "0x12b27c1639f162f846fb37ae7144f29137682ee7eb1632e791b4628aff4aac23", "0x0b2c7c76d01843a2d14655c23e8091afb6f3559d66c3bbf3d115dc9d70db5af2", "0x0b7d9684c0c8eca0e8c31634c9fb68b2e83abe72a3679b3678a8c9b1a13a4895", "0x13ab0a7fea9b2c828766d2fabf574248d2d7f7b2f8e60e261cef29cd916e9a2b", "0x2de3579d790ac367f66d90557b54668153a5c37d5391e92a6a5615c9d60be979", "0x1ba010b6d63b9538b281be3764e8e6231642c6a6735d89c9808fab7bada21f6e", "0x26ffdea8a8d9894ebbe02a705fb7506e12b1a7f100c5902584e4dcbe1f2119ac", "0x11ff1619a49d6abbb56390e3dbaaf0c1cb01b951a734218b3cbda4e8052ccba2", "0x260c36b80890befae89cbb3478b9f7b5b3f6b11ded47aae2c0d5e0c48d8e5174", "0x05ca88857cb0dd5f380e592aa37f6f94f7f0c3262131cef29948a1a49fd184fb", "0x18b3832a19eb7ee1a9dcf574302ee063ec19046b3b9eb7fb277a48ee8390e485", "0x2535291f03dad1e3c540e7f26201c2e330188fda58be783067698a1739f79369", "0x014f832b38a9f43af26e5ec2fabf6c4250083cf87f0ba86b95053e9182d1373e", "0x2548e6c4767c67691af55162d9ce0e45e89ea08a4232fa0a223fde869bfd3ea4", "0x023ecdaa3f942bd45ba46f528cbc81a51ce1425039f44781a7696f48d29dfbd1", "0x1611bb59a3b28756b840db3189a3a5ea22ec16845472abd68570ac771c8f15ee", "0x0bf7618845013330ff465f12ca95079ab72d0ca9d8a7e633048c11bf2c46c7ad", "0x15c88fa2eba3d087fd29f6de6fd864b875662ffa438144352d684717cdcd3ccd", "0x0d58d12798ab552f96f0d951e97cbeef887d858656b1f6af4010c80091b0c662", "0x0406eecd7bbc21eb04fa1e565745cc65445e4f82f4a241efb8bab06eaf9c7cbc", "0x2fa88eda065714b9ae5e18456130e31bd6f48d02b2415ec61ed209ad8ddc3164", "0x01749863aeab13ca512261103eab93b43fac53df6b04022c7cb7f17638f51c29", "0x01553263a318edf34429d901f3879932b72f5c32ad56e900abf47672f86f9a62", "0x028b7a8be47c2239079a01dd6d0e57ddc03fca9c6a58d3df6f234dfe82f96aca", "0x2c489bef0fac19bb187e5f8a064e67636f34b289c2e8adc76ecbdbb5105fc1c9", "0x1ff548c6690f5227d576668fef6741f999c9914cf4842e793fd5b5194bd0c3dd", "0x03c1b551c84903040faf3d6db934e83dafc5f0efdeb7a8feb27547724727a344", "0x1ee3620e8f0dda8c6f155ce81a9376009bcef2c8d8f6f266e04b7b80ac8cf867", "0x18e45fe7ea171fb11d0c4af5338568990f22147e14421f336fe6e0bcbb8a0014", "0x27393404521a55e0e1a4e58c561180040c18682814882f45aadd131b9f08753d", "0x07ff6857011a24b20d698ad43a5f959acefff729940e346ab18f9d2600f83d05", "0x2981b3a288b4327839542c5796ce2f09af9d022a604ffad61fe0077d76748bfe", "0x00dd5b0b8158e8a73995efd0b9d898d4fd3587011fa586cfe02ce800f3064033", "0x084c05fae73cbd6432e622cf9880f0d28337c6874b87b88ec0b45a55d393623d", "0x1e2ee2fee9b9bf8d3f3722e7028ff3af8e5ec6319fa6d8997dc115e5de2ea8b1", "0x0003418fc5909b62b0296e6eb42aa07a971050939e99ee371f6412e44e0ef577", "0x1c4994a2d41258064376be5cf3c99887aab74803f67c12c64e65aaf7f1ef56b2", "0x0413c2b38733961feda0a68493d3cf44febcd77952b8806ff583e8c40b31032e", "0x01c46ad39455255525b267b8a0533c5c66504f81ae9534bdd091ea98994997f1", "0x232fa2c090ff3ddea83adca0b9cd0e0918c9458b75b0ba3b7d677add820be289", "0x1cd5701c80a10f420eb34f534738c0dccfccb6c87ccf9aece35abab37cf05fba", "0x03b981fe0c71882c6194465537d5e402b816118aae94bf8518eb07a529e4ea54", "0x168a588900100006443658a61ca9d659f0ac451d1e0bfd5a6c6a3aee85723bea", "0x1e51f558bced240c65b7cebcdcbbdb7a9ab06e3580d46f318de84edc795e6f88", "0x1afa5a8c5fce396de56ec97dcf0317a6b7cbc3ee1f8e9a3bccd6d870022b750c", "0x1135efd63e8f8cc9cc0661dd49d36ac8ebf7900d90d66dd5fa816054d4017dca", "0x2914d21c2d2845ce2b14e951f42103599c8755015641db03c54df337103440ad", "0x20c87a2d759749aea9b2f0f8cc01452452e711e39eaf5a8b07100a197127eff6", "0x0db07920dd779c19fc1ea8ec5323d5af0d511b869db67dee0408785ed922905d", "0x0d631f18fadaccbfdd3b3be46772a3bcee276378cd2e46baba90d56468cc50b6", "0x2c500f790d463fb136f2d8d4cade62296e7d7c49bce18395b3014c9fc72d005a", "0x176a9eba97635d1e59b19faa2b3325a5b1a27376a16dec7317aae4afee02bfb4", "0x1202fce1a501b88b455ca44788d55214baeb3b54e37d1cc80f3d6ec0e09d4747", "0x222948377ee9d27fc6406007e1727b566b825decb95096c9aedfa8e6453a5cbc", "0x2ec66fc27d82aab2c98eb50e67a0932210f3c6e12456269d57ea9095f41166eb", "0x2f5c233dbe3571836fdac0915ce6596fc0844fec3d0bf5a9b968ca58c45846a3", "0x13889bb59b9c07953b52f66123c8c1380e6f272426103adcefdef4dbd2865da2", "0x1cf78f25faa52c747312d09fb4e9abb4f1e55a3da349cc8dcc6dca81cf99ac3a", "0x2c0eae2866d65c97077047d0f4c43c28c8d7f36af6a9c6fe07ec89219f1cc735", "0x28b816cd8b8c98163380066d0a50d8b0e06ff1c690b81b918c7ddd08a6b7066a", "0x1d46d91669ce5be6554fc3ecee895d41fdaeee189adee381abfb75ede1488cfa", "0x1841e03b9fc527450e4470aa8f0888d9ec8599db6b0f7222dca26cd43d22bb05", "0x2d2ead7b2078b09085805c2777c90f6c55744b49a73bbef04c899313bafa0f57", "0x01830a8db342676cf7492281b4cfc7b138c55d44daae47b14fc888e5bf745095", "0x074e4ce32bd14b01fe9f6729de2a12f218fe443fb708738a860f1910bdfa4678", "0x1fad4cb140fa4d559cf9525fb24e7f17494d239af679a030e7d1b7c9cffa949d", "0x1e50c6526c7324b97b7f338752bd700ca5bd6c0efcb225260224556d76a28331", "0x02cf0359b8da1abffffd73f90758645793f5d1112fe898e8af0c61e79e673e5b", "0x0a14ae497b49785ae7771f0dfef4bf41857bb2fd1f27d15c3cbc8ce3df9895cd", "0x16bfa02f57735662eac1c1f520b4b3f9c4bd26cd2792177b276068916954cd41", "0x0f6fa95e0117b734579f68dc59736c7f9afd9cdd4a90e13629eeabfd84525e9b", "0x1d59cafe27bdfd78f564894300763436daf93f863c3213c1a849d1c3169ba771", "0x289e39d6a2d4bc817ab104443b89b8a608b13bbb93b3ade772a63bee300bbc3a", "0x0d47edafd6a8d4651c27f6bee48e9756f5d6515af1a3a3512f59e9e3ebdcc331", "0x198d6aa9072a06de13128d7b17157f85994a10c4957262770cc4f59e6c6d332f", "0x174b80e4210f9d81be7bf70e3ab0b21de8065f7222e80cbbd3cf985d6aab0f05", "0x2d78036ba0948752ae78b1138b4b9c4b67f0d78a9c8965e1bbbfa356158532bf", "0x0c1ff404599af823908f32e607564f521b75812c670543e390cb02e3087ce924", "0x0a561b578f4be4c533151da1a529bc98f4940aa5b48f8c012a9c181d811b8f34", "0x2012a6ed245e48cf65030289a1cd01d26d3eb2e439bbc4f16f256adceb40bdec", "0x0824422abb64b758f600c18e6b998c19d82a9ffacb95f9eff9e018d5afb30baf", "0x250a091bc91301bb1393782a7e21eea81c0bc8e68161a3a4e5e4a8a7e30964ad", "0x1a4adbc8530eace4e19696d77a06e1eedeba3dec2e44accd3acfd7fae6d076b3", "0x25a511f7b8595b12278f2b05b4ed6684ee12b1d298fce27ccd6787b5a86e26bb", "0x07df25e8f76f32d99b99dd04d927c1b2fa1903776636e38f7188d8c2b73c3a54", "0x059421ced9bb92262f97e7c7beb8135539dd66bcd6f0bd41bd124a929823f75c", "0x26e1cdacde91e112796df70dd3a479b595b8cfe7c4c95b5956ed477a07813842", "0x298083deae9e0cc40a9b60e494e44e6efe93a8e0fe21181cb1351d97fc0d954b", "0x0f01fc7bf4d2f1ec8cb1af8ff17715316fc44387d515185f49a2443ad2a14ede", "0x186049573b3286b17003f9e5b27b8a36a78b8f32efbf0510d9fcc8fa7e73c5f0", "0x07335829d8e3758cbbfc4cc49b655ec758086676b4d3912da39f2ccdc4a28d14", "0x019d072d6e66aa6e034843cc3d7ca51c47df51f35dbbf4a99d34293fc3d59624", "0x2bea340a223b6665f5be6dde2eb55b40a05aae26d349a6c4af07e3458ab9be5d", "0x1b90f5c0e53409f8b573056438bd9e6395f5256fabb16006c009bcade1eecda7", "0x01932c3f3e1c4481420c603e23f16029d8b97603565f6314184776d865ba2e7e", "0x12e4e9f31be336777527af3ad443884e353552da362921074e023f14580b5e73", "0x25e7a09a55698b0c7323472b2409654ef12f2959a7656c0dcf35ad9a7926f3f1", "0x178c9238fb91fe512f6885e512e2a59b7686a34aed0fde1ddece6b1d08d422d4", "0x2b568832e6262628c31e405305f88402948b515d28861f0dfaef24921e7e352c", "0x146ca0dbfb0fbb98c162eb84b37228cfd7311e0d15d2e48def85f9d207bd175b", "0x0095371673ed3ee55892e373d5ad5c760268c83df7f50d44d29d366e1d7a9373", "0x051c57cc37343989744272869cdc94c0660bfcf6ea1c1c7ae51427fb298c9db4", "0x1c8bd96ca390714a2b0079ec38e25af0fe7a69fce1620f376f770e1325aa65df", "0x1712f67e82f90446550d51c1d2e4ebb1475d6e6043a5c46eda3170839785072a", "0x1c3363715dfea957de9614b6cdea17066c385a8864dad5b43aff09c963573925", "0x2672b8adef74adb0b71c0166de766a39e5e1cae03719aed0fccfb7ff432fe916", "0x10635771a37850c2417c96b7f5fa48a98734ffa59038d8b7136cb5d0c646e1aa", "0x0b16fd5ba97f28f5619f6989cf0d665e908cfe8a1fc24e5326461973d09bf0e7", "0x0027df27e1618278ed22497590175692d262d4aafddfe34bf8db619c37a66068", "0x036ab8de1d7df77301d16cb576a1346fd196d25534b22667f50628769ae136ec", "0x049ab0f37ec5bcc724a3ea321a91951f90cc00afdad5ba3d5081706df5e75e6c", "0x112fe3f664849af9f494ccf3ccf0d4b8f1e4a600c29631d059bc6ec343450c49", "0x232b3e1d4715272d5f18a036c137f0c6fa56878c9aa054cc33064e2a5d30f567", "0x056c91dceace41ab131a1c59ce4a320857224a09657ed82f7141e7619a5db545", "0x144cd983cfa259516382148e290dab14ba9b5d8e6e76b84ddae2ab086e7a7952", "0x1d21aad5c6b407e6eee7d0b55aa92ce0a32a39e918bb32bc8d45c28094a634af", "0x176f60be5a21b98d3469e1339bd5c7a0a8ee84a0d34339bef675d064e6e0a466", "0x0329d048658d0eefed7f3aaa9bc143b0c26636f13262176d650a1a7a2044d34b", "0x0fef28f114d6420d1a288f960fd9dd40bd4a5a02d58081621711ddd2887c757b", "0x08818813ba3e9a9329254e78e00a83b360c905c7202459cfad0ab47658276a81", "0x020a128b7112994e52c4849bba8d1217f13a957bb4d0ba6a0d97cf1914b65b07", "0x0980db3c7d2c8866e9ca0902c3b8e0a078585951ea4acbac245b61cf55a703af", "0x14f2bd6dc317fe19126b583da18e2d7175cfa704c5267b848a2ff9a12bb188c4", "0x11226fe9d81faa6c6a35d3a12230d63245061f2045361e757aa0c5ba7c5b3152", "0x1fc144aa275cad950ee4e3182bb87783dc45906b2e846e2703228e5d5328c1fb", "0x07858a3e15adfc14141090d972cdda3461908dbfd1c91b7e9b991760c1d47749", "0x19284489d7b53ed2549c5fc66331c71b9b31446eb3668c65d85ad094727d45e0", "0x0587702c19b9737857f99cfd021f8fc6af71b428e3ae90f9f5d2ec8e7140f5d8", "0x30602b296ce2450d72b00ee8cece9f896842ff3470b98e1cba2a1b3ad87539eb", "0x2776dbec079a5034700cd9c6e21404eabf7c13fa17d065a2d69d2987a718e78e", "0x28bdd009549a97fd0c29e9c30f7af9555d864aee05ad1886fb918d371ad29e90", "0x29791a2e17dc204afe645306f584ad767f2be949aa6d061f886f21d0401aad14", "0x22a667b65908699a22edc1697324bd37ffb0f18f00c0ba7292ec8e05470fbd76", "0x200d4863b2f35a853b7d5dcdc22bcffd8f45b60bd036c2f94907d873e5d95ca2", "0x18bdccaca11c8a10a12be6f7cc96d4557dd9cdbecd5f841e87303e3a312e9e23", "0x126ff502714b58c3a40ffa3d96df0de4e8aff3543975235bf3510c7ab22d897c", "0x0570fa4d1c92cf2917036fb2d477727e55b569b4a58891a07f96c500c28bbce2", "0x08c84000db8f725655f47432db3a4dde514dcf49b40fc4d301a17ce5d7228feb", "0x07212da8afb35376a4b9f93c20f7419ec704b22c898b20ebbf3ac9f1bf513038", "0x28c6bd8667a7e5336ebb7e53c724990fc8af6a059390353bee16d8c8dba971e0", "0x01790e7a8c59ebbdce18ea7b9be261b8848a8f5c69b3cd7a7b63a1b1e6d4c926", "0x09ce10751c2b7b90bce0d62e8fcb29fd3c8a0d286e93411fc66588a70a14a4fe", "0x203ec579417ebd5f056e1346a8c5be34cda66c9901fbb0bc27b8d773de7f665f", "0x2297981100bfd0bdbc495572aae5ed5676ecf2b693e33913b8fcffe65f57f4cf", "0x00e3fff36bb554a017f94e88130957a975d343d15c0772a67ce88bb1736db3e5", "0x22214f9dc31c1766784846260971d051aeee92226b6f13e2c4678689ee1304ba", "0x1eeccaaca23a1446309ca4c3d9b7d07962dbf8bcd8b3b37218f4199281263327", "0x1bd52cf0abbd32e888d402aac0a358309bc83eb74256efa17edc1abad196bf63", "0x26cd8ce2ace79114e2ee96fc1ca3801d012345c68750009745735edfc4e29d71", "0x1dd921013e6519e29b9aa0f52cc8c02fff3ad7af6a187ef0e90635008406dd02", "0x10358e1cb8ac12e54988a64bee4f1e94921f030a6926a00d57236283ea0c0ac2", "0x1ca1168b167aa5298bff96d82356b7387ebd1d70431c30b1c0c0df81fc0408c3", "0x08d1ab2692d291aaef2e50985c869485061578a2dfc37997222c81ef301fa942", "0x2d59780dd0a00a869516c6a0b300ed06f6fc39e0f9ead60507cb24c14444899c", "0x19b30f06355690afa779693f7f99c4a470f8ab8abd6989993d489a9b17180cb2", "0x1b93c9367d56b207bb1a2f171b56208c6aa1279be2572c1a59e65345d873768d", "0x2f8b45e1e079448ade818bcb785b0c8bcaeef004d956142347a08467e1961809", "0x239af691b7d6edf2761f88deeaec665169de99399cef819dcc37b4609b6cb4e0", "0x1260bd299d9e99321561090559b3f90afed3a36f36c4d397072de293d34cf8b3"], + ["0x2088ce9534577bf38be7bc457f2756d558d66e0c07b9cc001a580bd42cda0e77", "0x1b86e63908c4b12af43cec6810356c94d21c9e37d73dfff9742a58e0ec356be1", "0x09ca022ba1142d170f755212e2edc9d0a4ace33e16825f540d5d50d5a021a169", "0x277e69d47a133804241f6aebe9449be6e22c849c6d8ad8c938eaf613bc1aecd4", "0x17b57ea03754e24ae0ef425aa2ad931aac9ba5457a18cec594545a235db6b269", "0x11c740983395e0f4a026e2c7c939236375c9077755eb1a37a77d5a1fd74abac6", "0x1cd85529010dd7e2fb7ea403515bab5727556a479c59b822efc5a81eb37bc5bd", "0x2cb9354002cec4bcbfa985de34f43d702ced83d197aa374b5a1f96f87b12f292", "0x1f7af98e08f6877923f27a3dad40c525ac52f56fbbd878506544f9acd61aa32d", "0x2b15176925df33a45c9e99a7c4f26ad946b1075de58c7064c0ff92c431d31dd5", "0x22c89859b4d399d3a60a322d6b399b88061358493f3cb3653fda940e988c1ca3", "0x1a9f2730c80854d8f6dd98109363d405597039373af5055aa67fc18e5b1938fe", "0x040bae2c57fc68e3ce5e294998ea060e2563ebbac58ff8fc4a1a0a40575f0ed3", "0x16bf4f5622729467ee9749cc380605d2bc4d885cb99699aa2dd8565c4faf8b7e", "0x1045ecea044ba1cb1c3bf07ff4968390a3ea075001b21637ec7fcef61b11329a", "0x26a319fe6b7d6e08dd6cea9587cfe3f523492ece769f70f66d3b6197a262fd09", "0x28a5629b4c2083387eacb09c1571256d172ef1ed9c0738686da84216ba81bd6e", "0x186be22b6a063d18cc8760dba63b119cfc6d8897e32d6a0b19de280532fa9726", "0x2c41eaf9c0128c486c5595a1ced6b3dd15bd9b73218c6af88137cb8aa5c574e7", "0x11864265d76e8873b4d2ceccd18dada46ab7213321dbe0683727fa2df7e3cd7a", "0x1383e7371d7f3eb75f97461ff79565538166ede6fb6ac68b02cb60d8322467e4", "0x1a005346e9edc59573e3989f34c304ff1351de9642f398163602e138c59c7469", "0x2b541345bc4fe1589d649270ceed4b2dc6299c69a5d24b460e36f3b4eb486052", "0x213e74e3b88692068b420fdac7a62f3e90f87e8bd993310b982881b4ea7eb58d", "0x0254370fdf60e319df5d27b984e21d8979c86cc6c9db77b47e9e037d41ae2b84", "0x083b7377987bed3fbd0c5ee3279cccb319adaa660bb6a79ceee627f5a6369ecb", "0x0a2b26bbf2b84a55bc4c5b09b209d4a77bade4ecb0999e2a70021cccd4fbce1c", "0x287090d407c4c5293cd72bdd881ace1a4785c51889ac9ca053faef068533eb09", "0x00a9fcc21a234bc22a473c04931dde66476001ea6e32931277ca4cdab62a8587", "0x1d79fcc5066ff2a62d6ec0c096f3c0623f9722c5d10d6411386b8cf06606d116", "0x1d2da676081b7b0a7d87a57c6a6f2c91022a82291934ae8d646814f38b7c9cc3", "0x0121189d7362dba92f3bba28737ea247e85ff4b3ceabb4eadac26f7a79d371ad", "0x03ba01bdc7f31b4b3626831d5e82852a5da5a7f472f497564362ee63bd6d6102", "0x216487ac4eea81e4d835b220c7f1e7b7a3312df5ed0b6e606a169bdec89a35cb", "0x0eb5eb424bc72e5b20779d6138a7296dc333b4d98e4cede698c1d8f3069fc804", "0x1476087ee68863fe69d538de90f90bf271875fafec3aac6831fa17811afc45f6", "0x25995ecf079f4f81925ce8050e6bdd0b440e7adfb00da7e4dfd8a5aaec009f32", "0x01b590ea145df6152ff0e8eccb97f057eb378d3dc8585a8195a8fc6b03dddb21", "0x0ebfed12777ad9747734d82fb7ab59ebc85f07c3d055eb987dd42470e016bd52", "0x2e03b519ff070e31bad1ced25d02de18c5c073355890f26d6437c9990a3e232c", "0x028ed48befb70534a157c0bc8037347830ff6f7bffeda93a22663117c3038109", "0x21d5480ef2288cf37627083f5c6ff5806645d7878339792169d109945aa879cc", "0x2a017f4ca62717fe9d616fc3b74f426a22666a268eed190c92513679ff531866", "0x085cf123084d6b4b0b2b34cf06cf6f893e0a9db664958560e13102dca258a182", "0x01cab1eb61ae5a9c4f1b1f0f4cf71073d063cf8ea6ecb3a326bc3f2f24fc30ab", "0x08b659a737c0a7e198c51de07438e7faee94369715042367495f0305e89bb96f", "0x02b3adfef956007ba949e044a68115b0a9c895a81386e769744e7b5b2c307df6", "0x1a502a7b0883deaf9b24a7b451cf439d9b04c40af2fecc172b057b4fc00cafa6", "0x3048a536a2a75af41a0fa596752c83edb19c46c00e4072516a2cce33a42ce949", "0x01d008216832f77736b9f2c8eaf18d2ae69a7595a3d2e8725e75b3e9c66ab22c", "0x067389fa6719bb9e493424576d30d6254f1b7d54e69e1d1896c1b15ee85c0c20", "0x17da04cb5060861588a4dee60dacec407e08d6b19650359452705699bcdcabf4", "0x1e110b24526cf19448a04b71f91f834d903a08d3a7658e05ff0104ce6de14af0", "0x0b0a28b67269dcfb242231c7384d9b96c4406708f1a7bec26160e2352a820e34", "0x0226ba223bf5cc831bca604a2f55b324ad1d4b29b81ae33cbd7391ad0dca0c61", "0x1fa506fae71f617db6a04dba21eb6224accac5f7cff145947093bfce2f3f5cfc", "0x29724cc2973b5b34c4e53fb981f273589e7e0467a5b4b5a16d596f48844f0394", "0x20185815e6d5bd43d769b1e7b3a42369db44fada44534a9e41a181a7cd90cac4", "0x2cb5ecab94a2faf89986b565545493d5d8649d73a9f53133b614af6d89376612", "0x06772704a6a6c396f2f186272db825135c5986fbdbce0a3fd879bc27ee2134bf", "0x0112bff4736679a477440e744d7fc6191e168efe6c37fd0beeb6e64d30591851", "0x2faacc248d2f742b7dc50b013be9c4b2ea8d00be172832ad07ac0e268e391a57", "0x115ea053915c9231d6b9a71b4f3437e76d08af6e8fe7e42a3800136498df40aa", "0x0353e2c2845c0fdfc53f58394e2dbaca06164d10dbaf756127621b5a22181235", "0x29b3685900bbaca910363ae0cdec5f61cae2c52c7ede3ec010e2afeac748710e", "0x1a73ba985b824209d0a9f310920791fad9227b21bfd8e8a3a9f1c2fa89fac1a4", "0x274682d63a1d6a9eb5ea22e0558b145f5b9b5e845c8c9dceb83be943309a305f", "0x249de663dfdf6682ddc122e02aac0d79398f38e6089d92e2c892ccf949fcafcd", "0x076346a494ca499918229d2faf87b6b5afd4992f0d7d4023cbb677ea4376d4e2", "0x0712154eb43b0a3e8bdd94e29ad85939e220daf6931b84464741e64e9926b50e", "0x15bb7e127b9fc937642692a92d864960e249ddf327fc6c92afdedd89befc6c32", "0x0d438d885c3fce5b06a80584015eaf7a8ae05c60052c10ab80d80076800d8e11", "0x2bffb873c9b04762b2e362d6195c8013dcf7a5fd881894b7dc383c8aa34a9e0c", "0x24ea42c76f7350d08e8b1016663fdaa3f8552b9564e5ba2da45b76652707d6c0", "0x2a62ea21a0ade4740b808b9d838b4ef205b1193b579ecece0da34523c481dfbc", "0x0c49774a68f5274b468cea0f32211cc9a8ca864c6d32f2c644b1ab89edf475e9", "0x0a9b4d3d32564d83c24d4e052dc3072cffd61cbffaec957151fead13246073cc", "0x221179d848ae3c29baa0de8e19ad399cf000dcfce572ac310fc64bd4d201c3a1", "0x1702294352579a43d19da15dee1fdcb2a70a45de25203435e2340692f7f5e0a0", "0x059ab788273600685cf6de04f87ca9dbbceb1aefe37f779663a7ef5019d4d8e0", "0x23af64b1622be07735af1999691398ad6a034029a109ce435f12c1b21b41f599", "0x109ed21e2456ad7f94a0c6ca6ed942ef5e8132433e5fba6ed8f49b2038594516", "0x26d9ccfa5379d3fd6927a58958338d6037872271d891f19f67f70c39e0893326", "0x24ea9e2db358c1becf7dcd7d0e46979a647207816ae5a901fb00a6ccd991d0fe", "0x0015a9b8c33fce93ae3971d193a430be98eeca1d27735974cf502bfb20c71bbc", "0x2bbb366f79bc3baa138d79a96ab5cd14826bd3a85347e559550bf351f296dc1c", "0x0a1c76641eded157eaa1bf4aadc956791d9e7b29eb14d07654af052686b70e29", "0x0a8a9f9ee8ecf8ad0b5cd84217af26fdce2ca16c07bc747d103abcb48ab21fc2", "0x26d6852b5917f4e229c46824d00b44442b77d8e566fe3b3901ba6de2011dead6", "0x19601734c30cb2a44ee4a323b35f2c171ed67e0f3c1fcec7096e5f01fbae6885", "0x07895f7f029f84c3f17e359b0ee926d402505587f386cbb71070bc17cc87d044", "0x05807e0a2b2473f3b87130586c7868228eb4d9503bf25cc2b0f35a939e0ef483", "0x1ac9ba8eb9e2fde0a79886aa8c7dbd362aa490a355e07982828be3e5099d2fde", "0x231c7595f76fea5828672afc5bbb6463cd00e7a07346e2588af5638e3b321b40", "0x2e3d1677310217ce5fcc58f4039532ff946e2eff2b80d17f581ca78f0068672d", "0x0974163441712975a33b4093f922d7df17b2bdce7b7eb02c7830c5980464000e", "0x1cf5c1a4280822a59deecb82a64baab4edb87977e98ee29139bb51671b9919b2", "0x11ad46e13792150cf57933aa9476ec9184bfd5f23de46f1df78ed7e94cc81289", "0x0828fbfc0951c1ea0c0f3d5af2fe5796ed792a9c3cc4002b41e7a1bb8e63dae7", "0x02c720a8486e7122305304ecf3a00f99854535c4ff404fe82e30e99e8500fcf6", "0x09bdfc942fba8824c0a38d6f525f9176360d2881aa425028f1cd3a7fc3ef72c2", "0x1d954a0f93250e5581c6b897fbd72f4f2a943dde51e262e7dcc4a1b2ca82e2bb", "0x2b829352e297ab2106e74f9fe702f69635edf37e7ab0e1a7f92f14c98aed56eb", "0x12d3b917e58f1f44e1babaa341d1dac923dfac75482e108af1c33368734a904e", "0x28a9e6c65d06ed6ea47795bde9b177b5509305f85326062ad5015077afe4bbfb", "0x2bd3c33ae311c2f8d4ad82508b76df890c311fc8d232fbc2dc535fa593221ca8", "0x272d00d7a8fb1463bb624f1dd774edc8f3a0923bf9059bae3d84da23767d6873", "0x1355a796abdfaa903b81dfae32101a13068f5070440552eee0acf2a4d07d03bd", "0x0734bcbce4180ae16d4a6689b9b94f2b02cc7d74ca8ef1592cd16afe2a033728", "0x0778d4a614c2f76e28199d989a9052e2627464b620d91e7b6d3d15dbd4799d54", "0x16bbc980a67b2a65434d087c501859d127db377ae144ff634cb8574fe8bf869c", "0x12a3e7e197b0504c6894366245bed65e326db7c7aaf2c1c0d59e4bac10d633cf", "0x1f35f8c4431fb0dbf42d9d07334fd67f99160fa9f7e20d811f4b8fea7dd5d33f", "0x25d5bf1a863a0a6441cf55e7c85b8f232ff1556e77fbcc6d71e8bdf349bfdfbc", "0x15e6b8d9ab7e063a3638216ae471176e87ee4ce30cc24cad19587a23332320aa", "0x01929ef47c7322b77ebd0d1a40f9ec4d41eb2641bfba35a9cba7b708a534c9ca", "0x184f51e791edaa2dea7911151247bad4b0e864d7a8f678c7708ac65c51e3bb79", "0x2605adf5562d5055ffb284df1ec0d4e371eee0595ce1422ac535a410597cd866", "0x06e6d41feb832c2fe007e1bccc81442585bc9eae1612b8bc3d2a4925c239ad51", "0x137eb7da068955cde28db6ae5e780b7ae1c0d633cdd113bf0fde4345ac9c954d", "0x2e97930eb419f7353ba27b25879753fe64d7d187023ce2de4bf9e70eba6e9bb6", "0x13af409362087866e62d6860fdab159207405bf9c75a9efd9321736a1d812413", "0x0fd2f95404a9e92f46d57c80507375724966264560ebafb3ff2fd19259d47d62", "0x0bdd93ac21aedf31826fc3012fc8fff14384add521d98135df3ce70e47d38116", "0x083ea678d5a53e8a9b601906befbef23811a6137788bb873fefd5521f7d99f03", "0x08a9906be6e9ab93cbf1b94f090df2d02df6c6ccff6364c2ed6986d61f16af29", "0x187b1c82cfaf880449337cfa77f618e3ed19c604e65fb768b0333d8d535eaa47", "0x245005f814e38250751143117f5e27d5c173f0ca4ea2a81b1b8f3e90d7fec4f3", "0x25aa5a53ec5e71f3f47fb1cf8ea8c757fab69a61274fb36eada71deaf1614db2", "0x01c244a2ed1922753b39ec6b775f07cad91b14cd9b6578b64492c2cc4b0c8bb9", "0x01664e5c861216c4cb10cf3a3bd51afa0f3e59eae24fcd7e7daaa853d46c382e", "0x2af001a296c111e41e327ad212ed30234da2beada0449ea1d2e0f0a00e424074", "0x16022bdd67d2ade15f661a287dfe23915433b270f28c24e6066e45039aed813b", "0x132d7ca5f935f3e8864268ad723e8780df36916384a54b812c74a749a26826f6", "0x20bdab9829e48c89a99d0e8b0d69b79a4a273808807ade4ec5db95fd184c4f37", "0x28db494350ae9c81ab52d719ea05f98dc2afe87bc1afe556161e61772258a951", "0x19fc92f1d2c1dc043af3427b77ea74e80ab9f6041e0e51d1b24d9cb9f3fb3ed0", "0x16bea7126b8f072ab6c86afca80b606cb90c7e5fd02bbdba1dd733c3cb884705", "0x1fc57b168a5badca15a417ebb4bf5beb28fd09e0dff889550a126f5833f1fd5d", "0x1ad20d1a3ee559b6334be4ba911dec957d56699cf37dd7b97d23dcbc65bd9afd", "0x2173430a6842061f027393a443b6e25e59a3e5bcd20895ade0fcd7bebcd88885", "0x11673173043e15137361db05a0b067147a23d7f3003680f3e1534b183fe27cd8", "0x037c80af5ed51c1c22181f3e7738806984493eb998add05556eff65129259ff2", "0x1d70b961246d2262cacd8c0954040548b63fbd25f3038285c36f6b44e9b9ff5f", "0x2184448a7bb80d176dbe3de73f383a909635e4610c25864b2c63252186b6c44b", "0x03bdca6b22fb80cf9e7b317190ebbb9f6c7d3c96c1bf7d5013f36521a5dba7d0", "0x2b65873313d5bffa44d510dcb3f55048436f4eea91a100ec0d1af952eb64b247", "0x2a7fd02ef10db1c9dc03c9cbe82e857cf06f37ea10e7e3f539b53778ca274616", "0x1cb880cea192153865713565ee4255ce72da23b3d2142d265fbc2196fb8b569f", "0x16628b6f83fc36bbc1d60029a69c843d27484f594a7e3ba8d47cdfa548a91a56", "0x26fa9b84e855f1069e76e037104f8886b760d4919bed798e2e4b8dbe0080f16e", "0x0ee86c87bdf0ecd526e36a6c4ac9fc9bf05b9161856d658c1b9ecd80da9e9687", "0x08a5179993a8056405527cb82b6f619984c63cd115ffed3a6734ffa85267191f", "0x047aa61e4bf0721ac4e0a2f291e62124bcc2ad3949dcf96e875f45df7eeb5437", "0x263a511f033e1fbdc6d282b52712a09bf5d1fec21ea8bbfe2eb1ef5bc4f21148", "0x226520bf730486e2d8c859b449bbda7631b86432a2c100dd7386c9b1f993f34e", "0x2baef27107a52854788f0c5a940f5a4df0d18d38b893cbb1157b386a7d356357", "0x18022cca17f26818d54e60e300b5c949d9c92122f7de5651a60cf70c8da5fc52", "0x07baad301d58460d1e6ed10f52abf1bd785caef8565777fed94dd67de6717d25", "0x1e476106c4bce3903a5aac6e110df2cc1a7f71b4135be3662f4b01047e248a6a", "0x1e019dea5028d23b2df063c210466a88c3fc1ebdedccb8045c7e9d1bb6e77a98", "0x0dd55f006559bb6747b254d29a73f5ea7174c6b6067e730a5f9a9908186308e2", "0x0993085a8024a598e0c9059d3b919fb2ebc81be408cb96fe38a48a952c029189", "0x143f3cbf98e40971b2115493ee06e26c7893787bfcfb13b39f165869ec7fb9b7", "0x0525ff28fa24291b8d033b021395754fa030d497312cc17caafd008524eda07d", "0x2d9fdc18cd2586b9f449142017909392025095182d5f40d5911f708eb05cd852", "0x230997202fcd6f051e1bf1e59a9d01188e3621d613fe0e78e6dfb400efb43f45", "0x044b56469ffbbc9d0c0f075e20f390d30d11981a767e507b80aef7ed69e7171f", "0x1507d88bbe10b21c23a94555d1e4d379aa71672e002450393eaf7a23736150b7", "0x104d6752a761b50026377ec798404f71151b3cf6a9ea1be93c6840594824e9b6", "0x25276305cdeae4c16558de60da72941446a9fd2226aa604d44bbff12b1e0ec23", "0x10f3cefb054d630bd7dc4c7cabd97940dca683dad8cc35a6d0c30cbd9812051c", "0x0e406cbfa384c6b24ed043ff3cb1d6891baff0585afc4fcecc7cccec809df03d", "0x18f36033fcf64f1bda0c12616b00b611863efdb8966db7ed3534cfda40aeaf0d", "0x165d022a34cf10ad3255723635a51a35ba2a6db07572dba106dc56ca6c937c52", "0x223c8c9aed305b3d18265b56ecb7a4cfc4b10e58baa1365827a539c47819424f", "0x2103fee94674840b1aa185a1f8221ee4511a2b5268f1ac96d7b28c8984fde6d6", "0x1c1396433bb9eac9a02abf2390973c1723ec5cd55297a387a92806f78ef9d384", "0x1befee24005a88d2c9ae9226169e898106996fd32fecb72b0cb4decf109f1b92", "0x1adc49f1f1b405df727a64e98675ea0ac2fc742c806f0d5950c8ac41350f5184", "0x10a0e0cab76db0b6a00799dab1f2e4a74ef739173cfaab2d03eae240c9c847cb", "0x1a9aff62d6c66fdfed0eb91b6c4f974c1e047c0b27ef49b10d2933af1af3f997", "0x261967f6840995daf7411034526eb5ac725f95e21fc36c8ed191873985f95cb4", "0x1338030f85fcd2fae09eb016f4254086e1af2f88fe7dbe29d183c89ed5286098", "0x02c53745d1f0e66499ff109e777727e750c1134914cbb4d52bdf1649c7911ada", "0x2740100354406de4d94eb857a1c5df1c0e88d8b0b82d10c1276ea7d9f62a05d0", "0x0b8a9153d3d643f0a9f7dc08f24d70863e4f150d1c32ac8905a6226887c9bcef", "0x25dd73d81ea8918c9c1ff69b0b86a0ed3801ed1aa4059d94eb72cf548b2eea1d", "0x253d813cf05f2ff1c7d6622bdb9faaff277b4d0312a5888a9dcd12891ad1526f", "0x2523322d2d2a78cc54c944b57752bdd8d2c8e62e3af51e020eb2c15ed830f5f6", "0x2ac9c2d60d456848e8dfd47499cdbd4f2377f3b4ac98e10e2ae3e4f83b0071b4", "0x2a4e35f1df833442f9ccb8c75523b1ac8a9716174f47fb0830d94f9bc4386bcf", "0x270e7f6b15f2c0e0926147cbf79a7330b676d174acb65b730522dccb096f9fdb", "0x1933ef75d4b862f2274634e1f5a4e50ce899f15214f0b8feaebb2ca2ef52ced2", "0x165130ddf77a82db84278a31841109da4108d364bbdc6acbb1b0fa7aa5175dc5", "0x2fc1fe031dcd4538d5d8b1340d0d37df5505e965b7e7dc4c19895b9f6fceda6c", "0x0e1ead2be6f64559d903eaeb6e02a7c85d546422e7730e360a1e4bcc0f62f16f", "0x0a983360bf32392d5df30a2e4b22535a4f161fda3d05b1a5067d278e21c8e54c", "0x2e27e61828693607c17eff9bb1e5ed0baeef782e879c5230b86d6a79d729f4ce", "0x0d1cea26a08207e522ace505e837caa2ce7b105cbd04e7c838c1acd006ffa53f", "0x0b958dabc9a8066de9e4cef89abc82e3396a03568376fb44ccde4c38cb2a1944", "0x16f5b42d88f8d4f787ffff796bcf8175b1cdce307261dec86cf2034a9b88bbe8", "0x12b68aec2db262e0a61f0fd4b976b00ddbcf7546ef27f47d7435a288c2b6c63a", "0x1d2238d8d9768dc639d06ca5870e3503f3f81ef863300944c87b77628ab6d84d", "0x0d164e32fca3c3c8da3ae332a831cc9a95e75d4833ae232ae382bdc6b790d91a", "0x02fcdde6d6eabd7f2fa19234fb157661b762a5c47b57739a62000d7f6ca8ef3b", "0x0f133b8b1e54f43484574647812ca377c802a1590df5e5b8f9c8c21908efbe37", "0x03057ea8932e9bf7d1a4bad8241e14f1e60afd13ba4e90afb472d9dd29c42bde", "0x23dbcb6ecb4807740debdc825f7764571bc93f33645825d0e45c88b0088a9f18", "0x01b90754a2058217cdb64ab45e24c2e29423bc3a76f8289579927ecdf63edac9", "0x28db800ae16d7033c8e107e198aeaabbf9d0271c74d957c6bb9514a0f038fa91", "0x02f97a36ef93a7904cbdbdc36e5ef374e58eaf37b5b9439473cbe477c3fab178", "0x1bad1d9637a6ad6db5cbd19ba7b955a45b9e8089d1697445a130743e03ed3caf", "0x2b96f520dda8251a878b28bf96d281855b9c43220b0a3279179753f740edae80", "0x041f97f76c60b28e0fdf7974bf922b7a0999e0e0e40c654378ae12843212909d", "0x13b5cf57475057a2f5fb6d08093123973aef9726cbd9835b95616c2aed5588e0", "0x2ca43aed5aea162e8c9be92a15e7ad0af84d44f3d2e398b5f7491fa2df12deee", "0x089f6b1ec8b51cd1e6ea69b9649520a6f0f2f96ea11df270ab0c5d9adb5c3df0", "0x04f510cfc7e528370babb8ed7c50c34c6041772627793a0f3711d1300b4d1275", "0x260e12c47d0ab52563affcdd5c2862f4bad5b7af4ee037ea5f8164d0f13d1059", "0x1a656424760e75468aedd8515b3111e16cc0d60f8dce451f7bb35b12dec772b7", "0x00cc850e959c567bed20058b6769fc27a6c70cf72f222b80879e9bdfbc6711a9", "0x088947910eb3b43ebd8688695c64ac020e19d0bbe875a7f3a0b699bc60f18cac", "0x2c25c236bb48035f45fde5b178105655ace9f3f9afb09071e790dc4babdc86be", "0x12dfe1bc28654f5c9ba65865769c9e47f2bde0d79ddbdda21704904b2905da68", "0x05645b68f99a564ff08f745e1413bd83ab5b0442f0b8efaa2a986a6cfb2fd8fb", "0x17cf3ec9831b4d6ead640d912e41b4c72e9c259126bf6310fa4b110e43864c75", "0x12b15f28fefe5d6fa519ab9cc67a78c57dd721ab44af286e72fbbd5689a66f61", "0x2da44f7210520779cbdacfaab2e1ef01edda8eedb6fe6d037ffaf8e59842a00b", "0x137ff7323fe757f32afa165f11588b403bd393d5c9a961cd2f7da2e5d9a894cc", "0x1318105fa9fe1549f04ef48679c73d46b91ee0bf27b4451195de945c8cf78aff", "0x1408a4259df52a491775936b2c2d476a121708c312e635ef8d1f843c3ba3438d", "0x10cf20dd5734c18880dec5be44ae2ddcc4f447f20cac98c95193eb7571585d07", "0x2787fe4623bd3264e0c8b5a471974ac1feb1e37fbc3a9c8a4ea74d6010b7d08e", "0x1b90e21074907545c1dec3c59dbf2a6b1f703258bc03707e33db582d45ab172e", "0x0b8e912a5ec5a0bfb779a0801b90863edfd9429a7b3632bb5022fdbc40636cfb", "0x0d9982378cd9a8370bb7a555c34df3183ee6b0d8abf31f1f547a3993044188db", "0x1e497bcfd5c95cdfd630b0afbf6d376f29a468d1cd3ecde56f6940221d248af4", "0x2d602401cabbc69dff3dd552e271eec29a5a4acbc935686ccff9a15076585b7a", "0x170a5f4518f58544330671ad2a361f2c803c0d355f3e10a5784951f2abefa707", "0x21b3a23c3a553d401c08502eca497be938776af671edfe44c784956acf98865e", "0x224dd497bf3a4247b9c48c9ac3cee5307490e824a14204ed88c2b1166e8e479a", "0x2654965a3bf3c92422fb54e676ac8401baaf0f68d42664e300624a375302e0ef", "0x1d525f4105f51b69c006828670e7785b726e95be160ee1a3e299677820839f32", "0x28f88d089f421ca2bfe697270fc0f34f50ec41a1ede53612c52db74479b4b323", "0x082e621153ee34324e9fb7ff3d123fc9560ef9af0fa0f948db24d1c8e6f07a9c", "0x07f8578337523867b1d9403e9ca61ad99c0d7d5bcde4f19d8752e12a4d5805f7", "0x2e52f30dd05931adb7d7e85255849b062ba1cf2eb8d59208b5bda8e35d69819a", "0x14cb3e56b2b8c6605ba04261a8b117791caf26f7c233bb183f83f72ef4c8f345", "0x2fd6b4e6c892609fda21414dd8712de845eab305be627df4d36c8d325c9bd7ac", "0x0325898c8434f7ca32ebd73f53df3b1adb0c9940a69e9191fd996a4a96157bf8", "0x08f50a7b584dc022b85d6a16a0d3dff6b8a7ec4dcf5ec066f99fc4644d6d5d48", "0x29c5bbb8eb214fb285ca30a43cfd7141d9ceb8a19ff3c970f2bbf4c9bae9e11f", "0x1264cbd9ec001175211e2856a78901e4088f1eb7eaf5934999e1997307e7432c", "0x28a0e7819aa0251e9cf2bdabf64fadbd51dc9416533ae33f7cb97fd177688504", "0x1a9be651c412fee6c800848477cbb67e4c52fc23e51ade9c48f6af307ec621d6", "0x1bf70a24fe7fc8946fdde6f556b3ed4b03c33005cbe7f34ac11296e5b0c75f6d", "0x2f56c8c0387e5e44cf4921abd33b1590cad0719e932a36195c5138e0c6ac83c2", "0x1109db87b7684f4927b2afeeff00608af5f211920eb8d638e3a7c943b293fede", "0x1851c29804025b6f9c69c80891035590a51d13032cd576d332ca89222bc75787", "0x0909e4cdc0bc47f2df4898106b5c40f25c7137e1d5ac9a986c9f66fd5dfadfba", "0x2ae3e90e2650e286d5913d4dd1e71d4f233659701b319aa228e16af9f010e07e", "0x06a6c015f95173441f7a40d4f1bde04eb60fbc4dc72fdab7dd81ec557235d530", "0x2f6ab5d35ccfe9ea366da257c8596fa6ff30d6c46816a3bd3d484c97f8d2446c", "0x01f9c60308182eb6d4a83f9272bc220a8745d9c9127050899bf6426f7ab57cdd", "0x2f514c412bfd9754e6798e4c3cb13d5e4c4b29609d3ea5617ded35bc01d799d8", "0x14c4162b9c9eefb97941b1f133bb18225d28294d092cb8917afcb3e08abcd9cc", "0x19921fd625c66ec67ecd8af3d6ff0e0a3cb650e1e72b3fc98884b00354085b32", "0x1c852aefc9296753e1268739ac15d2c6d21de3436c816f75f93b8debf37eb6ca", "0x04bf4a69b1aa4f304afaa1dd1bf60de1f559e8167edddac1eb88ad9d02745fb8", "0x240a791f3b8bb62d5d9aae80f341cb569fe3fe72e7183d8e5830165e4d123753", "0x151b295b4242e0c09fef7bc5ef40f1e3c8551654186d62cc663ee4f28ff5e764", "0x086eb3d30bc4d80664a074a09739dc8c497c93cf7e657954b0cbf7676165f23d", "0x17aa8992d7b901eade7eacd95a8e89382a292a7121ab0ebbebe0dd62622c21c4", "0x1a5b3345a4c0d875663657607b5c7ff832f489b23a3c43962008570f96eb8de8", "0x2f03b46d9eeedcd7f8f4cf2cf710e48ce3f31d1364f03345b2a7964b01e6347c", "0x0fef583e7e8e102feba879f7bd60241870a0291723aa354a35259e0a40050d45", "0x2e07b5d70ca583cf4d9baffacd02d7d80fa5e523abbd895086a36288b969fa6a", "0x24599dbfa1dd1f4714d585248cf23ca1394b858af8e904c0517baedbf2f176df", "0x00a826afd370bcb65b66189e8d986777e61377388d8727e407b500fb5291f8ee", "0x28745950870bc1848adbc5f4bc03415f0a2bf23e905e7d33cad03de907081e3b", "0x219e6dcda590fc88d405673d2cb4710f8b5747b46dd9914d1be4081714cace58", "0x296692077b42e972399f17ba71ffededd95185ff7253d9d1f41747c6f27dbe6a", "0x2ccc5f0e2049d426841862f32f8062829fb5d826a6a483dd5078de859f9cbceb", "0x04f915a4fabc8ab208a615dd89fa207d367700bbb9bc061d07fa90a70feffda2", "0x2e04b7c1aa853f9ee5e4fbb5cd7b6e60ccea4ed5928a34f4e59ea9eba8794708", "0x08700df51138b36c0ef2bed12bd78340ec69b04a2e1b865108036391b4b6db3a", "0x2503336398f165bdea8d4929db1dd0b3710416fd63d7aadcec41bb7062c24782", "0x05633785a50a9c77573ab10d893341a0cc2df072ed8eab9a2996a47a527bdaed", "0x0ba4084e44c50e1412a4c982dc0d8a0d4622513b7c96e9fccb2c3be2d3901e1c", "0x2d6f32cb761406dfa9e03d7ff8a43bae106dc4519c61c3996cc9cccd8f307c86", "0x2f959c830737e631395846373b1f7d003c8e6bae3aea2edb73491244f8373687", "0x14863af59792adb1bb40901664349217498d999250cc0a858db27aed54fbaa38", "0x27623d101b1f922899f9c5783e1fdbb1e7552826e4d6b58d6df8d986937cdc82", "0x247328a4d9ce81603e37ea72cc5d1c895c21f09305301bf1411c0798602a6268", "0x1921909aaad03cc78a6cfbed6c1056e3d93a25a5496cafaca12af4ce324c6081", "0x0a85c0358cf388b47d14d42feafbdd4392df154f649b7213e29cf101aed00d80", "0x01bac04734a5920d65d67aaee04165de621beb56f902ca483860f7077537512e", "0x1dd1720966b3231bb00b08d6b8bac6c76dee5454f784134b93d8c70ab3eed999", "0x22897debc6eb2a7f36bee1e7f42ed4b0d37ad696535d82d39ccfbbe92e86c08e", "0x2ad01bb42b95d113b3b91ad88c69a33c1e94dc85512bc5168ee73065b387e175", "0x2e82bd0a053ce03af9aa947df5f131791529a57f8360a2cd697eaa177c6000b0", "0x2d2daeaeaa93a5f9d8b6529f00c4c6d691c3bc4efbfc8e7c2f08ae3e44e1f4bb", "0x0ab08914b2de57397983bace0b327f98c1a9c1e58c76ef2e716cc305727a0f72", "0x2758796cd1c178ed0c433c4f1b6b19d42ffa1bc884c3cd1ccca107cb2bc91998", "0x063df5b0349016e7bda4741ec898c74e4a30fc4f1b59fb713a824992311e30f4", "0x23713016555546753d41abd69e6fb91e4344b7c05838048ed0641cedc5fc6728", "0x26bdfc0a894998e693b7e2059d6a528aa86ab57eb031b96b53fe8b5adb74c075", "0x08897118f75cc8e9115dac581b9553cb407a1de135b632541bb734f53985286a", "0x02ef8eb2c7b26f7a57691ecb1e15a40afa9b3a5557abe81146ea6f6d4960c346", "0x254e8e5fc11b992348fd7a2c9f4a5a0b586bcaaf12603658b25910f63cf08b01", "0x02f41c21b73dd4e7b510dca16e7b4b4277301da5fbbd59db03d3a32b89c57b7c", "0x253f09ce9ecfd2aeeae98ba1b29806bc2871e5fc67bff13e303db99618e1d0a0", "0x04395eb655582d03f25775e66ae67be0aaf7c63ceffbbea9226b04b0e795bfc9", "0x13711235c3d21dd749e3e41bd048a32bfa2e796e26b72e05c999e6e6126e402c", "0x083c75117510a37d43b5513963fbd0f9f33590ddcc297e3cdd9ea42add7a175b", "0x26cc9b5718d84e606582d35d8fdbda944c6525ddcd7488cff21d4d0d823dcea9", "0x0e8978f047929b1a94601499634a8da020b9a46d0b1187d54504ed8a344d56e4", "0x2b11423af39a5d15be397439b5ca50aa9a6d41234acabed2006247688f6fa805", "0x21a56381040c702dda5a31a5aa275ce692685625e5aa77bbc430382573b402b6", "0x19a869e15b3f9b965016feca2cb82a2f14c800945ba49db74aad8e9346af07f6", "0x2b01c5a2baa16f9569d4670098466f05bf3ae097aa930771b76f24afa6be50d5", "0x0586148573b6b56617f94602fd6c86ad4a71b3fc67a35448d64eaea532582124", "0x040352e19809dd93bc7a2c549bc19cb007872e0599a3127a3e7704411894f98a", "0x2d6486b8e7b9549ea86cf044e8950ffa36974e842e1fef876561e1346c5a893a", "0x2ea9d2e1b7d07c9a3895565840e25843c9debe589044f305c1b5872c74e5a49f", "0x12e0dc4105acd8692b7cea0bd76da34aaeb8f6d00ecf84b4f062270413a8087a", "0x0da9c10656e6f42c3ce7c980a70c9d793db4df8307599a33a491f24b6368290f", "0x02f3551c6a648387da629c96633d5cc99360d9b89aec23c18ac76af21b11a850", "0x202de33a6fce9dfe8aeea34af1ed5c74093386c8a553d3a3da46e134731dde14", "0x07372d41054dbc009e3e91f902d57a213f043575f3427e35768a5a52482b1b7c", "0x02f7e35a4bbe9699949a819262943c97e8e938cd999cd911a9edbc716e2454fa", "0x2a27b84a7422e29b8cc73bf54bf535b011606c819b4baa6824b6123036d73ff1", "0x19527e9093b313d5d2638c863499839ff5d8e5f98e74b312fa0c63aff7161a3e", "0x08571a6b8b730363299666231e3c49ed231d1e355d93894c8562ba033147f025", "0x2c0f32778edfe932d912961c81d88e98d4fb64caea2cc2d4e3f213a5d2a1b9ed", "0x2710a63e84f8bf3b15da09e69bc24c567f84a4577610b19cc58191b2b1453ea0", "0x2d4b8440f168745ed84c3e393f75bdc0b0fb3f148e4ee77b525ebc258a953dd7", "0x234901ff3ec65e0a4f629bf6e96eaf379aea7c808ca9ee79b6b796895917684f", "0x28a529a627cfc689ba1bb3372072518c7720b450975339e87865c36be526e5e6", "0x1a1af260473d83489a6a466ddc1855fdc6e83d73b5c5c0fed554af11c6cef5eb", "0x2fd594dc14997e8e0123f3af16c9289d088264cc16a8119e8f02ab7270952924", "0x0d3564e44716de8c02d8f8278b0d2f819658234bc4db59147fa3a5dc23eec833", "0x293e9ac448bada42377dd8b02d5ae5695e886e0f8e43f01b38266aada3cfaa0d", "0x2186e961df0728bcd7b667d35e95f354cfb1ee1288aefb7e0b2381296daecdb8", "0x1b4972ee03b2787a27219cdeab7acdb5dce44bf8368a0c43e1e3b8c8a7f49e74", "0x01105ad26651d5ac52e817c32d86a3b10f05738fce996b2fa905ce1c3279522a", "0x072b770a70dab242ac30d03f5d2477595cf521ba7c91478d72e45358569ef30c", "0x1e399a42196a8061079e9d61ec97ff8c837195bb936206997f5a93021b70d275", "0x24f50ccc3a68ab3e2cba453ec40a8796a3c59735dd3303bcfadb6218aefb7d6a", "0x14fe92dc9227b42df23f8a5a0a7a2f50bc119f01dfe708b9118f75616714bd3c", "0x24713d85951736c77b66941c007d170282271958c98fd42d6b12696a7065916f", "0x05cf2ad05c75de38238f63258c8dfce0d1b698dede7feea9a97b263cce815ceb", "0x2d62695c7008a11d0c874b40395a695fffaaea6e6bfce85ae1580dc48218aa26", "0x19e47227e74d5563126770fa5ba61405ea6f348565c3aadad0830b3ef5d775a0", "0x20e43ff580378bafe2074a6b2fd50c74594537f98565f2d65ed8c15e5ca1084a", "0x264e4841309ac1aae92ddd9cb4d973e237406d50d2849c7091bf1c1bf5c1273e", "0x1238beacedd4f53b35b578af1c30c077f4289680658fb26ae1b4c0b2f710e604", "0x0d90474c262aac1913f37459d4f2055dade903de9bc02fa5fc7c137cce05fe35", "0x0f5aaf4827d5f40e00235ebd1cd1b9f6ebf3388383e692573b95cae4f653ad82", "0x2cdda4350f35334773cd823df37097ee967c28d62d0c45c34d0cee4008834893", "0x1c0c8c2ebb6860e64dc46755a7e072795bc2c78832a618bb6a2d5d0911b7d768", "0x269fa26069db1cf0cb705bc3584c0150b85642d4f243d5e68d7240b8e8c03276", "0x09b443b0a7676575b9a6d3f003609fa7c7b6226341ac8389258881d994fa91c8", "0x191b4697a8e295ab80f81b25743fe13f3fb6998e9131e99a86f22bd33e7bddbc", "0x0b488b6a875f238bc324f04288ad865c8577e8f906a971ad4bb9d91775645730", "0x275928b25e503c9c95c01b18a5d30081bb0cd31c36cd172bde1db83287f5f5e6", "0x1fde053dd87291d7e14f0f2e7b7461b49f60e4afc39cfdcde65d70f65c3b026f", "0x29b2c386816e9d3f76100e8fb9543329ff88ac29199a181358dc231aa1dd3e0b", "0x04987de3e3121811ec3c10421005e133fe1ce9c2aa7d7c54a26f425cd19767c5", "0x19a23ba97426bfa81b757e35aa3559050628665eb496ed8732d409942fb6e16b", "0x12333e97d1f0e3280b5e2f9d96561b2c04d001d2b393791a861fdc26c1b7f767", "0x23e48a5b646d353895d06928a181d75ad25c95a7672f3a1f4917ca03baff3227", "0x1b6bff423317d2c2721965972823ca2e93b8f2bb0a52245cedcd94587d596382", "0x16af0f387b9ba94c0ba6d176df30701ff378b3524680aafda4f7c4df4b088b07", "0x1bfad9c1a92234ed97c51ac7dc2d80f2e908c098b28bbe712cb75b92797a2103", "0x29bb5064073e9a6aaec7bfd94d48fe2207d90ea8962530f388442ca4d95e6256", "0x1cbe456ec3f8d8849e10fea36509acc3647edc3e765f4de7489264f5e34033e5", "0x0087a35062dbd735636f76cef6fab3b412749781f03b39b181495a62aae42424", "0x1f1219145ff0bf15d9645e347879a7347f9a6a5f3dea9a9bf9495174d228bcc3", "0x07f93fb41605d3cae1b42b92d527b2ce7cef14ad2b907702afa13d76ce02f88c", "0x0ae3de8a6edd589ab62767e92f3c19efbf32115679d2629a5ebd26c1c7d34299", "0x15b6688e877724b41ce08fb17695347b5eb8844423c71a98ebcc188c23888dcb", "0x131cdc252f00cfe48cd6cb1b15344b6fec8b176c1ca5584d76d6f9f6ad26bb13", "0x1bd570cf878b3dc1616ca32bf55e0b3fd898444d0e70d64909ec789ff11e8eed", "0x1e5a54e71ef7b9eabf717c01dd99b7262c3b43d1d6960094b8e508d1e11f03cb", "0x21c88de360b36a24fb641014feceacee94856233dfbccbdd1e9f0f35c9e7fccd", "0x2ef387dc1012ae94898b8afc9aa54a3be1f91820b61ab86f45ecb3ae21e23ac3", "0x283914da97f036349936af1157c536d9c2873fc3c1543afdbfc1c0c55cc6d5f4", "0x276ad4f7ba33971e4db2292c7ff704d15a14246a6e7d76ea79f1189066dd42c0", "0x24ca7fd6a2014d9821a624bf07950e8f64f5e6892d48e4a71cd4f63e9e2c63d8", "0x0fe8f370d24968de4dec0fae5919d8f4f666673ecae78bd7e22dc2276364afd5", "0x2f0bbec7f6a255512df348122df4b91778775ace589d4657dcc1223aafbf2586", "0x180732ee6d3ae2aa4866158f54f4d8b980013cc671d68c69a72d5955678703d1", "0x05a0b0ba16b7b0631dbe2c92f9121284974a7033a69be30407bec6b153590703", "0x2908a5a3204a9a144f6565e561bbfe9a4b664edaeba4106e1a57ac77290193db", "0x18c860a5d2537a84944a1075e804c32ec66cb5979908a8ca8cd7f2d8a7029c0f", "0x1ef80617b025bd54de5361dc2fb16cfb90c364e37f7a1f07ddb9ab292afc0e91", "0x2ab495215ccdfda498510f6d5dbfdac1429464e7788a229feae561be3d62c2c5", "0x251dc073bf23010a06bea25560e1be3ccb2c38e67d64eac680aea6c19952a7ec", "0x02201c3662a59685a511e2555643567df50772e8c150bcec0943a8af3f106847", "0x2bb9277b8021c5d354300da09101d24c72a842f97627a82065e5e67a22f465f9", "0x14f5ee46878e605585b3ded3fa8b9b7fd62a2017b6d2f30ed61339cca435e348", "0x114578668b59522fc7d794abcd2497baabd855f3fba503d5f5e0486047bf3fc4", "0x20bc06a35fe07cd507d0dd0a9da6987f228017055096ee68cd33eab3773a1146", "0x184801f655e82f8d32b94fb0612baa4ec983d1cd94cada67237670051d5fac5f", "0x1404d5fc7a2e8940778158fb2d303364892147a64bfee54b25d3906ab5b3490f", "0x251df4335e5164fcbbae73beb8cb57b809d71cb59d6e303db0560b0c1ee79e0f", "0x09a45be49f35c4f987b58d749c78c69082486d3f8777eba4103eac7190faad57", "0x2ede228b9b96b21dd5e1e6ea260a87f902c0051f1f203c788fb907df00e51177", "0x100a3118e3248ac400e6aab0e4e6b10f07e96de582c2c923a99cd14e45d6f209", "0x15872dba1f1047ac1faeac076b57513ad92ff71b6a6a2b32f27adce084894e10", "0x1f68a35d81c05733a573076ccd7946a4039da22e42959520737e4a6843283fa9", "0x2a165a1a2b018ab2fa4e581d7cb567d9b1515db27ea710af3683a8919e99a282", "0x064ff94b98a0588aa924e943ca627fcbd2ef854c66f917ae526f719fb40c6759", "0x1c8349f898cbf2d1fe6db936c53bd3564b673b72d673aaa39f9691e08283d5ef", "0x2e4628a8655d2fc84a32f10e0a95e92d0576739c07050bcb0158f156db6e7c5a", "0x0068316de71fed80213380a8757b3a9d517e7ea1e4800a22c510755a4a1ec152", "0x229e32cdf952fd49ddac8bacca9ec0a85b9f5f1e8b4ebbd995ec5b8289a54289", "0x26c9af69ab4a7e08335cdfdf33ce102a14cfafb05ad000afa7383f01b9b5b892", "0x14bc5140566915518f20d51498ca60f6e5e48678f97c1bb58e17af4db8f232d4", "0x22fe06bbaccc5b18b4a8bf2cc8c47e351291bacee5c5226fbd0cdb308734339c", "0x1dca1403773581144b083aa9b9768db5a81902626de0d81d80f53d75d247af04", "0x04152e8ca329e892a4503613f3472ee94b7e3025a592d4625f420c45c56a1f52", "0x13ce7edc9f1c7d2ed533026150f2bb6d261f379f1fbb48a8d556cc5ad7914e36", "0x24f4fa36a48be01d0bbe57854d48399d81ec03c394fb2eec544a631f4e1cb1de", "0x26e0659af8c838aacc352710f1433d9df9ccefc47bd5c487a0b3c29a01e559ec", "0x222f80f3327ff730c8ca585c067b5ce946724707601b7a4a72476c4f73e7818d", "0x19cd3a66216e859e433f64e4f9f3e2ad9c58d993ee168ceae5ebed3049ab2f87", "0x0d01aa823ee846c2cb695543c8499803101fc0ef222e3c2b44d8680e8a76188e", "0x2e17901918cb6f4fad9ac0d387757aa77c7207924e177d0826ebcc45c76488b3", "0x2e30cc49639069e2101cb479c7281e8715ce5f34d17c016430a9fa75bf484ad4", "0x18694d18fe6758b36c38ac70d1344c6d2b70249db92a74e1404683b2f00dee5c", "0x2597efc11329ee3e0c8bd40b4a78681738b4c52af4e55fb5be529996b56bffbc", "0x003ead8cba0d24715aea9ff5443d25ee640893186e6ff6c045dfc91edbbd1c94", "0x1e17e4583d68f0e1e7234d41915f2fa3c7b7c04cc2afaabd7f3bbe071cf1ca2c", "0x2d05098ef2828d71e8758837f5c973ec97b7547bdfa1433a5527168ee9f9d5c0", "0x09220ca57e2ddf5a1b2f2971627d1a74b7c1b837ade64a37e8e1f0d436051a7e", "0x22ee5c6d36a980b7a428f8afc999eb09868adc52b4fccfdb68b3f5fba518e03f", "0x1b70154b6e76cf9bcf4411203db1c19c77bc0ca8bef907ae8a4b4aac270842c1", "0x1a2ad9a834a4d41bc0d5bac3b7e9453100f58c8605fd112ef6b7a25baa7dfb88", "0x075aa06f43a273433cf8ee196e8577e5fa28844595b1f2b36f6473ffda38380d", "0x070f884d5d0093ff75fb09ce934c8733008f994efa4f556520f11ee8bcedf82a", "0x07d5a9301209de0fa56d9dee45f8480b12d33a73be02f078f7b9df6f9225ddf9", "0x0100dd4a2833b127fd800d28af04254a018853218ce565a8f615995a0f2466ea", "0x164c79e2906202e73bcfb8105c5c10829397bcb0089ce03bafc5f0e627e0d836", "0x29dec9bfa2a12f2fa1bc9158dc1d3d1ebad1d849fad58d34163d741923f8fdac", "0x27d590c95d3dddcdd43e3c40f7579dde645f33c7b0ce03d55e07978096257f88", "0x0c32e71be02fa8302d8abcb8ab2c6a3dc4e962e75955401c1e6a66157dfb965c", "0x0cecd591ea4f3cfe0c7d3edf52f4f93d60a3126433bf9b9e47710d298c31e9d3", "0x070627a0421fde844216f5f24789b3f54d44f1a06184aa81f75aa227335f264e", "0x116f5232abcabac8a8b9f1a3ac86bfa97fe285811ec2cfd733f1206f449d1de6", "0x2a8ecaecf1355850d03fa2f1a7904cf3a2ba7d3bae30aad7a35cfb4a6d7dbec1", "0x252ee8a2dfbaab265c060600b3f6e19f24e491ddd37195211f95918d3d39b911", "0x23ed5e73a4223df85afe948fdef2b6e0d3c120aa31e2f1b4c89054d5218258e8", "0x0ddef510d2c7ba32e4331ddba93aa688bb9fb86173625037b86ba4c62a0600fe", "0x2339cd5cb769acf2dafb5073bd988be15a65bf8ad06c38a82d38d317f0febe8d", "0x26fb4a101c97c06acc999150483d44aa762b585c422bf8dcb37afbfdf076ab49", "0x077d5874dba21d260cb02f280c5fdf78fb8ed9e0acada998ab5cb833b09d1858", "0x22ddb2bebc8cd1c946f8522d7326702328511313b40b4a9e812b69aeb6113220", "0x2e7c43c6222e6323f682c05c571f6aa62a3da64be2c3f381698e2c0ddadc93b5", "0x19ee0e60fc2da7a295371c667ce850772acdbbfa0a9eab7a7c94a50c9c682de5", "0x04d46d32c131ca79258ef2c525659b8138c0e199ce5968e57a82e780f1fa79b9", "0x2ddd25bd37dea23386a030f4bcc1d4382635a6dc7ea3cf3889a5e8faca46bd82", "0x0be3e9d472b8118ce3d01a92fc168de78549347b44526893312fd5ec3d2726ad", "0x27fa8f235db616a5909a2f31896dc8de9594798707b477f343b48ff528e49b8e", "0x17226412ab2fab6223eeda0b848333816a4dd6495e29ca47ce8b96f8c87aea21", "0x008a2aca609e6344086eed8a710a35469bdce68646a435a6918277a21d03d4a8", "0x27a10619eec3b5211b7ce9c318df7edfaecf7bc84098dc1c58232ac25093e35a", "0x06def2df638eab9899865393563ec8bc81897fe0f1adc5c0499755f25497fc46", "0x0c86bd5b00467b98563b7ad1b362a058538a7faa110a438b9d0ec7be8c50c098", "0x02237c3870ca51c0c9daf086524707a78be8845df471e4d4fb3f2e7f30d90214", "0x2aef4c14a514a36ce1afa9f2c5f1ede8d00530e01e2a704d70494cfd3c2982cf", "0x0f425f81861ada856f01fcf0d5ef108acea281735a913d24eea75b55833b328f", "0x1e562f2a3a83be1321eeaf564fb19f57aec9c66e6cc8fda18999d5baa0b4630f", "0x0627d8f4c1a8c8f8c5e1eb617598954aa814a756782e2cd85b79e8e1e748c705", "0x15e5ad36f719cca83a41f67782388cca380c25992e5cd14c670fd3c317b0ea5b", "0x0cc8d138d0854f9b62697b7791da960be500e3529cdefd4f0b18d16c5e757ce2", "0x17ff555b52d28be1b3c46c80946df519e9de247d2cf8d8175086f975d24c1e8b", "0x0fd5dd57c2cede876671978d2fd289aa0a02693252b74f7fdee8bd404e6c79e6", "0x203144a77c72ea89fcaff39b141def7e93a1da1fb9e22b7d0c6733bd72f06f69", "0x1979320524dfa45aa8ef35eebbcf6f621e1c855b5704d8bf755bed7daaf721d4", "0x089b6683b1f849dbbab0f1092ca04880f8b894d7f8bbcb95cade4e736ea28998", "0x2c2dd8e6610a0495784aa08bb9661fbe25c908396b5c3f2bd51109517fa28162", "0x2b9627b579ec4019306886e1ff4003aeb3a33249be5cc6b56dc3607b17e42477", "0x178f70a99501a6e05bf4ca79b2d6da47049f8c988936696519344ddd931174f5", "0x224ffa0f9d0d57eb0c7d718e99cf3b6ba01b523548ea0ca23a3f156c04083abe", "0x00f2ee1e2be1ece2cd8aef1dbfc826997d304d88cdee555ef67a799759c39ed4", "0x25757740ab14ca93745a76000e24328eb1a3d21d3cbed1930dd1ba2cbf7de236", "0x0fa6b963bc65bd930510b3ca6e1ae62c1b4675edf79ee79a7f280eae6496f16f", "0x0ccb794ddf870bb92a9cba5f859fb3cc3f4eb1f1117d14c1caef37beced0e32d", "0x123fc6d306f17fcd5a4309d4fe6e0cc1ca00fc23ea9447a7c6b68c7f6ba50005", "0x22162170a1f845eb0aa1ee7baea486212a09814a9557bcb9fc72cf90f0a29961", "0x13e385a5cd2fbda978dc7740e927ce8d422c9ee861c43036257242484e497e3a", "0x13bebd80c2022724017d8e3eb84c269810cecf47f9f57e237bb4be69410a7803", "0x13ed291502566a7033b4c4607245156a158a6fc84f4ba6f0246c1de057d8ff1c", "0x2ffa06928536af91c7ac3b7714f204e26c541142742179217095a6e54f743247", "0x2a6df655e926c4aa029749aaa7c9a40a10fd55a368624c148b5e528d4313183e", "0x27d8531ec6121a3eca74db524323fc100db502a580b8a4cf8651f1bf6b9b0238", "0x1ea104a44d82fbe1bc1ccfd4626cea0c06693422b3846b3a2b4aa12a3b0e747d", "0x1d69a3852720a88758034d954dea602e5989114a4667251b0da5915412ac5ff4", "0x1b8e232710f6c1ceeff9c1086d49cd8d2e647f6926da913cb5e10337d7f3d7e5", "0x2d40d3f8e6f9e3aa6014c69630dbfdf3169f88067574ffc9210f7da599c4fb3d", "0x24e1c2f60b1cd36101770cefc4334a8c02f00cc696df64f76df54a6fb6f0508b", "0x2408f2eb6b1e958ccadbff81c9a44913ac0c9cb5cbcb4b4054017abb3db8c04d", "0x0e3c6ecd281ba2e16aa37dacd2abc38eb07c1353dad96e87d14e5ea33ff8ecde", "0x248c7cfb7ba2e71819bfc755eb9e9a306cd0f6e3212e254090f0006d9ec543e8", "0x267fdcdeecf69d799e79f68632217df51226d8ce39574d72b4ae4f39d21721ed", "0x2bd9173ef276b7d4911ebf78dd15342eb261603c2c9afcf4ad831de9fa34bab9", "0x1cc0af33d07e50b2adda3346723006250fabad8fa3ddb365c1d8582f4dc65f14", "0x221f2bc4b7dce9195f9ca9ce8fdeaefcb05440c20dd9754bc59c11447caecebc", "0x18ebd5c63b0bf20f45d238fd0cab5dec8dbf1996bcd1b3489f3c2499ecf92b07", "0x2f338bc5a586f2774af3beb92aa92ce8e58a5efa19ddc891be47a5e77e9f5a4b", "0x0556b9c3784145eb4f2ff6e0c88f41989da5907f8c7118ae492939bfe4e9fb1e", "0x1ec100367f65684538bc6956805ed37051238a3637e47022a3294cbde38b2284", "0x1645a29dd4527ab91a4b798c7096e832073c8baac6e5db87e26c215bf448f84f", "0x22a78abf7d5b362a743ed52ef2737bbbddd375e9b3bfb42409a95ad105ac9350", "0x1a9921dead26c55aafb3ac9f3f35acb61a49d5f181e8036540830bb18686eb37", "0x0eb8645b0d2b8f0c3927d4643574c0b1a588272465d319e15fcc6c3262191aa9", "0x0e48af0cb275af55deb825a34ca48904a47c31b5592c4afa9077d60e5e7ea655", "0x17dfbac5a26f06fff967cfef597a6da11b5bc894ee6b62e626a62e85a3ea4b66", "0x0dffbd016ffd2b795226a83edbdb3c5a6f78917d7fbdbbc1b3631027c866aaa1", "0x2f948d5f70856b5f23a4338d244f6ba7e7ebfc750e16ebd1e2c2d13825094310", "0x194c9f7615cbe3eaa0f885c59e420bb89dca60fe174ea321d80435301511713c", "0x16e81a0540143cbbe662c7ae726051ec663d621562fb3701240cbfbb4b17b3cf", "0x11ef0c2d88131f715e47e9a4953f789fec78decdbeed34bc8eaa42927ea6eee2", "0x0876e45a4f862901bfc620a55951802a1d1d5c3e1414308db7d548400f668535", "0x2e78d35e1dd86776a4ddaee1192c055aa8676363bfcf3165317dcc98017e6c75", "0x19f6e589ba384db3c36adae4bc034fb9a444da42164b6ef289009a2cd7d15a6e", "0x09fed90b1f10f84f6739bdb1b4b508957acceadace687aa735dc9f6ab14404fe", "0x055e35bbef7ce5ee7a3603222e09005dd5192adcd70dc33721714137221f4831", "0x05e8dc359ee98d3bb6990fd928ecf056f9bb736e0d47cec22a96e7cac65a9828", "0x0c732297f8b0c272fac76944ee969930752a7bd3943c7b97e038bcd2315d290f", "0x16703fb8b02c94ade315d5b62aa1bf7834de248310887dc13cfd13fb6c2a10ba", "0x28715ac5265d7a812af4e39e43bf9ac80059635d01fd6fe40f3f1e059d7f7f4e", "0x2f683b0027994e095e71eec8475730fe227b480a6aca67ab1593ce6f837bcaf8", "0x0854d9c3be72187a2f198590decd43943c5aa6140a858f21595b9a08da85b323", "0x1e3d592b71a473c85b2104acc1d8db8cb9101a3cce55c66801a0d379497deadd", "0x1eb27377cfa38a3967a71e697725c195bc1d7ce047e83d0e069dee8b95a9a70a", "0x0045b9fd1e0f115801232c7aaafb5e73bc2d657c47b122f4e3ea30a659bdd9be", "0x027aefe3d1130e9394b61a804dfe2231d68295910dd39245f1e1de65a87dba6a", "0x2e4c5fa1a42064e556fc50dd7fca7b48625e4c169415487d4df0482a9b1df4eb", "0x05767cb28f1019a39627a19196a7e4672e82441be0b90523c7b9b9f74dd3315d", "0x17e443e32ab352d209d3e038d1364b24eb3f945e99a6809502c5439c807fb4dd", "0x017a0c0d83cead8ffb70978edec1bf3c4acef4a2cdcfd8c335bce42793513e43", "0x28b749b2a9becb34665e38f3c49b767f20738a481a7a76a19bf1030008a252b3", "0x1f5252eb629922c70f2fc1b5ec5ea0a0e0acee47da26c40436c3f1ffca690356", "0x29324c40ee7bc85d33a056c3fa8f44d6a7724da53ccedb3e56cc26b73358aa0e", "0x00567e9bd8a2b947d75b376a9a1af17bf8bec6c9abede582054fb3ecf7860cde", "0x1e96bab6ed6f45550f2621c0adad747c2fc9988485f6184355c3176d5c11e8d6", "0x08d47dc23b1ff527992c9eddc91259a748f6cd7c1f61874a0836f599e995a399", "0x22733cdd318150f40d89d1ac142f26750809a0b888c85743af671050cf6736a2", "0x2168174bb9c45be2ee87441174a24fd41de6bff4a377803025864c5ca1927347", "0x0b48fdaba88524ef8d0495ba63e8713b65af4a9267b5d62083e7b8726043a1e0", "0x18658643fcb63644520c0fa02dce232935a4ce8d7b733a9b17a866e50b3ec8a9", "0x2fc94cda5238fc785871bca97960b299ed0df05f6c6b28a3834865fd4974bc21", "0x1a54a91a89dd7e0ce87530303c12ef76244fcf42c38db35513d65c6d5994ab6f", "0x15610d8d64ba02952f4170eaf42a27cfb2d13f04d4673537b72510c5c4c3da22", "0x13597b4707657f437ee42087cf8b589042b277467d8a0436cf66ea44a6661212", "0x2dbb95e5114e740028bc5edf58b2e9fc7e3871d3f16ad0c3845d5e961a87837f", "0x2cb3a3e7ce16cad9596eab92d772f6b8afb43cb6492b2c363ec71e11f86c52f9", "0x286e8b9468bd2d392dad5d90ef65d28dec27de7147ce50b8edffeca5d70020a4", "0x166e762a73b519001d753737d7d908ef226237b077cb76ed9f6bbfcce9989317", "0x1dc5bee6477d7e7879fa2f33ba9adce878a57fad3845e7c9eaf4be54ab844f61", "0x1f16f7f1cd61d9563e064c86b508afec41d614abc7b34bb45174b40d3877155c", "0x28df04cdd7f79cb06fbf044e631ab11fadf9691e4ea5f6209f8751af58c8eb15", "0x18aa6490047ab52105dc1e60f448762461b7075d38a7c0b2ba95646526588fb6", "0x0076ab8143a290792147c6a6465c9a83bddf4f65388cae8357bc6bd9400ab99b", "0x2616217a94f407053cef3b234cc11acbbd2e344b403bbd8a26f821bcb6f1f8de", "0x2296862cb9a14424a34d3a11080d6ed5bfe1bc4e0301ec1cbd4e260d81675684", "0x0828428022a299903406314c159732bc0fda227a3e7a40a4834e513f3ef97c53", "0x0771ff9f397469dda6f20cf1841e702c1780a0719b3f590175b394f38279c77b", "0x0dc489dcf61aba1104925eb9439a4f44228d06dd4567fce1444965a749567975", "0x104470f92923d3b9dafa39eabdf7eaa23b6ff11b2ebb64a63bdb912d43865fa1", "0x14a490ce09c929505ad223e2f397186135aa6586b27cc9ccd4f78efbec993a6d", "0x206893bb747ca2504461fb24a2f72eae4cf330835825fb8ac9563fed9a7853ea", "0x03c2a738e753f35b068c6ac8171244c23fbd4f37c80ba508618c800acf626546", "0x129edb7a013029be80efc7400212cd7af1308100d34a569ef3646b52cfb06e16", "0x0874b0edfee05d8cddac89e7b562f917c7ece1ec2e262f226f4d1524a1ddc158", "0x10a0bab2786cda30537c696bb1ffaf898078841896f7be41cdf30ad2517b2aae", "0x0bab661c2a17fbe0221f435ba90520bced928364cac984e17a6c72a47e13fc2b", "0x2042016e686c984057a28aa2ae13c981ad8dd02ac7d4663005e1380c54f843b2", "0x1fc295ac71911a59a81d087f967f16a3a887739d7cee663fff5d6e0710cf4a42", "0x05922697b04ae608cc3bb0d9d345cadeaf4fa291de888e9b1dd32c19cb1a8777", "0x271b87d8b895c6e1d864b9cd030729e523bc90b469cee37b51144bb3b0e4b9db", "0x24aa401343e4705f22900fee892cca269d0c0ffab8f55c21c674edb9d7bba552", "0x1b07068cafe17b55b5e00f7037c9ac37ef0268d5d2b76d7271c617004f05922d", "0x1e35bad319a036cc6a2094f2a1bf2d1984a2b74aaf3e5b13a6ee30c90097cb33", "0x2ab91b9a85ce69e7bea68f4fb5b1fa0903945e039c4ddbe05eff2d5e754fc219", "0x21e979fa3a2594d2365ec70b5b3e0ddc5edb8e28fa7ec307aab14b547858f666", "0x187cffd76c5fb29795523ebe065c9c2115e73784ac6b15c596fdd68469d1ad0e", "0x18d2ff882c52b396a8c068f88c3d23f9d11d9f91c0f7fde9ef6af2180a007392", "0x0a878a77de615e83c3d430f11f326b785c1ac114e599c24e5adc1d9fb91b31f3", "0x286b9c6381700288bcc75d020ea09c45957a615576d7620a0b9af2609d39afcc", "0x1c4e5ed7db96db52059ae2da709879d489a1ac5031c35ee1b6c422d9080c3f12", "0x27141679bb9260a693b880784ff5fbc5d59457b96630e0a5c04912092a4d2abd", "0x15e337c65fa58edb6a74fdbe7cdd1901b5d019ce7dd4144a8b49eba02bf085fe", "0x08256792218c8227eca89f5114f1e7f091d88a557c69b2a956fd2dc90cae3631", "0x0c08d19af9c30a31acd3928ffb5a57de5e83367204ee67209ee7ed1bca5185da", "0x1919839ad91604c370f237d2a0aa98efac29246f93c24a1bd0f9d2b60709b6fa", "0x15bf65b02b92f40b9f0ea893ddbb0572f49375acb5958bf944c77ff6c3561a41", "0x122e02f2e0169809b22def001acc797b202d335af7bd2cf032e3a7c75ef033b5", "0x12075100dddb8098654e718605211f7f6a21f5176d380141fb39977305182469", "0x2dadbbb8fecf5ccdf01f73d0cc60b15f1bbef018a63f50f68d00b72d8adf0878", "0x14334ece05a631ab375e7cfe7b89fa0d8092ec0cee24c9fa3009edcd62ea8b71", "0x09a51856d49ec654f7d44aca57b174365ba5479d8714a09f0f6de08b34e3942c", "0x048e8feea9b828528dbc63cd3d811ed05ce9de018f4a4647ac1f685bb8f6715b", "0x204ba6f18193f747ff10980957022ecaa8fa4c13e7fa4e89730a76253c9b07f6", "0x0079e1be1622edc5742e4f811ea2c0379bff4fa82b79fde5d0c9a0d174df130e", "0x27e48eabb0ef3b22305ab720ee4c7f414e8d4dbf4360c81d1ffae4d7683f637a", "0x15571becc7f5454e45ae416a6b3576274767215f659c91ba354372d999881d5a", "0x2e6a4545ebf7c2e44af91ca7192eec4aedddbd2ac1df4f5101f7f8cdd316655e", "0x2de19fcc78800027b1932cdf6f9e959208606cbf8a07524457492867f8f6bca5", "0x2e1ca8efd1876e209fc2d62cb14446e8f3c4bdd53d6382ca86b113f3209d55f2", "0x154b3f85eaed8b65718e733ca2ca7c8af03cf8f23befc4d7c6177ac00ebad368", "0x29e58f39555d9dde7bac3df18d8eaeb2a5a50503860d20c5cd0ba2a2cf6373bd", "0x032d32032e52103ad798fb36ef7c0681504cd2d86a12c7d937ff518e57b4c3f0", "0x281de0191d30af73105e39dc174015d65dc7ff12d20888d02cec650e1a245a3a", "0x0f7e76af800ebab14281645d290607eabb062bf0afe1419133e1ffdcf70c808f", "0x27ea405bdfc6557a4dd338a2bca9819547501f6f77a588a75c014d46283f75b3", "0x0570af543efefdfddab63fb05d31edcad395ac82381491a80c825c621c7ac22b", "0x027a797e0014302478a413cede7a45cd894b0a229c8e89f56ebaec4c46692bfe", "0x1dd0e283a8ef7d0f4966a517687fc53243554a8d3c7e41d91719b36bace81516", "0x2006444695987560869df6dcde2673e5b73ee5bccbb43a05c2d8be6c59979242", "0x271926392e5f1c94437afe2c2969bea4ff3f6d83ee71394008831d24bb1b6cb6", "0x1b607ed2f130580d9a8c20ea26b33b478d6e1f00cc82f00176935a8b54cabf8e", "0x0b7a6e33808d217a9e55c23871cfdfe495c10d62b8b981784b0487e63df03e0a", "0x28ac790d462bb345ab80cd1670403943599b79edef17cf70236ecb1ef872cbc9", "0x2f8d745b1b4750fd2f932f7913095515c498be314210180c6c3077231226bb94", "0x2a3ef20e60142f17d2f3b82eef6135079523956d8bc684092eecb7a7d56d71be", "0x08119b14b83922e4b224697c2c6536cf772d067489d42672b988cb638c71a0f0", "0x1a4bae6c9cf73ea22739a275bc722c8cc83d91e7ddfd5110614a52d84ce73205", "0x1d659aebe4b37b888be3a7d7f23e362c250046c09d5326312d8d94cdb384d1be", "0x28e2fb92bf6da4e6b96730479f170760564458d95f732aae2406af4c03969f8f", "0x10f4ec3ad6f3ed3387729990456c9685786ede8e6e14b7c66311d47b8778aa68", "0x2ad366d90419107866504d4d34346e0a3c595de6e0aa51c805272ae1bcddc2d8", "0x02f1dc29a06c64c9e43d3379db0f2e8f0cd8f80351724d313ca02ad24c6dac81", "0x20086a672c397e65cb37cfb64ddab08074f173f37d0e4a1747b7f020652da64e", "0x0ef2861f4ec9ba5fec74ba22c0b7af9d458c3cd8f90c825c1f36110ca2ee9076"], + ["0x0e1962c232fd0a6bb54ad8962a82b9838cfef19d290a55fc49d6debd061cd2f6", "0x01e1f45cff3e74168accd0a94536fca6317128953eb47d8d2d79b847b355cf51", "0x1367eec3b20cb74953618fd9261047755ef7f8aae5ffe96fc8f7d9a02e37bd1a", "0x2ff6ad40533afa2acb78c9b91650d7ccbd274b09f78c100479f3a4d72956d706", "0x152c8c3d9e43d90ad8094831a74af8151fdcda0b18d7bd8374ffda68d1a5fc71", "0x241707db26f96df502364d26712c7f465d0ac5597a309559b075406351a20977", "0x15a4e4728a197dae6303d0cdd2b6d1e4114a9fad38a530bca6fd06ca1ffc1f56", "0x0cbfd63f363978c387d656e93f11e336987a68748c8f54f385887e64b1075598", "0x1fb594474b8334f9aea6fe5e323fb0e0ac27d2895921ac64e93e524e4ffd25c4", "0x05ac55361da931c1b4c560aa8dbabc8624ba225871bce224addb5af901676aeb", "0x135f83314252585f7e011692cd9acff36df6be985029f226de256803ea704d78", "0x0a68f262c9e14d8a9ee116bf90cd7d65e3df561bb3914e314e3f43f167f5c04a", "0x0a8360a837d4c97b946633c353298b77d6891b6ce78e82a3bd39fb7e51193d10", "0x136a21bd13b11857e0f7670e12d23290c2318bdac830154cc37330ccad9a3fe6", "0x2a60989b8092f8e1c1cb0238ec85bbd6b8b659327a03e8e193c15a54dbb73c04", "0x1b5eb81f143bf326da0f4eb95d4f45c8142cea640d33acafc8deab155f37345f", "0x08903cf6b684826737a348acaa452e1ba9f9345de911f2340ab7324d0bcb47e0", "0x03b8b717ba10035a12ae4dc40f4210b0f0529ae837766e1a269522105635d818", "0x0623ee7c19eabd13115398893e826eee211daea73f80fa53a22f8ce55906027c", "0x0bc8b24369ab76647fe0ea278c866d4d45bc3f93e8b06e76901bbe5bf20db5c6", "0x1a327d5f540190e1c9cb1e31d857b5c51c5cad9f1ee126c44670b782d46c2f50", "0x1087efac87bfa4807aca410a9c297d23184c05bb58abfd43a3fc2dd483380592", "0x2997117304dfbb464b5cd4a4188aa4f6ccd56de9cbd813da270ad7ee699e8065", "0x2296482e919fbd46f7a518155e72a55965596866f32b1f8433390f3e1f0e4063", "0x2152d5f164ce09f6928ace2566bebc6109a4f62047e4747a051e29dc187525d9", "0x1054109861b3349e419216f1bbe82f4a57823a77acb1deb6c48fa267ee5d302f", "0x1772f4029540432ab8c6968b3739c3a241cda3ade13ece2ea0a0b157d65c2c93", "0x00c296afdb2e037d7979878671c78a5f6008d98cbf75be4e3ec3cc1d44e8459e", "0x0ec85b22c62686e52cb79ab29a0181dc8e34ddf3167d1e353514ec868e729a5e", "0x149e2435c20d48a3ec56c4e45dbbc583b85bd64311a2576ff352668962c21866", "0x1d44140dcb4597c7214a6ed85bff1a3b5fad33fd7c530699bbd610e3bf5240de", "0x03cfb0570f824856fbf41513be01ed3271e1c38a16f610a8097cd27a1325d4d3", "0x0f223b396423edc29d51e58872b2dab7ea3aae89517bc41957eac79ce9761379", "0x1fe6dc2e6e83ab88e84337a45130963337746ccd01c2f2be100080be32a59520", "0x047310ebb459fe860c954517249440d367c6efc5b93f70c410bc76f8088b4a3f", "0x21858ce69a019e4cd46096a61790bf7e03e10e3edc1a2988df768498ad667cdf", "0x0da4f87da196dacc964fb6928a51f3acef042037db741f317b4d80a81cf98a8e", "0x198eeea981eb256b4fa43f05fa4e1aec908e57613eefd35026358080e329bc12", "0x11964efd21ea079340c66ad92fdb62b8a18ee08a9992f133a417d23b78cb1b0c", "0x04b07b1960518122f5725ceadc0c1f060928bdf0f5ec42e16f8c2934877b4143", "0x0246f5fbb5f719b0896e07b4c23fcf1d24487b4c775983cea49500f8637709ec", "0x24d78daede9327f49eba679539f85d099d6583060938cb052dce50125b01cdd0", "0x23de932658d2f181f59d7234a67e174763ff790d3904cfb3dd10af8af4d8865b", "0x0c4f5431daaa994ddf5f3fe6b1df0c0c42287a38c9a5c4c758f72638e3bdb403", "0x175999589895b6947d386d83a5e6f5faf9c6588d523c7846433212233f64d04b", "0x02d54cef5e3cad1a80471bc6ef0c6e4e74c2e56886a31d79257b2762ee7ab517", "0x1539cdc69fd93f2ea50dd12ebb0437c23df4ecda29c76aeb09437ffdbf01c778", "0x2359a45452824ba97dbc050086bb910c12cee0a908db1c2808979dedc8f29942", "0x0880e5da2125b0842203bb98e5f24ae26228a5af5a6efd5461f634a4476a15f2", "0x16110fc6c8167930bde230d5df954f107cfd0da005aee44ec5ff642872764c19", "0x1310c844b70d6a5856f6d18669e532c2d6bd5d01e6a31e804d81a2f5adc63fdf", "0x2ea868217a99a6cbe79b442e2152853c7330fd8de757eb7555765879fe42ce2c", "0x29c5042471d909ee4813cd1a36e8eca08d4e0d383009f17c4a367a877a3df4bd", "0x25e36eda0eab576075e88ada3914c29442172a027c6d174ce0ddfbb017d51dff", "0x2d21058ec44674d8493e702aade5bdf3b691e3faac0427089e867f9ed856bc73", "0x18d17c3835ecab44bdb8b67efe2acc71d39e9d3443dd0ed11d95045409a7c788", "0x28a2f63b0e940afd2c78d00de1aa6fd6953e6d6ccc3aa3203b39618f5d698f5a", "0x02635f5bd9bebaff0ce7614ec7843418a9aa83637910229beffdb91e23ebc10f", "0x1fb8e8726525268018845f8c826b0e4d56c4e9c58ea92752d581d1a51702b882", "0x087e2ce4d2ae5c93ea5611d50c313202a80c4b43533b49077fb569f837ea1fe5", "0x0788fa9532cf00f13c817f38ee1bab85fbc687998cf1c14aff5fc1eab115a7da", "0x1c5c85c57a1f7587f8d2fcefc1d4e98c2741a019effbd4c50334b0c15c3815ce", "0x0c1fb832b7cbe0e7e11e8edc2baf8749f6ea0637b20e972a63315dbdd5be1472", "0x229758a22b52ec3907f94a117f6639164508c77bfdbc679c1b3f876b46caf809", "0x05e066ca1257d8d5edca65a2921fb5b5e01e3a2f0a2a3bc6622c791552190a2a", "0x2b1a935a4ff16c2500bdfee2086d9df3927a358e8eabe75f6a70d7db25a31917", "0x19a55993108088e03fe7fbc2a014509ce987f4277f729ba5b924d25b39e0669a", "0x1bb65a3f9a4375ad926d44c188dcfe51b5a5dd6a7ee152aa6ccce44813e95db9", "0x1f721c4d0db7592f9bda01fd1fbebc8e57452e218d8a2e19163067d4af128d37", "0x2bd32a02899498a973382a4d40266dacae898a9847c2b33c2ad30bcdc4254776", "0x28585b052d22283650a9139d6361b08ce94d17d7c8f6dc1d54f58589066e4a31", "0x03eb34352610227beb26f8edfe466cbfa347d7950bee431e7165647bf1c5ccdf", "0x1c1347ef418d657abbe6e4c019011bd34ddb207ab54a9b99f07c4044589e0986", "0x04a8aa3b18263e171363e9396847a1933f044fac5f5b11f754e6feaf54ec4747", "0x12744a063cabe92e2e18f000afef29c928585a03afac3b2f4c17141203944239", "0x10af4d39a72d2dcb65eeeabfca40a08a69b274129704c021a01388ff8662fae7", "0x1038c656b332e519f483d54e5222b34b35af12906d13652d1d8c6b0f509b27fc", "0x10ee02ed1176804b7d43696eb87643b4fb45f01dd65889e5b65128f781d39d93", "0x1d08ccd47541575c60b567fd9b6705de88248f9cc60af2343098d35d9e4f6d35", "0x06bbf6e32d26e922baac8c62bcf85ec934cbdf6870e3818cfe49dd3a4c70897d", "0x03ae60403f93a98370688100dcd87ad4c71ee529c4dcc3be32d6bc0621d42355", "0x0fd0f776d267dc3c01a377d217e33a255c39937ac281a3b0eacb58b1012393c8", "0x2d4ab3b85ee6f55bc17d051fcef739168ae28b7e6d5aa4ac12a2dcc07b9ba6f7", "0x2ec07b3fadbe296f9bd1fcd1758f95e6b922db7582068d76d552184131e0832f", "0x0a6013e37f560f540dbd3e9790600200777b86a577c2d2d83ec7cd13db319376", "0x0dcbc3cb4aafe08c62731dca44c843012265950e0796c73d8f9e53a767c7e888", "0x198c373fbc6ba598020456f624dfc906f28cab915b70eb5568f175f842355c27", "0x2a9515770f3053638e3c064f5901da7acc2510fb29f5f3607f8ad1256ada07ee", "0x2d4154739ed8a6cf9a92e590812f15f93013163f57b8039773cf86348d5318c8", "0x02bbeae4c716ee136c4ceef194e7985d46415fc130430a65b24e9f47533077d9", "0x192b5b08320766f45be7bba9e9a70c0efc69afec2a75e4e071e6c8f55fb9ef54", "0x2bbe0e0bbda936b305829e3a74a82df030d4fd8112aa7f169670876b028f0702", "0x0963722d8db532fc95cf2240a570cd7a136366dff544947845b6d487dc7fa62a", "0x16010c0ed7a37bca9682ac858fc8d2c4af513f02d0f17dd306f05cd57dc694cf", "0x24486122987e17077b026baa81e705e5d0cb76b4d92dd3ff54bbb813f3d09ea1", "0x28da35a85262582b220f7262ea68c381573a918c10dd17e8e564eb6da113e5c4", "0x1d3196aa6209085c34db2f0e2b3dd4bb6bb670e6ca24d27d90dc8efa5e81638a", "0x0e56fe4b7ba62dcda0d2f7b9de86bce6166d79a0a0c3c695341fbdb407b9a506", "0x145fd47676ade5c380b90bf08020faefc8c3d270c6bd97f92a18ab94f973dbcf", "0x0b6704486fdd2a633bf9e40a5c5e4091e2d430c937306ab3045b39b8b74e333e", "0x276747994473ba9152275d15beafe42b924de69728107898b4701a6636df3cf4", "0x12665324c9fc8d246c1518e040a15e3a17c0f83f0a479571d8f61a47f3982d21", "0x0288c589327ff97824eaa3dff40bbcc9ca73f69e43eebf24b29cd53fa111cc8d", "0x2c3b3f266f21d21da33e4c39001c7a703e6b93e047357840123f30724fda336c", "0x1d089260f53d9b6d912460c6a9d9ff9df5a6391a492731534826a5575e8a7725", "0x052226cd4ff2c85dc3fcbbfdcaa0ecad7125a03d533223c8667040fbfcf7062e", "0x2712f9171804273a9c1973f7e87fae28bed9a833fdb70ed93dc6274865869356", "0x276f2f781e0c9ca0424a9a5135593be95764a759c231199db5d5e0e776e15aac", "0x2b21ffc3ba163ea61b7c0b717d519c64aacab81957e268e175f46876e9ac6f62", "0x2f3c2b6874b81531b890a603be7e36ceaaed6c8a3360a868f18bf23736288c09", "0x056721148d9a370a8e8128ee00178695f66ec5063c6660ff554913394cd5df67", "0x0e1712fd1798dbb4a2976dfaa085bb9822d2d2693983e99c76a556e75e63313f", "0x26c9846c7ca0b8227b6eaa7634cfaa6c4a13bfa4710cbefe80befe5119c0b608", "0x1ebb9eb479a644d25f53dab3e6dca08339f0effde9b7aad7a34748507d69a8ae", "0x1611f5e2add8ccfe9d093bea1d55eac62661a9ac9713fa4c70895997441bba88", "0x2462c3d5555611aeea4a146b8da50d30c419943c1aa600e5b13bc47a3810f63b", "0x0f376eb9e7de4c45ff508a22b34e55f0ffda026826a98b298672d81c826b6292", "0x0e7ff80c3d19a2ad98c8c52a5d19d1712517aa65826291ae6e75e0503c8b8a3c", "0x2eb13ff66ab49a73aaad760f5bf271316f3f8538c526a1a64fa65bd3b3fc2d4f", "0x22a40e530de7dddc1f842c9421192c635b43a6cb1f83d89ddbd3c56c2a512edb", "0x2740baa318c02fde162c920a6245b0f2208f7d0ee189823adb47baffdd5ee21d", "0x1965522cce8bd29b3ceb508ce40431f40d54b59c0411e5ca427f8c1c789d29b0", "0x10a0db7c2b0969dc250647af0bdb0d99cea4285fd8a90717c2760232a906be7e", "0x0295486271ada3cae4cfe3721e6d7b0acf21bdca3caa0e020a6d88ead1f2bb11", "0x1d00206d65a92466ddef22e5583661c68ee313cc40a01c090e5ccb118a1af13d", "0x112222605052423fd6da21d95545d6e96878e5a6f43fb2666e2fdc5937971bc5", "0x25cfafdb7df32a86f2ff44a32ad7b2fd9a60f31a44e5b5ad423ae52b0e3ff2ef", "0x1a42aca3307df84a81ff5b9fbec011ac9fdaf3d9c73cdfe95011f7c1ac779d15", "0x14fb6c4e0df0063275d380e67c251a29ae638028d8e6072a6e4fdff4e039a4ff", "0x1687f501a8c07c9e43eb4ab2244914b651293807a28bc43d73ac4b5640445264", "0x2d64ba4067ab898f7b434409319d7cadddb14182f613e46642919b43c89b8159", "0x265e19e2a2bcff9489cb749daf9b77256e408f180cfaf05506e11a02d6d4b142", "0x1120d9116a584ecad323cb8b8825b9e43ad16ce59c5e8bb5f11b4ab8e5ee6801", "0x135c200f7c145c042fdc94ad5bd2e4661b0db889ddc3c24a207f5c7c4098034a", "0x2f9d365d9b5f9fffc5491c0cc39e6b9ad14e4d8794bf76e66beca2974dc6c65a", "0x2bb27c1a1e8452f317bf86a6384954f8609a285004593c52fdcffe7d85812df4", "0x245f28da6986368776968d7e5da1763d38b4e1a5b53ac3b457b26d35d8cc553b", "0x16047c3f4ca23c6f5daca5d01ebc6721a3d156ca4c35e0084903836bd12893be", "0x13299dddb9e277b122240d08656164d15f8d15cc7483de7087e8ad96909c0565", "0x1590dde29e11424a0e7f7d4b3e0fc7e412d092463cf9545b7c62260ab2d434b9", "0x19fd60baa2486bfdffffc8f672ab64cba40b394f2818366c76d05b77e91e2b36", "0x265828edfb0391d860822c4119b39ceeec02191653f95c7392c01725444ee849", "0x023bda9a3c2e8bb1b227b126ea574f97ec7793cd80c62ca44cf8b2e415132bb1", "0x1b770c804bfb918b1976e3357ab884668b0d2aa414e007ede000714714aa09d3", "0x1d84eaaba6521eb866b600749069e6643daa80f7de10ec27351f1369a3729d13", "0x073a0aa1ba4c1e1e982ef00539183ef648fc441be88ab1dc5315a0cbb401c9b3", "0x25ac099aa85c9e2aee6789f2592258cdf5ca8c7b5739e267f12034f705797f81", "0x1c1f0dc22ad54da9f26321b793e014ac1b853001d156eb590e6ec522e6850c31", "0x103749ccae90e434a1d961319f96c744e04ec0f77c8c6505bc21a1194da6c14b", "0x093c47c9dad5ea61c8566620e4f436c36ad00d046b252d2264d06d9a377e9c68", "0x12d48a22d443711b05bba73fe7cbf5e0734df7ed34587f85d850a5158c0a274e", "0x0d1487ee7bfca46febcedb83e9dc73c33d3c099bf3c1a779334834f89f7da334", "0x2ebab1e544f6ad4525eb5592152ecb46f8e0f70cc54e739f5ae4c48945e534a8", "0x17260110bc0fa2d859a65a519b679cab157a6485e5062cafa3d9e8523543d460", "0x14b60bb1b813533655b74d1948fafd94c73e1e0bad2bf3e7cbbe997c40c22cb0", "0x144ca9b18104b5bb5a9d21d73bd957f373259539a163c78197210cd16c886641", "0x0b698540c0ab22734bad58e48515ff84520051215f5ce4915d80444032a3ba49", "0x1f458fdf92a4c03bce2bf69dd3dd4e26bfc1663c187799bb35958d3613e25bda", "0x26c0c3f9f2abd19392330ee93e2554abb27ed377481e2a2552798dc952a0acd7", "0x00fe825bdde1abafb480e985d6fa8f4c7ae9c6735f9be0a6924293d2ba1145c0", "0x24deed3988546ae6520a6c20c7659ebd2a5f4b828182a30f5195674997b1f734", "0x0bbbcd555c184aae0891582c61d65195132ba14aa26fae5bca4cfa0ef71c90b8", "0x0f9f78d85dede378437afbec3f6ba40c8e3f674cbaa51f2fc53555779ce9aa4d", "0x269cd2fb8c03936aa6e30dfd09c34ff786c83996e89f706c39cf9a673a79c8f0", "0x040a5ed55c1541ad1431b2e0a5c2370cc0ab8cb2ab31e62505f799b0a535537e", "0x0b10db52d69a08382c9b0f60d53c586333018877ec879067a2f9548fa035b613", "0x1e6cc5c4090d2d91f567237064c57abb80f1d1886a509cab6bc23e81767a2aa0", "0x104f9966b6a892138319ca037d4298fae4fad5d09cd05e6e4814b752e51f570b", "0x29d96f530ed5cc92c904d21bf560c82923bf6569acb90abfb9d68c495cbb9814", "0x16b917a241c5e2a1941d745666d8adfedefb48f9cffc756fef6667439eaba1fd", "0x28049dc8703e7eeb4ae5cb7eec9d0b9614f33f03beca54a67d729cff65971fa0", "0x2bc236714aefeb86454cf972676c646a071e70959d53871a23a27bcc4a514b46", "0x0e85e3f0b62dfac04defe89326b1f1c9c57f95dc299ef95fdce2dd130b0e09f2", "0x1576f55650e0dfa819a1273e6a0fa04c1f1ae18f1f841daf0ad5a235793b862e", "0x2e6d1f984d90d778bc0e0990dbe6be66258ad00487129ab3438da90c9ec307f1", "0x0a5216c240378084d7410cc778801c590391c6f600a85514de1d5cfd2e29fa95", "0x16af0c6ec857714b9e9e7932ac8a6b1b01fb42532e51e957c735e02403ecd492", "0x07ef3829b21e86dcdbc3aa02fd246b8fa8e7e4c21578ef0584874d36de491aac", "0x021cdfdcab1ffdac2baf015ddad7ef6fc196b7442e82b370a1187b484d5d62d5", "0x0911aa1ce608f4234ff3b9f35d9be546f5e7b94bf0a25f8bccb3535ebf1c5846", "0x1c861eb01c4b335ecfdb63207c5167f2f2a2dbbd4c604df9739082c5db91713a", "0x032ab5c0093afc059d72265152026bc674b6988489fa1922d3f6a130e6e98c0b", "0x1dbb7c4e30b3bdb3a248e0118c9259c31b75bebbda8acde2d114311e1166b850", "0x295721987b2a072f968216f69e14afc10ac7ce6870a1cef620b9e3167121e565", "0x0d848bbb53ea8c72c8ca0a933711061cd11c38bef5204e1987c6e0016cc87728", "0x125437f6105b57329c045376be9801f150088384916ab57ee90e4df260533e40", "0x16a6f85cf070a9343769dfbde8cec30d62500d50ee294167b0cfc9af4707ac24", "0x23e4ba166e2b5a1506df9dd4dc74c7a30dfb79f493ade38be21c0a604073d359", "0x0d7a570d5c131bf78031c66c8ae5fd454ba9855fab92eaf9ca379d08e856414f", "0x21793d46a696ee5040f599f482bd9845356c02e4c2b07a6450a1005543665821", "0x04cf9f12178ba86fab11c12d690e620603525ff7dfcb5606d0f67f0a7250d0a6", "0x1e1c8714aeba7e7549e08477b4365ec2dbebdfbb6018937f680d3cfadb5b9224", "0x125f99c81db5d7e74be0c6e6b4476dd0e503c1c704b3c7d3ff0ed356f9a5bfd4", "0x111bc3215b3bb2a5d17257fa73a77851d2a24e4804ad1ac6e652f0858326ceb2", "0x09e73771faea0065c80653dfaa8bff402eeb0be36688343826faf639f684b31a", "0x0964f621946810a123469fce6b544ff61cc9b733033b632070d47bc9474f4b0c", "0x09532bf9f11051f863a4e80679782b0732d663947390c12b02954918a18e47ad", "0x1d14808c54583a620e6587c24b993b1838a0eb07395c3085b449d3135be322f5", "0x09b88cebccbb2a0a18e2d2e799e77cabcb4a231123c303e98cd897ffad598d44", "0x24ff5ab38ef457484493054c9bd3ec894a8566491a91a52bd788343c429d0a93", "0x13eeaea2298ca24ee7a73162ec3a21d817ba86f9772bb68c0461d115535daec3", "0x11600a36cb41fde2dd26a7cd4a98cd8beae0a04e46db399eec5c1d49020510f0", "0x2c7682d3ee4ec3ce7e1f67cce9bdeba4a1f669f04d9f7a4bee13b3c97d3eaa3a", "0x2d9b1db246b004e185b08c953dc0af4fbb7c7dc67b2378eff707507b2db06cb7", "0x17f1407c2872d3810b7474bebe3711f72583cc95831301b4e3e06a3ca9628318", "0x089fd58055d20602bdbc2171ae485ff48f205301065932bc9d526fe54d297f02", "0x2779eaf53710f3a5848a8dffbe40b5f442a8a13c514ff97501fdca080fb3bafc", "0x07d6c3ddb807b8634c89aef35615da73596e8ee1a8cab49d022f0bca8780ec15", "0x1b2918da0b9beea69a80b05a151e681722cb66fb8ef1f7dd82939e991cd021e8", "0x1a21a1409ddfca99e3c0987f97450840f958524affeb28c18fde739c8189cabb", "0x1f9e67e3979195d368172267a6ba3b448173e2379f25caa137ab6964714d1fe1", "0x07e57931399bcc4119d9cd7b2191793de0ee69474716b08008a9f68a428787a6", "0x09ef7d4aeadf7bf593c5a79279e9e65578d14315df9dee07401693d199599482", "0x285fe3b15f4b43269d4cc0183f9f75b0b4fe69ff170ac641b18c7fb105d2d711", "0x19a7682bfecfe18fbab22301273895c1c4b9a994877dd778646e9dfd64f24dbc", "0x0ab794b4433b5d0ca9f3f9236159ee7b9f112abe71d3a4d19385202c209501d0", "0x08ff64f5bb9e3f8be81573117e011c803f69dc6a0970dc05118ab1071a28980c", "0x2f0d454b49e0366171d95142230002d70f90c8c37047c6b258c07c0c9d0388a9", "0x17b463c68fcba461e149e56eda9e8db1a4bc5c7b8289b0cd4286deb5c93554c8", "0x2d1a83ac832e49280df94b1e27bab65faa9e21a60a48ef0f4557c03f9b7d11f1", "0x1e182411560c80d7d4c480e4fd65b9997132a4ed29f9a8dc3d882209b63b07c2", "0x04bc5c19cbb312941ba1b731f096349ae7624eca3b83be88647080f794d7fab3", "0x0f10a1319508c09aa4427ea79071da02dce4a1745e139e6949f99216acd8305a", "0x07579d96bab793ef1f740713f70f3d2cf4af1d20ea560f48e6f8c04df64f2077", "0x1fd8b55d0a28cfd009b298b30e226aa3d42433dc148318c99c4e32af13c5144a", "0x2affd50c6aeba57687d824aeffa55c217f633d46840c928c0373ca46432fa731", "0x2fc1634b69dc697b668fad3e89c88186a76e4077bf6d1140d8e428eaeb7a3872", "0x23a53e514ab262e22eca7ee722497818c064f8f74ccd330503d7abfa85f015d3", "0x086ea98e8a4edb6d8500bca03d53a03a22f69b6f132c99ecaf9e950fbf26c87b", "0x0f48915855b4d191b7c37d85e8a5d491648cd4e53f5806d499a8de87ee10f2e2", "0x13e0bb95d9d3078c10ed2f731f57f5e9e40c95637574e95a933d9f2a7aa56c5b", "0x2bc35b0c5b335dfc6f1a9362e5b389dafeb65f0ce5b44548280f46c16ff51feb", "0x05b2ddcc86a8504b00808acbb4a643b169db2b07fc25c9cc3138467ca750b5ac", "0x1750d1a47da211d8e8386c198095b83ff665b589ac278bca8c0fa01bfc683cba", "0x1bb5321e95d1fba2b22cf4d75e2ea2c3643b85efbbf1a3b2cd4be0e7d123880f", "0x2a4e8ad4dfa27652839ce179e0964cc4d4732fb55370901b3292d663bde41ecd", "0x19b984a2d5a0323b956fae09b529bdcf455122c443eeac7ff1584bcdd632787f", "0x11105f818cc27232a8445ff886ded838fe980038727b9e2b33436a55c2f9fd3b", "0x2228205732fe6b9af281b5b2b5fda2d07f5184c555fb52a7f514c6c1b1fa80a0", "0x20b4c468bb8e29c186e7f45feeef84bd857db85643aa798bc264519daa463fdd", "0x14bcd2fd5c7392bf9d93e49b5855b5f35c717d4ce51137b8751b828386a7a5f6", "0x161cb26e6fa48dbb05a5c3bdab4a1a524469f98b8d10181f2848029c795e0576", "0x26d537ccd8d4f3e62fd0fac41c6a24c9411f4d6ddc03276bac261768953bd745", "0x1de7d3df97d11a081106a4bd21b97603a76adff165cd40ac747ed49e61c611f5", "0x29800fb0020ae18d4efd8fac1def5c7607af35f4e223904acc6a14d8c6d14ac0", "0x271271f850f692a3503fb72124b583a81f3f0ea6789be3a56ffb49776579eb25", "0x16694bf37fe421340b186cbc817d0b136f972c935579f2da300d8f3c663481fc", "0x19ccaf839bcde3fb9764e57b40f8be036c1d0ad6dd23caf40f0c2dea764b4538", "0x1345bc63be8e3e86d3eacdcc4cf142542e0ac660f6f75fe34d3c7f3453823d2f", "0x07e733e36a63b1c54e453050ae43078c86a1803b9bc1984f836da9e5bde26cf4", "0x067df85fc461d1e13b0a744c4f7894d3126d400c0f674115d764a07a053f6431", "0x03c2025ea4ee2c19b2f8d8be0a2b90a1d2f43453515ec04257ae1fc6ce5334af", "0x2cbf1dc7af58fa9adb8ba31b1930847624cc4f8f67cdd8bca3a9276c1f06fbb7", "0x012035a5219b900dedaec32f62cbb85a2228a3e71b53afd4d2fe6b3c964f91fb", "0x1b8c713c90d62b367382c0ceebebe29893157acd56e10755d10699928f3505ae", "0x14475f758d5db01a2de2add46c405d939eb1af0ab36bcf26ff93e4860541dd56", "0x213776f1e0fac855f958cb20aa090d4fd47e70fd0e936f751037fc33cf9c4127", "0x2acf42c1eca1a093f10198dd5a16bce16bf8b21107724a94aff2f190906e6980", "0x19194b68b898476596a9e2d4056e15c95a6648234abbbf9ca592cc2c53703380", "0x0b20a1d9a2470011eb2f8180215400b583cbbb1fd085fd53bdd1c9217cc5a3b8", "0x14a7d1d7065ed6f6ad72a0ef3b848d76034f7a95d2da2a06433c6c4160ef9c8a", "0x19142416e3b168abb99babc17ce6821d95a29a31d92bf74a122a8efe799f9bbd", "0x2cd1571dfb32abe6e5dfec8371f8130cf77566a9eda06cc8b6466fe9e1b3c528", "0x1cb1ebc4b42052876e83040bde7b380230f5f145f9400b5d4d7136a61c6eb458", "0x05c4ab72cdd1de95419689661e5e735e15b3ffcaeca1fdc8669e73d8a6cbc96d", "0x24c8da03cd8fb497e4f0450069b5d4deb102b64e68d5889772483e8d0e3974d7", "0x0de8195805706ff74cb251cfb0bad9b9e3fdd059d01a5fc7c705d60971fa4840", "0x304ce8cb3cd5519623520a4883d35792256dca0c12dc1e855157a59daa4508f4", "0x0f36b586984d1959a79c38a0e06450edba003daeb792c8d4df307c55c9efa8b1", "0x1a8325d55480646ac7faa3addecb2ec0ef7482f10a099c5b4656752e24551869", "0x2d7f6744d06196ae0879f406814aabf889073505deda846651fafc8c20185aec", "0x09205507dfc37672dd9711d7bf42e7de290b366b5df2367d437a82dc9e086681", "0x1c22e9bd3f23dfc3f73dc73c9131e16a8b076818fc8823425ccb1b732bf5493f", "0x1c5976233750078411d6c93680d8879596dfaf5f92d48fd4dd94ee5d29c51ca1", "0x07cb86c6973abbc69f89d248d744147e26690a61b6e31d10e980137879e42673", "0x0c3c9880a8248520b611ee4df7fdcc16a66af45f52eb010457579107dcc99d39", "0x03928e6de66d490cba3a1e3e3665123919938effa7fc4f8c9b31bbdee1e479ad", "0x0340f788573b536fe1e42c7fd409d367124723dda9c4b0f3b962e0137667e87f", "0x030a65bd5db79f009cc1b3fac1ce464c4c0d543385252da017b116146fe80d82", "0x2a42a802de9085d92c3bdd4086371a3f17ed03c08a2bc61b3e43e0539357de14", "0x1549a1cb250435699b3a2467f83901128094446a6bba526d5473e8241b5004aa", "0x30501645d7f67d6d4e1f64b95a344a85bc6a6f97fb361e7692c96cfd54a1d414", "0x1c3ea369de18dcdc3378f61dd563a1aaf256982fac9ea0994a3eee26c1f5d00a", "0x004f2d2437252a0d4d9ca4c1b01b66083c701281c233807e744910b3ddb971f3", "0x132fe529e4aabd030412962480562c95c8fb3c4abade9326e1d87becbe1392a0", "0x19fa107156b961886fb9d99ec13bcd8d0c4c544d4240c1f7f43c77c63f144857", "0x2d5f91cd3cb552dac7f7843f60552bde86f45e8bbaae484c6b79ccff34ac5ee1", "0x2dadd9a69ad146e65bbabfbaac3378af9c5540d17b9ba19bb29c48c85dbfe71a", "0x03c9003074e450209212b3bd1622da61c71aba0e8a094a7660be1f4638eabc8b", "0x0ba91729271f6b814378bf2b847490d8b06b46ca31cc5c4fc74c1cb04b71cf14", "0x0ee583d817f1705ac7ac0b9ae042158ad0d5ef3672c1d13dc7dd794aa84f3061", "0x1140026a5abd89c4012d2c43a478b52fbb46ec0861ce5b3b7c1cf69fe5c40f62", "0x176ec0bfa58b3976290ac145954418c577ed77ab87fb9f8228175a9ad8e6f5fa", "0x13e5899c46c14f7004fd0fd376476cd34aa7d3b13470fdc5232d56a3e59b47ea", "0x16730ce766f65c06cb611f8d7f4fc3d53c6662ea12ca4502bb968873f3e14f86", "0x165db0eb885ffed5f77a557b3eb21ef2d48b4a7cc6220709de00e61cd9f8f525", "0x0c428278c217c1e7e76e3110f7e1b26a9095e8c8cbc07a171714e9afee2670f9", "0x2ef183424c590a0a5d3b8a639f37e4e77d10fe9e12327718b8ecc2b40a2e92be", "0x0bbbe09fbbfda7b6e06cad868cb1a389fba5ca299ed9545351c974e612f5fdd3", "0x2f42003eccab3bff0dce2b22a8769a5ba1a0a6f854c73a788443bc13e8fa5ea5", "0x059113aaf928acd9154ea9295a5a69f864149ec96f0409673be860cdc1edded1", "0x1fbfaae77bc060fbbd03ffaeabae2cd4d3279363c5e4643783dfb9a5d5946825", "0x25b3cef1d524c48156e9a24aa0d2c20ed32fb69b4debe1c12de50db246e3c805", "0x15e6f0329ed4e44d0323f02744b4f6d0321e204fd38c99ccb72a35784b94026e", "0x16e47f642bf13ce66c2c2bca01a2763d704b46de0d7c99dcb2b480707c1a3bf7", "0x1d9f848cb9dfdb81cad62dd5fd43156e57c4ba194e32b421aa07de9e0a8700ec", "0x070e206946f4cb2c2a7c5c7c0ca84fe53ffd884279259eaeeee00627dd985cfe", "0x0a5f91aed115950ce6348b0f0f001569243c840041b974e4fbdeaccf72b19da7", "0x27736747795d235597047a57b524dd4c1ed0e3f42798215ba85056bea765540e", "0x0167c1d76479106953282f945c8d8cb72160f6310470a7f5165f1572d6c27ea4", "0x1becd457d21ba094804c47c3a688734bd543b2e6d7cb51aec0ca89d6c1e3c355", "0x1f43386fe739e7f9c63fbdcbb82bccdcd417338feac1eed42def7150d4a21358", "0x2d091c358175583b32cb97c58168f32d83a68c99bdfa7c2008d9c454b0eade16", "0x017257c5bc8dad57ef6f66cc041a1606350900dce184c312426065346dbdb1ba", "0x0b4adc03c7bfd313902dda678c2fa251522a92a7fc6e4b47d4f1ff98ea1f21c4", "0x1af84524441ac03fa2d8b5b391a7c371f2d9cf06a09005fea6e3b708ccce2cb5", "0x23ecaf81286336251a1fcc5dd44a4ab9fd3940a048e771ee4668830744a5a9bd", "0x187bc703cc893e2cba22fbb598c0e778c2046adbe58b3ff252d7b635ed990c20", "0x260b02db111d63998b6af09a81928f62cfc97c4f8cba26e828ff5c057a0e55f3", "0x2f0232a9940c4c4cdd0e44e3c4785ced14ff13b5f871ce2f6ee35742ad050ace", "0x050adc4d5d64807f730d0f450da5517479a3786a3bb2c8de24536a7ca5de2d8e", "0x16ab8f682a4083d0f999f5816f41cc7edbce82c0d59bccaa89c254729440f981", "0x1127fb2f0ca9cc953fbb1d4793474263a6e51b77e72c38b1147ef865415d4dac", "0x1f6d04ad97f2f4b710f91f5226a8c55ecbc1c25af4e4ca8b76cc4fad24eec674", "0x141be544be4c23b3625efa886da65e675b6799028d3a7a6dde1ed149faa49678", "0x1bf785f9867194b45e21dc76b200325ce4bd664b7ce3699174b28c0fb3243906", "0x24d9be7c32c7e33bf76816e19a3c1e4a887c9ae74d15a7712dae802864c08651", "0x28a481ef8515851320db9cfde816826a2eaf994aef8a551a3d0022d77205ad6c", "0x20573c158a49c54731fedb7c494eba7cca17975cb4a448c688bc56495907261f", "0x0a15b156592972641eef2970904de3e1334376ee64bf76db4bf5e7c8542c21c0", "0x1b2bc4a3f3f448efbfa21a4e41d5d6e09b73574739b66eac27e65aa1fdb78c70", "0x1a79a5d83a28bbc4c113600038135e86ce6188df4dff938155301593d4cc73aa", "0x1e15e7f11ea36757fdcfcc558e7c6bd8c7cb8484388a2c95258e2125164df413", "0x298a03bc1edd776ec3372c82ce73c44b3e12e9509c124459f15d9df783953816", "0x0acaed186bd21b6bf01884c2e80dfb84699e0bd83b7770d03b918d24a0129316", "0x2529c4ffb6c39cfd1aa6e04800cb59baeaa31da43903d3385b2ab25864812963", "0x19c47c2a37278f183f3b58427114139b3eb82c0b890c4199706ad944391fa6a4", "0x0d2701bdfa57cf911f1cd1fb435fee068caed685c636382249dd9acf45d4c989", "0x1e58e36e0ad7b4bad27ac7f76d34ab497488d1661a444dbc07cb9c7219409f12", "0x2698b2f66fb15f3b16a7e50cbd835a31fbb83e0b65982d7a7acb2971cc5825b8", "0x1c3a8e3737856514071a5891b7eb286fcc836f11b629c12c9b61a76a6f6dbe2d", "0x2927ce5173086473fa445d53172a05aa66a8f9d9a169f685c47aa989b9e0f5ac", "0x25aa17d824580d6d533236412a489aa45aa389b3d3d55a345d35663a1b143bf1", "0x0fcf1112dacc31179819d66574a5cb8ded45003f76667d34c1d34153d8fca994", "0x06032d6e50d059057d461477999efb4acabd1a9da592731a4048ae8d19b3d351", "0x01e40e819f426fae3dbb00926a7d6556f30d84934ccabf99e9876351d1716b5e", "0x27908496d0906f524c251653251098cfbdc97b9d7417e437710e1a7f4b80d08a", "0x02db1814f1435cd07ee54f8c3205c7d76262cb5fc5da605836a08d47f3fdf134", "0x19377a45d6a5de00751ea901198e1a0acc41ca8a99feae5eec07fe5233d289bc", "0x2d004fc82e3df9a9b89321823458832770ec80f875895a3ffe2370c0aaa5cfba", "0x17b836256a7de413cdcf93a4c4f8fb6b76975b1efe30aeef0ac12a83b3434c0e", "0x1b234a28dab9149e2cd39bb34f794a85dd125f33383b77841b913128cb86a3fc", "0x158861fd76bd8a58950c0c55d9578c9c6c3ff1aefa88803f32770adb1a6f17a6", "0x0eef809302d3141584285618b0ff2e6a373b1be0db0685be371bb601888aacb4", "0x1acf3ee76f19de157996768dafafe604e185bb23356b6e2592032eb732dba44e", "0x2f4f55f57b771ecc15813526d73b52b2fa1c4f065517b9bbf8c3658040e120bb", "0x0622964ca65a48b30d40a9fd4e8fa757fd737f020459e74a533cea55829072bc", "0x1c8cb349b5eba594e3e96ee041eeb7e096facd421f789bd7df6aead030cfd1eb", "0x1ef519f3b82f280469c1ea7b2551d3a38d3e50ad2b0c52ed0185780e83470697", "0x071f966c5bb87111e1d0f03d17e2885ddf50b7b5dac99f2cf9c87f25a1383354", "0x0768f94a8cc8222f9d2eb36abaeae3b351ad7c8fd075971bc95de6c2422ff2ab", "0x136fb9d089170fcb343dd1f2cf254468118c97ad2c951b6b3fe4933d5a4faa70", "0x14204ad52e17efcc8d6c3b29ce5220a5ea8c6829e2a9d33f646df24212c2ca81", "0x19349a56f15918f1e9c6c587cd23bb3f933af583322dd5c0fa6166cf1cd58c6f", "0x2ffd15400e3d57af1d503755eb97d331814aae9add4764bb7e951816e06b4fd8", "0x001880d406f04352ba0e70d1ea4e55302f239327e1dfbb0fe9fa74d947c04304", "0x2194fd04a6d3e80a04f53235a5f46e8e2225e99c530173cc28fb1577a0ebaa4f", "0x1384ccdde57742281a3d117c0dbc825cb7d1b7e2b57c0dee6521d315d60d8a11", "0x0ab80f679adf8789e9f68615f8e65cade12c9c19e8b096f9d7a58a6e9155afc9", "0x1be3a55706d4814487268bf10196ee80009ac69d26eaa4ae6b8299d3fa27da6b", "0x1f8a7889404464277e3fa7dad1438e5a55db2b53b46f1080ab25b31b538acdd4", "0x263c85c58282f656ea6193f72641aa2cf99ee4f7e47f1bc1bb22c46cefadbaee", "0x01019099267ff1ed724e463573701f4c2d074337b27f474060dc35e72ccd18a1", "0x0429bebc430d4062e38733619b8d3fddd5c26d05b203ba9bcd5fb9058c7545f9", "0x0a03e113f74fc0aee3e546e5937bf8c561c12274fc5008cc63180a26004147df", "0x0688887334f483422f47a9397e45666c9fdc15e508fbd4fa83a5e722be92612a", "0x1cab73177feeca8c863601745b40138d81b0c209334aac58951709278ccf7c3f", "0x0589e112f43c979ab3b8f131a7909a284f3786783a9205271f79813500826f3a", "0x081a1d79b226d02f3edc79d6756b2b78d06b7677fbe7bfd2e1c73c5b055cf6f8", "0x1d126b23da26bd262a0ba45cb83b78ae17efcf1aa5b97478d90843f0a618e923", "0x19d02ccaf1f728c35b88592e300daf8c6cba6eaa7334352eb047885db22f97dd", "0x1e7e21dbf66da47b76b4e025bbd438a654d665eeccff928e29ddd0587bdabdec", "0x169ca09f61d1010465b3d6a04ea6f323ff2126b2c513f473e258a738c34e84a3", "0x1afc1d0db8f4d43d32193344634043bd3cd59ec3c9e867e58f7c83489cf8e1bb", "0x219f8604bfa2f5aebd196ece21fbaa2b5e9d5a62855beda8781afcd668357eef", "0x0db71d9be8548133a2605d713b9f50cc768c1ab2824303b141f4b2f274c6f098", "0x13603e5cd20c12ccf12da4f7d04e9555cda644e5d9abd0f5417f7bb8c6c24544", "0x0035c4356044389e8d8d3d84619243b57ec30cecc3ba8c7ee66d8ed9877c40d3", "0x0ba68c56af0f045fee1b2266f53980c31cee55187faf97b612dcd930cddb452a", "0x23f4759e8cf82af4e51b1a31233dc5277f53aa2422435da2698f1b65a9515787", "0x12012879b9f59dece1ed0e03b17ec94a6ac6f2919157ab97dc1d5fec6fa4f017", "0x1915797a54b7038336310e46e2faa0b48ba3e1a2d42b8b587bab86f80b9594ea", "0x190ed18777ce88aa8ad85e8ec239d8259bf0f51ed8996339759d0453429b4425", "0x24e04081c1519eac3990439d5f86f2967685fe86b8dc37a4444d5fbf2ab701b0", "0x1345cdab47510fdbe7fc389be04256335e387d3f24d2aa7326f59399a10c85fd", "0x119a3ac7803dfbda5564dc8178a79cc1eff78597aca6fd95b3dbbf4952511e7c", "0x197b3596d3b66cadac6cc4d88c2da1de336594ee48a4f2e82ceefd9c81267b49", "0x015740cbf5b80c058f671ab7b14b2e0bf3b15a44dca4d640da40453d0ebccb13", "0x23da644943d6f890a344249f0d499702838011dc6e4535c478efc8a0e7ea1afc", "0x2344f76a1be8f4bba48d9dec02fa88b6eee01d1c48d7e37d7210b5a8e471281e", "0x2ed6f7c7b4188acd5623022b461c2672054ef8f69a05ec58fc8ec7f0a8fc6085", "0x0f5a919e83a103cc62a73502819fa163494d902d7ceadf613d7e0f7b56ae962d", "0x168506fb5ae2170331ee463708ad0124c50dda86c1ab464f13711db7a2f6c4e8", "0x065064ae2c2846b1e8c73942bdb1e2b402eb97a393e18a600bb8edbc8d029af0", "0x1710ff94c079aec5589d7a0487ee074ffa49f880abb14d9dddd2739ee6adde2b", "0x2af3554c9bbe595b39616669ca1984c2c143d16f9ee9ed316229b4f5a0a0103a", "0x22964fc3479b20e70b3e98306ec30bf3d5128056b6fb525e100f684366c3891a", "0x25de0b4cd61c81940d0fea87d9389eb473d469f0415eefd81b56d2048ebacb62", "0x1fd575da1c5352daae237b0e8f76723d44a3413b49e016ea12634876310edb38", "0x0533b56af329976350645c7cb7fa29c1e0c3b5d880e25f5a52774d056e9658ac", "0x167d885c645bd9cfb4a2d63d57268000b73d88398616fbdbe56f231b8b2bc825", "0x0cc2f243dd60cd41e04b2430c96abe40f21e3fd109e7a1946131880516bf86f8", "0x0341715bcd52b75e84c60edd47292611c4703f8f81abb45f58f86ff7897eee12", "0x1ccc6d8301ac14bcb7d8cb9feec228f9c2eebdef5778fb88e69571374f2c2481", "0x26d54cfcd51f1d76c8a6f67f37dfe4cb5365e33017fb4cd4d5aadfea672b3b88", "0x2445313440a20b29650a00e2efa7432ecccd218a8b111a67e0ec28c559be72c3", "0x08287cd7099b718a473e3a2dbff7354e6f56a54f860d1533b28a0c03407558b7", "0x26c24628356a67c0a450cf53f60453defa580ffbec5295dac6f26d87ca67a71d", "0x1d1cf3eea9d6f23c1722071241367ee8b05560a7af1a825fe788587692091aa4", "0x29a6cc340dc509321a8db99a1e4a6f92ed22518718e050946a211b9b0b035091", "0x22b0472d8d18e2207c7faa819e646aaffec0283c06cccb04554899c28dddb385", "0x0aca637d3f71393f5cb5d01e083778f519b821ef37e1335d65d14b2fad555568", "0x0cc06cdda9bbac58a1e162ef5c910ed9fa9861163b5bff627765b6de8e1e9719", "0x21c547728fc964c17b65a60176da2a1a8292d0d503dc16a5c60513bf88863c44", "0x08512df52d8a94319bcc6daa9f814853e4bf58f57d16f57997eb61d6a19bffbf", "0x25c0d9feb0c02a64b753bca57cc68248a5dec4149be2b759bddb53b6f7593c39", "0x2352d3944fa61a2c4ed5c84ec318fbbae05eb102075612c26b0f38670e69995e", "0x24bb393dedb3f8114acdc77cda2e74a97ff8cf89d751fbfcd9f52a4287441763", "0x033ba091bc665e268b65a8f2278ab3113f8c4ae9b6a0baccb4b840969a3b4f3b", "0x21cb4b445e8a579c73436f6e08b6b2487ad0f5c4706f0ddc9545fa62ea0224b3", "0x04a925ae34260dfdeb17f5c793e4b672b8f5c0da69f16bfb29403926e8d7d50d", "0x2df42667610a6bc6602aba26746266877079dc345a79f6d673d64fb27d7ff499", "0x179934386a6423cdb3a10950fb65d1c7776812ee19c813f5a67202bdf36c9807", "0x0c0f3cc0643c9053e7e87a1ed590dea8a70e6d5ebd907543c9561da4ee9fcf63", "0x051a858defc040eaf0847bc5714fca3d63775709d5486a995e93336184fe0aa8", "0x10a0da93f5e24e02e1da3b703eece97fd3a08f43a0476cfefd70372d6274fa47", "0x2d7beb4067840b65456935fe808f57cc971b6fefb7e09ec91336103e2fb072b3", "0x13f1bbb6a850cbb536a0197c016a46723d7387e991b67d58a8065c3e4dc18c55", "0x041fd980971d4897e5e3f42f4342db10e517f639855fbaf21c0b9590b23bd8d8", "0x09636927f5b349d290067029f74050c9750ef572691424a8a0a01663a45c5031", "0x2af36e704001f6023acbe0757637f6cb0facba8e0515b0df5eb317a1dd0e65bf", "0x2f97558fe6f6004109ac4658609a6d2cd1b22e5dc099a2ea132e88087e72cca0", "0x23cc4c0f96eb9152447440a55e3a3d0be1abc83834d9fe0873fc9d714b0e26d0", "0x2a5b6bd888a8a36578d8625f5b77e527ea06db8dc1b54796d80fb1c7db293b90", "0x27220be37f223c82ef3157df596b7c3f21bcc03de8c4ab8d7f1d5baaaf638f0c", "0x09b92d05c05908c5d9aaf4e8d234481f9684066bec0f478a6f7f41e4738f94c2", "0x103686d84f6209572cdb829b7aa67962be01752899ddb717831df659c2e2f60b", "0x23b62723d58ed5c2c6ba818383acd3964cf39243288d591a4ba0803b15b48735", "0x18870f436ccb65a0e1dc5e6837248474ae52fd226b179221bbfe73f747eae139", "0x028691d2f0c336148b5b5f1c5dc06b422d34071705f9a33faf2613c907f3325d", "0x1191fc63b79d85edaca6a27d88e92d40d897cc0ad052136e60b5bd0a8e560282", "0x16680b82f6e755d8b419d1e303203457b5470d8dfa214d023579cb6c1d09a3b6", "0x180fd65f8c737e7e07fbd0e7646c1541c8c34f0bd8a1e1623a3a0e383ca42237", "0x06c7ac54dd40d3891a14b48e742a06e587cbdfb65dff4a955da9c71d152241b2", "0x2c65c95a72571373a6ab7a18b7f4392c1aef296eb581541d876bab6c3bfe6daf", "0x0d9c0008a4f07214c24fd0e733864d7c57f4e13c040c31923bde3e9288552bc7", "0x12d3a04f3439bf85b6525221a3f314a2663b9b84ee290e481169dab2b0a48d0e", "0x2c75ef5fcee292d05dee7a7ea27eebe87bedfe6582644dba0fb5118cfdf255eb", "0x17c01330bb570b1ca9970d5872c1aaab8cda24b330e94a2c95d12549168283e3", "0x035fa265ba78efec1b389d50f1880191c35bd402977c50d252892c70ff3a66f9", "0x146a648e47158802e1fd7b6e211561de3ce10df63473c254ed2e3994796f3b28", "0x05c2f2d7318f91f0398ab541c72b9abe4cd4810598bd0afb230fcdca28f0dc9c", "0x1a14bac926bc804faab0ad62fa213583872294ff31da7306e8a092eb070acd47", "0x0883cd6e7dbe3bb29320db1da117618ff9f761713b7b07814f4bbad71610d89d", "0x06f98d2bbeb45ad82e7624bc3e387a1b0d818fcc94ce9d96f4e73e80caa23e55", "0x0c2ec98dc0ee676d862cc05b09e7d74389f6844ef462de336f6a8b693e568d96", "0x255191cfa833cd6a862ac869e520575e8da70da30ec970657c38781a7b002641", "0x2636c3de1dd779e5577de214b3e6c6351711e9cc1348dbc553be1c8d68b8b067", "0x06437037937218fcf4e73ce9b338baca0c3fe948c398cf9fcba25ac02e652956", "0x1008550284340174d1e47ac5a027793311c42867e3b718b24a4789acfb7d6dc9", "0x152b99159e87dd6e681aaef38bf7295419bb87db5f9fb0cbf37320ec726d448e", "0x0d382ade9b281a2e726cb96db54d26f433258818753b88e266280f74d8dca806", "0x0f544e2459e6a636d8da23834e317ea9ade7b2a07c4ab94c368da356cd884e6d", "0x2a6122af7c1cf2946b33735d2a9f5020cc5dd8669529e77d0069db364ccb08ca", "0x2bd710638fa09fa70cb0aab6bcde56cacaeb11aa9bec688c033ef7830dd0cd07", "0x17e172b03f25c98e9680cd0bbacf1933a942d834d945fb9880fae95d2594939e", "0x0759acc9cb975aefb18a833ff4c84df8346ef63c4eb67e220b11b0f5350c6331", "0x229f41e153a4409fa2c0c7c75811813d8a71930da6c8b1b8827aa648bdcea63c", "0x0d3153d6d1440aa8e8dc0bf1058667a18e5931afe24fa90ac1911fe322d3d9f7", "0x198a6f179f92ba427490fb90b8cf3455f69f02b756e98eb07d4601a52c77a33c", "0x29c2be07e30d93dd927e80aa49c44df0dbb5f0506e96676d2d4b1a91570bc7e4", "0x13e75b095ad21ac9d107b2a7f1e62088974240549c0bb4e7d83ce4630cdabdcd", "0x186d1e26c4e415c8aab305f162f00d8a7754cc1a7a4a5f2f318b7437465ca869", "0x24462e17b2b3ff3912d0e41f1750cff169806bc158648da822e1bc9f6212886c", "0x04c8ff3b9a174fc06d3b3302ff57c510ad38580c35f4e3b5af79e24055662bc2", "0x174a26f79f26fa7c4c2682cec14da70aed49fe7c75770f87a52b5a672413289f", "0x1794c80fa206e99862d7e1a753d7754f6f1779581a85201fd46a5bfb7baa952f", "0x025b4632d29770667d09f79c33bb2a8a5af66a449d6d39f6fdbe63c976e1ca11", "0x11adf7def96c53dbdffd06a85d63145f0dd2395063e8d332be42ea99ca368547", "0x01b928b7f293beab032350dd3ea4c4b48c4a04fdff082b4f542e094d973a399b", "0x281187bf98a4c5a6bf90203092c6aecb9fc2e561974f79f7481aa6d2991832ba", "0x247168cd8fc0ee2cc9fea561bc4e01ad3ea57874756f9d9d734a7fbc45c000b9", "0x23097d74125e04278e5fd0e14f52ee1936b901c2de64a05b2b80991a1f3f19e8", "0x2cafdfff6422239399753a96110feaa8a156264bbf59013f1d8195a30838e649", "0x1a5820280d1cc66e2cbb99320a29d80e7844576377636d8cc22a5b89838b5e81", "0x0439af191c824775b86b6ae9cdded69e0ac524d2d7953bce65dc54e116546a47", "0x059216dce06bd797a98709ad2b90c15d1f9f78177f0ad66d50009725ed6864b3", "0x17453fd8ce97c60079f3d00aa29be8b9b90cbcc9a2161b7cef52c599c6286cd2", "0x023a1ac8f3a07c86e93184c5f082be51a98f706b6d1467dce344bfe266397ec7", "0x13b7bfd3ad519190d49beb27b00df30991fad40a694ef0df12e89d617263eb98", "0x03d37546147228b5faf95ba080b2b40226a58810463208b9b39566f073163dfd", "0x05f3bcfb8ddc917835430a22e50cfb51396f15242a5fd0c7e3ac1538004d19ee", "0x0b75558f92567fc1ec54e9954a33efafbf51866a5894a76552d1349523cf65ff", "0x09415183df1031dad23297c334ef7a255819b7d74365be4f353a88b427d90697", "0x2dc2c7f19b5024315cf5b0c76546f9432e068efb50dd37c395fb8744771c0e34", "0x115a5ac148ff0c29901220bf5b9cbd3d5de9a902c8c6efd02f7a92cb1d4eda5d", "0x1ec78942eb0fed168fbe55b730675f3ddfcab69c122d9f6ca22f7cfa72280ba2", "0x24bc460c697257bb30552b45ad37313987739e25079c2842dcdf2f974f9bb686", "0x278a2b29bde54b5e1d0f87216de48f51d4dfa284555ebd7fe7f3dddc234d1a5b", "0x10f5c4b02af508777c4cd3cd0c6c11f4d679fb3b0d7a52698593bf50cf203cb4", "0x2d695324f885445840f526b71e519f295cfb0a6e4f24145f952d8baf8572f573", "0x18113527536434b631fb3777ac733ab250ddbe971da50f13fa6cf26c9e05bd1e", "0x040730e3684e391d5a166b5487ef2fa42a9efc154629ce413c989efe2c878592", "0x1ebb21dae6af4dc7d80bd2bb938982c215ca124b15e0797883af2a80adec4a12", "0x0c68022eb63cb3a73859b577b59b17e6f836176c595c6a1fda124a05ecefc10e", "0x088f4a9af5d668475bbaa35610bfac5790e103ef53b9a1b3abdbbe293e56f5ae", "0x1325e2e84e281caae87f905df719eb665173fc82cfce43743eb3f0d1fccc98b4", "0x2f3ea3a22a56db970cbbedaafe9d85f14f02456889b64ab7124b2479978ed3ee", "0x055564b7831acfd8f46df96ef819622a4462bfe8281b05e95557598167ee9f30", "0x08c29e9a22ec7f02449273a35136949b73de66834e3f015f4689043aab341015", "0x212a65492c6e2992484160e5e2f6fe8fec7581256613b05b8cd4237ea596dda3", "0x20e629bb5b6c1ef07efa2fc1f8f63b12aa92bfb42e38e48335db3adf267416fc", "0x04086fd6c2128b11a5aa58fa2a8b25ed5e57c5b6a3df6534839a817299ce7713", "0x065245cf59148ef3cf923d2866e6f1f61ea54e6a0e650b6ab8c9bf94dcf1e9a3", "0x0b6c1b1badc00e60dc7e286bf1b76198e61a063cfdc2630f7565064af179fa54", "0x023a3829defce44de2819dbeddcd9bd17cc1cc24d5efd94345352d153c898097", "0x1b51d50b9f2a1ce039e1bf33a4395f693e12cba9aa5ceaf5fc0c6265ea446bdf", "0x0ada2b8bf069b0a8622be85bec5cc1502475bcc995a5687023ea33d3a949382d", "0x0832620a355e131a479d163bd702e2e96aab3688f818b54ad378764ae1a2d3cc", "0x01dd7cf51102ea8b1048d3dfca649308d59f65f4f370be00726cf5c8e3a72fc5", "0x22cf9eadd9580935f02cd8a788978c53bb4cd780b262c7aa0beb67def5d1975e", "0x17e3b5605516db11b62512348f8e7f206c2e71fd57a7bd9fe96832af6bf7215b", "0x1aad1cbdd185bc5a2bbdceef570edb986520eb92bce2b265ab8864c51ac489d3", "0x28d5eced9d9e5515d0c29b800e333bf66662a8b5b9839856e4094222dfb4e3d3", "0x15660d8c936e1eeeedb10437c4cae544dbc1b9be0fdd639feffd0246a313e886", "0x1f5e8f3f715cba0dba6f1271e1cc8940b37305246fea62aa7e16c301c89fe3e6", "0x03bc3a131bcea5b2f4ddb5cd58f71a92c54973da67f3b6aeeb9c2b2b1ed32628", "0x10989c21815e815e3695b1e86eac0ad5e68468f37066142d042d951afa013609", "0x13a14796be2c62bfcef389accb50952a46c7569e009201965f13223a77feff88", "0x0f307148b769d5a3aa0d70b54514d1de5098e070dab986c02cd91005c37a9385", "0x1e720c542b831a978860eca880ad522210565a065884b82fdd9abaed3d224b99", "0x136981fc4f37a5ddbd57a28438eb003ca7ff0109b349c2b3114447bfe6420d5f", "0x23c0f4dca797a7ffeed6185b6270045ae960f80e1ffbded2349f7857defcc5e6", "0x0cadec3532eef6e435656436bdf7ec56853edf2ecc1dcab33e585d7f9f33f215", "0x1d3fd0cddca96749c0e76b1094747f66e822bb07a1a011506d198eb80b831421", "0x0fa4bf5751e05cb1879a7e9d1be18c0cfb070ae2e54365037bf152b45ac085ef", "0x0801c4500a511b5f9b6f0bcb6deb2d0898a3ee9d9727cf027bb17bced7992263", "0x13b257c8b7194f0ccfcd859b03f7451cde8314798115ac1de5981ccbeea58e56", "0x0c8e8cb135dd381120087376a03c386e67871000da2b1bc02be951330f7a5670", "0x165762ac8bae66f3f3807dd925a4334e870a9b885628cb7bc0b8b7cb941c070f", "0x042543556c325a58e3ac753f4a5aec40d3c73926e9e3b0a62b92a5b920c47cc0", "0x10884137e86600bdf06f81d79045eac6c34f58ad687b799c849d2d12afb2b005", "0x243aa9a7d3478eb73fc5c1107b39becd9808c6e5e45533a3b267cea612a3bc10", "0x0d56cd4f582b5719a3301be7873142cdbdbac3901c33c71f490a29f198cf837f", "0x01bfb79eb37264d67c12bc4b214fd728d6adf84d02a08165ecc982868612e504", "0x082b38037b96a47f54fea54f4f851430f7c716766cb58c14f3db8ee1daa707b3", "0x1d92ef0b67d46a991de603c82917a32b7b0911408f8c8ab283bd36fc1c62ba78", "0x1e85bcc91932f9ca07b35984a41c4bfdca243a151441e1b758c5a4c0ae6ba181", "0x25e30f6d84da989e0d4d0db84cf57739ed9d1f354c8e3aafcc01b47802c57a34", "0x11ee0dd308c65edc88ce2ad2edeca29b6600ffaf309fc6c5e3a3d6318ca98c83", "0x18f3ca75188fff5274224cde36c2d85211b094c20f53d9e3a4351896e3d1a1c0", "0x05b6b21c1f708032911b6e0dc4e57d1e8edcbdd144102b28c8617e53b11e4e7b", "0x00eb79b07bcbdf2d2258177bfd15ba43bc56d9362e49f13d002394f6c635f20f", "0x1d963571ce7313a17110b17d64d45001b36d20b4869ffcee44ee578d23d6488d", "0x28c45144eadce345f87378b432bcf30e9fdb40e2ffcf61f5b918e3ad42ccf153", "0x2776530993a11fb7e5222ee0df505be5e57cdbb6352ff7853e668007714bd718", "0x210a7004456a4c7e56642e7940230842fd54b7fbdb8c337cb1493561e778fe8f", "0x0cc1cb51986ab1a0f628c12d7c6656a9d8495db91d90e5dae8f0dd264d9f19ba", "0x13d1e0cbd9e0f421626c8db09dd24df92c270688e702495231d057c7676fb1dd", "0x1c2b5ad45cf4181611eda67060a0490d8d6ae3cd1b10a1570b00bf0bd3a26e09", "0x25edc11d3b5e6e968ca9a27c340cf9350744d28920f5762687d2d31dfae14235", "0x230c8e7ac3ff2b39daeba2788119cd58a3a90a9c24c3ed821eafd08383f389a0", "0x2937cb33c930ac4be787b6e890e67f8a08cc92c151f7e673ffbcc27b25cd0b1f", "0x28a3ac677b6f19ace69e3d06049557fde2a92476c199e1c819c907ce456812e5", "0x2dec341eed7524a26b7b91bab300323347038c01206e0f780349e5c2ca247076", "0x0e83c9f68c5feb4210d633821cc840bd1fbcbed87effde9f23d4403d9b8b03e5", "0x112fb21185598e785bff0f0f7e4821289232403fb2b31b48e7ec9022df2b7971", "0x1faa621f0c039fdc8024cbddf4ca817581c6e3f26bde278b13c34cd651bd8782", "0x04e3d26adfcb4ef7cc322ee557878606ea5b537fa1f880445c647e8d12c98c91", "0x1a70c2015bf1c5dfa637e8debf8f759e309f46c37e535f0c64486995ea5b9061", "0x228f60de5b5f3ae8a52bcedecf7b3830d5b6879fed7eed95231c674c016c7fea", "0x0e4ddc512fdf839ac48b7ddb03e765e9cf5e320745572a5d4f70097c1074406a", "0x1f8e572e2e0b48f9b6bdc474210a1c8df655ca5e19f7d13b5a89a185f3a3cea1", "0x03a183213151c33d6c58b6631cafa0c05300f75deb9ff971fafd35441f5cac78", "0x1b7da980828048a7498cdd2b49ec08be3bad7d4327c9754b5e3fd674e02c8286", "0x285dd9c3bde7c361a16cbf14bfb0b5a78d8f4ce4433d41f13a372e92c35e21b5", "0x06f952d66d60cd18949ec08a5c203707ff452e3df32d50a4e221e72a793cba06", "0x2f6843da088f675ea773a0377ecfcee33c9601ada5b8256b49f2c2259ab8abdf", "0x1bee4d9e168ac606a73d79a990c590900012aaff03291747553781384c28d800", "0x0c8c85c0320d6911ab65a50deb2b2825d3e33921a46522e54ccb6b806e55f192", "0x119ffc6ee4a000ec8b6bd175bc99718dab6508e999578d85f57fe22946120d55", "0x300d0e8681f117fb491827fa12101206254ecfe5a70b08716d1950b6635cff06", "0x04f424c26471906086dad2de5452b3148a9480a644e69b0d2c6a8e3572070181", "0x2aeea0843be6d263700672c426e9820c16f096fdeadef7beb1c423c04eddde55", "0x270aa0ae5c5a5ddf685bc432b47c996eead9eb1ed89a25bed2bb358cb4edb6f4", "0x0ba4f42fa43b005e31fe2fbf27ae1df017ff6d11f27cf952436383ac901bd17f", "0x189ac9f58d25991d10ca6233b1ad8cc583cc1c2479967904a801f92c4db08818", "0x0ac7c203b5b06e4b6f56de45fbd9e502d79662b3ef4c122f73f7a3383fb52af5", "0x2ed482bccb4a7c8a75dfd31a443b74d1e4ef522a250660344c21a8320a478cfe", "0x0f4eadae92ccf071dcdb7d67241db82286a0b53436225d8d6d06c3094d032be8", "0x2f3ee4a76715b3bc3feb74e528948ff152d0b69cae7aaa30ed3d254ba8931a73", "0x0a666ccbfa6ed09c57f58ee2963407236b8ebe1935729e811689b398a9dd7b40", "0x2abf8b9e553379c8bf68fbc67a67dee5a22df97393673145211d0fe9f5efca24", "0x1e0e4a52a2fe011eafaace83d54b92e6d857634b4510101958e7d80686ee9274", "0x13ee73f6525acc520a0987c161e5195723b4785d7ba6a031c8357fd55ea7540f", "0x094ff2c24cfd2859ef66c4f62696fcdc7edb93ab92127ca6227a6c029de19e11", "0x026fdd4092be37092fa13e02d03b3c93dabb7fb7bbacf3129344061909556cc7", "0x060cb0ebf20906790098d260ed00a75704e88e33386f43e272154888d56fefe6", "0x0ab0fa8ccd280804c537d2e09aec4c1306b1a7b479c6623e9128364d9297f7dd", "0x13dd22e61ff5e9e3387f90488037e06c48cf9ec7b8fc40b2f78e831e977f3d13", "0x24c62af21d61cc277ed3eecb6b53da40f824a6bc8619f830a5a5bf86846c1d41", "0x2a025c7888cb0ec6a2338a4be571a7c67bdf7f7dcf5c0775b785a2c5ea3a0c60", "0x035c1ff077b016b8069c044a2bf5cc09803e94ee0110c17a5bbe594cbb270e14", "0x2f296505bf1353b23a672791a4ee325a28a9e1b21ddb02278e48b7c8fd354d18", "0x13b16c3cc0ca470c75bc2ad7bfd6cbf0b669c762bf0411010099c1162e26a9a7", "0x2d3c900ba9a9d5494fced5d70e8a40acb68f47a0bd2521f3813ef831f690f5af", "0x0ce9e5f31feb0a8d20eb1aba890083cc3092738bfc196e10db8cc34b31f1af2d", "0x0da413bc6c64a52d068bbc66aa2517c323ce2e00ec365235cabb2235c32c93d1", "0x1897ae1a23df0f99f8c1cd4d480958b959d327816e6a79d83f64f11f29f9a26e", "0x0d116dfe5362123684539d6841825a764c053dee6db6b2bb5d35966760a232d0", "0x21e25952e98f9615b696b4cdc5403cd7cc432835a8e78ac727a64674b34e4314", "0x1a3dad57e7ae205a48f3a024984c4da0501b544afc63aea283022642d3b74528", "0x19bd3efa0a6092951ee71b313c1b6cd2b016f1decb5b51d8dc14927ec770f186", "0x266efc42a30cd04d6778f50a3fbd5c51dbcfcefb6eb400f85a7a278ae184e381", "0x1c8d90d85ef64bf4bedde609957ff4dd007aa05eb2a2d04e07b03013d7c90b6a", "0x02ac06d4cdbd30847a9fce14472ae320e1f36252687227e082f213b219e72703", "0x0522f2c9b0876d27388b8b52a51002e5fe0669f33da07014dbb8c0a8e29e85cf", "0x26bf744624ce575461c466270c3c7cb09ef5c0b8342d865985ff22d17b47239b", "0x2375100f868f06ec614e0ded6d99f714a1b3159f810493c846eec25cc2df2854", "0x0bf461146b46b3e73e0edd4936989f404cea1f9d9a058297b94cdeac7758325c", "0x0e98376ed641425e2716faefd8ed7544b173c5a3a66936209e4af629ae6771c4", "0x2f9c4d96056a1391d89f28720a20d0a1e7cb59a5c93a87dfe6069b5f4eca2710", "0x192f200bf3b555bbac797819bb21b990b729d65a4d28a27d6d3f00f1a02aa23a", "0x2bf8984b5626accf10b7667f4fdccdb7cb605a0ae34d6d204ac1cbc80cb49126", "0x0bca21c12464247244b2a19fd30fed65f8e3abbf8335b49205c1fcc1f6aac1aa", "0x14078d4ee11f463471a49516c3c85f9a266f8c40f6d7b1f86b1d1935b09f15f8", "0x0bb8a04ecf9f98e1697d330e922d0c8abde0000b50b5aa57c5800d52df4de011", "0x21526121c05e09a0abd2ca6efe5b42ebf7e9115382221caaae628a334917b035", "0x00f6a443b0e7ebb0bf777511512f66c5e5bbe044c9665d96109018d9729c84f4", "0x10092751e94fb6b5e49bea158a014bd99078542458af14ba4cbd9258b8acd236", "0x029389903d0d3c29a173ddf452a66b4abd36efc642cb0b57d8f10819d5c0f5f4", "0x2b6d20e6cc7ca916f542668724179d8d0ff0741c3d51f74545e2139112177376", "0x2900b4277fb3a0ff83b4c58fac79a8861e305d5eb313f2cf57dbb05939036558", "0x10afdc0066dda9b64bdd43b86d0ed62b9b3938007cc50f5699250240cd2ee1a9", "0x301ed1566f5220e17fbd4083a57bf42c12c15a6647ae8103edca272fbd5f8f11", "0x27f1833229c3a5998686903e824bb3e3e10bc969f1342ab0d02de635fddaff11", "0x0c4ef35ff9f906d0bea489d201c210c53abbd47a151a9e4efbdb922029fb64af", "0x0ba5ab9246af723bff457ab8228be06484af3e3545dbb4c932ca49115f957d27", "0x21c572bd4264d821c5e2aef993006499c88b3245cee9593f02c250149ae87ac0", "0x04d1cc4795008719326f8106c9ce9a4b0dde4f4de01d2429a23511b1fd0fd171", "0x0a379f7d6eedca7c4f07bb5df2d8ea0dd87f1eefe2ac2271370a7f3be27065cf", "0x28daef7d37a43f2ba44065f2213912eab6c8c60e3f7560fca990be0ff4639720", "0x2906e8996458504f2c044f053c4ad24d35b0e0ed373b27e02e5235a3d34f65c3", "0x260738b3d0a746fb0612dca6db53bb968c552213b2f9a134df341baf3e1379c3", "0x05f177ae8c6eec8b9712cfa042776690e924bf422430011ef27af82df0abb237", "0x26811027f445e86c192e8ae371d2e83fb73561c8cfd10bbf5b29a77f56b1d95f", "0x12def5ee59c1b4a96b50ab3de36175640cb70363fef89995f34926ee84be514f", "0x069b58a6aa41994a11cc7dd3a428f6c4ce621b5b06793f5e95b4034e2ef7e9bb", "0x0dbb162fce1812bf2a16aeb6aac7f1737f2d27660ca4cdf6e79121fbfbb6c5e6", "0x287ba84aa5087d8cc9f89450f1fe391cc3a84f28a24b261cd1dcdab039a309f8", "0x1e878a1f2fc77cbe232aea7683d46d8996debb9cb06af003849fd099e9c504e9", "0x1c8d1ef246dd75f42de13c5bfe069c08d6af9943cd7f2336f31c896456cba2f1", "0x074f1a678cb029488356dcb477a88303d0ded5f2d5ece54769f15abc1994538c", "0x2766e558172ac70b1f3dd85f4c80517ba6e18556bf51d20f687b669e7815d47d", "0x20636353e29facebaee5f04ede42fc3ead0d07727ede7a80af1c505c6ff5d534", "0x11ed975aa3d3f9bac1e0bab123041671f8db695fe07601fe5a71e0fcca916b46", "0x18100160418fd858f3e4fe8d5d6b80e2ef376618bfe5a556f24bc3247099c441", "0x2abca18d9b3f2522e21ee57a1c6634ec12774d041e65ef8430224cf31f960f14", "0x16625241533c582b9b57f6e0963dfbba9a7026139daab3174fbe71b0d9522c8d", "0x1bd3cf1bd3124abaa627850ff77a6778e8d82d07ca24655d94c5a27b57c780b7", "0x084e7ae8a515bbe6fd8370e7c13e7d09835c3749ed21c2842e7c46b4bfad4e38", "0x0105b64fdb0f02988732b58e06db800b2df09a71a5b5a165ad2011ebf48a6447", "0x043ed436d6b9af567aac7e24206137faa086d188e8444cabd5234983904bcef1", "0x2451cb7a5dec1f93fd2b3f8b97c4b1dd2fce7c87d0a92c9f699bc550032a0a7b", "0x18f37c624e96ef9c494d2f016bb1ed956ef951f3b57420a46c7160bdfaa576c1", "0x1bf84d6d70c748ccd981c21b19d555ce7c3841f34220c10797af76f62e258980", "0x0bf9b051f2021f38a294eadfd0811f05c08852720bdc749e1f9a62720f62719a", "0x19f1fd2199e3aac88c7ccd7dd858d158c2ef10e8236d2cd66a70a3f0d187988a", "0x1af9d63ace6db7a8ae20a04b776fa39de34b795394231214317f036e5954eea4", "0x1b3a2d08d1c3763b7678b9d9de1fee10cda80937fd7d74f27d6e550386f5443e"], + ["0x0752af3c6fdccaf3868276685f0a69b9749e1706a82917b64ec2ef847f804559", "0x069503d417e25f4568c7858ba8334301c0fa19c1b348bc7e18a4c1ace1d15418", "0x25c1b121f33f4cf7b308ec4630f27b603d22aa81ca3595e801c5fa7d9770a096", "0x23d6b55145bdb32827c1456af4d7be4c2d213e825c1d2f0c9ff99b2273751f6e", "0x1b357bce3ef3f2b76afc2b5804805adb14cf6bf37fe2357c79aa7d6b32acaeca", "0x28ec5ac0881c1e6426ba499409894a6f3c276fe5689f2c35c9027e80944877d9", "0x2c9862524ac8a07b47d211c9c504c8b0bd398d028acf690e4b8ed4005dd06eed", "0x1f6e6f0ac4aeb7a52343f30418078b40644cd43e290da0baee92891c4c065ac8", "0x03db3517e233f8a76d21b2fb23c85fa7cacc577769edea09aae39407b9af2fdd", "0x0fc333dca4183dab479c5962eb05ee4b79a8ac6e0cce9e9b0a2142247bfd0877", "0x1eed281978a8395c04289b86197673b0f2b65e1a135264527e250a5cdf99aca4", "0x2568bdf6511034343fb5d5d021e052d3080954fee357dca36fa5d78f33b5be3f", "0x1dafade374e63251deca970591da4a285a63d11cfe64661fadd9a001dff82330", "0x0af25c781abf56fa4cd6833580e97c7a60eaa97f1dc32b622e895df3a6915b39", "0x13501451cb7d3e0cf3cb57741fbe8dd59757c9367fcc48fa11deb135427c5c1c", "0x197045fcdcf15bcdb247d8fbf6c85c80f2d065f923108559a1730d71c73e56ce", "0x1a390d7281375fac249b9855f8c67a275e8ff8a0a821d1b305c4cdb1313c8661", "0x17f0706f7e12fb022d15f94297c7b45947755e5e84c7b9957659be1de64b737c", "0x0a8f5f03f19d49799b6fba650c06e4aef251ffc75243a8d7aee8924d563f7e49", "0x24c9e6c35f4f819f5bc1ef26576e16d2c7c7206a0598044acf0c18fc5042f0e2", "0x002405ca70d51550dc14abfee18e3823b9e979072330d547133a14b25e461fd5", "0x1eab4cd56f1474b270d502945621d93e44663caf8f1d31d86b156e107fef38cb", "0x066b9750f73f4561ede55939407e74b497d4deef598b873c4b4a1f32ae425d00", "0x1ee3dfa596f5d87030a6c9d27d61dd175b271179408235f13bb3f84ea28e7a42", "0x1ea94b9ac6fc1bde29d5893fdcb660ed61ff7b2c65b638a4046eab217c02aae3", "0x131388351f0796d4753ce564e754591cb1bae02a2dd54878281ac6e7a3c069cd", "0x1a45a017fdbe53619a29d8d31f27e408f64be10bf05ce16c90af3d1f13886a2d", "0x1b4a0d68e54312b9fa67550c5c0ff0d88fe57822dddf9d58d9d2215057aa94af", "0x1d45d369ec0399905bb029dd9fe0b97a5ced1d29c7b5a39da358ad226691dbb0", "0x26154c9c51df8059745bb2d97d9a9b8cc8f3d3d813dc4af414adce1d69920e8f", "0x2b748ad3da43c5cb9412cc64313c8d4711251a7080ec5b59206e7ac8c701730e", "0x17a5468fdb1e5fdacd9c9fd0a7f5fb756e05f2f2fb4104b2cb48d830fed13758", "0x2697a5e22542123f0923b86b1529a5405ef809de03ee4129b2baee5cb3bd94e6", "0x09b07ad43370fc4bf9ade610e1addd38d9d962e84d8ddb109efdba69916dd489", "0x069c194b5b9f2301bc48d6363c8e5afa4a75ca2f8a009e15ad4ca11a17c81a1e", "0x1a1974ad418cb372d555ec9af0f348b9729cdee681eb0e4479b90bb720f542c9", "0x18a9d8d34cf2c633138a9eb9eb29820c85b7098895826ecdf2e1bf040dcf0287", "0x2e0554839dd70a4b9998fd915327fae14685eca623d662585186d2f124ba8bb0", "0x1e6d0216c8b678bd9e890ccd72d23bc267948ad87fab25aea6257f8cb7012803", "0x0920932a6c405b1ee871ae173949731e6169a24442d8f8c9ed79ccc7a24a495d", "0x142c42de6abfff58054f6a4bda8eba5f7f10cf39fbeafb8d39aef30e884fa3b8", "0x1418edd88e64d3ddad03f33ca0936172444bb0712d646a8bce67b2e451ee0d81", "0x05c5dcf2bd5e04ea65654fb473c4d4692e9958a5999abd7e5cdd706cb7e082b1", "0x114464311fdfa11eec166d202aeefc601e4d16959ec936a9e8f1b2f97fd35ddf", "0x21b713b0fdb238f3b053f6d596caf07223b2a9d1fcca758321a1d9175c327ef5", "0x15ef67cae5838a50bc671a5ea78e87b48bc98e3cd7bf76d5fa033093ddc97581", "0x0bf88917cb7c570f68b39429d8fee0fcfe583306a6ca69338c349026fe66bfe9", "0x1881f0129a64b7f861085f6b3669dcef57e568d63497982780770b4bc3b437f9", "0x2055eb732a72d37cada83f04ef741785368d648d09cb50142575430a110e89ce", "0x19b848c33b3876bb168846d13897cde6b0b9e2b29954395b39946a4f5f26d003", "0x01e19797232964cd5f26ae8a2e04bd7b3dc1bda25b541f3d4a059b48fc952da6", "0x028b8dd78e8712e172486a4b278ac8e166b1996552c74bd2fa4bfbcba3913457", "0x1fb1cff73196d134c30359da15a530b1a5741aa0e05788a9d4fb2032aff0d586", "0x23bd3301f59bd655225f85c42a9466bcd7c64aa93637ee27aefecdf288326039", "0x0e2adaeb2ac7d6944e287dc7c833015313d3f2beaba25ea4c1dc6f0e3fbc8e34", "0x2f5d08548ef73d65c2853178cbcbc8a70c48003c0d1386db7288260d29a52d0a", "0x2f55c0e96de74a61fc974df0da85b11ac544b5c8544ae59ad76cbc03889e79b4", "0x18885f739a9c3dfeed39ceb7c8eef77fd635ad52e3294d3e126a92a64c5a4543", "0x1267cace9cec3c1a96fbda5f20df309df88f9edf5684a05bfcacb11167983082", "0x2a45c0484448da31b253b632f39c3d4f6c6af8e3e399ddd393b820cdec66f902", "0x2260279c332583a36011973aa7626d4e81d6382967868a9643a76e53a2b25316", "0x28ec82446ae8bb21783f54cd4daf07e279bc0ead04d7a313769f662c8e74a0eb", "0x16e13570deffb3bebe118958b2d86470578cb112969bc6eef3a1321befdac9b0", "0x2288e83beb79459807cb77408c9bbdbdd077e620279986f4e2f0b3e5facaabd5", "0x2db5b06f1102b72ce49946084d75f2109ad970785a8329de8e225a410e243389", "0x2fce39a19ea115f3a917041fdb267c1b5103b5887e5d63c48eedfdc533699758", "0x2c65ef055b28fb41707c324a36a894c6ad9f862fd1f97da54459c5db0bda55af", "0x29e63a24c91235dc00a6770b9e572358c18a9063a34066f8b6f56683cff48ffe", "0x054211c56cf9cdee64b7daa7677fe9f235e2b5c99c5d8b55de20d9aa612c72c3", "0x108e8e83433f7cb1728723837ede94d073032ab66e2e0fb6db9787b39559d73b", "0x0ff9bfb41914e199a553e070eed9438fff033cd31476589149a9e60d5058114e", "0x06913bc2e37230d4b6f56b44697d6f80418d7c11a1d20d8484e95b067f935bf0", "0x300d3b773b9a41ef818fdd12202f499d5dbde395388a81c5ce3bc3cc8b488099", "0x29f9b289721fe3001937f6c487bb30e342b344c71ddd0f957d02d9295fabe594", "0x14de0dbb50a0aafffb3994762d1496cf51449350b5dfceb0650667f7db7f33fc", "0x045cf1d37629dee9289fcbe4823519deb857ef66cb39cc6630a3ac6157e9e0ed", "0x1e7de46fdd23c6aeb94addf6cb999856322d3ad6d5803cef88b6693ed13590a0", "0x2c033fdc57232e685abe9aeb18a5950e59f666598a0a9032afcf58aea772939b", "0x117eae65ffe6634241265348d98472074e89cabe3d8f9f55cbc74ddbd9843e4b", "0x2988e81a9b5dc22c8b3c7a9d01344422f2483364c189996bcab079912d25993d", "0x0dbea591b66a2448fbfb886d10b899d656fddbea4e666c0f14465e09ccaddff5", "0x1edf424bb6ca08ac8c4cdfc98d6d3fd04000ec4c6a8628d5e2b3b1263234755d", "0x214306c0105f363d5259e2141e97b7da41b9d5115048d1ac8483fc688a7034b1", "0x242e00b6930be5835aa5027493d3b11e311877265a70210e01216328452fdc98", "0x29154d0128cc650989dabb8ca0b18dd5beb1ebac0f63fa47be96e3832012197a", "0x25d22d54d9c82d7cfb89c61aa62ca150506a2bfab5d300db784d25d260827d0b", "0x2f23f0ba299f5c0976c16eb3b88306892612873923ee88eaa2db8cc10108f5c6", "0x0b743a8913bd8e7e709e68311a3585efb096708315a9812039f215899f4294c0", "0x264efa00929546cb4ec30a621c3c6f661325872864ffdf84d5adb61af8dbb3d0", "0x1c49d76663a358387762d208dc85400e7acf1b65fbb13edb346df1f2a10ace37", "0x2f40725d1eb518ae4562ee25ca08b3e56dacaa511bdf82d099fbeee5110b682d", "0x2651bbf39215d6d6632a652ace6ff5118555acff7d4c8be7ee3e206f44ee7c00", "0x2198f3b0a3fbd0bfab07578d40d7fa03e50761ba8f1f2b018613d65b091f3eaf", "0x18d4c4699f7d01fa00edadc43c8e1f10d92a4f7db96c2d9139bdd6fb11fea408", "0x059edbc553491ec6b94233d53b5328a5d24b6e49f457190bcfd062a5822957cc", "0x129a61614b4e9e421e6667daa9b85fe14beaa822b3954e551288564bd2b14552", "0x2e2bfe4d7b3234df6b62688bdcb2c8767597ea3f7b7792fb44377e71e1ec9f16", "0x01f8397cfd8eaeeba4798e9863737ec54572f6a355ee47cdb827a7f20dc389c9", "0x117db9cc9140e4670bc74e7fd3a6fe99b87e1781d2ae191d011c6d64e02dcf8b", "0x11e0cce35b68def7ded5522f434c486f287db0b6bae3cafb231dcf951598f89f", "0x25bf4ae30c44ddfc8700e2369aed7f568980c6d48e33b6c63737c82f942b9230", "0x1153f5c16d5608a17dcfa2fcc5ff92d0a41d0fd1380b58d2f77c058339886f6f", "0x041bed39c29afb7004cee993fc222605cddfe641fa3a096c8013f38b5cd85b7f", "0x047cd5c5b0c2a604ae99c842540fa37d44e6abec3657699a116b84fc42ad5d3d", "0x154ef25e671486db8e882181a331826dae7b9739f2eb6c8f748a30649aa4180e", "0x1b483e74f41c2658fafd081b9cb7709df288999454496a29a492eee79efb9622", "0x12db88342d014b56fdbf93dbf9d9c082196cb34e0ceddfeca0a40904e2b8cb2d", "0x0944263fcad7635a7e8ede76f4fe3afb205cf835f42a95c0336de6c42ea5a990", "0x2e7ac6fa9dffaf83a9ebb6966ef5464e4429b98b78b8f14165c501546970b734", "0x04bca07a15b585cd27790768caa382e99d14cff8fa57e2fdaa115a472dd4ec12", "0x0a230ab485e781468fdbfedf32413aa400c839ea855a50f1916b03c6761c034b", "0x1621dc3c8c3db86fa83059f4a3c41298aec8ed93c49c53bdd2587339b216ec74", "0x1b4e4bc4f028fded0daa5c1a094feca0d05094fafebd6619348e1dd9fce168ca", "0x1a739e55ca644e9ca0ff28062320977d9738b357287fe6d8727e10ff4452c799", "0x292800e8452a5666cd02b1756950f8048c367a2439adea3d942ee3c3185cfd92", "0x1fa371d9106b81aa664c11f50cd41d2481a91439a39c0fa1311ffc28c4484dd8", "0x2a786941b8ab631a455f1f0bdbbd3eb9a19cda5d76c463bff4ef12200bd6cdf1", "0x1521f303fd41509e122d6b7661d62c911fbaeeee821fa2e11e29e70c843fc859", "0x242af7a107cc7bd9c1c5b2537e5eeb794c677827c5663418bb9a2c9dcef29157", "0x1cc30d4813bbff4b91740cc8ba20bd06afa9d217ea012ce12d14e0271301e77d", "0x23bd2922b425af4d8bdb587b1cc08ccdff010ab030431664899a4a323b29735f", "0x150fab5986eef5bd1fefa92aab5002530d9f54cb7e65633cd5c310555e0b390c", "0x18b43cb064bbf3c83fc2f158ae785aabc730df7e5c6ae3bbcaef613bc0ae707a", "0x13bb42eb4e73787060889be175018b8f2e5a28a1181d777e2aac1c993acd6698", "0x1ab89b566dff36a95f8050e843494740ba34cd3b35d0b7c97bd2d705ef842abb", "0x2d5fd90e717d8af8d5b10f73844c6ca50d005940af09546de8e34ff991435fb6", "0x0b836d0d581914218db0e93c8598b388972a479b35c933ccad984a0b6ce94bc9", "0x02ecdfb150fa2eecf4c34c76d56eb29a44a94003996fe3c7fb9d64d72d352e3a", "0x23578d7d5ec8ed31b2d7eb794564d389025fefd00652195dad122b400a5196b5", "0x1ccfb8b4d93e5e08c7c4c4f30635706fc9df759375fffa6835a4c1c27f222796", "0x1c0cb735346164ba93308881d536f5888873d4441e308375e8e6b738a1c0cfd3", "0x0b73e5b78e0d23f77b0fdfd001738191c33029c06dbbf6f410774f242d0023e3", "0x044715c00e5fcb99c435189c1ec24b3ce9b8311421f5b1f38484ab7692c6c632", "0x1d3b3647b8ea345e92cc286f1bc18b6ea3b3a8551d0bf1a5b95214cf2310f700", "0x1044b915a339a2582a6e7fb6a66f2b97bd6182f9946ada1e5d3f764ce1ab0ce0", "0x1813db2251e3d904d0d30bb86be2d7c5803a92b87375dfd68f976f4622a51534", "0x2808152f5685bfe577c94fca9d70962e5a08e0f6fcd8d92182df7fb3b2b3924e", "0x2da940a1e8c89a6f983e3f988a4e79759b5c6987ba11f3f51d9a53d3fd1d4011", "0x20fb1d869cd192c87e34254e4b48f222f997b4526a3d3f9c9fedf51cd1670269", "0x1bd49eeeaac3927d1982829065a4db42698c0f5d5febcfd48ec3bc1059959f1a", "0x135112b374480642311b6b142704f21684dd024e0ad55ae02728ac322689e66d", "0x2c9e245c71832c690a7ca3db1cdaadcdd7cdd39570bedc14a87ace5f726ffeac", "0x1a319a5ab3b2a9e95eb0c11a5a12b79e856929186a1ee3eb2872ad86be73f564", "0x1a123c31f99d5ea55bc42ee322b7c070f4ccc1fc26bece9f4f3eb44b90513808", "0x0b23ffdea065c8e75ea0d3bfd966dff136d6602afa94328439590ff3e200ef76", "0x1c81f8e014ab25b8ed79c5e1bdbf869fb1be1eaedd875a7539678046bd1a3314", "0x01bfc092f4701d4caeff6ed32605cc0f3543ef523858bf7de922363354ac3370", "0x16068fc89b3388fe5bd541a72eebf297689d1e6f978925deed56f2ada6d01fec", "0x03bd9dc121e7e98b549441bcf073b564d5a9d40e3020de4d1a71039ef2630336", "0x1d0bbb93d9c927a609eff76c3ca95ac6e94e1893c88ef2a544fb5f6295da72c2", "0x20e9e2dc88aea45883e13db206222e4c21d4e8eb954202f2b90c211cac96c9c8", "0x0a69dec0cd8a399fff11902a34afe9a1331f51ad13a7ee5a71efd7eb8594dae5", "0x0867c910850d2f230f7e5a03b3cf0dc03264d5b6f2661105b675c5ff41575c89", "0x145603f8fb5a0cf56bf71b9e6ffff83127c2d0bb368de23c69fc7a94c844c404", "0x2b8bb76dceafdd4a12be1fc9437b9d406ffe2144b7be46d9a56a410d17da75c4", "0x089bc5ce0fd41d90b1aa659de78346e05eac7d054f1fa5fa7db91c07fb3fa7d6", "0x27bad78b8cfde47a264cb63481b5a0388f1339cb21f2cc32905d82feb4e93f93", "0x07043ee703d2b1b6ab8641fcffaecd107bcbcc034abcfd46fe967d8417fd3720", "0x04f5ccdf4036bb78889335f68633fe091e0da370d2f07e6f854f67049e54c0cc", "0x15b1ffe12147ee71e3401b3335e78681c534bcc58fa9f80a8130509dc0820256", "0x109b0548eef07fbb9230e92b4cfb7441873a44edbd265fc152d65018783cd573", "0x0f07c58aa725aeb731b6af087e7c5ccec5a3796ad74c872a7426fbeb7fece87d", "0x1d1342ddce6e4469f70a948ce109108d3b1e75b3733ce7c9a237a4c5e5274514", "0x0635be9e7e8443d3b2886d154344d243daa9578c82a38e252885c4f3bb138b10", "0x1bd4922ac758c0f4c50bb3035b7ed4b5618ad0b714ab468b5eab988cfd8c2959", "0x2e1a0e6f84c93342b4d529f88184554976e21ec6180c580e4a58634a7b74759d", "0x2f1589be5a127698a4783ba48722e4c9a9088c7c9edd9aadf9152b9dd839f2b5", "0x273dbaf645f1185466bfc99b676c6187f8415b9fa2e1dd6fc6435f0a3ef35526", "0x1c11b76df042385ceb6d0fe269cfa150695919e047b4807bd6e9a3cd4b4e0a22", "0x16a0988d4234ecb090f09db6bde79af35394c9b3ccfc6a0bb444dfc6c7867359", "0x215d025730ada1788e2024cce27f2a53ce804a93a2fc60452a0cf948fb03a8b3", "0x2cdfdb0847de8099ed8a941822b15ef9e91fcf64325af2202de42eac92bbdf21", "0x0946dbe9998dec541da39a9d8ea544a7e449e26a4f9aa87c28c7e2f118961342", "0x0f958982b43f8fdc2c3785c4ac3e631d5c89fb94e0c724a7a65c1c3218b67e40", "0x185021b192274b1b61952ad219cab61acc3b36fd36188a1b8c12e56d998c5e84", "0x24d56b4d52b47f9bc6dcb7ad353eec927c0e7d4212a2e6de0eac44a210260b35", "0x1098d58fe7b53523eee81510b083fdadca004b549468cbd201b0a31c8b7e1d17", "0x24a99bc48481068390bc48330c113b7921ccff028ad504583976e7e30efc3c88", "0x12a7fd0a7a6ed9c0eaca3465ae557cf318705146f72f7b4e4ab24934dbb4c673", "0x0d42adee447d6aea66365bf01e5b607c52848089a845d1fcffae9f47e0716b16", "0x00d5d109de2579f4e5ca2763a37d1310930dddef69c2023b167ffea54b0c4aaa", "0x2efe7e744a2f0e450693507731d9c0492a077d194a02210022acc59e7ea469d4", "0x1dc37644bbecdc24f85b713fd19af55b6fcad311b77b5fe3030a96d5334bb833", "0x243115568da36482d004008176a75427fda366c9d07bcf56c7b0f4821c263764", "0x2ac9106e5d82d4e200b257b0b222cb30957327beae9834fc428046a0f5926e71", "0x16b852944570287d6e02c35a6300392635820ce4883fd0938260f85555c6c0b5", "0x29dfa400161b661f5264b4158460d4776f3e862b7b8235119430f7678a2a2a74", "0x25908a5cfb1c210f3afcd6e8d63173a6d79dce7535aedc57aaee994326c386b3", "0x1480f56b3a68ef41e5ea44dff254aadddbf19d50f0e990965fcc89bdc3bf3546", "0x2c1490f9335e14dbfaeac6675595f6b10807bcfa3e49a76efc9032f5f53af5b8", "0x1833f0ce5dc529d3576a7fb481d8f70fa6e2170d31c1031a255cd800fcb262b1", "0x26d36461a1c9f3a3653590e8273554f81fd51cc430f25bee2cccf55e2e762733", "0x29027f0fb381318f8eac14af24f76e1707dc6bed2710362256f16dbda69a90ae", "0x0a4cde8f3d42ed48fb3daa7589036f4994176cdf07a2ecc3dafb54f9d45d9b03", "0x1fbec12feffe0889cc4a31fcae7d819cec482785e190dda2536e2c4011da8704", "0x1b26f238c7bb8636782bc0ee48a931a309274684014ce72714005d98b8d8c666", "0x08ff4df0c027e88807b8b6e55e6bf7e643fa60c66d74a33dc844ec1c34598ee9", "0x2207c1318e959e4a002ad5015d381b29915de22629a612a1b6da389ab86fbc24", "0x09fcb07e82193539b71d0a052d3977996a09f84216bcc1e46f11ac84d5d75ef5", "0x1969f5c20e80f10e71ff42fe5af7bec47ee7533153678dd2ef33f1e91fbf98cf", "0x07b65d6a874f5706282479ce323f36bf23bdfbc34769e11ac34ef2494f2bff85", "0x09e9ac4c51b61ceada2c861e276a1c0665f1b069142f144f80c46649a65bc425", "0x08b74eb90b0e5b3013347515fbcfe94d8feacfd5aefb9546e1e5adf59ab4acf7", "0x19351714ce3d2e3e93ec9015c02e0fa056f68ecf8d1c7faba519dea116e0217a", "0x03c4a15bc97488139ce1cb928f474505ad5bc7893a53b3cf1c9ba21d51b00410", "0x0d8b7773df335b6a9cf298b08721d640290a0b17d5060f0222f263c7417d25cc", "0x1e14c212fb7679676af50c3711b1917d6599f620652b8bdfd244251667aed9ce", "0x2186cc6cdc5271291a9b111b98bde50c62a28043d90aef654171bb70e429fade", "0x0768dbd4b9074b435467927d1187378c4b174685aeeca35788de665f2812a195", "0x063f5a888b7bcd3f8ae406ba40e11207be013618ad5f811cc317fc1e558c79da", "0x17807cdc2e72f05b3371fce98fdee5f3553eb4ce92e9398d702f938cf9ee741f", "0x25f3dd0be3bdf8e632afdcbd431be7ae6601549304475ca580d13741e2a7fd92", "0x2274a45e2d69064bce67e2eb664db45aef4f1d9dcccd157bdceef7aae145f6d5", "0x087ee7936deb77a97b8d7473f53436cf3fb1ce85df07ab68a028b46dea841701", "0x0aaec0f75e53087db937a974edeb32eabeb633ece1180f1f8437abc9099df1be", "0x10cdf01e8c61263b446c3f7a10cc29fd01ed91fad9891f9c6fcb7b5ce438ba95", "0x176627a92072fa2bb64dd5dff9cc4a0d5bedcf3f22c91fe991cc6568a4fb54ce", "0x0eab0e158e2f672c68a7a0a48328e21179a417eb0c65b1b617644e1c52c4b425", "0x2edf1ea1cd97d1a91fe7901e64c0f2d12f7965741da5a7c7fabee25eac3b47ee", "0x1fc07137863b1d337bb5dac18ad91237739680a69eed5da0bf35062f4d4cacc1", "0x037bdff68025bddcbed554ceac3df66a9eb298966d79308ae414d34227aaf862", "0x177f68957ba07da671b9dd919f2433dfe5f363b74a3c16169481c57c5b5c07a3", "0x06d47b9921e2502c2abb0138d3b1028b02b85f8f42362cf43671b60a69e9e60a", "0x131d58cb8a41a753e767e1e97cef60d0003e49c8cd1f0f5101c861b177715da5", "0x236ca76235d9e69472c9985f842e626f33b3fd4fd5f543810a0c5d2143ed4c9c", "0x2fe7f85a579916545907f2a02202b83696b64d1f61e813730cebc06d068537f2", "0x04952326bd26efed64637d4fc0f7a4bb528e3a341260125588e75aaa88f62d71", "0x00c2dfb577b78dad18837bb70c8e2990f32325bb418f4f66263a2b63f3f98384", "0x122c682293b4892d51255991f9cfaf96e25140bd6b37337ea7dfad5e1242328a", "0x11ddc540d4a110e482a2455112ba67ffb3ca3ee54711498db1a372b9cc23d145", "0x2f6bd71f6b2f3af3d468820c80aaad72ee48a337f1fe3d7ce01bb89242106a1b", "0x0d6a16d136ee77c35f216f1aa0ca9e09bdc259e715848ce047be056a4a09f787", "0x2e7c6013d1be62a78b4c0015465fb0b293a07d4605dca6422109096164b22b2c", "0x0d6bbf18b7eb684adec412713570d3bfb36fd0f569fb36474f694b11b2948ba5", "0x12403cf8877ae510b7314b7c75ab5b0fb7fcde2e6ab48121288dc04d5b51e594", "0x151b3acf4ce3297d86e823a72067c71717382150c080ca3f8012bb0ba2fed47b", "0x2a1396702063c62e07c512b9d4d181d71d88b5681a7e47fd114cfb682faf4f98", "0x25cc49f3508fca1873a6f85b6550b6e1041d90ce535c638d2b523a61dd7869c6", "0x1fd18327a0482c394723b152c90544729cf4040bcced94e8a37e1c9e307683e1", "0x0b27566ce02bd4cd2273fd531336c0ebfe65a5b0da123cb31bbc89533e518b3b", "0x1a9e153ce82bf2a6fa0d71d1889c24b5f111d262c82cf3450f9ca80608ec15ff", "0x07ca794d5ac4f40f0fec4d69e3a3cd1f472c7446e4e27fc1fa4cdcdc8605acc7", "0x2fdaf44c707d8289da9373536a6f61b66494fa9e9e782e0e410405efbaf504ad", "0x154d7c7e94ee06a436fdf59b501b763be8dc7f12aeec0752b79179267d643a74", "0x2c753b7779a3909fa0cb0695a9f33a673532bf5cf394f40bb8db5ec5fb7a64ee", "0x144ef40df7a262ff41795d09590112d63feae75c3533c0ab4bb9ae43d61201a8", "0x22c68d6cd4bb18163791274a28ba33b0d138e148d6d80b469d6e95197d164883", "0x27ca38cbe8b2ec8a927b6fa011e982323e56da932c24d73095177fe7f8aa979b", "0x036994c16973ea012441dbae792fb3d06b139addd7ccc0c0f353be33d8873ea0", "0x242d7d1bb8ed3658035034b55e28b43138c56c7fa9c0586978056aa77decfd3a", "0x194576547027c4224e9cf6de762a5169ca5c18ac5db90108bd76021bb9b0cef2", "0x0e823aa11624ee571f23da021d4d7990563fc9898a7d0ce684e535fec79fcdd8", "0x082858a4db283919b56c0bc08b89386724b90868a4ba170bb1ccf5e112205c4c", "0x0217822675afac3da4a9137e0b172532884aa670f142da689569db24f5b0d650", "0x274c614c2e392cee896b7850aa7b6fe952b7681959fbfd7913b43af0f5858bb6", "0x27d35572895d61ef77994592fc75251f440e5d120133252049385ee1be25aae3", "0x2b391acc9c8e452b35f31c91bc7de27e00d3e625413d27f6d60c39d00c74bf7a", "0x1b6320cc8acd98c92ca849a5b3ae52f2de368474dce727a0069e97cc0a546b5c", "0x2286075e6a96f1a55fba6f84b3ca4974e87016864aed62735ff0d428c0ac91f4", "0x18aada171822e8e1dc3da76917fed163a523bbf82123dc98f4c097e17e11deaa", "0x0fc3fab45d405fa715ee3ac4a279c7003885e52023e6e36e5d71f05cf5f3035a", "0x1ce99509af24e048925eaad26d294cd555cd12e1d65881777ecda694a5e52a32", "0x2e26c17c921163b5bb3aad23ffadd47dd0dc4449b94c90ea3eb4e4fef138f727", "0x15116a7c92e6d9d46fb7fb51adee5a862aa2fa762c690991804aea7df5cfd3f5", "0x18a26a0800fcf288aa7e98f047317210e6656c87be903bf19a92e7c2a499c396", "0x22d7a40e7e4c1e76dbfbcce1601c22469b7fbfdd055a3f953cfcfeeb47a85c7b", "0x0ae771488eb4bf107cda3042dda3495899ec5fc437921508fd29d5bf21807afe", "0x17104e0440a812a33f825fe57da99dde13c1bd3e10de8ec967a5deee234cd701", "0x2680e4afc93fbbeb972d842f18fa3a35e1ce822ce02a629c3696e2cdb2894a5e", "0x0d64fda93aba5c384eb39bfc144bea57b13d11b27d89323d2ae2748fd54f16d9", "0x0aeacc635139009646db8941410c819e087abc601709b1f923f04ea67b5f58f3", "0x0a8a2ed2b2158fe6443bc3b11754c14521db193335616c785a073f69cf15bf38", "0x07b133a201739ee204c81df78b20a13e00fd8c0a386942794c29187aab6273bc", "0x118fbc76b7f861e02e9ae5ba516960c91142ad7c4af11563e1adff97f863ceb5", "0x2754b4ff473681f3069edfabe21dc75f4123a0ccad5597d42779a8120f54f022", "0x190360a036668714837675f7e59fdf15fa57634f4db0c2c24a80d26951c1ddc2", "0x222922f3670b5f65cf34b2b2665b40a187f3c303c76bed52017073a0a18dbf53", "0x109e9fc20acfcecf3d47c04afdfba926f30e1172a5d506d1241818aee9cc7c55", "0x16213b42dc9dd4c9ef91500adf2ef8708851787374dceee4d45a6645a3a69b30", "0x24023ea68a2a2b008acbc5d4a15fcd0942b67ce952b0e1a03ad175066f755920", "0x247404c48faa06e6c72b1d050b905fa3ebd774596b4cfe6bb4d57ac38070859e", "0x1d868231e2df133dc0212c6248179cea17cb0f71c4cd827f5353806230d8916b", "0x0c314749559c134886fc12ba1326e4ffdc33028d8eacd341f510f1dea2be37ae", "0x0cc1c33b5320c911b47eee03c4d96ea2b25bcd26e3711d28cb152cbc5b87d2ce", "0x05f4c3605ea09d4b737b29fee87e1c2ba74d332bc19e6d3e8ba947f0eb3999ac", "0x05bd7ce441a3a72786312e63866bb986adbcb847b06476f98c6b7f8b8f042457", "0x13fc4c0e950281ef4e96eca60355152f7c0b335e0f36bc1cdde5f3952dedc132", "0x153c2f89d6681e7f94df511b9f193e2876884faee1bd3aec26bb93493a064f03", "0x16fcfd6ddd242be8cd4982678cbabaf4010be47978764ee4d14e952dc4a3a118", "0x155435d02b33ce45b9c3b6f3f1090930fc0a9fa99788927e504721ea0668cf7c", "0x0669fa7d440e3a06db6fb80c876a36245bb693bb7960646421621fc2c391c5c1", "0x2b57df93a096e78d7f14eb117a9a5c5ef69d96cf45bc807e55d89bf980e8ac76", "0x1e8a7d19a676b3263f85a8482d95d0f3e76be0b6e5c9ac107a12fb9e655c8713", "0x2a6de0bded2bbe2b5866801f880e47e6bfa69005a0c185897c72efb56bd98a87", "0x099ed3a2ae3f0f6d0a67a1f79b55a135bd066cc32e5942a3fa2572de1348f840", "0x1e7d7ce084654213565d6ee21bf1f27b3d8027a2faa810517efbdfdca997fbf7", "0x2e703dfbdc86f5586edfa0221c81bb6899143210bbd8c66847764aa4f63c65b9", "0x0505b0c3df9f92959a41fb36c72d85bb826d5672798fe7482572b5f41f37194d", "0x26d1fc920ab60d7fc4e826056f7d19c78275087ff9116e356fde302840ffd3ac", "0x2b3439c16b1af27bd7a4c8d9ddc6934e7b9f5e10aae7cce40ce6a937506d510a", "0x1e45d86bc184f0e086020deae34e53ab0ee7123b3a1190475c6e25e06f832154", "0x23f3e2f49ca1c95434b0342156172e65dbc6c9f8321cc75e9f15a66c3bcb09c0", "0x1d8c2e51db59d6e96ee69f68480d1f8e48c03bc876cd7915d888b5b0a11a21a3", "0x1e1dc3546a86032cdf8b8bf7f94a44730b662f8a56ad862ea1247ba2ab0f3d2b", "0x1147e82c00df45e182d416b8338ffae299178da5f92d8f9f9153c695e7859447", "0x0be94456b9a03c6cbfab9d8a34b411e91d20cb11f5624faeb3f78f38247e90b9", "0x0c4bd9a3aaa923f649b9cd1cbd7879574b266ff2f7c0c063b5c44d6b48cca3f7", "0x06198c1fe412e25887115b54ff87eb4f1e2871d4cf377969ca151fed5d7b4dee", "0x1ee90aae68a6bda42c34a797d4d31f79679ceb41b587f619d620e1f5108b839d", "0x11aa5360b586c21447711b49721e9f4fddc6b6c98b57b84772d6fc6b8be017ca", "0x1a41a67390f922f10cdbaaa0ce5eaef61d66b6730825eb98a24d25987e87be58", "0x24a2997c832fba549618926afbcad00ce920788393df128f8a5416d26231615c", "0x067036caf8b57daa59ad4514773898e1b22f8e88d454bc1f8ef0c82cc93a2772", "0x2f18e853f9b7b7c4b1b4c3f0d1a2570b035fd2b4231a584139adb7a11221bc33", "0x1b3874144923943beb66ca8b798d0bb8f2be7f8dd9dedac6d91fc5b9e53186a1", "0x0ef5849ff458a11dc413a2d8abea9888c62241c3c285afe3a1b14cf71574c3fe", "0x196a36a231753ffd0c094642e27d80ba201a549af584ffa9a70a8026817ca668", "0x2e02fc222dd56fe6568a345add3c1d577898a361847e58b67576f12e3034a8c6", "0x2383bbeafd391d96aaf0ba7481467867c67ad39366ed8c43b42520c6292452c1", "0x20de2cd5ce733ea00a7f167f686ae67192637321cc9f0f4aa7214790676a3f75", "0x1f1bce33439afb8dbab1354b46a5b9ceb1980b83514095d65e513b79351a9907", "0x057b8de9d8ed593b5d214302ce88ee08f1812ef53cec6e05baec160c054d6747", "0x26777acbd88e932b2552f7813e62f368ab8b1d626b685502253a10c8050a4a55", "0x01589c939e2e3efeb8cb6c103476879101fec7a530ca18fe4bd2f096ff44af40", "0x2a36b79d87c963b1f47590ecc4cd69142346a54ae48bc3f573adf719b4e09719", "0x0eed87708b5b00a42af3e6de58d4cddaf22278be0ee6344f2a775132fe107a0d", "0x2bf84fed63a11695b639727e18111ac2083d936ce64bd51a32dfa9f1b0e71325", "0x164a6098075941c6467319c2372463c3ec7adba6f6db9a58ad59a678f8f18a39", "0x205075ea3558a17b0c51ae3a107d898609e3cd5d82f8df8c3f74b1b73b08973e", "0x1f1e3c76fc69fd8acfa3a9bfd0af695c10c2bcdce6d8f4d1f7b76d50419b4376", "0x0069982a9b25bd75814397b6d3c8a90781e1733be57f7573f2fe44dd35618c54", "0x2f17582941481b5489211befd4bc0dca43d4432ce11153a0fe735e55474a2393", "0x164531eab380bf81f6313f32f5c255a9badbd4edb7767f990c46b0fdbe9fb297", "0x031f46a8b4455ff121bc184a1c3551d4507a17c888931f3e99d356a9a06ef8ac", "0x11334dbaa6f7f4140d1493bd188c77628dcc782c5ff82f1ebf41ca094815741a", "0x0218b1d38a6fd11d6566a52fe136e2c82de229698e5414b36be8997f060e8913", "0x2effca369cf34f74248e37ae3bc74299187e16a75f2ebe40467060500eb93c31", "0x07e54138f828c24b98b3511392861ae9c5876550ff0ee776663c3997a8f1a116", "0x297e1fb7da5497d3dbd0798a146d2fab9ac5b0e7906d8588238187b795001fb1", "0x149016a717fd85cc7df7f039ca6b1b8b06a5bdbda365a33bb0ae228900e53b31", "0x0f9e7a22124bf50d94db9231d63685122f92db5268ad2148ba534dc853bfc54f", "0x1a3519a62fa692b3716d11b88e9d62aaa0e43bcf03c7ea81970b1d802a867b88", "0x2bb67c5d6c48cf458a293d69b2d1d44fa7c2c6088e7b7f9adece3f873dedfb95", "0x1fa713dde3903e41e68f09ac2f34c9b1237a445d5195c5e361c5bca31edfa972", "0x2019aa92adf7b5e795f0e539682e4b39b4e32bb6520c711102aebdd0c1516843", "0x2253b9233d047afa018c40c49fe9ff1f999432a9c7df06621b2504a46f120cda", "0x1cea08c49328f5f053c6b47cbbc9559224be1d81354911a18926a98e047bdae1", "0x123ad23966a42c729713094fc352e466e2646af9adaac20fd8e58f308d2736e1", "0x1ef59a7e266477a644527ebecf0bbbcf92ce5f80d2280daf826619b7ebdf79a5", "0x19ec1d74d7f3672f9bc66be9ac40f5be702b7bac80b4e33eceb592f86d5de3a1", "0x242646c43d7f28cf38c9acaf8c63b1b33ff07c778c2ae68c55d4893a927a3a45", "0x0e2c8a604553db3b81980fe40d801cacccfbcbd79992430fcb50b04a42cbe9b3", "0x2e77da327c869b63fadf3824d718983f2cd1f7f8ae64c88f5e8a500a34056aee", "0x191ca3be9eacc6be4808bc1668d814499742a1167792e33d70d35b5fd0ac2736", "0x2a26e10b714c8c92c42331368736018850b48a0e5de7936b2cf25eee46631964", "0x05aa6b2e25b7ce4c170427081a01190f2364872d01e51e969b14d984930c10f0", "0x07acb3904e2ccd87ac5d9d7b6b7b7bbcde3850493371e1b10bcef4cf32ff2085", "0x05aa9ca5f20dfc104c85eb2bcd80dfe7bfe69d42d1ba4400bcf0d8ad53a18c09", "0x0411a0b6eb09fffbe966876683e86ab965280186985f72fac6da310e80175dd9", "0x1e165682a562b6dd29cef850b2759ebf862caf71e348b42027553ab1e7f0cd1e", "0x2b65e92a1f91e38b2e7f192ebf0bc60cd224ec7c1c67b10d1e5f634fdf526b74", "0x2208ea7d1fc63767b1d3dd1e7fcfd4b13cbfaacb0f9f531b36b0bc74d364811f", "0x1ac718a287105fdd6dcbdd6e3a9f833791e7c345891b6ab4760e6e2bb62059b4", "0x098090f723dea7b927edc36a8eecf84630c92d0138f90dc555f6a48971f50e6b", "0x1dbe00faa3343aff72d37b302260143bfb5d4e5bfa4a0b3d0a62223ed66b4d6e", "0x0642c365181ca2ec3e423d6ce74e145068a43f88ce053575a2ebcaf718860998", "0x245611d0d8047a24db3d78131bdedc67e345efbe3ea7f6c7a4fcbd3c642246eb", "0x091ffe3d519525ba080e1fab546709b2dc62a1793e3811ec5161c800b487f54e", "0x2a617ed588722d3acf4900b3dc5015724b7c8cef458cf9db494d786a26b69e4e", "0x1302868a9ab3b6a36cced0f80f53f1a13ca436e2d7c0f9ada90040affba0a8cc", "0x1d903daf4300755be0acaaf9ebb4414795bc3fb377e5903f89ee9b3efac052ab", "0x0f671792ec6b8bbd0936abbc039d2a868f523a0050dc0122f5d9669b26347770", "0x1045a4241667a8cd38078067970b02dce9c35054a36fa51cd892d5d2133cf271", "0x28d738f79c07b35d2df772d562d54346dd7a41bd07096c36c2204320a6760b2b", "0x2d245b5c1c1a732f8283446ede7e846f35be9d49cb4f3f3bb4e5e1fcd1789d51", "0x25a499ca1907638351edbc836c1498ba7c8f2e14bf99f0bc2b8b86bb89b4eea1", "0x1be3f4d7663b949402307b82b828a15f9423f9be115ca9ac4584d4ac75296bdd", "0x1b67eb51facef5814a30cf5794a95d4ad1151469ad4d851d0c3366ed6b99320a", "0x06ad69201f948e4749ef9095707fdc6591022c78cb6fa047f825a41dd3e495c2", "0x0a4b8288548d5fb3dde7cf4bbd1a0881e5e61d99b1d52d0f82e8371509654119", "0x0eb4a9342e89d9cf0f482c41ce66e40ff7c7d8f9ad1de8d1d8d48a98b0054c93", "0x1a645a223471e2cf776be1bfdb7060185e5a58a6b651a12a8969ad5a0dfad97e", "0x0302c4499d41e259ff761ddb305a366f3e7c2b01c465777bceae1a67e6b412c1", "0x2c17e0b7f901b93630c9da99baef3c5c2f5a644dcea6444357a121bc2aa4274c", "0x0b0e36da8335e243dc7fd59cc2365974d0e0ffa247c54ef9617a80f76d4195cc", "0x129e733c1dda2ede8d396d85fd6bb8b6e61399f2311c09331c7ef2f9beab22bb", "0x2cdea7eb18f6146b67c437f37c13f856eed01d5e464e8870447c5c8b4befc4ff", "0x2ad4f0216033018e7d2a550c2e082432614f407fb60097d4505ccfcb31d67745", "0x2aac4f54256835bad96eec256641a10fc44d0d63fd5860fd475ce818276691f6", "0x17e25132c09ead8dfded691b9081b581f1f76c4a86f2fd9c9c29d2433f4d228b", "0x2ed95e493ac979a091bb6d28e81672ec5e1f1e39f163e5f4b9948de5b4be3296", "0x161ce63d596de69443d7f542fff36cd3c110c33cfbb445c9cf3b70d9081e4f0a", "0x193efc77ea76010547c5bcc600a11f1d5a80bdd7796a6b3d9a0daf66a0b8a4bb", "0x1449a38a938cee3b56f505f1ba2325b186e2ca22a8435f241cfa443c6000f7e1", "0x2060ecf9aa31db3120201827fcdf6b5ee7f1bb93d550187ca2dbbd4a4205a7d2", "0x048dbcdfe2fb6c50968e825a958357646779546c93340748ef2e05794b48ab1e", "0x0302fbe9b13a3eed91a823b0b4d3e3621413408497e6c3c2fa49d9c8aa36f408", "0x03e81925a3fd5f25081532f2986507e0ed91276cbaf4ce0860817ac7bb838e9b", "0x1c549879138d434cf3143517dd9bf2a322224d76ba5b3e4de34b7ec490407440", "0x08120c7ec356e16945d94e55e835ee7e2e91e410315dcf3475f82d270d16d0ef", "0x130646400633005168c1e14ee27ab8d238d8ba7514c903aaa591dcde7bfc1863", "0x23e9b4dd3d1f30c37cfdfb3a83d45e524f54aba1c067ac1ef1ace082ab43479c", "0x285b38aaba20c38b0459f4a48843122b6473162956247894711ec767994fc3be", "0x2559fdf58d3c2200c83ed1fb4f1eed568c2248ca08e5794806d1841f3a08184c", "0x0e33c73626ab1ed741e47ac52be4e9f7f7913b5d81d7da1aafe203a49ecb983b", "0x051d4123632497aa324257ae52a51e2fc1f9ba8901a925dc44c0dc6779ff5496", "0x1fbabed28208178778241052b236f0bc7ae9893d247ca9cd05672e9aff613148", "0x1c2f74139538bd253c3dd45a2ffb96173550a51cdbfe2a76827237fb85beec7d", "0x157767e2a7fdf25c184755b2f47369f2ce924e5adaee5a3738d4f942bb0bf956", "0x0fdf1e7c86898044ddb397feb48e5ede9e3d24fba5420dba8d1ea6d10dbf47f7", "0x0769e84ed17e6c1eac40b5e00ccd2d820428101b2c84b588ee40a443ac9e08b0", "0x2f2a0f50ded1e6ab34f60f8c56904a516dafc8153721b44f1b3561890c02e85c", "0x0b1dc04fe75dcb36de0bfe15ca2d5ad5bf2538aed1333df56e1b2d861928e2c4", "0x17aed8d117c277ed0d1d888b35ec4bd3dc0b823b2af037d3623ea103a2078b24", "0x153140aa66586cee231a8f3fd8605976e6d32ddf431ff33ee05b9f429c0c9481", "0x2ae922e11ef4d41b7b84d52ab835f5bc8027bce9de25c1ce5b0bb88b6a17d1aa", "0x0f818243cc3faecb7c73dfc21c2968be63b7e9390bac077747bbbe167a055b55", "0x1f62838a30bad6eed4ede2ab52866db5155137cce327a27f4b66e2204075000e", "0x2fd97957b9460d3414008cae825bb610f018c5b53309ffd26f39ecf1e7f795b5", "0x2692d11e64695e0d210374b482a47267cc00df2d1b90557227cd49fc37ec2b51", "0x0fcaa78988a35202687ff0dda691b035b4e9540a5308c96e25823d8787a5a040", "0x1a742b2cce21c83d7943fe6b492a9b88faff3990e48866670f52a1db33d691cc", "0x073a59e2c9c1aeb2a2bb89b1fb9b64fc42a1bfeff1d85b6e7a163b8c3bfa8203", "0x04c604d77b356b485d215a9fdf7e5ec3f29648fc90a186c97e512140cfc5d966", "0x1d380aad6383bd9f5c4b9fb4b127e0755d1198ea3a969efe5e3bcf12d167882a", "0x0cb07cbf2019493088e17d16ce9d14fc4204f670d6b8e2b1b501d1f1b3fd7951", "0x166eb6ad5855dfd3c45e27df9154853d4b0874112c4489ff7aa0050e41fbba1b", "0x0372a3beb9db36031b7f0c72baf1e53e9c7220780b247aed82ee2079efadeedc", "0x05bd655204d55cc6b6390bc1650301957a676f7d3d6017c6496ad031fd5f7b34", "0x144179199dba135cc5f9e91b76880f342a4e74b8ee661c27d5b651f45656021b", "0x0e6fe8c96ce98f3cc97c11993b5087b55f3de70bed632730f92299b3c32ba1ca", "0x07a2eb5886375517d399bfabe4c7ce5c03ede836c44ac2b51bb3e35aa9576d4e", "0x0764ec896ba7a374f5fd5a1cbed8a2be62bae0d572639e17bffad24590c3b89f", "0x07ba9ec6781cb474fa4d622908f09a01767a0785c3a14ac5ba29328c4da5f4f2", "0x0c325b498965e3770243012dafa0dd4fb036a4013f2f67f350f3fc9e74049160", "0x219dd3ca3c98d1613393838c73c88a6c6502ca23b3c85b5b8959a29691e34271", "0x0eb2b45fd518f54e1b0d4825026fffdd76489f6260380af40ddab5ffc1c5b33e", "0x2305b8b5abffdc552cd96956ebfa456a36b35d200bd3e43ce165eb38711a67ea", "0x1a7cb11ea9463f6390abb707987615cebe594cf232fb5e8914407a43ae57b982", "0x1e67ce0524d1079208a94dc25483d9e6b7428d40c36305bbe0893e194a25b325", "0x00ffc539a853778970432d8631bc0fdb0cf6020b4724b49ef031190dc4bb1120", "0x29945c9ca4c39d45540c035c10678a3f2f51cadcbf19b332f75ce1f46b5978ad", "0x19cb401323dbd3fd8be1da954c0291d6712487c687dd9664a4b167dc01804452", "0x285fd86adb21908cc4441249fd005cb1add0b2abf706caff421927506619dc48", "0x2faabfd09b63a81c1cf4dbfc64323d8c127ae552d00339b1dc4c59b1cc7ab4ee", "0x2fc7539c406bce26fbe61517b9b8efd3617110c8cd4b2bb3b4a2b339e9857d4c", "0x1296cd089d4750e55c1c01d768b5e8f21d2bc1fad76b842940f293ec0bc2ac95", "0x21a0c3daaf57fdcf2e88ebd4d1d1a44eaa465a40cf60b07cc26549b577a1f228", "0x1acf97f4cacc97d888e4e3b5ad02dd9a8ee511475e21e982fa1ce50467511ab7", "0x0b3556b9eef69e8447d1869d1286e0d15482112d23d0ebd7f8bbd61c435df612", "0x0b82cf5e2db8b88b32b37978b1176f2a64da2bea71894005f4acb1ce6a684b70", "0x2c8ad1acc7636f65a12bf83ce68ac92abde9f451eca15051413f36bb565ae3e7", "0x2fdcc46499cfb1102f554080793658228c92ae49ed7d814700ad1e13eb5bef89", "0x2c8d7b9323fe30ec21eb7b8e0b88248fbdc70f047b5b9166e3dd8a60bd2a8d0c", "0x0d1ebf973c9d26a64362620e65b0ca9f59c9e971fc97506371af9489de93e918", "0x1bdd929216a105b1351c6047b43c53d79866a0b653d0f4670233e9f59cd630db", "0x162aba246750dcd856c975a9a473a7c921b625699202934b0a1d29ffd038fe97", "0x2e681db0e74c3b6cc499a9afbe2229c8afde2932e4b15228679b540ff45e2eaa", "0x2fcc235134792fb4a81da0c1ffd8084cb8cd8099293c3a129504808d3ee39bd1", "0x1eb6661adbbb0a1774c6cf1637fa1e5e24399f6690a55416def3241ceece74a0", "0x174045c72f6848838b2a08a7a011756097b0f3ed254cffab2926ce159e9f5627", "0x02a0575f09f3282fa07e9b5cf5538993fc74c4ee8621c95fbb2ca2e5f2dc3a11", "0x282f62aeb167ef5963da6c6faa8671123225ad91b227b886b6b981aefdaca0c6", "0x1b9abbb81bcff5f1704632def6d989e50cfdbee1d249803238eac244351d7eb9", "0x18f8a4669faf9cff11dd19f3d73c37748fb4626d18339c077a06e5c5c810badc", "0x21af0de4ddfc449368db59be9e9241185c49c8496ee86d1175bdb7a431086a84", "0x0b9a1ec9fd21cb95dc93c0ac1911135b3a68d372ce6da9d455d80a780b15f8b7", "0x1b413f709358008f44c3e60877d810a081d90844f367e3dd0a7bb9cc118dc502", "0x24b4efb5028575888feb5b8b59d40e3498fffcea1f350826359bffb7fd4f31d2", "0x2b11edef3505a9dad6000607ffcbdd02788c7b5802339be9cd74d2ba57620117", "0x202279706096cd42f906239c40c6713e8bd89efd9f63741299dff53745dee8de", "0x207ed9f7ff57bb17d278f833b61cf678f52c8e321cc6bce3af0804a7c159205e", "0x05041c088d4e637431b2a49baa3772a9b0443f3161fe46515ae8d3ac0b0e551d", "0x001b7c7bc15682259ad0881dccbce0a64a0259c59ea3c5e012f99534fc02374a", "0x1ec19711623ebc49ef4d857325aa9dd7efb5fa3cd7ad50f3f44ccca99128c84e", "0x06cb1be75179c19f889920ea93186dff923e2c214c50a145518837a2b01ca900", "0x2712a82039769317c21b225a4e0ba45df63cafb4821303664d5b331d22218d83", "0x1d7d0968738734d0710ae851377e340dbb101428d7200b731adf3b1c220f3b02", "0x180502bae2da039d85f537212bade3edb56fb3b6a5567fab1e4061b86fa3e66d", "0x1c3f1a329f00f6f7115a5fabbb73a67bdd74caceac0e5a4ccf25ae0373e9213a", "0x0b888038bf1e8afa2e444b9f47cebf28f42854d1a91608e39dbcda872bde960c", "0x2a036e70e2987d85453ed7a3d9a68d574adf56eae1214dc774baa10658962c12", "0x03f11abd551e44d9b6a0f4440f47006e98cd9001459c9672e6f96a92e5023d3c", "0x1f0fa04bcd63b7a2bfdc870efbb36966f543e235c9dd5b371c5ea5c26aa7b9ce", "0x0154e2bbd796692b8942dc37abd9534c486ba70bc77be21e74c4e15381e1cb4c", "0x0a0525b3f96a7507890e7f65e7b593886d18cb1474f5db86501a4db1fba04b0a", "0x04a473932e524fc0e604d5ee9cf3ba9ef8d5b463a1379fcd7d6af14dbdeb54dc", "0x21150d11c7232f615628e7392f6a0c9348c70115a1a07b88736d04aeb85e0f8d", "0x0c71b12a8e8a7d8fd2b4ea9b587f1c7227be1c4e9740db36cf7c7c5e8f313087", "0x2d94cdbe04f7f77c5af2d36c37bbb81729d951abfbd791fee0aa3a32321ac661", "0x14e45c5e2b09d6d631cc60c59fb5c24b0a57041aac64b4a82db0b63600f5581a", "0x0abc5c5c8489780283c139c36dddfa39f88ee0601636ed3d6e4cc14bb3b1dff5", "0x0b937ba15135dbef736446fb4923206c8403a42a800c26e6284a93bb233d5c39", "0x13869afcef8309bfd43752610031bd0d155f0f8d11bfe9a7154452e2bf084057", "0x06d42cef5ae2ec34e497c596139ef1d504a0cda240f1762335f02dcd58c38395", "0x1554308cc7124ccbdc04ffb1bb97fe1e8277b386f65ccf2c8b5614e343031a31", "0x1e4fbc4c3e4f57e90ad50bc6e7a10b468fcf9a0a87a290c4873897e49791391c", "0x08d2ca5bcf00e9769dfc868d1c86f288e40a31ca8396852f3977369af24d70b7", "0x1f5bbebe4a188434ac69933fb8df5050ba89070879978fa4b7787bfae7f83b56", "0x11a2dcf45d740445dd1e82ef88829813555acf76a219024ca7002501240a0e43", "0x2a8a12e68b1fcba10e0a6d1a86c14a10d26e3c7416f36d62ce6217cf967e1c67", "0x0452848d3c0c00fe60d721380650c849ced2cf79d3044820812223e146647f35", "0x2a47a54f59ff22745597acf600754759113ca7dbaf11d9c08f507c46a9aac9be", "0x185bf57472562cca45f87ac1b1ae8122aec58cedb831281c51f3799f07e72b8d", "0x0ecef6489e709ad5c587636b3bdd9c7b6e85742175ff86ebdfc53ab588d6d8d6", "0x1608b3e2624ffc2c0091e47e90e5ac3c9962713c6a13683fd5531723cbb3889a", "0x0d3f60746bca57e5c968372ec0e987510a647f2e7d34415ba37989dafa94c60a", "0x098ecf0484e127aa679523cad148ea227237a8d9ff9dd8d8f39fb58162c3bd61", "0x302f10e11c13f3767223bc501a5f9dd130fe517b627f0248f789fb7b30ac105d", "0x0924717fe7babfe9541b3386fa40455a0177c69731baf22c0982cf76278899e2", "0x17382965ba7be709d54d70ca3e13feca23b22b9e6e5a918a9f008f47cdbfa885", "0x20d30010d977f9d912be79737775178aa841d972128aaa95eb7b27e160c2d2b1", "0x0594bdb78b3b69993449609386a251fa14ac536c37ed01608489ac1c721c0706", "0x2ceec6c13c11bbd47664844320ccfdeee402e0af2ec8068796c7c3753330aff6", "0x279fada83f830dfd97b7288e670459dc078c76cf0637a8983c0617f27b4b3472", "0x029d593a3112c3bf57ec8ab687d8398fc276fcf1d462a6822892738533fb450e", "0x07175181f0554da6ffea4a860c03124b8d50c3ae5b59a167e5847ba33d19c050", "0x1280cb7bde9bac1c3d7f557f27a5acead6e4a77be5dc3e8221087e4a6ce23ead", "0x1a994958d44c343f59489056b8cd725491ff551c0f449697b546c8dcfcb90bfc", "0x1f004034e8810c1f1de507b7eed842983412ab8473e2b00fc75593eb4e3f5509", "0x0405fcc7b759b8ca30e9273814efb350c1e52542d338f24c47fd99a94207800a", "0x0b872545cb5ccc73d220bbbe01fe39940e7a8929b084602541230807dafb3c8b", "0x2819facca2cd6cc16a6aea3191f833c2d3729d477c73835ea553be5873ce2730", "0x22e725f6cecf165754ce1a52ffbaea774d8e485d66cba799723253b26b68c53f", "0x01d122e4654861c4b3f76c3bc49529a8c573c7b0d4d3e79c48e3a4bfbd62cd1c", "0x1ed4f564d147f3faa38336a0985022d537d34521b511c9360bdcd1b29f89a2f2", "0x2fad9912c4caea5d440517f0e5688695a4d16b0e77b3dc3fd87f869c83e5b9dc", "0x2b5a8561f0dc586d6e3bb83ed5ec3248ed0c09f9b30352471f2b0b80321deae1", "0x186f4d63b014de8c9ea7ab01a79abe5b9be3808e6ca8344132f60f5595a33d57", "0x1ae5e940fc5d1295d32457a840581c3b8bbda0115b66f7f7ca429824faee4d16", "0x14afe0880ad92f816292a452cd011384632d64ea1839979d3d67d405af32778c", "0x1ac869e754be8b071a3ee9c64af49096439b98f44b15a8c6f4f5ae8b75a3849d", "0x2dc29a1a317499b43a5a4ba1b36cac1508f795bcc4431bfb0ea7028ef2fd32a9", "0x2ee8d03afe43c2b88599f0a35b90926ae6510637e2733ac0f6946d908de51312", "0x266d80fb5c10b2655e141777097040473cd5a4deda9225b8525c94836dd51eb9", "0x2e4d66f6559483f76f1f55682d1edb56c8c3e14dafb6beb3a02390544e52c22d", "0x10123aed5142580dc67408e337d4c773789d93e479e4fb44bd73218cf3db7500", "0x19526f25b7ebe2c461395e66f866ffb80b2992d53883100f0dbfc67f132a5a91", "0x2e77d96a8736e6c38fb67b935a55832b511a4ad8d86621f9bb313222dd37d656", "0x09f2c6c969d48ec291576bbcd917fd622c2b98ec21bbfa2df5d57324ffbb4b18", "0x0dd360058171b02326c9e4c4618c8e194999d6c4480081fa738878c3e1b11e57", "0x198a52b8282cad7eba3a3800b59a794a2c70949ed966c86ba29d9bcc37f29365", "0x17eb8c8e8003d6b93783e67bd14d12a9455684cdea4ec58d76a83a07b428dc47", "0x1fb9c160b09797e9d4eecc79c50e2658ec10d0f38ecefc1e3e8786b95fdf9626", "0x0202c3b6495a8af89ddc6e3fbf4d66d73e6dd13f8aab893174c0cafd78c8a510", "0x114ba7f12c0e1a3b12c2b5291bd8141bd50dfc7000465084a701f47b15763083", "0x019ad3e86ad82a3765aa64ea022d1117e1c230c02a6ac90037895728f82b3347", "0x254ff8ec9eca4d3fb26c72cd63a7d4e989bb1b9eba0d8bfcf7713dabf7f64e01", "0x0be8c9b5aee37efa93ee79b5ffc00e8b772742c601bf8f230252925ad2c9a702", "0x0c71775341a98ac909ba1f26ace40de8a56330931336abe715d2c1eb7d931ba2", "0x0b833ec8305c2cb5002b59beb9e58216a27ab69bbc7188e4302131e20fee9dee", "0x174aee31c36b81a6212b9d446065af8800a60cca5eaa1b16fec85c2e2ff974e1", "0x17831dd406c7785a5364d3939277da9eb5b6dff1e56fa35ff18506c64b2a8b95", "0x121e1c1bdb7e4a3574bfd1c3a4cb3994ac4936ff54b07caa0a7ca53cc09dc445", "0x0fb2ca5d37066fd7292478917498f8788bee33d3ed4904525a4145bce35fff1b", "0x1c131cf8a1d5440337fa13e595cf6d42c3016049ffac09957e69d0b4501e7ff4", "0x070ee4b2f7a90add1355f9cdbc3a557f84aacc648634b0ff48f83de4f76a5856", "0x0ac05c9b13d1f28281053b12af198776f3c9135d48f95d67c9314b2c48ee0dda", "0x0c95a176bf9b37e0eef92426ccfadd296954c0bca794929225cfdc4278961574", "0x16635a13512870b72fa81e4648421a2210c0b29bfa1a3cc9f41470a91884445f", "0x0cdc33eb19f21017be8a4cf0b37b6b12f801ea5c4cdb77a34cf176ad85bfa6ed", "0x0e876459770109bd315fd932ea7c69c96cf314e3403d0f93fdb3afd64a150472", "0x1f26a00bfd677bfe57b879c71cbc54ca913a4791d4b04e30437670966d840037", "0x229a17692c8cf3377225426ce0cba5d61ed5f7dbb5a31dd603eadfa165bccf8d", "0x21ae714094395df65267acb6549d580219c449bf86c33eb4f793e0747a6445fa", "0x2afbdd235c79565be2f6e2cdb1d527bd569adffece0cb39fe08bc9d0ec2ea2d6", "0x0a95c11af3ef7a0c585ebd2068bdfab2a1329821a17baf65a6a0746b38a4ac56", "0x2ed822401a485a621ee0b04f6f7b50adf796d225e3eaa587bcbf87c4ec0a19a9", "0x10f52269c0c47e3d8a4c878ba77b098d1a7e913fcd58f8a1bcd4afb520ae01b5", "0x0bab4900dc219d1a737b11c61bde5da6af375d36401c121e8ffe8535dab67482", "0x0f0f8530f0310cb2f6c999ee2dc694329a957946b2c761c8505ececcb2ff2237", "0x2015cb8f32acceab144d968136e87d67cc251752a9364b7759888eb1800a254a", "0x0660194d882e378a167b870ce7095e5ad119f66ff97465dcc929cb02aeb602d6", "0x0312bad9275ac67f2bb34610bfdf3c6989e89ef18bfeb3a5af5a3deadabde0e8", "0x05cbc68e5b05a1fc3e784569ef325011f839dad380e8e07742dc0af514804938", "0x23e6688ad84690b2fcc1d166fa6721105d36966ce9a384a0f659ab02a7bbe01d", "0x26201713078d367d68a33ce6ebb82ab55b6c116e534c85043fe458cf4d1f9120", "0x2ad17744e079b70e3175ef0cc86ebd7238cccd281148038498c47c733baef3f0", "0x00227b2456b2df3801ed64047464250e81b3bc1d20f3fb79fef34d38faa39773", "0x1936c25ab78e54a947a7452dd65c04739f52df324cb481eb9a13067364a0fdd0", "0x2aa9d353b8afaebffabba8ed09220a8121ef8cd61ad2c20cca4fe8d5d65772da", "0x2c37de8445ceb0e6e16551a08251fd477a57c36d493708f8f1503346e224ec73", "0x0b6016b413068fd8119603ac0ae0afdf94284916ab9582732584857312fc6228", "0x1c2da4c3fcb0215aef82e75f67b62db57f7e261792fb69195382b8ab565b2814", "0x0d9019e067b8a2dd481299ac904a14cb516ac0ddaa177839581770a27616041e", "0x0add8f2e12999625d665e7ec804c259862b99766997a2754498f1c10c708f516", "0x1b04c94fba0160faf1a69ae28901f6e58f265137c4e6eaff003dc34cc06ae9a2", "0x19b58c38a368d1bfb49de8aab145368123817e15d06bf1d887ca21feee481b82", "0x268512a6191579be4c51cc8bb8b9dcacd4663f69e60f295ed750430f6f7fd7d1", "0x13d268b42c3385b68c54f2bcb9f72457d7ed9138fedfc85181a048972d34e1b4", "0x2cb0a99448e388e04f5de4c9cba52f97b9c4b7c7486df3236c8f92e16200941f", "0x1f0101328d89d8c934d72ca36c83de0f0c9eee06ca36c551d8fbeea255cd18ce", "0x14262fa1b33f7ae3d7666719900f64a1387103ed4b3e1d995fdced66760720bc", "0x01364121b3d6d64c4ccdb10584b4bc6b0f747bbb66f30d764d0e60a796d30a5e", "0x2ffda5ed3ea18847ecd8fbbb951e83628462e15c24637a6a5fc443cc6445032b", "0x1b6a9f9c7c09354bb8f206f9fe4a9ca8e95c6e41b2df2945d2efeded3199efc3", "0x2954182782b8a9c2aaae675e5d8c81a38dc9d2ea6462f5e86d081770bebfd2aa", "0x0cad57ec1b88059bda6d41d957f17178beb8a932a29b6162675a6fee7dae1574", "0x29d6f606caf5aad785e9677fbaa1f8715b130e908aa7a5d6d88e08b3b8716492", "0x303a687f559ed6e770c9a84115ae726643fa16f4a9ec5c240f8981699f2f8c7b", "0x2318a5a800de467ac7406848d22ba7e2f2ade1fe67df255cd62a27cdad188086", "0x228ea9efaf3b18701d3aebf00c7432d13a6760e73767cba67dbfeac461d0a8a8", "0x2ed4c42bf04aeb7873c2fa14d564658533553d0cc8357cfd2c4dcf543b229be4", "0x1dafc53a1dee87dc061e12435c932ae1f4d4f6cce57d8e4f030eb7c0ed347b86", "0x181f880921711f6128e2dfab54440c2087ad7d0235beca496dc61aeae235db3a", "0x143fbacc8b948ff561d61cff210e8af82a0a500852d84ae29d8410e4d2dc7e1c", "0x06c4e0679e8b4d1b8249e09bae2238b91616a42094c69be83939570a4751e093", "0x14f7cda89bbbcd7cdd778ff878c8df66e2997ced3fed3091fa0b259c743347cd", "0x21b40bdb3db178afb97e6c8f509a3a54e4970c702a3c96e2a680a3bd9cd1159e", "0x02233afa3456f472cdfe3f610d0612f0d74ad9842d0ad08b826916d3a3b43bac", "0x195838cd762c2a0ac237c6bb111d274bf80900ff6b4956680bde41adfc90110d", "0x0982b8802216422f46f29c0985967102048b43b53e3c8d1e558b2ce81627f0d2", "0x011cbc741c1bf48f7080f491c26d116766a8bc51d9cfb6cd08163e569e5f546d", "0x04c26770bfd30be7f086c9c707f29e38a22ab6541fdd5d9491d613d3fc36d64a", "0x21da2bd83ee80170d4cb123e322f86c4aa2f2ebf85cb97bb19e8d7340ccfa556", "0x1380aa59b03b58c68d377f62ee0b3bdc06c1b2df0c68d503f8b0a95c17239ba3", "0x21309cec6120b32041475ba9bacb7aa507578fc7d428bb010fc06f0ea36d0762", "0x08792ccf88cf6e450d137ed7b5496295f3f9cd6376454346fae4717f7980e554", "0x0aef0f9086c9e942432200e8b59555695a4f531e319fd0d57f1881a55e3a037e", "0x0e0b748d5856936b3fd8f2eb1eb4c2cd2b8b8be4d6318a82cad3e0bac505766f", "0x172fad32593c374ceef1a42abbd708565d3591e8032c517e4595f3064155ae8e", "0x26f5f9ce4d72145d3e72c42c974ffdfc89a48c511bd760b3d9db03b9b105c4b8", "0x10e053336934904ff6d7b672a3bd2ca58728e5149a9582a72c1c309efcf7a407", "0x1f01a98934ddde51f300d542d1fad8fff4117471cab015d4146b05f1deb04116", "0x087cd7a95fdf5fb9d7f0431a0466625cdb42dc6237fffe77f5ba14c6dfa1b393", "0x1f9ae8ef71dbcd0d48a124bd265d37cc0c1018ca0b45e7b43796b045f65a7a55", "0x1571a2b0a25158c0c5d297a397715b00bd1c5435d2686c31618d4128c538f0c8", "0x2322fdf2761e45f7cf265e4d6272519626de08bbf5e71af17069df29497a5838", "0x2ca8980f9fdcdb1b35022e02f6be62f19355ca4b9eac9b2fdcc37df2ed0264f9", "0x1a8881c334f39420d4672c5050f45d9281424eb61545782a6c17040dc7d38048", "0x1f319a0dc0f9b7429e3ee9bed57a96a0f2f67cb5fcd92b1c9cdc97a15f7761bf", "0x2419336f26dc5d498f279af95b4d7d1211137c608eed29b5c9510695e1a467c6", "0x1f514d22f672cbb16363befa56678778209bd257ca117b5141b29e06e4bd5798", "0x28034a6c901cec4c56675311def10fbcd8088f2f68f795d3b35519bb1fbf1a1d", "0x26c2b92118cd2704063241fb919806a0fef9814c87b071d5a11efc2cb1103cf2", "0x03d539ea2ddcb358763861791cc434d1eefe731ad3262eda857c56a06d9cf8df", "0x2206f49436409e8be8f542926d9e299121b43210e71dd7970fb4283337d241c7", "0x0df25598607771039fef577a6f6dbb610ceeaf204eaac7a09b96ad22de683467", "0x283a898de5a21465cca3213af584b7f56413a9e84b524431436d0b136695664e", "0x26ab264e89611039dc9cfd4b216df44709b54f2418df66545c30cb93814e446a", "0x2210d7f2ef43e229c5631d4e701ef89ffdf1aca64351791e0fe7eed428493c8e", "0x07da0affb47d64b7edc682dabe5c6db224743b5a385d04a2474d52ffe8abfd09", "0x02ad8280ae5cf82936069f72e49010f8d1643cdc299f12ac096fd44c501ff9af", "0x267b89f84f4845e3924565fcf1a54e8a3257fe8aeef515f86cc1c0056f46f6aa", "0x2d46f5c35e5a81cd902f418b4b93f25abf802d32d52da054a5edeee276148caa", "0x20ae8e71570f8ae5e655eb42a4f274650226af1fe160a96b177854d736f2bd2a", "0x020b9b29a5644790a5a31aa0a724fb578f3650590ddd164ce5af593f43c798f4", "0x1390c1d95991972b3b8efa1a367383ab97f4714396635e8791395937010ef0a2", "0x04973b4363f1f55da12d4eab985012d32bd80bc0adb90216aed9574da9e97c58", "0x25f7a653fc5aadc4af0fe534953bc88307a20e941d7c686bc53bbe324d184cd3", "0x124d7810821f47782fe6bf64a7c5eacf03d559776a25e2f69de28362be180bc9", "0x2f6f04909dc360d1add503953c11648f726eb0f612f703ac1e378603d33309a8", "0x13c2cf1b21b786238faa93bfbff5c0921899ef1ab29548828a375e4bc00a1b52", "0x084c200f10eff59bf43cf3cc3a506de500ed68e59bce5cddf1137ec7d61a4ea4", "0x053b5ad5902dfb5ca36d76b2f980906b14ebdc4721546a1f5f1e9741644f2913", "0x23bd4498b4c0c9f248822f15b5c88bc7a78d528d3bd3e3d3b27af6033afe1262", "0x2b5ff61b0e1fe18cd84e352c417ab5b836683f28df1c16e28c08bc4fd269a99e", "0x28f774b7936bc5095e77eb655005ab8767aad076c098b8fbba8521f18a2485b4", "0x0c7f6d2ead683772565984ac819dc2c8326cc4d3b18f6339125621262128c845", "0x1e03532e35111565173f76b67ee9c713953757037b272b369b14bb5d22ab6433", "0x1cdae1682f2c10e440de32eb51726d9db76d07b6429675bfad7e778cc0bee076", "0x24de40666f59de97deeff6d34c873b7c2498f022b856c551fb4ba6fe033e4e1a", "0x0fdd0166d15c0f4266ed7296dba4b639040ceaa6910683ee44d37b08679f4825", "0x0318ee2254c3888ce4534d9090448b7a862afbdffbd4470dab55c9fa24f50a85", "0x07a8d19a1979c8fa3401bfe964ed5d3f3eef19d7e4d0ba007f3854b4904c5f37", "0x2846f15a121456f0f74b5072112a90ecc56a48d98a7a07f30eb553424a00b27a", "0x1295ad2de68e05b113031de854959d9858facf448ca101405407aafc1fe50496", "0x2745210ecc2533017a43305fcd13078d69443d0dda35be2ea50fc485ff8f1c88", "0x0dc27f0b35fec0e0ff8cbe131c7ee42a228d889cb8254c4900cb56ea784919b2", "0x09780925cdb1429cc17c1e70b0b43755e2e70602994e975d34c3fc31cac19839", "0x2ef89ecae1006a20f739aa4da6987bb866d6993fa89e4a2fbccbb9ce28ed58ad", "0x0f6feab3215156ac3f878ce67c5953dbc4e5ab3d131ee958275326ff94d29a54", "0x2049c1bcb035cb59a2350bcecc2a62f4fdb658108f059bc38c14098571a87d22", "0x09c5298f6696836b2a6544c9ca1c0f6448e0e6e4e0d4a8c3aa7e635aed20da45", "0x1d48ec8d786be28f71bd71994da04f787dc4b7792fe258255af742b348e4ea64", "0x0766ba3f360f9cb8d27593cee1d890f57350c235096d9d05633992d477ef2567", "0x18893956ce600734714ccfebc44f67036f51c652822bc0c23797d73a93d47493", "0x003ac5e6a3c0373c58379bf38c87165d716aca05e14ce4729ec91496dc74a1de", "0x171f4b3d04a6eaf7db0b86db0ba5be7d4451b4ea0a1333bfaa31be8f50da12aa", "0x181955a3fed4ff19d90d947c2f157f050db34c847f59f5f63ac6c03b55383aa0", "0x15e503ae66cd37b3a58ac65549aa1de59228f5e5aadea7035169b9801e58a800", "0x0feeb8aec6c963774b27f86a55b4594d54b4b30955e358490ea169738f9e6169", "0x0dd9531f7a34f1a001d4ebc74cb4ea4772b95519325d2989fc933035c68ad37d", "0x219fb59ac221747972bce66f78ca33c9bae38305e11ab3481aebdb9ddb4b2cb8", "0x1fd60dc0c476def3b624c219b3055373d73213dd925e940bf55ced88231ce09f", "0x1f8d07ef3e16cbeba789241956211cfa595452801f08c876c2525dc504c520b9", "0x0515741548eba397d14e6269b32566615d09447155bab001ac6ee205698f16ec", "0x2530b37d2dd1b6166039f29fb1d78e90e9034cb6e9b653fe7428d768f8e9b2d5", "0x1602e869d50b280951eccb3ce71715628980d648390e89aff50e55a1bbcad4b5", "0x233887217af672bbacd873f1285a3612796b0cbf7890463ede54882fc774cc7e", "0x1849b3aa9e7053c8e95252858980abe8f1642ec66804753f02ff63f0ff21d648", "0x1a0049780885e0827447af9ba9eb9e658ffd62acbac998f6c1a80dde5aedc1a3", "0x1ca9cbfa808ca9c85559425af31c0aec3e5934b6ab51a2ea2549fbc2e7562913", "0x28a2a0f0622c2a8e4f16f2e0365b72b481312d8d5087e2e58ae89b34b8cc93a1", "0x21d1beed10bff96ca9f615bded99674a7331a52fb3566953e6ddf9eca280153e", "0x187114f2bbba9a993297bd740c2735ef01b85abbdb5b47c41ce6ecf2fc7edbe3", "0x11d0a386775c6e670a360a6fd957c403b434ba13f72cedc39d1408bfa73fc06c", "0x0ff4ef2f46abef24ca15d8b389e02cd3944d1296131b6d2dce954dd11d724f65", "0x20338e47b520d281448f3f8bf008aa743f74c5b63f98a630a00108464bb28925", "0x256fa0fef5853dc10aefa865c5653169397d545f07584eae65e1b3e50fb6a616", "0x144ba3619d5fc9d84f0632df296e8dea5017329573661b69880c38ca45ae3189", "0x298498c8df31dd315380b3651fe9c7ed5aaf4a4950a66134bc8b6029472a3564", "0x18caf9e264a32dbca23da51a3514fba92fb62f78ecc2d844557355ec8a43b0c1", "0x194c812828f1cdbf0c4f0b0486afb4c5d96ccc218b3b90d04bc5f1c8665ff641", "0x23f93e1c44119ba856a10380c2333191b3105f502a61eabdd8b1abc803c04ae2", "0x25d2cc988e47ce70fa99cf18105000d3046717d839af547edc3de931969ac006", "0x1d1083600023cccdc7daeebeb19783aacc6e94226d00c7ca44dafd755614a80e", "0x1943a9ef811abfe657fff92504f2a8914f09dfdd5b979911047bee4b698004cf", "0x01f96db1392a3ae5cbfee4c1863f0bddfd95a652993c8f17ce18869c261bc6c7", "0x12d4814ebb315331d4fba9dfc2ef909cd77b1e7126c9e6258a3c9821d663d778", "0x27a2ad69b9eb5697b85b431eba85dbb19843f3c7518121aa49515a65ee552e30", "0x066f7f2981ecc4c4415da62eabd3230424abfed3567121f656e8191a78c5ddf0", "0x16e298f60b265f06f8ec9227e54e8bbcf2b4823921deb44f063c92430fc40a12", "0x1c10ab39cb04ce02ba72d996049ad688961f60f8d9821d1716c5a6a2fe0a9734", "0x2cd7c8a78dd99aedc18c8d47452b4d5b2e9c5b2128eb373b820ca8beec970a73", "0x23391ac9f29c1a99ed6fbd9bbfbe72b488569bf9a207addbd4e30a3a8b97311f", "0x3041c5599a51eda33a6398eb31232519797b00726702a98a319c7ccba9fed2f2", "0x04e64908d79f35ed77fa8196f07a948c848512b534d9bf4f30ef093c797403ae", "0x19251e907d7a903bfa7bed87eb04bd921dc19062e4ec3abc9e82b7fa4e25be6f", "0x1b39681c2c125cae8d38cc5ef6fac252f4f82374fd5b9059614ecc134f2b29d5", "0x217a54dd68dcd53e336cea49d89925fd128fee65bdca131659d324ae636696b0", "0x2c054bf6f91776020de3fb9705ba29e0df17d7e1afe61e11eda8caf78762af3c", "0x1f88611d6c0287ce53543d87ed8182ba475f6e223989eda35d1ab746275fa4e9", "0x204d5a9829d570e203bde491b862a96979d71e480ebffbb13c4cb3af566371cf", "0x0eac95c688afaa773ace4856252788170baba69a6181071d1d1a4e0dd320b4b5", "0x2245a0967d777ac5160082563d5815b44ed0ff9e4305c65c503e0ffebae5dd2f", "0x1b732905466ad921ab2430cbdf772a816d1ced4dea6818dc3cedfc67ffe5ffbe", "0x08caf1a4cd826d19e1c27f970cad05b2d49931bae369b82c30011041879f2894", "0x27d8134423cd987b249f4bedc7773fb7b7314e8c83d9727f3a21d0f162c561cd", "0x09a2ea37b3d739dcd70862ce62a8837dd267c22a29eb050ef246edd84f48f9fa", "0x1adcfb436b238f7461757a9665d2dccfea1c7352c59e5aeaa8ed24b8530bdfb6", "0x2a2354db535feba0800ad6659761f29aab31c142716e16779583c17d3cbcd700", "0x01031b876fc704c3296bb38110b87476f88f5721a1132ba71ba0dc4168719a6d", "0x0b85e9fb664cc3b4ee539936f885885ae543c606fda007aed20257c8e4ee3597", "0x18067bd085c60da630ab24cdf419afda09778912d5c76ebfd9df7ecff6207186", "0x03771dbe5c3340fd289917d6fac9a154b6d55d63557af13d9bea711aafc5e1db", "0x03a120381b15967cde1a33939fca7830caa1af1fbad6d6cbd4623592101f1f77", "0x040324fbad7390bd98c3553232cea681d4b18be857931218fbbd1d394d67f781", "0x294a9378accf723c26266df89bff1a2bdb710f198de168890dfd73acf786cd98", "0x203d8640466332ce0c493396731a23b85f77cdd95880c457dd9cd46e99bf0f25", "0x0d339481cf52ab1f652ec8967a89776e92b6aa12056794c9dc856fc27ec91ef8", "0x158be4217747076a28aa6f617c7ecc6045c8ce5c484aada197994b618b37cba0", "0x2daa17b35ac2ea21eda36bb06db40a7fa81fe60cda556d73121dbf17c8a05ebd", "0x1a2f7903bd643c61cc5eb68455202f6613c9c03bc3c59a8cd7f8d10b0c779210", "0x1ca7835f4f1c5f35aa1e0054afb114769a82474b2f9f771227f022fa762ba56a", "0x043ab3c95b64cefa7f97e1e8abf9db25d64c2213bf44b01b0005fee067804beb", "0x0eed1694086cdd6dd84002c69365120cc2318283226eb7dbd9c1154e5be774a2", "0x031b726aa5dda456ffac29cd38b64926be57a1b6c1fc593a50e7e9cd384f7ef3", "0x2652cfbf90110f7727750d68eeab7a49385886953f75832be375c37ea9ad6750", "0x24a58d087af381a6f27b0655de795b6a7be734f05a4f4edef0572279a28a3bd8", "0x1b04d3e92a338f6beeb8091382d93141b3bb3d033294413a398da24464272a42", "0x290b9ee02a3a29eda94ce08a6752191c3c296cc2c044edbbe091172360b24c1f", "0x2a012d2f441545c914d25d0cd28fa8104cda2a080845c79cc7d0f39146b0b358", "0x01d4e5bc180cedcb8ef0a59d25498a542e324cf0f7128f707c433eac1eded47f", "0x054659f012ec8b757b1d2a175a9fa643e963238c342264ae9fc39a69d75462a8", "0x19fc0305e1e5b2afcb86a742152ba895ab024ac59c7b57e535224ffb807dc720", "0x21d1fd0c2affce674ab016661a216f0615b5bb1f3fc3985e9d74dd71ea86ad66", "0x26956d93f01776d23bc7f1e3464992581adddb48176bcbb03efa853ab09c3b17", "0x2403120e5a687895bcbe57b5b11fba0d963eb0c863d8aab74112f512ed8ad9e2", "0x26684fa9b9548b08ac79e7a14bc28f8d47650312f0629a40bbccdb590a298cf3", "0x216969c221bdc3daa1c2adb9be456ca19fcb948de9725fc597ac626968715c18", "0x06d4e54362d5dc7cd489ef466713c1b8a703876062ed0366a475ae9ac0776c0d", "0x10c21ebf642d38aaf3de15ac4a0de3b71ab9788b5904a78326ef099a1eb953fa", "0x0a4b8e91b02da94aa621acff16bbdd44f079d29b2034a9e1dd8be270e7e3a803", "0x2b1a5b52b5f1c739f8e167a8561b7c5a567fd449b61e4aaa2965f3177badf7bf", "0x1e858a1edb097f168f10b9130e51d5a4f3b55da7fad6896298f14bb7af4e6356", "0x28362c3ff6abe4fb017450c7dd344bd4e08100afe5a09cb01877265967aafcd3", "0x204e017d42e6b32cff2091368e344201440854761a0cd463766041d7e38dcd44", "0x182307aa6e06bf1b20cbe534913a0b561e310316e23540f35f1bc9ee437e92aa", "0x1ee400aed2b9f1ed67a8116438ccb7bdb8d179868c1fd6a6dd9497744ef9ba9d", "0x288590acd331f4499efc2e7e8aa2656e64cbf0a68c7d928c2220db643db9d410", "0x008634f649b3d25022a2125f5f300d2cce2cbe122df4f1c51296e6b65fff1795", "0x03c462cfcb45169d9cead1d0715c8cecffec77ea449a20882aeafa4aee274e6a", "0x18fd54d4986a2e7804cbcb77e6812c06e7b8e28ca51ae323e56d9094782a30cd", "0x01b9efe04a809a43c624c726e9294bdcd3bd1e97cbded742e2173d3fe9e429fe", "0x109ca591b9350c71a7f2886c6e55628b38206223a57c07b2a4490771c921e2ea", "0x0f98134e9077529768e4ec3dce4b62ca6baf8199d78c7e35f451912a80fb1bfa", "0x2205834ab1c8a66de1bc766adee18eaf689a52beae8659ad4d0b437bec229526", "0x292a6caba071b9fd8fb5f0e46dde4d711bb4a118ad0c67e77a7637544bc6c21d", "0x0f218ac63a89d96ea37d62ea0387c145df2f14957bcf5c7b5b2cb9317a871740", "0x21393e5f2e1121136a25f071465cb85b02b2fe124a8e4ea83181891a710b0a50", "0x06e22d6946484dad3f4ad0da41be11da2aa5451fc7f4cf6cc5898278a6747bb9", "0x1ec8117c5590074a29a019140efd1c627b715fc464f1d7ac9d47f0979a4c59c7", "0x0e6f5d2ef82945dfb392e447138bc94c32bddb72483055a0563444a0e4f6dd70", "0x169abfcb3ee96d7e02f9711eadc0a9e24a47a2f9fb1121cf8c6dacd91a5b32ca", "0x2d1dcd8258d2c559535ec62861788dea60dd42d7fee0cccd20a6ae4214d21990", "0x1f8a46cec465bba964496d25caf9a351be7d09a628ff97eac4fceed7bfed5c45", "0x0ddae5753015e7c1f3b07dae4be7747398c9b98667aa13f80f768a2204620b28", "0x1d961204697279203f4721dd0858244f2cc64c5cbf1a4bf1077a042ebf11af81", "0x2611bbf19addb97f4b761abca43999a4b98d758bc74ed3719bf65b172635abbd", "0x2c93c5c5b057f52c0b3d54338659f05d1566d028c1816bfbfcf9003593b98190", "0x2a926fd3e066a9fb75f76fd02aa9996999a090450d11ee1a87a1e0e65cd287f8", "0x211dcee0fee3f8571fd96f2b5c55de1139807fa69fbe79216563f6c5709f72e4", "0x2b7ddc28b2bc2d2718e9d6b4c790d55834b77906de2d4ce8b301ac35d33bd761", "0x17ba5159321a180ddefe96bc9d0f9ab7f44bf2e55174b6a09029b9e3fd83e0dc", "0x25e12b63262139695e50a1e96b6480353a6dd6a1bb980c20f91fd59e518a030e", "0x095eca3482e28057b54118da6c45a3f0f5ae53d67becc4fb0ca2e96e241016b0", "0x1112aeb9622bd2e00306dfa76088ba87e8d9cfeb83d756b40acb4454e77e3ab4", "0x1b69507de83452ce3977a83e01648114afc0f41974a6ba962f77da7ee03b2353", "0x18c36a227f30ba8be835022cda0891d51b2049dcecb5261c0244336342681283", "0x032dff6502adbf3eae1edb0aa2a142c2387216dd501acaa18a3565112c3cef30", "0x067e9b2df10e463ff4e65fa21d18b8e7b5c55d217941207850d984c264ea64b9", "0x186a8c1ddfd9fb6731243a6c190d74c258076254fc4d851bb67c15c855da68c9", "0x25f12e0904af730ec68920122e8d7e83e6db7e0d3818d82ab3f5179652acf1a4", "0x292a053be9013f374156454727329ca30c50781b7f68371eb082974914cc2f8a", "0x12867bb541ea17c532cde157ebe2ff6f0a3d3e83b956e619951cc99af22e3d7b", "0x09dd2a75726a265e98ab42ca0d013e7ba2e15b26100516e0eab737fb70049b56", "0x137cfd0054dbae6b635b4e4f9e6175226e5c95c45e5b2541334f94dfd93b220f", "0x0d14636d7b7afd1186f0b9d5c8f8ef551beac7bb2d36b25436f04bf7dcb60de7", "0x1dbc81002d8a5cae1fd910532f08a4323c35781c2b901bd722babe0a5f6dc613", "0x241057b0d9977eaa50e04ba893702ba182cdb3388cc632907f4c2081834d8da5", "0x07ca75c9d51c65bfc2ca99c9c773bca2bad7b498370b5d50e275a88cb6b06339", "0x15fab6f34ae8d22bdedd760610dd463d881cef8ce82fe4a0c0f860502f6d3cc5", "0x0cf846e67ab815b7bfb255008733f8b45d83938e6eb0dbd19e6d537eaa581e00"], + ["0x1512df0135b6692589f071140a60749cf775c642b300da2fb4ad5c6e23ad4e5f", "0x2b109ae037ed30361cf6544b2f4ce58f356589896d6a8849482ed3f9b66e1198", "0x02585bece06eff553d485478a19eb149e2111ae4e1ecb1d61fc10cfe1c077f34", "0x01ff896f4c0662f4b2ad926741b481d03b813a8cc343b9c2d2bc4819c70b2f3c", "0x1b0caf02f434fa3d4cd4fbb13d3116ac8b7386a5afd6c67076ecbc3704aa45dc", "0x0fcb7c9f13c85517a7805894ac82b57c06f2f153a6f51f60f8e508684dfe5bcd", "0x2dc2bdf7f43812e39cef210e42e92b4968ad8bf554541182354504d32cbf9954", "0x05add9df20c1898da46bbf74594438beb07c9a65635c90f45c0a08febad13664", "0x21cada6641664daa997fd55ace8b88191cdc4194fbdbb6ca5895447c8a58859f", "0x19623504589a60f058b04489b153324d16ed66667a04df572b103590b848bf04", "0x1776442d850a436a005e02c6475b72fd2d5f84452890c444162848ee1d57dec2", "0x06c1691fd6d2ee98396610f3c868d70874f24eff853938d87face89234a09a98", "0x22c3aba15f3a170a1bd11761cc21794a7afb348a45d85e30bc5227881493f45b", "0x1f77b18f06e1458877c2b18cae4e92c196c0be0f779b9e63b06c48e90b0274fa", "0x226c3dfe7a6a67319c1dadda1b4ef04e45f6b80a78ddb0bd67e363e63b85c546", "0x056efbe3aade68e6886ab92e98a3d28a68ca89d2fb75706f6946a0081f01f621", "0x296406451f201c0d09587b7f4e00a7d0e1940260d48313de807fc2df0f755d7f", "0x2000e0b6012b20f09df8eed25b095bf22e75e2a9c87e478287700b593356f84b", "0x227f3766b6642d44c6d836a17c30cecff654b544ae8636818db8e27db124ad31", "0x2404641b2f5dad9722542bf151d497e9199807249b886c975f26385dfb254a74", "0x037493ac64d1deb34b9b83490f35170c4212d2c30926d4e4efee57baa652ba7f", "0x18ea07488f02c6925f4b01d01b809c9a6325ecc7d9c790922b68ce5e7941595d", "0x11952bfcba06442b3c1ebd959f1d4c51f982f21f994e105c2578fc4afff91c91", "0x12be2a32f27a4e203517ab2028e65b949f896c5becfe57e24c0af04fac720544", "0x23e8097f69bbe45f02faec5e26dc523a02153b9ef9e8bb9c5f179dfe3036c358", "0x0763fc4b7da94badbd97ba933613c3534ef21536ae7085e123c8d3e23235136e", "0x27a4fbd1c43e0ac15eac974e0ce2e25344c46c3232ee713141938cb019b3f907", "0x2dee4ada593d756654dec12b86bfb041ad785a56707611fc4845f4d849e7f86d", "0x0b5151d0ddf61b2291772eb93a4e3e211f52124338cc70f3d1ed95b0e9da3355", "0x2116e26c7086e70c806605a1671397d7c073bd016d370ab3cce7c695a7eef96b", "0x0941849147ab2cd8d189c4f8b17b5a9731e55f2d143f0a76d00023a38e4efe5e", "0x2ba07a6f84d2d2dc2f1b17e2352deabdb5d1e3b92e424cd6597c77d9fe672e91", "0x1aafef7a2d2f0516b4ef8cee33b4e8fa3a1776fd2955a878ef5d227d215a8071", "0x19434cc86e2f53e5db3cebfd2db52b402fa26e29c13bc13f315786d10ea01dad", "0x075519c0bd7a6e6fe4bfbdf61addde94db8427580193e2ac8517349805b6623b", "0x12165d475cf1c4baf662bc6cd8744f9aa4914a1d9e53477b211e853eefbde02f", "0x0baf434f56cb6bbd08a0a58713b949b54c441ede53eeb0c4f9a6a4047bdae7c2", "0x2e295b06bbef75a6d76dd10edba1eb93b287261bc8456ed91c2bbd0998444ead", "0x146567927180cac0a771d5830f1431d14cd2445f5da16cf934442e7365847e4f", "0x231d26e7d3ed945791a52013f46d02f5f4e46c17c3047acafeabe4ad02cbc44c", "0x01a2f5ce4406246fbd42a57e6d5ae3b2219261e364cfc1f2a392948fafae1e76", "0x00661cc8a39d60be9b3c8bcd81d91fa8ebf9aebf9829c253385cf9f0e3e76b39", "0x1f565da70f04f96f26b3b36265f977dda09b43bcc8988930dbb2079fb291fcb3", "0x12fd46d935d45a5c8489ae0cb02c2fc0214b40d2d0f3ce442a28d764a9fb0821", "0x2924153dcf47a15be1fa67f8ddf00ec5c816868c8e91b029f4afbd45fc52ed0f", "0x1d4e61f8c6455809e19b563d168b4bbb87a92674346f9fd628ea5d20eba0ff4c", "0x2c4e7acecaca8e2ea9fd849be562d4d5d955864d152ff339f2b2c7cccb4ec3eb", "0x080300849f022b572d62fa787583b6c9b1ea7520f3cc4250abfa8b4b600ac986", "0x193a37fbfd3671dbfe759399d018df64cde45f75b17733294e87596a304878ce", "0x25e2563688957cf61178a5f0073ab7dd28c6bcd12ebbb9a3f0656ea0ebb87c98", "0x1e0d91980c59a652465ce702e4e8de73f9eb4217eae2514566a39db44a09d516", "0x1391b258dafec594799dfa817544e8a907fa794af4a411f89bf5752f36561fb9", "0x12c30d5f593d4b0b80fc8c967c2a50c44828a4175195e47a97cbead60d026925", "0x209ac8a2abb70eb33f20d5ee2b44ef71f2fb317a4cbf004c89e55a9e37aa9ade", "0x0bc7ad09a98b59dd1677ab30302fdf0c90e54506b5084c5c89691a364d268ea9", "0x1a7462cd2353a35701592a1c54fd363747d3022cd8548ab8c838c8c163401a64", "0x0e251dc6fdd76bdbebebf70808d052504204fab54c4ef63159d064d68ec5f36d", "0x2aaa85771e835599b13e6c43c0228167fcccb380aaf7c8e89b4610e586f8f9fc", "0x2c429c35219ac033ca9ff5436fffc49c3ba01a4eb270259f6e9a3f1c3fb61414", "0x011a5a9e38934a5912bbee49d509564c994be9d2e3eb615468b22a72fc324daa", "0x22a724029f009c75b8a4358aa7636d13eaebd37cc79587497be8ffd58b4b6c0e", "0x229236c15bb19327d244457a311d69f07027cd95fc152a84b6e003b841c337bf", "0x304e4b8a0950a39ab2943c3b68eb6f16850a8cee4582fe4a8828296356811696", "0x0834178a75d083a131ead09424b3e3e969de53bb2d20f94010883f837c99f9e4", "0x105cc405ecb40ae3f79cf5b9bd76a7f97a03f9a076f8a1a22c10f4492063049f", "0x2a37b4b65f08c8addb53e8f024c07e47b2885a065a352a46a361549e1f8fa288", "0x1078c0ee085dd1bd24fe71fae426d7d6b9697d94e17a7258757927a864cfc9ba", "0x1be49bbab70ef67a5d4e1706624a22860cda286dec7c3a2c99c0b5f235ed7e2d", "0x068ca82d18b3e7dbbc769a29559b1d87edd0822384d2d4ce9b0efe2c63316f3f", "0x2d8989373a556639e33f298fb049824969a1a284b60053edb972a059136ad71d", "0x0d3e416c0ae12aff59d8dd5cd5dc509addd3f6390db216742c517f2df71581df", "0x14b2a67181fbd9c813c7babc9d1f7a7f1febf9f512c12abd0df3466a29b49bbd", "0x22cfe9304894cf79a84cbb1b6e0b577d683b024f0d5a855d0c86a1bcb432bd8d", "0x1adfe9a64e8029331ebd2fa3def2961f5c955f5956d61b34c02d0b062bdd2a8f", "0x2751b2da7db871ba5fdb40e0bcda7cab5b157b5555168220cf3b7969d613cf76", "0x057f90a4c08130418250b790236f23f3209e88ffe2bdc6a240a812f3b571aba1", "0x0ad74ef09771099c040c2c546719783c39ebafd5ec2a55fc8399b04ab922839e", "0x0b00c2fa7613b52e25e4a6cf633a33355badea435cbbfef67523e3b3b1b73ef3", "0x2795381be694e0991a369e8e6ce75e7df18d38c43af1bc588cdc65ed8e877b84", "0x09177d18cbff59ce67ee76d3d10d7df12fa0bb1dea660c3ceb006a6a3021de2b", "0x1bc77e5718826efce52a86b8610d9480074647bf4b3b9fa3707b681c1a855a43", "0x2f2d128b42d32102d05761240817ecbbcaa03d2fa45c5cb2f82c1a0c048cebb1", "0x215bfd258ebc79352a7a4faabacb30840f7eb357edd21699d5b3261b5762880b", "0x0e6b332b4ae5b95d518e6aebb7a07fb4fc09235d37a4133a51be17fbe9f8274b", "0x272936773fc1a38aa82f7d3172a2477b601e1015ac0198dc2880a21bbac65420", "0x26bc4d42a17a0ffc93798bfbf2e2b561c15a7460e1afd9c23af7ac2a6de03427", "0x2d093621fd40ab76ef16fdf49a7923d2d12c0228f8edb9b86959684611367ffd", "0x0275ba0e2a2a4c3b1f5d718b5b8cb8dcc4bbfba1b7064b6b38330d950cba0e84", "0x1ed6384ca9de788c235c7fbf0c31a59b861a52bff2847af2ab22592487879daa", "0x2c337c808bfe0d2cab544bd9af01f08f916d94b7ce0729a08cc4efb9eeef98ec", "0x2d3e0934a4371484c958df1e97e7f0f3984b5667539fd10c3e8e71246adad09a", "0x054e425aa02adacfeb729cae9df1907e4161302289467c9327ed08e35755cc13", "0x024957fa9d48f942073ef90a54cb0632c89a433ecb236d18f57dac5aff85ef96", "0x194b561a91334bd0dd4eaecfb94f03ebab927fe5787f1723c2535944b2fe6971", "0x1f5f3bb77a487905e3d39b2656b91e0a8223226a3cc0c7a473cfc4a52c74ac03", "0x1b3a3afed7a0821a684fc0d0f9ad9dfa3b557c6542bf7bbc5cf01bd3369cba06", "0x2b96619ddc3b2a292fceb07e2aa80c86ad636ea7d6d4babe8d2947e069390736", "0x0ba31e2d1e807374a710cdbf81f05af4faadce88ead0a1658b0b481406613177", "0x25d7d5bdcb74b92b74a604d6fab3b2f3a228ad23360e4def3919146e8c44fa52", "0x1ca9f911f0b08d1a6205925cde7aa5fd38b061095621152e8abd01654380fadb", "0x1a90d4e090aaabf652053435e3cdea5dea64527e5c841ea9358825e2191b48b7", "0x0caaf3b76909b0b1e1c7f4ec493f27501f5e6f08369e8a36eac406f29c7854e4", "0x1c8f94286e329069d1e80b45787cb308ce214b04999b3b99531d103fd2577cd9", "0x1acd43271d4b04976db5ec42700e83fb151359f9f260a5b9770873e3cb98a900", "0x046cbdd4dfe88c67791bb0c5ac749b5cdf44a3a87e85fc7bbc19b7839647a704", "0x2b4b03cfb4487c1a19d7c05ca15133be29c9d3f3051e4b01fa4dc573eeebc2af", "0x1a9a01f0040a3bea6124946a77e67fd3aa4fc6ff21ff5fb49c852ac59b65e5c7", "0x09eb5e077a7d0110673a617e59369830acdfee50de5823ae0688e60714292b6f", "0x0d006ce7c187ec6472562d212dfc29f615c5d119057ce0c721620af6e4666fa4", "0x054bc8d659b31001a2a529f45640a998dcaaf2ecf1ff8fd3f206fe34fa84722e", "0x1ca1ff244c5106ea88045116081c201c6323698c6b68738166af8e7f3f8dd9bb", "0x04f254de8093f3fb3330dd7423d9d9e17357ccb34a3c18e94019627610cab1db", "0x18fa6af934100cda0123fee0b5636b693692d91cc832f87c76c04bb20950153d", "0x0bc175cd6a0ad546d33298d27d2ce18ffc6995f153f6bf05c59c09a4eeeab142", "0x2e2b792abb6b6310e2cd5b188fdccf53028d6ca70604e36568b15f3408eea618", "0x1216fc0f6e7ac8f0ea59bf7840fc720b37848e6dcb0c77f253e2cd6833aa3af6", "0x15381275074173542cd250ba7cda6d1be6c12c44af2a00a11fcf0787421d8a02", "0x25aa562c4dfb0a38dd92e020b4d6f9b2769341f381de9c27af0eda1453183bcf", "0x19ac9e3549ff20909488ab728a6e88d10a0f634f771742a517e00bc2cc7cbe3c", "0x13c02339462d082f13ecc8ded6b2bcb26a8005a9ab55ef69a91f847e760bf302", "0x1fef0dcd8f5858f240c8986003e577a276a3526c6b45f75403e814a0bc620a1d", "0x031d9be212424a643c6c9bf144d81a06e6fc9d68637a093889cf3c7fee5e3ea6", "0x1a6cca07ef30d34314047214f1a8729728b8dfe8c0e55bea3564928b07de42f1", "0x2d3b9eda96cf186f8e0b5e1446543281931b260a3ff043c66cf232f4909c12a6", "0x07da58325965bec24b4d12d606fb4563a23a130e98eee7f7766a4a3558b5d6af", "0x2655571c23f7f1cd1be67bb24d4c4e7cc674b884b9c58ea8165d2934930d6ffc", "0x2e5ba95e4a2ce5c433f15ab0a026b1abc2b2cba256c61706b6997feb577a42d2", "0x3000c7959df31ee4bfd1118c7ae22906da8d802d9c47855050117926342bca87", "0x10e13d0881d27b08cf5b64ceef72c428ef1084679b539b058c81a17006abe053", "0x2be2a93b372be664eebf809dd873c74122acb3cf5abaa6c215871601b888f489", "0x21310218217a726cc850c0a7dc919d29ffa8b61ff606390b2eb0eca95d4465ac", "0x14d907f470707542205bfd78df274bdf24d8978959b44dbe9df7a7e52114a7e5", "0x05acfa1e857d8001ce311fd3b5d9eb3a1c92fc6e5dac2466c0af0b277816a3de", "0x123ffe61d17cbd6623ed486af0eb8e76d04de3a77a483c662b0b5cb98cd449da", "0x26368aa29474645edda1e155a5cf0df1eec95f4e895650810aa77f4ba7027af7", "0x21050e2060dceeb56367512af3fa11f3d2e6be9b72731255b05be5fee793f880", "0x22ee0d90c7d715326a0383c7abf6824b9d936af296756129574bc79af2fef0a4", "0x0e457467bae8c132f687fc06235fa92a0bb2c3fde1ebbbee6ef83729f25f3c2c", "0x1dfb9cb0002a56e38b73913636fa56e26a3b4de751939d5eb09a3432a3e29638", "0x06c5f60480c00ca60c016f34a8ae166b6934319b81ab4b27beb44a133839dc16", "0x01284904157c07148e61e56297ff04fdad394a6990d4e47a614a00999e4b8e78", "0x13d10300ac391c78f9c215dbc5d2d461b62cfa5a3ac70a69bd470be5d82cf32d", "0x063d65844b8805daa8fd771b07c278404c728b665eb17202297266c422a96188", "0x15e3bf17c52830ed3255cd5c1149f3618641d6e7fedf468c305d08220dbc8a38", "0x12bf5dd5c3caad12e0875e57e19b10752d9651e3a5dda05c0f66e5bf8faa3df0", "0x243c3b797e831a55046ae8916158fe53648e21e939400f9f5eb67d6c0cc094c7", "0x001e28fa9b34c2c6155b8421edd4de58c99d1e5e81e92345f62319ab96df03e5", "0x2ad1dba5506ee064064963527bdecd823cce0494a86ea452d9b4033623f386bc", "0x23137879a024cbc1b4810ee54c7f9b85046734145f334a7cc1e4a57c740c8d82", "0x074f6fa62972968e22189384563d6752e30235da2275481bc6c3b056937c773c", "0x22b10a5253716d165a670736ee243de0627619378edbf751b46bda0b12dcccf5", "0x0c190040f1e4eaa11b4fc7046995989680849177ece7bfef7b446513f9ebe112", "0x301875852c9ad256211b7f9f31ced8e2256188d32c3072c519d7069b0d10db76", "0x1c0f67d05ebfd650d22dead7a11130322bc1272efae98b85c815db6b318dda42", "0x286e9a17364f36946a3d2c7ba0612fef3fac60b0daeb6e973aabebce587a78f9", "0x2b729468126eaa101f4233baaa099d02db14fe35c48580eb3165c61ddbceb52f", "0x1f30f71406a5da98e929062cb48e0a34e473e832fc0ce811c28f09a31d5416fa", "0x259546f8419fa15978ab360084fe0a13229fc11dc698db8bb81c822e2c832173", "0x06e36124121afaca19887a7ca428e12c0ec8faaaf5d733ecc6960bd7aa5d7deb", "0x10f1ce0bf57c0778bf4de60a1e2bac8892de6b7b6ef2f8de911f731494260be2", "0x177fc951f639fcc274b4ee28f3f7ff560d6ca0d9f930f53d3abb55e6d75ad103", "0x1f34032aa46cc08d68555bbc2469a66a2efba23c56ec3dddc5836e2e919cd610", "0x269cd0b774f8625f5de7519be61857cc9ebe06d10610dc91d9f4cc57111eab41", "0x074f437828140fcfb1ae00b38c29a5080f0d0feeb99d4688ff8871f6349f3c66", "0x0396f2fce8cd5ab3d2601d37f80fd9775aa5e9f56b406f015d9b095fe1905945", "0x2e03afbff73fb05f32f50239907f48aae1aba810a6312480cce343ec663f210f", "0x2ae899455a6a7c49997c82bbe36066ef1d6c22d8426af54d2c74970b33ad2a90", "0x2bfedee3eaf7340a10fc0971ef0003dc87cb997cd687ef9f7f88b30c3def2690", "0x2b50b39a43cf9f1d9feaf04a1f100311e78932a68051e792c23a99ff95139a00", "0x24d16eb1fc9ee39362dc66338ea0d275147f8a7ab4b62ceb26dc3e2b16c3bbbe", "0x1539d4f6178da10200463590c6efb1ca7305bbba935e5a7dec940e236dba2f71", "0x09e85ddcb02bfe0709021dc9b9f4efba2ca7a04075a78c1bfd29dddbc7be7528", "0x01fe7f77ba2c018282073ab4d222959351f7cc16cac7e1c6794611eed06a3813", "0x1d3220cf7ceba197899e792fd2b5165807a83782df55438cc8fcee6ae75659f9", "0x1364bb46fe7c79bc9156a13a8c86b77d3425391f7ed124a035b94133404517d8", "0x0b70eea0fa95971c52b4c91fd9cf6ffb5de97e63e364028f0c0b1904b075b06e", "0x2a9ab96b4de33f8ccfdccd8e86510e8cc731fe673eb289d15a374eb0d055d217", "0x2ec7ab4d439e22d1d97eff2501e94577691d28698440e7b41190a8b8e0c98525", "0x1c1b59ff9212224422968e7616ceae71573b05c99e4bcb26213126fe4dbb5de4", "0x1fdfaa4da540e50d2bcd1a2a0975350f969e3492584085f7dd3fff9d8814cd49", "0x0cc8ef6a3dc250d7a4c94bb890be797b91f08869a99391caf70e2effdf7f0866", "0x09e595faec8506700a42a5a41190cb6b9f79fae9b601cc6567569e8ee9e24813", "0x06047cdc0ff8bd94c6ab60e3ffea21912f0101a60bf6c2e96371be54e63d7346", "0x2e40288a4a681e1ff5318fbfb796e8b7f0b2facfa5c9e691a1c4924fffba4950", "0x12616992bf6faf5144c8ce58355ec2b6e20a7d25c7dfb13460b0722681596807", "0x0a78425d56372af995d8930d48cd645a6e6b45485b4c06fc38e052818b5b3caf", "0x0fe9c60a64dce8b45b53462ca6e68be325d8174d067471295a983cebb1c9a0fa", "0x2e7aa9cee7624f71fa4902971d07cd303319bf41007bdc4ea0fea40ef97cba1d", "0x104690cf04a0666f4921a4ef9f808fb9a3bee6192df0e6cdb15b6f302f476c8d", "0x2e63c4212a402284deddf9ef260bcfe7a395002e22c9a6155930533b29959471", "0x23de0c9527d4ede516b956c9200315866378510615815351bc58d3b5d6ad7826", "0x25439ed1737440d79e4be009403949ec9d32a0ba6ccd7fc5158ec97c9d32c447", "0x14e35080e8da90b17e72b6fbfffe126b09ddf0c0cbd0b226df54958e680afe90", "0x2e0e87ca0a2090d9ae1824cec8a389e001b3c0aff73e81bd25847ff0a45d1fa6", "0x1319e0f608a12fa01b7740a8e14066b880f0b650831d8f424b6af3fb361c6deb", "0x262b82f1d1d07bb18b9920597c3925a41c0a61436b71d24ee7723c7fb8875af9", "0x27773d7ae7ed008296a572adb64f4fb5c229735b259c03d4c439ec2ae468b77f", "0x05a65188ac6d6467e028dbe4b941bac5a81240e80837a519152d6542a5f4074c", "0x00a2a8b07719ecfb2c94e90f8e045b18ec455f67325324c45119c0329195efce", "0x12cc316a669ced0290bec967576e8e2a9e9b6081bb09bfda6456dcd3fd8025a2", "0x25a05ba9a3f7dcc29a43df45efc404bed408749b7d2165038d702b303ebf1037", "0x06bd45d9b13af28e309348d1c06cf153b061e0db126ec59a8af095a310c284d8", "0x2f55fdda2dc8faf2cf83086758c7bc77a1a382934e7168c30a1e9daad2b96fbb", "0x1a468a18b185dc342ac6b8ebe53ef265c69191759e553eebbe674ee9763b1900", "0x031b0f9b6ffcb451f2617ee915cd6dafe17ac99689417b1d92698607ee005142", "0x28f95d6eb7547e7abe25d2484193bbfaa36c6576b19c36fbe06b4455ecd20f37", "0x04f70c340b166e834080afc44ae444ea1ef56aa8d084b2301e62f08e0777420b", "0x0fd721d14305b2fd9b20975775f54e6c4e8069e2c71fd663a9c9cd0d13086165", "0x0e79eb513eabd8ca3fc610965050510879c0d2c755b7e59da7726d0d54943783", "0x2e3636a0f8c3014fd963ff1cfefcc844a1763bfb2de23352ea55aa5dd7bb8f5d", "0x0edeaf35f44f339dafb57e3080c99c74c107f61e3e0de9b8b4c234a321a75589", "0x20e4391350654d0463b6ea16cc68d2c411bf8c97daf1dafc4ae6106ebb347643", "0x1aa0b9abab5c77259b24ba6df035bf864c7e6d573480ab4b2d85926e95b0b9d6", "0x2b582ae7e00f3c6dd5163f3e44f8ae1f8eaa9324e6347ae9fca7c2a3af2b95af", "0x1107e912d26d0c4253496352f14b263a30a09b20adb31dbd4fcbfac0e4ca93b5", "0x131dec28abb0eba0e9821ffce7980bcca06046c12f01413ad00a19b8457f804c", "0x300ed80f4915fcb5dc8d420adacdc6b5417c8ce35d907d95376756d23236bb66", "0x188e211e215ded9c861d3a21f43f1578977938a5335be74325e0669e7edb551d", "0x17d321855d1ca0303dc7b0b2807c43de1880bb66fd6b3abfe5cc2c3a8e6a227c", "0x1528e096fbd27e0e0900460be22a69b7f82ca1aa08a6def3f35256914b050210", "0x271672fbb529a7df27dd20e888bf331f5ddef5c07ff4e720604754739fd56381", "0x2d7d508df128fa96da79116c1491d6d4d4d87a8aedf97b24de2f32e86855f5d1", "0x02c12ae06490344d658455338a0ba557e2a1dadbd8c9915ac402f2378994b3ee", "0x1ef7f571d7daac5ada2f5b94de137402be8a81f9c9fdef9428ff3f46bed81b70", "0x186213e6d9a5ecc85192d790388eafed5535dc3634d8359e730685a1d7eb8666", "0x0370eb6d2e98282ce7eabd8dfadbc46b74beea0f05abaaf67af1698ab3d025e5", "0x104ffffbff2258b1d4a2c661d2d0cbf7896e05398ef373088bc86327b37bc103", "0x206d39d5af5e1e50b477e46c62534200bc043ca985cee17f0bfd3e68bc897ae4", "0x01aaa20931d5de5931734e80546c966b8baf8ad6c279558de1696b2e8b2907df", "0x1f4aa1784a2403f3c0b312e20fffc29f77e4d01e712d43a35b9f542d649488f9", "0x2701a0b09e785acd9711e5e6ff6232bc6497ea97a6ceb82d3947508bbb5202e6", "0x07e99ad5f3317c1ace19b4a7cb94b50900319f645b2b956a34056355d3b30047", "0x2250455670deae50875f75ae9779a6008c9fcfe530b417de4d423aa02ca98f59", "0x260d62893e254abd10f0e4f8be37b5221d15292ff00a8684f5e28b5f2495979e", "0x15abbcd2e0c442449275eca5e4911d157cb6dc045a595417834bf39c558f9f26", "0x09751f79321823f4bfb93804919c64e5cac1907d031085ff8daa9efda95e419a", "0x08b3d82cfbec8cc13f75f77c3a61848aa0cbc0dce4cef8d72ce3a59407b2e25a", "0x1976bc0dbbd83a1a26f9e14aa431e24a728af4e8f5cdfd7d29943dfc29a7b2c5", "0x04f59d201dbb263dd04d2c2fa396b12ba08a48989dc2464b3bd5976534eb38e9", "0x2bb23243e841c564e7add2d7b528d9af03fe75880e9ab76eb4d46a020ca6e30d", "0x2f66b96144ef6c5cae5bfd2511dd2456a1d6e3548569abec7d7a49e1e0474983", "0x29b569f2f67f1c0363f604936cd59c3299453d8233e796a25075c41fa7e19d43", "0x1aab6103104bd50f3a65eb42bbf901792e79eb39d44756caef259268a06d274e", "0x100955f3e56bd17a4eaff6f79b697742d0655371859bc704dcea5ecfc885ea23", "0x271b363c4f44f4faafa02db2752dcc192f4edf5c39c17ad5a7b8f479052711ea", "0x1021eaa8fa200bb0d3d7ef502c5d7eedf2a6ca36e63a37b5cedd98a318a7fb76", "0x13c6a203321170c046d7d44e25f21c4708f58404df6c2b578462f4ac181c5e1a", "0x066691a02754dbd02ada281da41893feebe687083f4ec299600c84657ef2bc9f", "0x16379af37c274e663b7e3c04ad065ee30999c30a05fbddf1a43037a8dbd4f199", "0x2e01cf9813252a5171624a4963d572e1b6e65a2b93a9c990f6a53ba7d5775696", "0x05a4ec77a21ca15f804aed87b98dc3d5fc92aed79c3724b3e9cfcf5c8d35bf77", "0x0032f3bab069abd4a66aa9845e84a3ea1d390a3c2b094197a5591c6b0c29b4b2", "0x056416328cf6d47d3d291cd7259481443215b7d2904c7c5631bb4b72e83de7d9", "0x16c0689d4828c935eafdaafac08e4d909da7bc8776c76c5dcc6b4bd49c7217fd", "0x1d8d23ed1dd6a53d2c18f91537564eb706ec1139ba2240b733ad3acb847f7992", "0x1aa1a21e3784b97843ec620ca8961e8c62d5e12b8e3effbab2a4eed9b8a58de4", "0x0bb54439d4c6f812a70581ab7c1da56d98a08916048d6b48f9540b451b7e66dc", "0x24421b73eeaf63134b46c29646c2b24dd7acb860a188b08a6ed1d00cb90b3c3e", "0x3045c2012f7445890f79f1567060c3c935965acd0ea551a671f1b625e684d7d4", "0x08ec863991a053feedaa5281098afc031b75551065d6d01f6deb04c63102c9bd", "0x250cb2ab9d5579a24a57faaa87f7c828c94952cfb248cc46d92ee60b8c4c95af", "0x0f25b63b5eebc3198122c606b0a5b2de15e6f5fd2cd0f493f96265369642f93d", "0x2ef6abc5ab02c8431de8f7a64ba3699c79e1df0c8f2d9d5e8d65b792dbc36d0d", "0x1e84897766aa9de056bb5d97c6797bde93c3b0592512340206635332b5c22b11", "0x08923f05b050e6e0fec0efef4dea500ff3aec3054d4b2b0a1fbaeb356384d70e", "0x11687ac05e24f50db06335e1875db73d8f379db3a5c1c3b9f57b725b1fd8437a", "0x2755837b80549adaba47e0980907591229f5a6971ee0f33ac930f5be13b154a6", "0x09f80c8230bc5a78138f9952ba6b64ce623e12da019460363a49f5e5efc076c5", "0x104009746d61c0bb6643e64ddfeaa2d4f30872a92416552a1dfb4b75d4092d4b", "0x196e821f653863b14b72b19a068aac434a6013598bf73b28eeb36c41e76fc54a", "0x2c8a8a85e2618452a8d0a9ea592bc495a50672522536ec7663869f758ac720c7", "0x07bd4de2aec5a7acfa66678754ef95eea840dc97fd1679e653d5fa32b8ad6195", "0x2464a17f4353a76d911cc8349f5dd02cbf2b2c58a1b7dea25f000eb9adca396f", "0x26831294e338f44440adcf5dd1ca4d1412a5cc41c93a2037985eecf4c2fbe4a5", "0x16d69ee3ae6b20ddd62dd1a13d279d4d7da74b207bc57a15ac9ac92cae2ecfab", "0x16b55a792f1b19dcce6b9f4c9b61be0e0457a9980e6050da2500a409415f207b", "0x0d49e31e27e1c71c16d524b2a8adb0a64843aea5da2fa4e686f183be95d4170a", "0x1affb8fd8b243d62d5d4a7b07b624f9a0452793d1d1a11ead3bb8284eb65f97a", "0x27da7ba10cb86c06758c55e7e8ac76dc9aba2e863c2deb8fae7525e42c96cebb", "0x27e1be0db1fdd736d218443f56d06987443704d18c42a96f3fdcb7c4536fba09", "0x2fb1dd1f7461d75fa3c1e25df670c1442b001b9275e670d73c81eb61fe028322", "0x0f5f0cc9a3d4d3066c99194feb229f0e31831dcf080bff42ff1d14974f82ffe6", "0x2bcd23585401b0f7fe33fe366ce92e3acd8818a23550f3753decb1ec24405ffe", "0x005c552a02e2a39af0e21c8944b9c4f56e15b438cf346516ba2147356904f01d", "0x0362a8a2865a2b2fe902831c8044c54b0ca94b95fcb79b65f14753c58222b4ac", "0x029bb183a6a291b93f0989746105e33cc669907250fd7064868fd313810faa29", "0x0608f62214871578ed58a12dcc4d1c152af970e6e5045f7913cf4c40ca6df18c", "0x1f8a4cf532f5e835704ed7ca83effb517579006ca22ecd7422511c0391b5c4ee", "0x213882bb31291dbc346cae58fbfdcf03978152e15b344892a94c44e2f0b1b338", "0x297125f6728b65f189fab61c3896016beb0a972dd34764910f059508d7e8622c", "0x0f76029cc3ff0861e048a601eb52a11cf1bfc69f2dd6ee1516a46e4865b7c7ae", "0x05a506ed7382db51851c224d5213c7ce6a22b19c7ff7a7fccc6237af1142bb17", "0x157ddb6fb6d427b97ba69e8798f3950d6888e44c60dfec0a98b7262a977744a1", "0x277aa399e55c3e5cb49c4bd8789f6551351da540cae037eba37543b045e91eaf", "0x1499091ae8dc567f8d050a0835eaecf4b995b5341d29c548da08391e6f1453a5", "0x200bdae3ef70a75a12979041cde33a178ec02b110abd379c2d26cbea9167b6f8", "0x2e6835de44957130dd724a0ac6335b7c35e8afad6acbba6aab16f455939dc77a", "0x09e302222c01cdb2c45e5c3a920edd82da3cba855e15ff634893209bbfe55d3a", "0x0a5b412cccce0a371617dada267bc783ca19cec068f155d6954d279f3959cd99", "0x2ffb034bf2ba629ead6f8a6022e2339779e68ef2c8bf39efda1a0332e63debc4", "0x1f3ab3fbf5fd24859380ab59a8f72cc52dc1ab2479a10f33d7c5b7121c58176b", "0x08303d8ea6c4af050a906aebae492e32010ece609b5b2c6eb137ef5dc2769b28", "0x19f0945d9f71950f6c2b298ad3c646e4fb9e99939dc170c735f407148c792532", "0x1a621a5b24758bb036344639e427c03f33d25af7f7711c3ed99995d983c4c3a4", "0x218a7b745f35f497b4428e61c3b79563752ea6f8c876361d327329579339928b", "0x16ecebebe58dff59a7b0ba40693aa431b899ca7769b445a7387db118088963fb", "0x1daee46cfcbbd63435fa6f8791b36a4fc659f5236e896a4d447ab3da68280fac", "0x260875ca1e98e895c635db3bed500d393940b5654d369c61156db2927de5ed18", "0x1cbf71e0ebebc2d151966acc2be11116788815614bec66f68735914c3b8ade35", "0x03b2a320eaddf48ea570e643f89ef2272bbebdb1caef32aadadb22a918a8a99f", "0x072f534bf07ba555426152c37e210cc1d36d8b7cc42e1dd64a83081357189f6f", "0x17fe62a93a9efb1236012e2ca1064b1b93d867b0daa30dd334ee5ca08d304b07", "0x2ed3b5db7ad2fc083734fb61471629463d4696ddd8c8dcdb1d2fdd460ab4cd1d", "0x26e83b9a8a7c7bd6929f22021fea78088037c25c7209425ba83e998115335c19", "0x1758fde5e2d8b8886ae2134943407d8beceba4be517a01e51a51a9c11c1510ab", "0x233e22ff85bffcb57cf35077fc6c81963590f67e3484a67d846bc1cff2cbe1d5", "0x2bdd734a2d8a75f5e1cda7114a8c418bf5064398045dc7a9a8f31669282ce92e", "0x21c2e28d54733906bd138386d7f05b1cc42f6604df893509a629c351f57b95d9", "0x03ec3db419b789b9a13811dfa2c51840d3a01961e5f884148ab3f6afbecca3f9", "0x04452cebb0cd94f7163266aab365b3666d2a329d634ec53db009dfbe331062fa", "0x2374e7cd3492dde40a21a4111b32313df5a4d1d483ff38c4b0cd49214b12ee2a", "0x18aace16399c7fd6e9d2197c5d7879598d2b72bd508e05d6f8bceb7f3fc668a3", "0x041d469f85bfadec96c07f7756a6735f417bd7a882e46ba06ba075731f56b563", "0x10b3c1cea302fb6b1aeefe7a701890cee0358bb45dfcd6db64f90df964cb92e5", "0x086dff039d2271895d0a8cdf944d75ba54284897d14b2eaa009400a8d77a4beb", "0x072e72d8677f6a51f4c2386e2e830d6648c4533a72851fdba34a5083f00802ef", "0x13dedd574590f362b835c05151d6d7c1a721062c50f14453fbfce12812dec477", "0x0f7b730b9f5abc35b874b224ebf120d469bcb883d4b4e757e8eb52bc26958084", "0x23f2dfd0242e0dd9ddf76b575563e69868e13c2cf3982c52777e6c5339472083", "0x264032c844dabcb025545315588b4509e27717b8e964f60404d2a98e8c4408ed", "0x2a505c683ed009b84ea09e705b1c9256187a48ee96064d3f094d15a931c09d65", "0x12195fb5314e5dca6dbb5301a0bab3741522aacd9262c5503deca09ed3b5bfa5", "0x2b96748cbb6147ef4860f0d7d93c21e42a84da2a5d24c07f2e6990175e362138", "0x168dc4dfaf6fecd4884881fd5f0feb2799adb041c6e16707f9f8701ca3535bde", "0x293fdf5e9741851b6efdd21641894eabaae4e7bd4b4b91d727a80ce850585439", "0x108d4122ffa4a9bed486d89bf9ce7188e53e0161b2337bc5bfbd81c668144e60", "0x1d34ef90f1f5eb9be9a718c2f5893fe4dd422203a306f961707b4a179e8a8096", "0x2d6db62f91949f12dd7df0846c7d73de9d13f571edd32a1a3b1e57efc7967049", "0x18ba73783f66e8f96616221f4959a5a6df06ceb5bd3d362fac4b106111ee2d52", "0x0a17603d2299bbf990ee1a95b5acc089aed11646ffe696ee065bc2ea650cf6e9", "0x0fc9ee6b510c00bf2cfaa5e6122b6e68ca866fce11dfadf427fb770d8c25d2fc", "0x28222e08995c93e38c8389bd32f39dbcc203d0efc4011447c543d051656122cc", "0x07d27a8bba7349dd716d1cf2a9595740dd41313b93989de7e5e9faab97ce9b46", "0x14498b47c4b8f2663e422f7171b4a3c073d3aa17895b331bccd09f1892788a8c", "0x0bd8e776f3ba7553933619f60711184e85c1c6b596b72abbcbd0d1ef0f067fcd", "0x20fadf38540e1e46da22ae56b75324b4983031b9c8f5198d32c50d5f25b03a01", "0x269997eeaebbe58b6ea9f9e7fd79d185bac71585073928a74ea6f594dd2ea05c", "0x287d91c8eb0d2d0882fc5764dab5404c8a8fff1685e7ddf656debc7b3b6190d5", "0x0878d3344a7d147ffb4c047b7d6dfa85a864deaa4c16a6753c1e72454c2c630a", "0x2e3c4acca0611112c29b18e0f9b59357f7c5dcab7a8d5f9abe92d7b2b2aa67ea", "0x1e288d37cca3d0ba558ade49cc5220ef629ef5436799594edcad6055c5bc6943", "0x1a1d7f65598460c079f75ba724389d5118d1420f958be0348fed76ec4f705786", "0x0f1a6c587f154cb9e0922c5c4d8d277e66679ac37eab5b27ddff668615ccad88", "0x2d782792e3cfa8411cf6233e5be30dec0df22d36c9d207da85ddbca5ec747197", "0x1bf4dc59b31c01ca9dd2d9a70520ac09d1b863b4e76471da01544f06d78a9be0", "0x29abe14d44a7721ffeb528360662842162b170818106e544ef147291047c3fc5", "0x02f4b020edf60204c8dc75abcfb07605173cbc68c4d935d0f7e654f104696fa8", "0x1c692a1214bb6ae2c5b3482b96ec4678c2f7956a82819e3a9c853df4606b9a9e", "0x25cb9034345fd345c79824069a5b9a05b77b94fbdc24eb5782d55622db5afd20", "0x15ba65b32365befa2f7cb0c5210eb901aa409689c9c74bfdd2538d78025a632c", "0x301a02d45faba3c161f8250a2e7e280d56090f4cec023448ae1199fcbc58aa88", "0x2e95c6f2a67a136f5124345e3a43ef22edcfa806abd731c91a4c3003fa20f355", "0x0a1dc1da90f177ad3abccb3513e1bb7440d8e695f2cf080fbb83e61ed285e871", "0x26feb10533a8b990dcce9ec02e87b7cd30753750d1156a52207b82ce63a92c51", "0x190eaf914232f96cdd1de4bbde137a2b8aa7ba817d6d4b1dce5dd3f03a841d4b", "0x1d441c3fc47fe77a1883e06966c8980e5846878e97071ee0e99e560efff58b23", "0x27028a819695508e70882dd56a022e912e386db46dbe0d8064e11c8ae74a2122", "0x0a26bbfd50a68ff9f1622e344e20bf890c2a198b6a58bd822c722f7e42ee2c53", "0x2551e3511c114035df498e07d8354c042df31b0bd3ee502c8c20ab8bca826fd7", "0x17c6203deb0a803272043d5ba927b5984c078c00a29002e6553a625efcf0b0ac", "0x0dea4d4c52bdec214ee4e0b88bcef03e062ee2dddab6d050b1450c0b95a51c7e", "0x05e660b1552d34ff3f62dbc5b1ab67e8e1156df506c39c0ab1d6dab1f6f9a62c", "0x0b9870c2d17bcb2bb8b2259ecb2e54ee162362cf9b18243c886421a90a646c30", "0x0d83ef93bf551550434dc0763cfeb5c0ab614d47cb0cb3c79180ce551849993a", "0x2bd44845898d89a005f5c1bbbf5f5b8e985d48e916285a64e676a811d5733ba0", "0x255721e12fbc82235e64a106731c12910920c71bfeb39be6bc82291d322e7f34", "0x11b41910ed33ae016c7d059a373657f56ab1ed3afa884f6aeaac3e8657b52d6f", "0x1634afe1bbae1766b7ff7b11b011ef9f88ff0dfd8834fcb085968a35870c96cd", "0x17e992284359e923536eed41bd61e308285399a12b6c1df22f6570bd00e5a237", "0x19808c7e543688ca243719dfc2da130147127b0d441d88dff53443d3d7db9d90", "0x2aa19c14548a4fcee170c0196d363e8865064bfc982225d5946c7ebff7945979", "0x2e6a2b023ac766e7485bd83cbaba016a130c00a731134bf66692cd5d7460616d", "0x04e13213097cb24a2a8b3819019a0b676bcbc81d2ff49af4da8c7cb0ce8d5125", "0x0436db88b4f66de384baea73c505b871c79c2352600f5859b30e218f07326ad8", "0x00c97e95688ee07ffa790567816e31d6ab7bb0e6e8f9d3e9cd09a9b1b16a9094", "0x2f04c8c72c8a00180ae6d0c29f2dfabd83d0d660ebeb5e7af3c6024d3e577747", "0x15070cdd99b9b5cdc0694685bdb06489c56f2c99961e1ae996608516cfd08791", "0x134e38e18c1f42b857ba214be75ce4b5d33155ba10f9834e95f3a96e25e2f70e", "0x1711629053d5021bafa111ac20ac85161cdec854fc170a064be745471ab5deee", "0x0d072e1c8ff17213b27848557a426701aad8bf3501c6a55ef01dd4b21acf017e", "0x0d6cba818cc9b0f4e2323a073869c4d4b4e5dd95fd04610ffe27a99687fa98a0", "0x1bb7ec720107065b5d75fc4539b3b91af0d95eec0b51ce06f6ae3b40f10a54de", "0x0f4b198af2aae4c1f15035affbdd30647ad04861de3e653a767efa5036bc59a5", "0x26bd5d4e6a15ed6e2ad4caf87762a8e2533158c689ed2e6b14f537f7f8af4891", "0x1db762c3e18bc6c00dae8124eb13921357a9cdb2a7d8d5af899ce5c8a304ef4b", "0x2421f2e7882947e068b590493df453dd22a3ac41f9a81e048fd5c80119ff62d8", "0x0bd9d71697d6c92e376850493ba687283e8483b529a57bd6b8f3240947310cdc", "0x264e510e5a7eb58fe37c891194e7228737e2c0ac2fd9e7ec416e84bb44835025", "0x1a28efe15e5ba6bc2ee602ea858829d54b1ab7154cf94bb948171ff092f084a5", "0x14a206642fa9a6cbe78d6994d4472aec2d66e9bdcfeca4cfc133855662a0ae15", "0x29195f6f5eb29605ebb51348adb72b86e184d5af2a55979e85d8c37d5fa377c3", "0x2becbd1aa2fc1d6a0cb87a7432ba18070d4d8d87c7c5085cc57a36872cdcf496", "0x2eb311c7d96af1bbbeedc811dcd0cf3b0f3a0b932daab80580ef19f2eca4dc7e", "0x06b13b0ec69efec0dda80dde05a22982e450da4b719eadc02e8e6f0ae8a9c8be", "0x2951569586c452e57a16deffed6643b907327ab830fa43c7616c6bbd7b337fa5", "0x0f80913d6a98d68e7d203149083421598790bd17fb71aba3be68235da31fae9a", "0x0f6c6ebc152c7142355f365056108ca2752a939343f52d4cfaa1ad0f9ea80627", "0x2651a3545d55a179b95c1d5ec9f4790094ccefe991b43482d3accc1a5e6bc41b", "0x19ffed697be990bd22c33a3152f1b61d924a88f25a682a604814ab0f83fdda64", "0x0514f51112b2131ff7446bdc8e6035f8a15633041e31caccdae57a2cf2e6e30f", "0x27b250eedea12787b0e74c67fd29ee3d6f3103204b0ec153bde1b310ad8ab960", "0x034e3b092aeeecf9fcbe012250071b7d86f50ddfc68b5bf59e57c5f93c71e1c9", "0x1453aabd4ab309ce11df060b36906f221e34ec457f3e1186e1ea3369be4b923a", "0x11680b19c0f622c3aece37013d9d9c6b094dcb5e74c08e22f170fda744ee17c6", "0x25121ba4a0ade9a8b4ddabdc337b09645ee6c42c3fbb6c30ba0fb457bca33d99", "0x3010c1d25cce64f6dd36355891cfa681dc6e2eed6daeb368f6678ccb41b08350", "0x1d50c97e2fc85017040cc192d199ce96cacfa54189b6d66af5d759fcb6bda79e", "0x15cdcbb1c5317192281df60267008a9ce8db866fef3ecdcccc3cfad29e7ab2aa", "0x0bae86292d004b61dea91dab5addecd8452e4dc0f664cc600d2cb6963b7df87c", "0x0966e0ae7b6e52fd18185266c449aca139d76048361592d38632a20c8d0246f7", "0x1cae92fe86f9a7ef83ba0419a261dc83aa12a12656250bf6cdb92909a8510867", "0x00a2cb83a054988cee1a7a847c228c8006686ea62a6f13dd9535dba248fcbd47", "0x1417d0b749fda05bc8a36f41f3f714025f2e4acf02f6f6160714bb4d86d8a7c4", "0x052c5a70723442134e3532806e57d283a142046d2a83291da792cfa54b234782", "0x22a8c9d3df25905c7bf99c0697e139882609c08276a171c88dc02e85db49aecd", "0x1c388261e076a0643d5479187cb6ed2431b5e1f531f91cdb5127baf89c83c73c", "0x0ab262c3215d90263f02d9cf1a2350d9d5ab0114a1ac7826460f34635a55c7b1", "0x21aa865cd024cd02104da176215444188f992aec9b53b65b9cff6390b28ac2cc", "0x0b048e05aefa0fb2c192ec55690d16ea6a969d2475762b9d21fdff8ada4a0bce", "0x1cfb664fac48b01372f86f107860398c013c2361dc5671b98f13855c15732ae6", "0x1c63978d82984a8f5b105d597d65a437c8298fb4074ee140622e9cbdf39cb479", "0x068727ddec782a2d0c02028fca3757fa85e61f33afcf5cd35986732216509c77", "0x0d890582cc215340d3476b50bd8d22261dbcb63ee7c6ce19a411e809b731a563", "0x184cd8e67d3346b0b1ed513225df4f8811f22b25219ac6cadc08bd27444c59f5", "0x11aedcd490fc770af451bb54a698ddbd4a3ce266715ea85b990f01027910000f", "0x296da6e5e32c20aedc69a743f6a45e4bb8d5f6604897b1cc751bc426ace0de83", "0x0ba576970da392c54477158abd25968b60387158cacf5f08288954e11133f8bb", "0x197e9d5129d713e382ae5ce666cd1276f88ddaae7dd50dbfab07019bc425f6df", "0x298529230c8efca126f2e5f127eb577c1f8dfde4f6132e61b26933726cd7162e", "0x097ec32e1e10cb019fa5ba87a78e31b4f56387df2dcf210639c9d9623efb5041", "0x0a696ad199a61dffa5210f5a67ef797951b25960efdd13ae477852993d9743fb", "0x20e69110246861565203f2b3fefffe68667893cd881bbd0adbb07306bddf4ed6", "0x27890f322bfd0fabc9682bf60620d1fc0434475394ec120d77088043513a10b0", "0x19df61b7b8dbe8152c57a8d9524609ad5fc58b95d9dcbc6aae0fe50e5a3f0671", "0x1f159a0092e8e13753d9a47082ccfd4e9ce23388fa7f48d0341e184beed4df69", "0x03ef8afb36ddbabdcefa9b43d1e5557e89159576e54c7b1a177fea5a093bbfcb", "0x1ccdffa3a8f918cd338b85146b057f87f8616a32159842f55744cced8fb463b0", "0x10c6ce580770b491e04cf22221cece5ec710f9dc7048a98063fbca9b0e9ee3a1", "0x155154344c44bbae48882ab681e1e402f7265858a6a499924f961e4241d7ea1c", "0x168f28d28a2797945e7b4e7b585dcab192b1fc073f6b0e62afa8cc9161748c0a", "0x25d99c080a836ecf0aa7e1299a757cf7c5d0a96b5812547969b3f09073d33a6d", "0x0955ad1ab1074db1280c78753ea4343ad05eee42d0bafbf3212c656c305ec55f", "0x08d466d64b8949e4bd175392e4219922973eafcbfbd965cb2455ed3f2186f33c", "0x1349923426749433b7e0014e827b3540c03c3a7323e7a25a4f8abfc14d492b68", "0x15792bbe2a6f84147f008f84b591b583e6465cb6238ef540189f5e69412dd9c9", "0x061a685b4ed05b65843a41c24b236a2a7b72ffd0602030b63b783c1e23923096", "0x25d7f0dc3e0a9e71090c72b48b051b8d8fbeda393d95bd8e9cfbeaa19efeb642", "0x2301c0c319cfd5520bc7f972b6646661135b2ac6cd82b0e8fbf7c814a9f38af8", "0x2d6992f2df7b56bc9fa14e65d0070763dfa5c6d70bf2fd88e428ad1df73fb523", "0x01e6621a98c65ef7ebeb275f696d11110d83ca8031014576baa10ecfd8411024", "0x0690e58eda24665799a2a1566986f05b3c342340a2855ae746a9aa6d7d0be2e8", "0x282924ad2ab431d50d479c2d43940b471352850f32fc7b75647a537189e981e7", "0x03983afede48f8107d3c43d8ef20050071e693e14f75835e7ce3aafcf2099d72", "0x2d3e2cf3dd17405faa9cabdac559cab5c4b88c053ccf888161a702d9d08314d7", "0x0a4118cb11e35af09c80a762b665cfd915fb9cc105a6439859e8d09c6aae3b32", "0x1f4f2acbf7868a099c0cf30ecfcf254210c0a9b6dd952090027f65aed87c2701", "0x127456c9cf4b04c64ea3280f18b4ab9e1b9640762704c9343c5c93ca26dbfe2f", "0x22f606187ade91dcd38f9cc7ffbcd51753713d431c32f26bb50f1a068d92b70e", "0x231cc62f25f6169d570976385132724cd5aafda34f955f2fb5578c8eb6fad2e9", "0x0fc97d0e65f7aeab397cafc36966abdea922157d67dccdead1b2315d1f008cb2", "0x2a07cc4343ea1b38982820bc9f3d8df014bd2be58b9f9d556aa1b75511cc8b7a", "0x205612cbc125d00b4a26d5a2c748cb7b67f7f74e5c1a3af99d2b53b21f904527", "0x113b94fa0bb37a7ce20e747694e19c4e197af3feb03e27e55ce1b6da8c7f8151", "0x135f57c88890b109164b1f19934b0e3077001aa3c399b46cbe4b3d45584aecb6", "0x12fec523a77be075ac0c47862f2b18cc5e5f5caa1dbef3d907c92625252e2702", "0x24f864be35ef6057de078a85d1e96a6b6d65f5f76042fe46c8a028016c99163e", "0x0032a288d270185bc167bbc21bf43bd695578cfc4dac4f59ad26adff03b41df3", "0x012a7a229b6de329cf40d61de15118d6050b9b235d6074565c93938cf9b5e564", "0x058b63645e3963bebdb6eb639106c4e16c0fdef2be8263e23b8603fe2004241a", "0x19a5af0c2b00b1da07b9d4b535bbbbddf052fdd09033541683fc54fa7cecdfcd", "0x0a2512fff94ebd00571d056704d5cd4a3d8b024c36eb2f29a03d0a6a69d472fa", "0x17775fe72d1785abe11b76379bdb3541c88dfd6bbeca37d2c1e6acf28a00e5a5", "0x144777351320b13697917dbba1c252315ff85fcb9e5c10f642c41f906c8c2cb4", "0x0cce87088d369ea25cf20315db73239b31df897915b70b38009d083111edefb6", "0x1c83604318f78c187a80c78b8e2ef66b48882a091380583f3c14a5797c3ebfbd", "0x195b1051102ed693e26286faef407469f0c233ea68fb74be5b8b801df4fe3972", "0x2454f53ba4ff1c09b2a650cdfcc32735105c03116b254c20bd8a196285cf6ee3", "0x02d0fe154a855bd683d4676c3607774c505ae33b0656425e2dd21a61045c4aa9", "0x1a9c1aa65d05e90763237b686a59f2d738ac1eebf433993e27376bcdc6da398f", "0x0380c6ffec35d91b268052e8575072da510b5fa976400221113df0adc2283e0a", "0x2f4835b7c8938e6e3d5a8d853cda5e24c879a5e0e7a79b63a8af8e3c02359769", "0x1278111dbbaa46ab94479485683e473efdf45be249083c3f65762dadedb5dab7", "0x2f6d0e205916919cd7c5381ab9263e9bfd975aa7cfa45ce9eb4b6799ff903538", "0x0987b79561d0d24c5fcd6c6bf1189b13f13aa0aafefb98a6c11305e7068f9a15", "0x20a1f94ea39d9674beb0e237b74d92706b8f1beff58f420feb1a0629938ea44a", "0x046624944f67281a6082d30e31a2d78225dea00bfa55ff2ebd6b4b6a4bbcfa0d", "0x0ec86df4e2404b4d4c5c1c7f2b7cf4ffcae2baaec96f1c93b5718c46e32f4b5e", "0x17a988b62f34331bc23c5c66fe5555dc2af680f9175c4e95269ff265641a7c28", "0x2f933a4009c38406c103874cde91ec02d622067c7cac56890403c74408a1efc3", "0x29c60a6ee7e22c0b8d8a51cf87215d4e3dd52c23c8c513a8c85c21205adaf4e2", "0x1e2e3cdd712c6ac039aeb3d4dca4e92de5124a1a92893a8f1b8b6dd17dd020d5", "0x1cc0cf1b5a677bb56afa928d7084c9e31d4f54691a9b90a2f48220fb26fb534e", "0x03f5f53cb34ca5b6476f61d4b4cc01e1d123b90dff98e0447c801007e6404865", "0x264f523407a076b04f72e26834ce8bd45b8c90dc4a915fa551f3ae56d50db503", "0x1790319745f7932afc826f8c296f92b2c0f7f6b3cfdb4bfdc763d0a1f28f370b", "0x03099a72a9c353b329a1bc4baabb784501c9037ba736c49806f1da48291041b5", "0x1604aaa41bce072f44b6adbcc0757542e4caabcaf109eaf7af718ebacb090fe5", "0x10eeb59a16fa139267e3c45cef01b53ce7dca8f8808ccc248fdb5728a799db67", "0x12eab8cffcc06cef8d112bbe5dfba7e75534f64c4461d162fcb3ba06715947e5", "0x0c58e04653d88bba71e9f539b5030b937dad2405d225a30b5a75da8ae19c23b0", "0x1b157f2ed740cdbf798af092aae5833bf52e391b113985ca6a30eed588cba4f9", "0x0d0837d097cee0020345d038d3656de14ee4c2833bb9cd0da1aff2399da436e6", "0x0a4225a5d367e0ce78a1255c9a69aa626ed22248763d190ed9dd0f3d35934154", "0x1f6a2819a67e201a2576f0affcb09496ed7feca0b85058411d09a6e756ffe8e4", "0x1c674a9b9fdb49fc966e064ba3da32c1ac2d4b6a1b4d06b96f75e31605c38cb3", "0x20844cd477a2921e8ecb26eec231d8c6d9b846dba93db5eff2200acce3dc5312", "0x0a8fa6b656ac797be797f42e294b3ac4d9ea7d3d52125b9fd77f8d44cb729864", "0x265947fe0877c73e0c65af54f643b0f3844a4b74de709fdf77156f4c338c8007", "0x1f04e4663f2f9937cf07d3c2fe5f06e85414b960dc77a19e8d6e38c5bced7d48", "0x06d020f03d9dd918c985f1e7d5cd39fad63f6459055f85e1b8d65c257ad64046", "0x0f4fb8263bc813190c44c383d548741b244d213df4344c3dcbce797969873951", "0x0e3b1e6adfa05450afba7cfbe8e8a08bbff6bbec099c68d5755f096075c21025", "0x22fb7c00042e5e4ba4b512efb900224bc6bcd53cb1224f3cccd425331fd6f831", "0x19375dd909e5ec26e7274bfb8b402c5d58ca19317505bd446ae80dda553ac71d", "0x11d0952461edb9d24c6bb08afd369692173a72dec287f6b19353c3bb540dd34e", "0x1da0872acf3b35eda099ccc9e9a5ff2477889bfa122b5bc54b4be05e898702a8", "0x1a74a3b2de9a16c14c026b9c511152cc11740b9b9d99b6bef9f44cbf757b7376", "0x221b345ba4b49dcbaad49fe51917d928c533cdebb44b095080064a93e6ceecc3", "0x0de529ef32404116fc0dd6041c8a9d3f7980963143c3e275f29ec6386c9c2bdb", "0x1df03417e70bc8a58129a73f2bfed475f59cf6940ba48757c860e4d5afe912bc", "0x01a6a6c5e41dd7ca162312935ffa4caa6e1681769b10291fa65fbc362c57f7c4", "0x26be4ab855efa2c395a0bad51338e24283883973d0dfeb2d8584bb3941f7b92d", "0x01f1c7d227986e5a9a329bac19a23fc7df52609360d366e0afce5913a809f932", "0x075852ae085011a3420eef6fc4d51c8810d40f57ce4c54569e0349bdde64f25f", "0x2e69ca1551e48a93009319aef40fccd78b8ab0eb3e6a75aa3a7cdc2ea9510e18", "0x21d1d8183e5430aeb1be773620504ba994c1df4ed550a87505fd6889bbc70940", "0x11866d8bbb8cf8fe585de19d816f444097b0d5eb88071c2785ac3a757ea5a973", "0x18eb3fd0f6793a01b4e4a35050555a79fd43c7d9b305f42e9b676ed7855086fe", "0x2874e162935850eb2b1e7a99847dbe48b39726bf75a18a99892b2bb6dbb141ae", "0x043164e5c0d618af751f9458ad6107cc2c18b4e24968614daa909f3a664fc898", "0x1c7fad75476d7966314daa926e188ac033bc3c0e9d754db747659d9845285f15", "0x001cafa60986645969073ad8c0e29d8d46c4911b3336bd15a3895e10d0a39378", "0x059b39a84beaab3bd16e649114d507aca8b49740ddbc4c7e709af251f7e5c002", "0x2ef7ed14755d43e71ea6eba6d478e4197c5368cc9d7ff7c427e3c97adceafaa5", "0x07e262f43947c3e4380bed5989b35368f6ee10185e911e2991845730df2acd78", "0x0f54ef80d9664876e7b9e9cf8ce300b9fd82929274f8ef4ba503096752083517", "0x17b19a0cd7597c0b95a9d1b1f3aa38fede0565e34ebaee7c9957696f92a3fae3", "0x23724db078fd410f494e5381886a2848618ffd4a8c088fd51133b0be784417db", "0x087f6029159cf77cf228c9cf137d25fa4d842a084fea42fcdb2d0a16dc4cb3a9", "0x2c91b436e22203f5cdf3b1c2188626007312b7e80ffc2c70264ff06560f3f52d", "0x08b9793cf23fb5b0eebd2647d2bc7d4cc901d7074715b445b14fb64a55e43bce", "0x214143f8421174ad70d3431efe9d40bed361820633e27b91cf0505a8950b3bed", "0x1d5b88560517176724a85325f6279ebd9130a2ffa28cd00b07286fe3a982214d", "0x14c9577c063d4dfaabc8eed7c32b99a187028d866e2b991974e6e63b0f838fa4", "0x046273375bf435bedde590cb2bac88efee89adae8c6e27b01f7792493074bb34", "0x1fd89f063226990387b017ebe985f55d4f6b1e5ba5a2bfd6f2273d2d6bb6a81b", "0x0502081f3b1250555aef587cb5b4b307d730c1bcd151adecaa53302fc2ee7bfd", "0x10baa6c318c7e6a3a3628756ad42eca66a92be51f475eb386f96c026772e1cb5", "0x01dfe4501e8b2ef4184e1a4d0f0c9cc76a8949766636308b02c66ac9823edc65", "0x1a72d320faeaf05e0cf44db930bdbd8eed25a09bc14754665e7fb5f28ea3fcbd", "0x266b33340a8bf66136e7999ba473455bd90f8aa53f455343339ed5b5320b0691", "0x02448e52e069c6b44402d59573822c3b5703090216d607de4bfb678e1357b958", "0x2aa25e459065532b65ab2780b63cf6f03d872ea7596647bf9517ac628b79a226", "0x00b1d54e7898b63a3adafee6e3a36b2aab81e39bf3a15a9b1f479b7499b2efd7", "0x246f7f7d8e5ee80022d45348a5aedba8612c3cf4623a6260ddc931952512c4cf", "0x027907ad369fc4b8372c78e6ab39d4a3faa44551f00b83d24a9e33e01df07ba0", "0x2b67bd277bdc4c08c7908bb15ad397256efc62e0325327f8190c7ad9b09ea5e8", "0x08a5e948d1db145e20bf0abfd419e70708b2017e8f8b1170459c2c767a7ee354", "0x0491c93811381bbf080cddda20357bbd01755d50eb869ac50ebfb775b49599fd", "0x0bbe5810c339505f191659c51feeac4d6dd8bc8396f30c1e4b3d89884035946c", "0x03b065bd291e288a177f161e35c3652c57ef70e46e1742ef750ce63d22b24810", "0x11f25b85db841ff7648ff0e35ac0b6c463c714fb2bc5f288970608ab353a6aed", "0x2f14f75123210cf69d38f2f32b833cae0aa310e763486126d0d36c29e68014ae", "0x267179f1f050aa24d1777e348a99dace45aadbf16420d828e91f7d8ba5d6b6ab", "0x02d760a9ccd958f723e082c804dfc2906860767cc3aba88b35d47d95551a1283", "0x042540133fc254876967d2739f1014934695761da4647d330b180728d9db97c1", "0x00d4fcd586135326975e12057cde193244cad1504c4e147115610c3affb06557", "0x27a2352f8c5f88f643d6dea7251b027cd3aa04364fae60e3e714f684d05a8966", "0x1c7e955c7dea3de14499e1b00c64512b1d0df603c5492f1d75747161c2112ecf", "0x050e7bcbfd9fa9c1c4d29415b03c0d00a51c2bccef5b1c441d8301fdc7335956", "0x1abb6a8eadef0940704d611503c9f295715c3c4ebe023abc608a8ff3704413cb", "0x0656203914995f78f4a1d5f2546387ef7e8b51497f5796521999bf0e0d1e80a4", "0x1a2a69c7673f072aeb2ecc5e750c81bd0af565c71cbd0d3367efa7779eadecb5", "0x1599622b5b0b75fc66ccd9ef20ec559bbf3f51a4a4ace856d8f687f6845c8926", "0x0eb54dfc23710746af102dc417a3645f5b1b87d888bf8db5c8cfb4b45eb03a22", "0x19e1a6f91e97deb1adf0d25cbaab09a1f72006ee92a36eb59f32cf304d889864", "0x201081529413a6f1f49f3d52dcddfc74acf146c6b32f85beb35149479c891d4a", "0x20c393584e2857f57c23efeb7820186a50440c935bd34a4a17f2a5bbff287f1b", "0x179cf0461c98a99f70c433f74f60fba50e7c2fc9bfdbe500a0a512f6be936934", "0x138cb76d3780d42942bfe0043d625bdd4d6e91c83be4cec3da085bf250c18d81", "0x0e70444af01939c62a8ca5ff3ddce46e29b1e45ac6aab7d37297decf2063fdce", "0x142b10f58204bef4cb15113136fee579513c126a168488c376c21adb62827961", "0x124c8c607612b5fbd2af84ac37bee103eee11a4eb711e11fae7700ebc6387fb0", "0x143fde70dd6bde8b26a0859cda512daf557c452fa5f76b542426b9fbc94f7446", "0x24694de53a139a6435ecf716b4139ebd01cb403a2d386d58ec733736cc21692c", "0x168618466211f05e88a1b771ac8959fce3a6352cb647d47346014bc486f9c0f2", "0x1b9be7105266245e707a46e2ba3de8322d4a8e7bdca43448ab05a7275e74e43e", "0x0fc2c8e1f54e166049d5ff37f6b5fad79ae76d7f069f98f8fcf8f367c0fb3b88", "0x0c6f5833230640ce8e70af4dca674821cee720690bd349e645f0d8f59684ac48", "0x24560e4af49ff08a2226a7f095e44890519c9b9976aefa3514c0b065a052e340", "0x0d61f061762684231c5f469ee0ac33f41d314add6a79d553c642dcee363ea047", "0x1adfa57f4ec443e497de3046f64d189a7cdbe086d98c94cb1d003a59265d40de", "0x09fc22885ab01975ba9aa4c8692a04d75e50971f7dcb7738629505532272651a", "0x1c01bf8f85c8bcc035cce929aeae20e5bc95e1d36160e286f5a373032cbb49f8", "0x2dfbcc48d7241a6674803aa64253bcb3210db37af2e9c036c47978c9842ae7a9", "0x27b945d4398db7c68d13576a8928aac99aca88a180b31be985b85fa89d0abd49", "0x277572bf0b290106380c4bf58959da217f9e689940d9db0fdbe79c1a154a7f89", "0x0831d1b88af8561c0eee6964bd720c377d04361f9af65ced7f0329e7deb715a1", "0x119459ca339e5c8a1b36593a8a091bbe9de7c8619ff83a8d32a566c2b15336a4", "0x27e8489bc8ced6a9f209bfe83f6e664fd2553ae84632a8dde85774f86a714f94", "0x10fb6c8fab6b135d7a50c54f8b1fb574eb0542c05b9bd84aaf4ae89328d6f53d", "0x1dad3864816666ca3a5d1fcb0dff07bf12d352f08aadd1d4a14b9fa9b2ac057a", "0x2439afd2542a9c564b85fa68fec6f9fd48d54c398cdfe14eecb7ed7d9e09642f", "0x2bea4058794d8bd725705e650875da2153b829dc245970082770a03546636a4d", "0x292712ecd08d349bc03fe610ec2a0e7d9b8383e3df3c13af7e57365b48d985dc", "0x241c1f77219d178d4d61f50838a69b6d7029ca1b36d3eb348a0b1a0b64c43530", "0x21919178d0ca9874c90f875407e6de742fd647a7679689972cf02c2863db6e00", "0x303d796d52867e994221af51b2120ff3822cd8a0637c9096efe2e9aa3d2c7b53", "0x1f0f30243212eb4bec6bf9e8b794989abaddaf1357f7d81b79f227314e9aa843", "0x0c12581aed963a169ff1c33716c8bafc6be9a8b6db13a25889218223f850de7a", "0x11459ddfc0f592b264269706501c04ce7bd998547979253ecdcbccaa3f54007c", "0x0f2b37146a0a04ac53e7b630871db252a1dd84331a8d39ea02961f938b5efa1a", "0x21efcae659790676b5d9114b81d60490eb551d6b21f65f362f08208eafbe4d3d", "0x1e1b56c6f76e3cc26284b04a42b5a02c5b9db9b842272100245dbbe7c876184d", "0x1087be4d0c47bcf20a815f60ce803d5fb9216f1d0b474a781c85e8ed1478eca6", "0x20c7a2c101e34270fc18b4f05d2b2f5a5a1298a2592dbf3f9b698e4a791d9311", "0x2d4886f200b99c57f4f09c0c362fd3535ae906a11cf011e261faf48734a3b07e", "0x2de6da1551b5f1d178de4dd889d03aeee464024fc2936097215c05ee14924f5c", "0x00d90348bd745e5cd779a6a6b5c4b625e1b86559d71c55a13b4a92aba2187aa4", "0x141c3084044d2bcfe9594da6bf8175b950ab36b4433a7e61b815b6101a5bb703", "0x067c3241799e3c89402d1048ba30030283b507553a06ca6b37a3872000412e28", "0x148f39fd35a56bc7d20ba1c8922e4ad5c215660dad8d446b0f597edc42a1fe07", "0x1dd1fd608be4764ee1dce05067899de53fffc6b00fbe475a2e0222a63c68c54f", "0x15bb0f86dd0a37802b115a81d4e3f68f9a1d3fe589e5848bbbc5f5a5d77beef4", "0x2642fdf5df1faf7aa6a2f37b33a665f163a7df70c86adaad87dfab06493ec72b", "0x25c726bb20a1ba08c73808e00f829bd3fd95381e78c88bb1d3f347dc7dc543aa", "0x1ca5808c3d68b51afc586ed44f44189a4f4d0e56cb496cd10f5de368966b867b", "0x1cdaaea17a2d78385a56e99849637edd7e75d8556bfd8f241a11fd903af4fa87", "0x255b06d48523f97d2d30bdcae93ce9803256a0723ec161b987cef062877948af", "0x1cb3ff20f743a845c435fd3e2d10e9312f61da413743c4a79e67ab6c32dbafc6", "0x047a32238532a7a734ddabb15024b8a154455fc2481d31c3548d1e725488651e", "0x0995b210131910f01df8976ae742e95e0a5ab490a4abeb30fce348e54dcc4e78", "0x1bf16ee530c9c94a408f2ffd49ace7dde635099bcfddc1ee41def1d86adadc98", "0x13107a5ea2a3406acdb6563a5e3f0809a1c6b7ea9a04928533266275fa6f521f", "0x2d562cc0650028df6e30c07bdbec07f73eebe766a192d130a6c737fc9ce3db39", "0x2efd12b5e4fa102fbd60bedc120b1dc022f8c43a2fce8642893698df53c23529", "0x110098c916b523211e18b985f8fcc7e8a804bcbc762bfeb6c25c810ced552162", "0x20a9d5216caac17db5ab45fcb6b45dfecd60a708291f5c86ab84da22ca596ad3", "0x048c825409094d056259dd3ca7e15a08594be82f488d66f91b43af660dcf38b6", "0x1984479ffca6b64a3b950372747c1b926ac36a7dd4f70e47e188bf7b410ded20", "0x209cec7ee37d47a8a56f8484b94f5db20535b552c11d5fdacc80305fd825c8f8", "0x2da9a692b08915b7b61930f011f76b09beb7edcfd6a19c48cde742e99cd49308", "0x302f50ece4afa17d552370a4e12c25a3b0151a43e3982ef5e71a38c74c36ef59", "0x1b46e081e756c42c783153f73a64054ff4985073b9a732153ab69c929470283e", "0x15103e3988d0baf626bf9de54d75b0301a2d3927c65d70b72391b062df7cb4f4", "0x1564e70062ed6c3b3ff272dea80ff3dc57ca1de688b1de481e7c0726376aeed2", "0x1e545f388b9e05a46dee5160c8706da80cf807c6c10260c85ce04ac3d41efc5e", "0x088cd407f0657fc8b6e8acf3ee2b0473e50e72bf58f54ea91eca40df80173dc6", "0x08b8e42fa1c4104467d67c7a3e384a3c0043e1c1d537d06beed997e0b52abcc5", "0x14f1b3f9e72031ba74e2e032804da7868d37bdec65c7b4c33133dce2b1990846", "0x1619c0ecca142ed142f88a2fe0b0381220b10d3ff5c20fb67a66badabeef018a", "0x10f620a862c7ec986c3ee7e92ee431caa4e8d3182bef22175d29542796c99925", "0x2f2f73f3953af6ecea86f5ef29075fc4e01bdc083c03fe6ef89842cb81f57936", "0x124ae93fdb1b32754036196428519c8350e699c10ae783b8efec04f6d0e4d40f", "0x23bba8fd9c1d888cc9f3268fc54eefdf5e18d60b41f5794117c800ea9564f579", "0x1da248f4d90e0056b683e2a892876fdd8efe474fb511f46955ad3145341e0d33", "0x2fd8234511e54966d00f3ea4a65dfcf0a6aa07d09323f994339b43bcd98ee670", "0x1cf83450d23c5fd64ea5ed6003ed6503737dfe249efbff2d05f6cc285b4adbbf", "0x0730028703b63880fa47aa0b948a2a956590f9d2de022298c0350636586dd7b0", "0x2aee39a51669c14763094fb8c42d649064985ff1e175d8828f4e0252e908110d", "0x236a48fec7f4871e2a0fc6305b4ed35169b942f9e8029734dc9a5f450b0a40bc", "0x26917d74db7165800ebb0bb05afd8cdc79b470c1d54a5eb1dedad874a4a77acb", "0x217279c9d9ad568bfde19952276e8a757021985b2c6c1967dcd8c3a4198a38aa", "0x1f84a26602f83970a38afdfa335e740e24b8fb974dd9d8b0319c7cf6d3491e12", "0x1429fc9a53a6937f151562283326d9f9954a2ad824285e563b67d2838e5dc265", "0x253264e5b4725993807f799d6b066d3850232ecd10dbbc01e9a0d52f81bbb7a3", "0x1f193de050e1e6fc55939e38c86903ea03252b489120d0a74ee2aa203b587f23", "0x0b179e9fcf3598400ce988278421f7a5eb6d5adc36917fa51649537396bdf99a", "0x0dd3cfd2e74ac6443f1089c4c0884a890801c608c1a53b503eba6153819f9016", "0x11e4f43e73c18df506683d89a511b493fafbc4fee14c34a8343eb03d1c1978ce", "0x07e9613f5cf6551a97ecdcc24d8810e378c9b542bb59d79461a4c25493571eec", "0x08f250aabaf2b7bb58a09c6cd958e13c0b86c806c33e60f4cdf06789cd0241c3", "0x1076a7855f3b7d1ecd5bdc7c0860391c57ae1ead3508ea994c31530e29c5a242", "0x1b57606bfd71ab8e3b2ea9cd32a78569d00e8a836b8a2f94e165149005a2204b", "0x16a0fec8e2bd755596396f1d1cfb79210796b85bd3bded82bcc2b8e6d4a61c5f", "0x2fa939b78fd3589160bb09b35aedddeb43c10dd40c2ac6471598c4ad136889ac", "0x2fec4aa75563f7b8ce369ac2d239486a7e2e593c4cbf7474fc20e5154227d91e", "0x0e1158e63c9b7df32d7c3f32a97e8e415343f54c62977e28f6be301418d8c3de", "0x0e11893c32e63b42a74bed81dd71e6348a9bcb55bf5835335580be1eaab2fee4", "0x0fc0701b9435b305b610c7fe0c667b33de7bbd330ca940d71d5ccdb7332452d0", "0x0fee4aa70a97580a7395d67a37f55330b908470fb803fd004d434ae664765fc4", "0x146742f4531fa49c48480406498c6541600d2a303dd8dac971b7b920714ee131", "0x26f145dc528340cb9335cbb6fb1e70d0c871849e7475e7f9c0890b907f9f6bd7", "0x0e307a3d20bd16381e2cb9d0b802046f3d33026535f1b2b7c03ab075b681cfb9", "0x037518e3a0fd47c9a1e33a918c30fe9fdce4dd04dc0e938162d2c3a541394e5c", "0x0520c4f6bdc375ba8ef5e4f4d55ee73949386a813c60718db08ca3e8aae680b7", "0x1a5ee091b74dcc7c3962590d3042486bb4399107600c5f6664b145b7eb8c9a2f", "0x1986256424084fb797529cfab403b2cbf0b6626d4930abce17b1a64dae036314", "0x03867c71d3cfa8039ab6407ab46053ab4b7405276f483dc98319047b951a156e", "0x06d563050f5097774e456405b8c40d1f65b8a0a9de14e2b052039700bdba23fb", "0x10767e56882be4809328a58d747c6d3ff85de6513d50d09c2e337d22eb11c20b", "0x1017176674f93d48207e239674d99ee39b6cd893ebfb903a2a41f28ff0b56332", "0x0ee7e6ce359254247932f4e03d3113c2ea26e51a83313e4c1649cce22366b3cf", "0x26ff82c65be4374fccd75b3238534dfa544cb04228b8b17fde68bf54a791d63d", "0x07e88a6fce601c48d5cd2ec5945e24080fb840c5ac75084146d4ba1a6a6fd617", "0x129b8c69e8518bd16636ab0f1a3d7e39ada28a5de79ea5fba1b6a7d13550b85d", "0x0d794f086bc4e45eea6337cd1e65391049d5c3d3fee8947032c40069aeeff68a", "0x2622b4fa8fb07226532b779e904eea44f6f909488cf516056bd81dafcfd60a07", "0x25630c8d104693e7a5fe41ae65db35fd3f4c63f8f51ef9d0948ea2595f158a26", "0x29023fc4f33c9028cdfa300500337f668de2a543847a619b6a6dcf7c64711b5a", "0x2c05672e9a763ea209baa0f7c31ec56ebabb34c45b24b7097c841bb3cbdab46d", "0x1f501c00c1ba8aaed173524be2f2b217d6b6ba00ac262ee58ff6220167ba201f", "0x19ba085b36795a55dbf040e54c356e70321b81fae29be0d71d777d49c4f4bb8d", "0x19b51d2fe788314270e14d1bc248c090da8605a40f7559216fb86482fe69022d", "0x135565fdd6d3e651191d7ed1ab010433782f9b07a41dbe14629bab713c229635", "0x22461ed7ba44596bf3a7402dcaed5c247b09835c534a81ab365148e148fd1327", "0x0e09c39935650773975a411bc093718dac77e8d7877666a85ac3da15805cdf8a", "0x084ab85314402a0b68cd3021e1ae6790b27686c6b0ff2e4948aae4ee6cb5077e", "0x143b5de83814814bc1553bc7ec9bc4756bbddb9d31843a9dafbc2936fc8cbf69", "0x2a9b9ce26f0b8721be06da85ee1474727580b0237cdb08135baeee610a460522", "0x0aab3ea72f43d0064b776a4746ea6e2b189b7e06fe8d49ebf452ca4627a387d7", "0x1656ffa30c037ac4573b8a0726888d99228ad832454abefca598c2318a3ec653", "0x014a2aa2a598b2e2370d14210dab5c5eb758b0c9178ceb7ff3fa681da5c9bcdd", "0x153c93de24e01c07ccd75236e4ec929b6efa0da96c687b5dc125f681850567eb", "0x141707bdc7698398e59f4ad04ec44fab8b7f4f7b20096f78020e948778a90f55", "0x021381259d9cd18a837dc34fb95017a3f32785bd91cc918589dae4212af7b979", "0x1d5d10c13222b1716d7a1def6b384d727948b0fdeb19e723b2bfa1292d97547f", "0x136ff9edb9c0568cd585b259aaa562ce3e24b30a6c4660acc0b5290d30a0da80", "0x2f3ab4418bb0cb7b859675b9ffce8c488f16cdd8cea44c14de0432e6e2881464", "0x2f03727d0894a74dc97e60cbfe74c7c7311b05d020ca878718dbf561db8bea39", "0x04ddf88beb916a6628e60a7da981781dfb0a5e1076285b24357f229128fe25ad", "0x0818519ea2b71fbec6c6bfff87c978af4427e7bcc576dfa5c15bc4fc9fed263b", "0x1154d1aa344585c4ecf9ee9390c84668dce99231c0f427e8629ac905234e9eb5", "0x0304298c6b5e2144ae9a508cd4c9f4c8160c37afa477b3829afd49d6a49fcb00", "0x13650a58dca9fdae806e76454c94a2198bed24df36d694a7a533147548ad0234", "0x07ccf19c8b8714b18d280a4c0ca0e8cc68e217516d1c54db6ff73582bf4d3263", "0x1b28476e34df146b4f9d530b6f59cd03abe281be29b3246a50feded647083d32", "0x1c58347a64fd5be62d478ca9d8fe383abeb3fa30d876bd5025ecf0701257b73f", "0x1cc9002d4119596aff974310da5bc62721915092504126a6ff3b684383f9eaae", "0x13d99de748b4fed4476bb2d6e9a4ec72b8b0488487d65822895a5267b35a5772", "0x21a780abb2efafce61f4d67da7b8bdfac494839e8c384f090605a94e7b396da8", "0x0d9dc88bf3861f705b9aaf1f82df9d53870a0d3f8de4fd8b8c965cdaf6571886", "0x078f3af2d13ebf855e840a8c858a3f2f14316ae520ab12fe61381c0d2d4a0469", "0x062f5b577804a423ff3a473952caf7f052f22c8b438f00c32ac888d00c99713b", "0x25a8c33d7adb7ddd6a19dd8307a935d9148f2e962475f241ed67051bec38bc7b", "0x0431652b03c94333a0ed76c36f1968d509ac73b8910df407b0343b9dd03fb56c", "0x22123ad39910862a3a25397329e3dc149b50289f9095e7224a81d5f2d39987c0", "0x2b43334743fc38c1bdcc7cc7d36ce441ab3be01674de449b15349a75cb937b3f", "0x2d0a0bc92e109c5fd70afbdb871bcec178a69fd1e244195e2ddaeaef5ca10dd0", "0x299db5f9e49f4aceb760a4aac36abc37af72e509ad6d21f6af1a267d2fefc6b3", "0x0c813f6de081bf25808656d58811a88b8ebd5fda5b1365a54f793ac2bd4dc0f8", "0x0e32673a68ba96aa959b25e655b9422d9871c6d5b615d14da978d104132fa938", "0x1a9e9dc3dec2e712da952fb4ce7f64e991cc590a0a3fcf2463dcef92b5edc389", "0x159ae72e80b1b65f43b5074ddc6642379e09c46769d7028b9d68e979abf59442", "0x2479b211ad9e81f8180fa2d44d0675f8de36046df216e254dda9c043b34d076b", "0x062f8b312f39bb2e5f11a786ea6bb051e5373763329dd904c5199ea19e3547dd", "0x22963c036561dcec8e1dcfed6ce50a7270acb2e415fb343cddcfccb77906da55", "0x04440fb323547f46c673d0de5a4fb198cfc8b94b64e0c776442fb1f189ad23b4", "0x2bd6e08f96c7801d3ec73c04ec706e3a56e10e90904c29a5a09654d56cc39f88", "0x0531d0d6dca62ed2cb479cc2490208473ce78e2d63a2c1d6deb6a15f7eef493b", "0x1611c38d07cbce2b51577b64073338f50af6af8a7d4e99928942b6a687340edc", "0x148604fd234d2f542477c7a0c73a59fd9a19c5527e9feb4165e4f711d04d84af", "0x0ffb01eb4752741b05b51b6331c2b1a03bcafad4adbf57fb621f8ffe3eec8e02", "0x14af647ed36be4e16593f8a81335300459721d7dc9ebaeb1c9de2450bc7d2199", "0x011e2a2bf16b4b70d91546fe3e9741518f14e2b6ee75d59640fd62f0606d6c98", "0x1fc2fdde6c5ac257f4052f0120335407e533730d927809879de0d023726fe4f4", "0x049e892045b8d924d757eecef66602987c317ba55b7909b5fbaa4adf56a9a075", "0x018b84c59e8b5bdc9e4c55ae91457be4a66332b5869a9bf4928124e170eaa6c1", "0x263c7be5644463e12efe717157993fd58751cd755ad31a3a75b7f52420208b1d", "0x0cb27cd239ea5d6f988acfb4b7de9a95b0eaab0ad0cec96c9bba0e6a2e459af7", "0x03634831e8b0e73bb4578749a7875f57643914df478aec0c457f62e8d1550027", "0x221ca9a31e8a11788017591eb067b1f87bc35b362e1047386378d85c24d26a4b", "0x08d5dccfd2d2164c0086fbdab916a75527156b82ab4536120ab6548dc99adefa", "0x1ea22f826469f0434f9dfe6749427fd15781564361adeea254850458ad482560", "0x16259979de9e13b79aaac6ab8a02ec0ef26b0b1690e682ecaa548867fd161a27", "0x25616133ee91e772b020d4c4c5953c05a8cea208b0162c82b57f9d07a5b6bcdd", "0x109451ff7ee8fbfd9563b8c2e7df834f72422cdd68f9372759c3a31b514d8704", "0x29e9eb61d0ce33c89954b0530ba55771f3b650a9ca00d0b52b6120da4bd97885", "0x176b236b779aa963de6e283bc06f4d40b2119fdf226bbcc4d56f9337ee940df8", "0x16a033d6c26609b062f9c369b06ebe1edac366e8534a33b62d0ec919855520c3", "0x27cd66a32dd969ba9fdb038201742c8062507ecad62e8947658f466f2acbbbc2", "0x0f90038779e72e988033ffcb1fecab087f302ef61751a6a84946c997e634375d", "0x205f70b96d6e7fed7449ff0f70be698cb5b805c7573d7708e2c68e4bdde851fc", "0x1ba89c27c091cf85f997ba0e3dfbb84ba95d463d1a589826f993bf60d8670061", "0x182ea2d905630567136f83ae671ac63158db9efaae71b5bd3ee0a3de9a9f9eec", "0x06509a885fe116b967ad2cc9999d442106b2f0967bbfff02c849c5272a100481", "0x02283f7d31bc75e8ec3c8f1db4cd383c04c02dafe42a6cc83205c0c1653aa855", "0x17faf24d23b240bc3a43066d218db8a1d8928714641e72b41b74febff037d4ec", "0x0a03a9fc7aa508da326142e62c7d4818f593dfc50e14b8b834ab893431a2a620", "0x071cdad090dd06cea45044f25a6adb52971594f3e161f62f4129e0b72a7a9407", "0x11f176589b8244f55560096a18423ec43451d6e99de165a29775f1e056bae3b4", "0x259f50c13a176f8513da7744fc31afecae0e9a4102a6bbf893178bee26a53d08", "0x268070c17f66e82a1219f144e97ac1a9f6f926d8d606bbe66c2bc7c051ea538a", "0x2feb1ea6480d6caaad0a25a3b660d0163b701931b7f73751d5e86a48f0aef56c", "0x267a8004c0a4a65b4ac33b8658b1b683579ed784647b378772b4b66cc4c189f9", "0x25d67a760f2a17a9435e5ba4d7486bce7a0010f771e909dc38cb40117e401308", "0x1e14c2d3209d43e73f72524efda3960e16c8d16dac6dfbae73c7e75189f20d11", "0x1c12410d09b3364340ac571b40bc1d74a9b42ab1001f9eb89cdc83a32656b448", "0x2797b79c67a48c4e5210e93402f7f739d1e4f443664e6981df1b4232a9916f55", "0x2f6fee780ac5a58cdafb653ff250ac96e02c6713fdc53ee530111131afd2dca3", "0x0096d875d77642579ca91708c5bccef61acd69fc941ce2e126c3ac394ca5b1a3", "0x09c918b1f1284e123af4a4279598dae5c44e5c201475ab083daaa270e43599a0", "0x14c0b0619695bf075a237947bc425adf17c35be75d444e54288a3cdc85b8ed19", "0x26d8f29cc41aac3e0e39e354547c53b30627ec26e4fba33bd8d60979be27cb74", "0x09d9f04394b4b2f5ba5c2e4f83e4f0f63e4c1791ef011148cb2196901dec70cf", "0x1704c408583e92deb63655c36b90cba6a9a2c403261fa2201b4fe6ba10dcdcb0", "0x030702b64d0a76cb0c9e651eb579263718b35cfe62e136472e08616938ff0ec7", "0x19decf83dece35005309897a3eb81d5e25cbce4eb5e2fefec5cf68d90383297f", "0x038c625f54e4d2ec49c3811c37063a1d108c0d5376cf97944ca1074964f7ea95", "0x0cd726d0859a55c8063056d8356ad29b410b1e1dd1ed0e282ae484d6b94c33ea", "0x0e9a0db14a18282d439947ef7412fe1e6aeefcc96b4ac50e7f430d980b47fbd2", "0x1d3b00e67012591f3fe5bddc1eb36574de7a0357a1be28359c1518d07d5cf985", "0x09745ec5d24cf1837696f5a867c3c6129a0d44c037d96612e99b82eef3dbd87c", "0x2dd5e2ea41588db7b01cc611528850114adfc8513b37b17fb2a46f2b09bf6b1b", "0x0b3dad731b91ed4c2aeeb10410c51a6e925360cbcab20c3ddecf83dbaa7e4c97", "0x049998b294f8aebbbf2fbbec695e4d2d56a9904ee051c84b0ee1fec9798cfb42"], + ["0x1373c771cdf15121a224f330d84b6688ef9fe0038a3bc26a28e3196578a0000d", "0x29f9fbda3c999836017f76e121af3aca5ce78bb48fa867a6a95e5b9db387533a", "0x1c7eb5116a20075c169b786d9dc86a24ee7a2525b565bbc262209a8cda490528", "0x21a549eb554f0f859f61d68f1b6bbe9aa3449a6238546bbdf2a1c308c9cc52e6", "0x0b53fff701347d1b9df98b46175800e0d3250ac6d4a1afa71a349ed195873508", "0x02129ac4742415c020db2473999b34dfdbabba3cad4713718f95e6346e1583b7", "0x01d28f305e8b0ec88da37c8251b0c8d230b68bea9401a15f5124d64c5454bc29", "0x1ed301e02e3fc930999fce6d3744c23596700c03720705939d61cee451faff93", "0x2edb1832966e34eaeee0903858afedb13dbba9f7c802c83ee628530d0e26ae1b", "0x123daaddc930c65fc67bc77ca8bf4123fe81fbd0501e8f89ac31a698756d87d9", "0x2bcc36362c90210acf67d5fe21d53104e9d5478d057141d3b17259fed8e4a8fc", "0x1fa928cab5938207e898e61d99c7d616269144f7900815b17095f7ff76e3c9d5", "0x29c2f1cfa72a0fb8f53a631e84cfdf5cc18fb426c254f5a905fd3e831fc7c837", "0x17a732ad13f1b6a1aff42664c390b9017c418210273c7d048bf300aa7be9c65e", "0x0c18c6e773ea7eb43b98cac66722de9d135484c6cfa084c2a512ea1977a60268", "0x1954c5c238d8a30c9f1ba4fb963e091acacbc3ed7b498dcf6600f530b6545e49", "0x2591ab77813f34d8a0e0b7b0caacd6ef179dd314597cfde78b74869d74dad600", "0x179db9fb8aab4619e67a6a8667c7b4b32f40ed848d8e33b756c9a794b5932fec", "0x305d014214b4107c11fd83870458738e04fb8dc4e747077c0e462f51d1c59575", "0x298723d70694578fe291635898762bcebca9ac4563b12b90e1fef4f76f9b7bbf", "0x02b336e9b38b504c412a683309ae8024d0802a45d06e649a5e53719aab29a913", "0x08687e699b527b1341f9ab7f17113d9e0eca0443251ef35f0a905704f155d339", "0x0a5ff9f7d45b3ca9b79b18d79db4307ee7c4ac4ddea9a8da1a36ab3be057c9bd", "0x20e44747601319223535f4566cdc86ca54324c5657265353add7dbf4f2504656", "0x0254dc31e3afd304e85c9ef8fabc1a1cd1a4c7b9bc860ce9ce436c33a202a96d", "0x11cd6492dc520c57dc3e55e33f8a387cbc1eda3a1490b6a4bcebd94e0742cbf0", "0x2f98b10265a30475bb0348d4a787cfb6603119a1a4fe15c36dc986cb4f8c7cf1", "0x153d814e4e55ad782bccef998c974250c073465ef7077550246f69c58ba989fa", "0x04db11a9ea014aed2ed08e46c06306e87131744d65d289e59964f930d13b9ed6", "0x0e9a9a6dee9339f5de7135ca3222fd2230c3f3f3e01eedd3633e606aa0b1a1dd", "0x0e6d8e464bfcdb8f9ee60fb1f2f33079911e7a073856faee78398811cb976757", "0x0237fe2151186437a1cf1901106ae25aac16e9846f9d41fd68796d7a28ed728a", "0x1e3d3d1eea8b7615a9897ef86229776cbda1d848aa5a680935825e73f1f5aa84", "0x09724144c7a4aec0ddcbba9f9a9e9ec9bcdf688ca3f5870f1ee6e174179fb440", "0x11139987e1147467d927db25eec88f0c1e0232e3486cd9a014be3fc8cf066129", "0x1524e5becef72c2697e34c8055ec81974af04912d7ca1df83e65a080ea96269d", "0x064d1299b11b1a6bb50b3e5ac7592a054fd72380afa4c092ce28ec8c31e80c99", "0x12d9fbd27be24eb620b7743cfc5296567cb4804091a1803dd977788a9f588e4c", "0x088d226e69e1b273eba31d4da8576085cc0fd0daae1546bef30079f84b651bc3", "0x15126de187213ebb40dce5da1ab3adc58a3139920c19497c3f47119baa50670f", "0x1169c1fe739bc528eac16a5263d22dee4a66a9961f01eef51684ef792126859d", "0x2a7006c683094f6f84d122ad5774ad2f0c9fa80b6c963e2fa3a1ead3d74f3aaa", "0x2607c22ca9aefe8cdea30fff05b05c4fec7ed8e9302d0f950cd9405ae94bb258", "0x24530b086f441e3834f36c2b11ebc0a809dbdfdd8317a384465931c1c58c2638", "0x06354e02d8c4de97a811481e390c26e5c93fc29a2a1a84824ace50467c9aa652", "0x1f6fbab3e2ea2791c94f5ff43ca128943640692151b295dcf42cac0d8ab0757b", "0x1747ca45b7282ef09928f7649f5cc8337537e2834e6c8905c1ae69008df70bfd", "0x03efd4b9b4d41974e36884e3b1055a705ab4ec3fb1c8e76f82e035991200a633", "0x2d9cd189d47b0b1b32c9a2412db6a59b1b475dc91ebd2d685c96b349c220b4b6", "0x01c9982650aacd1a449ed04605bd65fd75ce393d424c9751814fd03541b4756b", "0x243ffeaa82f3c038481e84b728b459eb221359851ae226c1c6d6a7ba1b1ffdb4", "0x0650daafd003bed0bed22bada31bea709491a83b55caff300339885481dc65e8", "0x16d20c619674228b767fc625aac650baae2d0cd15c1f9d0164547082b3099df9", "0x05ee8d5d661d39f15be923fa2944ef2b29da3f4831eb1e4f2f1c1230cf5d149b", "0x23ebc8fc40feec52402e18f881eacebfe441de256273ffe551eee0ed7e4dad73", "0x292bb59e7a6c70116ad7b7e11951c3b8b6b1b130f35bc6c428a9533c003a70e8", "0x133d42d9f83d054db43e4354d1bd7ec3a89b8cf94703fdc12950d9f3c21a63ea", "0x1fd6bed0d347a88e46fcb42f3397aeb0cf07a8e71467e6110b94c90f9323745e", "0x023b091a0c1f0822c8156747a907c8a79b8c1fcab4a3420622511c867f79d776", "0x075fc73bcb6ea2c158e721a9aa6c3f1c4d139b5cf1b752c87d96f44420512eef", "0x017e3bcba0b2d22d27cdabbcb360c8020e56c01c079cb550e3f169fb2a9a451b", "0x194299f0fb7951a80ace994a3ea3123e6e0cb72d5c46fee296ea6f8e73ad1882", "0x06f0e522924a4cf25d9011d477a2746c77e8cc77150b87b42c8c118f1473b514", "0x0cc91c18c5fee1b579da0900f04e5a6c36d65f0fc977993203d4b311cbf5d0ef", "0x1abd94c2a5b28e661310e3315b67adbf563fdb06926b6dc4e4d93d04165ed309", "0x24142c9001a7bfff363f3f67f4a2bd128efb72e846e3ba10344ffae655e56f2e", "0x1931b9d4523cb3f78bfbcf6b1dde68c46012aa747dcd7a3af382ed781252e478", "0x2ce3bd1161a012a572836e97ea8f0694f93c952d11fd11a8e8f9a49dff9df85e", "0x15a09fa373041c239e8149657c98b4f3aa30d192c87c03cce47a2b2453d5a48c", "0x0b1dc38f74a71b7d909e5ce7fe5601768738417a5786898da316f528998af665", "0x13ea22f9316bb5694d69024fee2cb95ee643c545496df0bd1c25490e34d0f1f6", "0x1ffe58bd14b12b9fafdc365e7081a395a9614e022f7f4d7bc7dfc974b0aad71d", "0x11bab1f186cda03c01e85dfedd40bc5d406e24ca58b305a6257b7c772bce2447", "0x14007eb2d1440b7b8e0936c79672051ae6f5ca9fd4055b417f00c9632abe30ec", "0x1037f0193d40f682ed9623a772de679f0431873e8e0b5004a1f242ac963fee72", "0x20b18be760e87d7c6149b810fe496abf77a0f840ee57ebcfe1cf77236338fabd", "0x1de835e6623f426711276dde7a2a1c20a61b910bf6fdcd33b34368cf96e95a2d", "0x211c38050b07c4a747c5dc44939ce1f76b0820c4b5f07a47e8b10b05e7a99d4f", "0x0372fc2cd832015e119c2a12d3622fd7212a4887e4bd1275c205fae2e17f452e", "0x01438dee77b0825cbef6b0f412e9a7277d4e5dc161ce9816f020ae4d1410d0be", "0x07f2ece16c12c9757aaa60953dedd709c513f6f8337e22968a65cd50b0d99211", "0x0c57a69d09575d8e1f525e012d73729bc89649b5bc4260d73e4324848452510f", "0x1c8d0a9db77f14f835309f2d3c6821b9921a366468a0d15efb308f57ce658513", "0x169da093e7a5b39bf088277072d4fd58d80215b69ca262cc2d12a5eb30c00b8e", "0x2f3034ab20af0fd83ac60b0236696866f8250bf2d765b10d6da2e3ef1e2d787b", "0x0e31b4fa627dd0e5f2dacaf105865a77781543620f3eb28ff7dc102656583073", "0x2a9007126f67e1631d29512f433a6a0bcb8c95a36be164be5fa86be9feb8a594", "0x080af40215b6078be84fb47acd79b59eccefe8a92b6a6033e772c22183bdc0d7", "0x0de8a234d208861ebb05ab3812e5c4fdd39e7ada9047c926efb88e1cbf2ebb52", "0x22aaf24c0f1e3f941606a527376ddff91cc6b0adc062efe641f96e3005af3659", "0x1f4f5b7709cf584bf0704861e94234cd8909851e3b212c64a0b3051ffaa2eb66", "0x1296d46427eb2e38816a5e817133565d4f6ded4eb72b5d0ab559bd57667aa2f1", "0x03fa86767c1fa2d7b4eb45b4a255b1298c55d045c69627f5d8adeb9683a129be", "0x08022805abe02bad75306d226478e49d25facfbcaff649364352d4a88d928f38", "0x1d58b33a2a9638ba180cd36029308a2e8be7ed273441d5d280456b2d3b8d8a0a", "0x1f8cae7359c800f307a625b66ff2154c6c4364e85ca8e01911a634aa4ad657a7", "0x039ca66f2fd7f80c17171a4ed8c82ae3c3bf0462d1451a9f5a58748958717bf2", "0x074f7e13e74f2b7b316a3839956f4bf2541eaf2497653b6db1a9335da6c882dc", "0x1f63cf1148c0efa656d5af850cd02a0d879ad7886cfcafe1ec55fe6bf4ad5cb0", "0x1d9bf6ebc0464b9cb47583494a27b45763d7a62296ecca17efbea97356a73e23", "0x076492874603b021892e5c2a03c706979be557fd4ee2e040792da16e28bc8ac6", "0x07012338c5c626e267f76d428388940b900e0085c785166d27b7ec8960825238", "0x09c29059e2013d0ce2cce0b24e3946765a95f040526c3c9224d2801a1bd4ff81", "0x1f2de0350981ab374c9ba7ea1a69d81b287c2c9fad9095205ab21582ba0ea641", "0x0c52bab86e259a3bd8c061197028873b801b4c56ea8036ff95a67f434f3b7425", "0x2f262e06178670c4ff861f670c7b51ef9e629213a6422032dfcb26760426a3e5", "0x2af6aa2335400114453435e97010dbe70786a691a5d972ea211af12d4ce384c2", "0x18cad65567f0322fd6f0626cb5caf567a46faa122d30c37380b54b6b5d01ab3e", "0x145667e19067dddbd4269db6ca76d0c0d7e57f1945eea251f8acad86e849858e", "0x2ebaa7e10194cd2957a13d1a358fc93ce54d8bd3dbed06e215b2bf2623b21847", "0x28b85b95982ebc76c4762654f932db031ffd5376a1299b45ba805c4b4e0754d0", "0x17cb0c473841ed2eb1f1a1ddf021b74f73f34172e065b24c9684dd3cffc340a5", "0x24f46ecb8583ca97c5b018736d227fde7c39d1978ca63c97e39ea06588db07b0", "0x274b5c409ea9809bf7f04a7cb5ee4d322d1a95a86c1d0961b15d4a24a7185dec", "0x2cba8960d543fd9846377348ea55b7d042b3348524d76101836646627ded4477", "0x27f02e416dd70b44907f97d7ecb945cebbab1d4dc73c8a18c00cfb1fb2469988", "0x2ab21865691229fa440b6528ad7c39c41693b1b939ec09dbeedf26f37724a151", "0x2910da916e438c04837ce799b81b0e9792c1ead008d92fcf9ca867b165f5e275", "0x0f03ce98366111de12ccbe5a1121c9f8309519a7e52300e397d9d90368207afa", "0x236b0371e7ce97213d8aeb6683f02f44044a1fedaca3d151edd3121a44fa19e1", "0x2c50cab6a867b1e801a36ffbcee521b83afbc580be1897dc4c5b6cd5df3b350f", "0x0cbf8c8dccd837d1dbac09151e4ee378f93e8548d923d8a49e6df81b9c3f277c", "0x1d18a9fb001245c1a6a17f7cd24ed820b0dbede9ef479830d0ae483346e54be4", "0x1476bb1c30603f7f94493d2e016bee63283b2a7efd999d59090c434c88837ed3", "0x24d565fb578dd252f56a7a0d5d8d4d1c5d727d5234ac4bd9a9600455ccb5ad58", "0x0c68e7e9567deab8e8b95051a7788443438e0f5fbe0d7de436fa3cfad596369e", "0x1ce5b25a539d3e1c0c5dcd1ebd0f4ee716840d44c3ae109a669eacddc4a35611", "0x2d3210e66407f6c343eef28fbb7bae59f626db73bec5d9ff06ba9d43ba84e208", "0x118ab3427747ef1a45a609cdf7e7102afae6d411392de254d3b72f1d450ad2f9", "0x0b45c70d2856c7e5b3fd6f8f0fde1a7fcb14a2acce4fdddfe50b39fb97423b5d", "0x2ce7c2bad5608153c5d1e40ee17cc33ef1783d9b1cf0153e4a2918894faa46b3", "0x0854bd46fef6c2e6480b3b0998215f55f4e090a3e99e03a5a64742f98dce5af8", "0x15c77e7600df711f58f2f0fa88b7d435770104a196076b74e6f5d7a96c8e693d", "0x2a0a3ee38edfda0761bb9b3017924d09309478b167a6099e54d2f5a221724ed8", "0x0e8c14fd43b9ace2b7e98e1ac65659cd37f8de94198aee42f5be6659765a4ad9", "0x163276e836c4ee6ab9466613c61fc6924faed9cfdc0a458bc95b59ff381e21e4", "0x23d1584a5cb0b74c00071c687cddacb4a632b104de4159c0e00c5352d078ccfd", "0x15685bc903a1c4c031ce016c093860a2ae2aefabfa47d1f290eb5a628522f5a0", "0x1b33f50e90e90b5dcacb1a158641d63311972457efd9485834b83f0fa04260a5", "0x28380c55cd667894c638647e6aa14b857d3f31c0315ab315d6a9457304f21dc1", "0x29d108541f3b451943eacf723acc6886aab18c8e4485808f4b1e55a73cda6246", "0x1d4c2cba59d5551bc3fe976ae5ac09e5b728d305bbda193afc259c99932f95f0", "0x16a8d69970561003650337aabe5e4e5ddfa4b71c1b9db8cc7b82780359c70d33", "0x289e50c1f0b0bddedc98b7e8a35be62f14f56dd5d7345bfa6ad0d2e43bf92e43", "0x0a41765a5352ecbe0b327ca7827a9fc6495e7b6c142dffca003f58383c6dff65", "0x24c0d42378a0c8a613c0402ede6de9bd3527ef2b82ceea6006e7f71bf77666d4", "0x277cae5057d5b5ace72c47e60cc4b8e113ed706b5d91ea4fb9b13fd19fa4d47b", "0x0a303567cbf94968090438a23e2fd2ccb8a7f71622bffdc1c1684e8958c3765d", "0x1f7ed8c267a29a69d9450dc74afaf768a884e42c37e0e6fb4d4385cb027ab949", "0x086c4b8301656b6acb8a735019556a278a60313040f236e815fd22e8473bbc65", "0x27b63fbc29594760dbffef8d30fef49afefddf1504bd487fd6282d9e3d6e3337", "0x00b9c0a45621716f9849af8a3c9075b7ab839c282881ede8b0e5a9e723766d70", "0x1b5ba2fbced922c3796d57b4962fd253f5ab6e2b91355d2c0a8d226040652395", "0x2e1ad57ebdf932603f51bb1ddab204dc026e13dc4986791f54c4030cac6f1938", "0x2f865e1df1169a35771f617046485f8fb17afde3b2b97d1eafafbd1862ac6e16", "0x0062ace5be380c5e4361b209b80befdcad052146b869d50dd58085ea65d9d141", "0x2dbcbb1b4ea08e3769844bed522b92ee01fecd5b3f2379c24b45d59842536337", "0x1ce3d90034dfda11e9bf7d92b65f810483c48b26cca092747b4ceaf07c7ba847", "0x086583a59497474b0d1eb0c3cec4f1df596aef3db638fee1895d3f5a5845252c", "0x2b984d5c91b7b320f7f297bddd68789ef6ca88cfed3957d2c5e8a6fc0e78d76c", "0x08edeaf9ddcd25a730751b32cd43c630da831101eb310399356e4b52df11fc28", "0x28df39cc7f96672569cf86ee373623da9f1c58ff1fd66d930cc234a7e959c41f", "0x15af6a84c6b142eacc58137fb371799bf3aff1780455c32d8d3598cfb91b24df", "0x19cf0dca22781a9bd56173491ebebd18ec8446d6717563bd3a80cc52a1be6961", "0x04e0e0b52923bff8b67b1210f23a11277337996ce50180eba97775618b003558", "0x15ab0a5fda2b5191cc2bd0485a30c2e75b540bc397c3436d2e64b6a2da9ac49e", "0x018e83f7a6bbf457fde7b8ba4fc53ad4810ee071941969f87b62b6c6ea8f55ef", "0x171b0539cf1d6e8519789fbeb31292b6be60c3f93e2b45309ab559a854e63355", "0x2ea76a14e0d177f355f681c822de2b37142ae6e93712492265d2992473da1021", "0x144292627b643b5180c710eba6d74a076cda5d3ff836576e983da9b7d93564b3", "0x07ad2bf37ce1ef4a8fac5b44305f1a5d2127d8c6ff173ec42f0e421ea53f7c1c", "0x055514dc9b01480ae57ba24fd5dd12f229bb5597edcffca145156af3324b0d84", "0x0b05a45bb9377e1597507fde0dbbfa2d642f6c358e233ecb8ed7e575ec6a34a5", "0x198b369f024a0561af9ad7a0cf7ac107042b42f9301bafe2e1b4c2ad9e46fa86", "0x253f82b21addaa86724677bad4a4c464ac5ec75c78755fbec6f46d9ef73c2f04", "0x0ef256e9d5e9e3da1f56d7d2115fdf10ed7674e3cecbcc9cdbcb46c7cfbc7429", "0x2d8926570b080260164e6b66afafbad3d925a464e995d7a1d02f90c7264f7b38", "0x19ce4c36c51210787f71cbb080cc340f2fb732cc191618d525400b2fdc516896", "0x059df907c9fe5249d484183f2e89f102e1f9978585c88b57b9a87e8d8cdfc6cb", "0x2afc27a41832e0bd3bd8e947284d9acd1ac7050295b388b6b5cc3179a842f803", "0x06e960a5b2385417429dfa89cd14d7787c0778e4c5421dba2eba694b0854a21b", "0x1e8b790ca2d081624486acfd613245efd710e7a7a908a233ec5afe1148476098", "0x2f68d78df4e08b23c96fa9597ab7ba5a1785329a370053300d792a0421cf3ae9", "0x0a2e82f0c2f9e345689b2f2da2108d018cce3084ee85dc83d57937facf3e56c3", "0x108b2af65d8a2b8ef81434d73646cff6c25fe8ebb88bb768dc435caa19143111", "0x0c2f90eb77fb2855d39b745a85d3c960c3d0c1ee740d8777971c936ddce26601", "0x03daddc5903de3d5302c7a07d4c546039fa84c3da6cf4eac9c2b9cbc94db005c", "0x010f4d48188805d3126738d24976ef4c80596b3c6380effb23cb3b3eac954134", "0x06701317708659ce74515f62f9128ea9a1cff2796e18eb9eafe9c2ec4f9e4280", "0x2dd0349f0f0ef52d77602037a211e5c565e0091e01072ef08630056d907fc6d9", "0x1b15957d8c8774076df16d49d788b11a5ad4690cbd8022437f402a6b25eb5436", "0x02a92a1f50c4658b687f2b6c8afb5323c9b8e3dd17fdcd5c40e17db738a27592", "0x0d4cb316f072fc8e2463a4a42d168d6dc04e0b137fa4b57216d1f2ba5e64ad56", "0x1cf0f9bf90e207f3a0aa5fc108538c641c40e0952c6f66e6024fadbd2248e16c", "0x0b81c03e6806a49a8a5edfc3db4bf78fd4beb80674d0c88dddeef543d3600ae8", "0x1dbd32d049764d6ab6f677b89c408f9f4d3f29b5a18148cc8d5740e48ecc9d35", "0x16d52bbf838448b0e44c2bf05229c3f741b966790438a2997be9cc660103ad90", "0x2c8ef880d5788e5359b97d1be554305e0cf5bd55c293991281bfe5401b9e35de", "0x1f007ef167c9b99e948007dd8060857192b9dc992127c235aec46a2b323f2f11", "0x0cd33683ec08207c56a80210d9929731d2035264394841b2b6f65c61519cd842", "0x0af1b0f70f93bb8f5377db6517c4482ac93ddfaf6051e68fe739f161b4380fd9", "0x24d03d522118e544c04d49d38affea789e49d2eb2fddd171613e69f4eb07bb40", "0x2f1f0e4bf9adcd2a4f1aee5cef4c2d3f27c9b4824796953025027a37942428eb", "0x248a412f287cd3b3448930a1039ab32281958f99a2eec0c2f1a52a65b3e589b6", "0x21e374b45da55c1d3d89c6d2173e11469992b81beb2d3d4cd4d16038dcbab231", "0x1c2f85c42f6a331092ca033b4ae06ab667cd8abef24b5458eb10e53346694a65", "0x29eb555ddd4c74ab9031084127bfc25036f177be8ed62d32ed35973d3de94e76", "0x07d30101df711f25364a955a7002fe48f47ec0a7c0acd54ba0cb551c912ec6e3", "0x2afaedc7a657941c9e77e728f202d568e4ad1230f91d369a961b4dcd4e15a36f", "0x2daf426a65d37cc81125c3d1cca527cb29e9451be0a5acb7e4fc81b2afae5a83", "0x0c774e81279520eeca70f8a7b3d7799bdee8371a9fcf902d43533e649c7bf48d", "0x0308212a0a56cac99561515c83f01dc3684be8a37a25197b467acdd367ee030b", "0x20fa9447e92e4f68025e1bec51f115fb653235aba484fa0dab9cac4aa744d295", "0x2f4f647ef450cdc4b3954ad14c7cb1c3e08d140549bc36c82f739293ce8b6245", "0x25a6d02422b9e00b1ca5e1156b87b4cdda56cbbb341f82b4a63ecd41afc79bd8", "0x0565834c7cf03c8e542f1c3288006ba9f35c56c95470bb86b9668d0063d095cc", "0x24a6f88d5d7090b24a151c68aede9f347fedffaa584aa431b2d0e90da3cd4fbd", "0x014b0d44ddf5cea576cb82d399c8e4a53e78225b646d25c97b504e63dba4ccea", "0x251d320b7603c1c86b6102493219cb1f737e4ff9b84cef7050e37456e8f03acf", "0x238c2bec6cfad388d477c55c0ddeab2d3268155f3363bcdefd3cd8ae5f63766b", "0x1337d778bf0f0bc001ad9dbf9999379cc08de0ed567568448ca3c0c3555da9da", "0x269ae35f7eb384ad1965b82f8c9e8b4f65d3cecfd767ed4408a025ac7ba97448", "0x2b01d8797cfb9616e3471921b610dc78c64ae9ab2fe48701baee5e7853ea1891", "0x1acc5f89dfc24a03458156ff7b156b22f4270746900d71368b1e8afe9a684cd2", "0x0a66d6f919f7dce7144ec8f66cece8dbedc62327e0407abdc7bd71060f8d5b78", "0x17978e79a55cc077d4bc92b38ee5d357ab4a6c62146b2a84acd9af50954e8ca8", "0x11cbbbe66bb4d957813408009843b2c96cd7b02fd4b449db1895c833a64ad04f", "0x0bc7843529e13dbe304210922ae9515a2f8148eaf5e83bd0686112dc646fc93a", "0x23d644fab01d806361de665c8bc6e972d9658d29a35e96208bf53f8fb4ca770c", "0x048371c6200b923b1a0ad3f008310dbc350e1e3c470d24d3ad23eb41e3d93b3c", "0x21207b1d47a4bac52ba3ae9078c265e5cd3b11a126547f2144e501c18a656f66", "0x1ab86eda61a6bc9606e65f455c3c48d4136b03d8cdce695e750c257104564704", "0x0471b41c6418b6afadf0c9517369b01f62ba78d561941c4beaa1de9827676444", "0x1f67ab3d71646c039ce09ee72320b2ad755ffbd7187eb43d5ae0850c923ce6fc", "0x1d78da55a4c0c3fd78ef34b4316eddd7f36d5d8db6551bcdbc836ba7197daff9", "0x14b37257c1f8852aed448036afe59b3a12159b89afa5e2ecb35063aa91c3b791", "0x00b904b1e068cb7712bb63b1721dbf5adf5b6717e6b0deaefff1f2a988b3a5a1", "0x2fc100ecb79693aea91c6118b70209fb445c5feae4f6d1c5886018a0efe4a8d0", "0x0a9d77bc8f430233b59f6737b9c0197aece2939a3b63c5ac24cad31bcc70074b", "0x1f4bdc685882ae1149affc74fa1e4ca614cd9499d75027a6ca7200000a539b9c", "0x0dd11b1befe293110cc4f6b5c0de6fae3a67edac4e84b238facb8a445fb73fd3", "0x21012864a44b6479d44bdb1e2e97764067df69e076d1e1c310de929bcc1ebbb5", "0x142cea93e5949c06c37dac88b664ed36a8bfe1abccb4b3145d0087410a5cf8fe", "0x25d074e31dd093d43fa3a3a6b5c044177d43ce7739acb9e5818ae8339e9335e3", "0x152368e8dd72e9bd3f00fa47ad0197096599bb5ba3f63401ae9b3689f5afb943", "0x224450a6f24dd8427d8d6f9dd985630313eca57d57479ec98ed3eebe3a23e50d", "0x08ee8bed1a5338113308a32cf4b8f0a42b9c122cb8ea937cdc1e31878554c81b", "0x068471f745758670cada7f230140e09acb0acfc237cf7f31e063553bab156dd5", "0x17dceed9a861ada2970318ff8b9dc13074a1113f3076ed7ddee67845662d5594", "0x21c951b2849f51336da12e1930cbb2cd407c5ca0bdf9cf6e2ee88a8e6cf36e1c", "0x0aeb15bdd33d09c780eb1ab6848dcbc1a18a5c6a1f250cee87cf506d46c36e36", "0x037e66e0bf7b7c7f7b00bb5c067215562220044c94bf788c40b4806fe86a08eb", "0x2705d297db4ab693a65d4cc73ed80ceac3a6e10d57123701a52769095647bb00", "0x0df821b1a387e78f8e2388cae0294e88d0c2dff811425a940a60e0285a71b3c3", "0x2959ffca94642766a46cd8340db08ec9ada915d23540688ad1f25e34a9ae3afe", "0x0e86b8655306bbde01748175b56e66ca36410f758e1bc02473e4255d88120a43", "0x08f94dc12076e1bd3900705e880245a6149ed38f87baffda0a6f4b14264b5fcf", "0x2968e4762ea9e6ee5013d96babb250d95f300fd80d86d22cc095de9514590506", "0x1556c2665a0e74cc056fd454a85a3fbecb57a23a879dc1cc95b98d9bc497018e", "0x0ce86a48c05d429be480b9cbcc220f3a29c6ec865bed10a07835c6fe6bee34e1", "0x21e6b5e9a5a5c57156dfb8cf5a8785d2117599c247af6feb577bb44e7524534e", "0x0444c6559f15a5d6f3781bc392e88e8ac582e487d60de12cdbc357c9623e4ac4", "0x17cdb083db2171c7621198f51b7d189117ab80e4aaab817656342e1b0b3dc1f4", "0x0c4fcd32fbbbcfb27be41a9492ec55425969c9142f365351c7d23478fd68b3f4", "0x037a47a18dea6fc765e6ce6ce7bd59e3d1103ab69cbf9206d1c2ff4ec0389576", "0x2c14bab17a78ba001537e37a630357abe06ecbdbd2af7424ce1225d4a4414b5a", "0x10bd8cfbacd505ffd57a2bfaa757ad3e45f63ef37e67dd541ef07e957984e7f9", "0x0f2a0b6a66486b55fd8273a453ef622f4c1d4e3d975c34d538cbd8440a3ce9c8", "0x297b4eb48434dc5342e4c9a262c200331480a02109163863805bb70fc7a92614", "0x22cd3cc552b8310954b62b62d4f7a91864e6b6cf79f55f244d384804946a77b4", "0x05cf496eadc8ea0ccb36502f443c99b347bf7023f2d7fbce512e1c58045fbb2a", "0x1e0ae8b082d3726190a6878f4b8889e0b6297d27de3f183aa9a9f2cb2abb90d4", "0x2b282ffef89e1c3a90c359bc7c80133b9f634215c30c1db82a095012793c7c1b", "0x13bae7e838c638a41a9961ab81520f408c9921070d9a02a7fe5bfd1da1dadc4c", "0x0cdc320eead70bf0db57965b29f9cca28826f6c44d824f7f122e430aa4e746cd", "0x1b94ed891e3a73e1bcd6b7a9fa336b485a5a83e52d5db08b704afd8d48136657", "0x2e8d765a70fd39533f1c456db12b420cac0d7b086bf19596c60cd6406b076c67", "0x2f69220fd9209bb41b0ef942bfeb31137088ff9a338ed283de9ec3a8850e96be", "0x1506e9fdec14a9dc03eb159d011f0baba652db364b0020f3485da40ef8079ebf", "0x2e43093a060a595dc13213ae7211c041b29d39401dbbd4e7fcb0341914492a08", "0x17426eb02415f1d682735382450efc76a05c6a0218671ec4fa3ef2d03980db21", "0x22a8a8f47529433cb471acbbceda9b6dd4e9e57121745b86577da8d106171e3d", "0x10d066af04e7708e512a382310bd9a10cbad751a721c660ed0f807f1693d6826", "0x1322cabd21b8f9826da84816f3599f20a3324bf47b44abeca3d8e6a26bf64c8f", "0x0e9033298b7fba81069ad708a401ccaca713c122a7907b9d2eec39ec1e5834d3", "0x277a069d3fc5701249012a0fc2d96d70c58b8f0bb45a1d3932051d4541c9be8b", "0x2b6a4d2b44646516e0511d03595b94f5f31b538c8445562a5f787cb7916238de", "0x1e9b7e897f636c286ac7592181135b3061cf02de5eb4c3344f2b3246f17459d9", "0x089d5576bf0677940ec8531e33761650a38edae669b73ee5f704c018310458bd", "0x11d91cb6a7c91f3a3778a457bfbcba977b28eb08b850e47260dbb3d205ada63e", "0x079ebc334aa377cdaf2bb057017b776ad150adeb27ad95031c1e6d6e4585b9a1", "0x0eeceb66fbafe2552212467fbd7ee2c535244642c87c54efaed43be19344eefa", "0x1189bb18157591e582637275139eff1ff180217439babf0369a7d6afda53af00", "0x0a104e1bc5aef5ba3362773b15d152a34bb66fcad5169061e4c74f42f8082ed4", "0x12aeabc55f0a0a7394844072432e9f1095a79e2a7b8765c0e7f93721f5eb8feb", "0x2d5fa7e448eba0f3f75b82d155d2bfb467c11361536d61cfac1e9eaebf9f9960", "0x11bc382ad6f3998ae12761764e273e8e57de5244008964ddc1ce7d887b3ea15d", "0x2f9de52e1164d578244301dc0f52c09dcfb7b12499ad768a4c91af37f1fe999f", "0x24a160dd3b3f19071f231118426515e7f75fd3fd4d98479d855e88cc40f2a146", "0x2562dab01972dcd2307417f8356cb096e5a52b39898d7700c9082fe661ab5aa7", "0x0c71fc8544d8bfe1eb57eb8b19344825f2800e7728874c0d4aeee09d37fc8018", "0x1c38cee709ea57a5433ef05d4f3d8fe85d27595ab5f3bd5b1e818a76b17edc8b", "0x1602213816c60cc200e8b2aee509da4de8952ca6f775f6951aa176a6cc78d10a", "0x09a046c67b9802554d315821da1c3d1338311acaa29182226455685b3a6a1a04", "0x0a2ac73a3b40f2e8d93b888e15ad9695a07d56f02d172fafdc326e99ed94475f", "0x26497f1cb3ed83f61c32795f5460e2320a0b056117fe2d4868bfcb691acc9d23", "0x1b1a886b957b5b7af3608333c34da124c68e137697ee082e21d6e9f534adda3e", "0x1a1cec97b3e63763610f3fee9e5f884313d66f3fda193985ffffa26388a8b536", "0x24eb5865c2393f7e9d6da7a0460f9fe0a1112c41137007f71ffc53e90fd2cd5e", "0x05ad739f4ae7385d18ae961990fdb8ed3e808de0108cae743d7995a23239bfed", "0x20ea4df643c31b3aec0c8c2cb444ffec0f2351841827a82103a36fef81c2b5a3", "0x07e426d7cfb8d0ed8f150d76e11c42bd7d0d0be868f7cc80740d14d6b6d985e3", "0x0c284170139a3d32feb893e2e393be22fc5712b4b134e117c9cbf91c06c7a156", "0x198e892e0b6e96942779fc23ac86ed3eaf5c68c79f8f881338ddfb381bcab3ec", "0x04f7274b4c460cc0d5d78d6391700ab706b188d6a4cbcbdcc6ca631c617a4146", "0x257a207c9af017f50c24c8286e99a006f5a9a066997fea4d63cbc4479d153cfe", "0x2f9195e87792cede31f827dd408160697c174a84a9cdd07cd69b4443a45f0c81", "0x02c32457f1c8a48108f1c16491e8da1e74ae1fb598642acebb76d0210d0af7df", "0x0d16062ea9a5b5184ae022c568e887e2fd31c2d2f1320acd915b84df1cd77c3d", "0x273821b59fc23f585f423e16c5d9571e78b428e446adaae789c159866c15a9aa", "0x28d58138ca8e1e1f410146ec8401796f7cabf49d41e59f4b8ae942dc6fe0ac32", "0x0cbbab4a22963ed50150ae37e8ae9cc139355f83de4f38f01179735633ae3f85", "0x2f29b839fb5759272d1519a17df03310eb9afab12540693b781c9397c0da489c", "0x212505f1db73adadfdea6353b38b8574fd52de8ab3cbe3310f5262a9496a575e", "0x0511717ed104198d0b67387b576b020b6b645d94f205f7005ebb04161ea0959c", "0x2cd17a3fdff1b2ee153b65554fc06a4edab7cb2d870c1cdac0e9651c21593d80", "0x2421eced65e40f5bd7b7ce147ab0845888853ce9d9e90242ef0ecbe4df94f4a9", "0x2b7bb1c13a605e06226271b1567d8070576b71fbcfbe0e8a0ce6ed9a60be4b60", "0x20de93b09b10f6f40d2960f3ae7f703d4aff7d4e2a309481635693fc1e7b57cb", "0x15f39da6947d0700036090111b9463cd322712f5fc0db38a8098abd4d3fded43", "0x055a10c5b2e1c3d3ac97853d37acc7ac3201c3f69ba770c90736e59910299486", "0x0f86f85857f2f3bfa5fa407678359c5e4bd7f68e4f8e4af22314df5ea170cb05", "0x2d57680dee104eb6887c77345eca7a8c131022a4471f88c54d4db9bf7a18f475", "0x01d25e7170e6b92b2bbcefed98f7ccf94c20b97a546408d962e48f6adfdeed55", "0x11dde898034df5d0a50a1067fe3a5b6e9d546b4268043f5998befca980271e07", "0x0d96e451da1d5351d3848643cd82ac82a91d297dba610e196992d08045efc565", "0x1ec50e2f05af8bd16955612b7dd0a22ae046db692a340f0b814b472cebefc7f9", "0x12e7a565e645e185f7c9e00f06ade71736d990052e72c97540d79391224c82a5", "0x277d5ebf33d14750cec8a5df484fcdb392db7981559aa350e2ba70b3565632ae", "0x227a8c5c6b1f1a259d5fceb57d7dc834257317a8c1b94209c3fb86fd94846a89", "0x2bcc414a720c85a42f6ed14bf7d1e2ca7d3aa5f7d61c4ff5d1bd1eedcec09f7f", "0x1f7864a729e70f77cc1b5cd86c193cbaa9410070863d5da37742d665e2de3188", "0x2add533a1c14b4ad2a4ecd780397391ac9d9ac8068584c3ae69f56a9e4d72ebe", "0x16198d9581405334a13e109b04d9d1f5638a7df278300e56059508f6ef65460d", "0x0a060a2599eb696b43d275c43eab0b3b04b461cc4c436cfe8b1748d65d143379", "0x302e7b6c0abbf4f44b1d799791ae0cc857007b28a3748798965cb4b281822b3a", "0x2b8971547ff17281a93943ddecb489f6c091e96ce505b7ba30c148e036b30963", "0x21f67c406780578d1e13c001eb36a4dc2b5624dc3f12b3e4a6a02570b3e84cd8", "0x0caeb5041b8532a723d9c68a990c083909ab94da865e673120f48846ac77bfb6", "0x0d576a5ddac69399f06fd5e247417ddb73fb47b533400bc79a35e18f0a51ad86", "0x06dcc4d20da7204e7e8acb7404b6b719cd1536af3616e994887b033125614d53", "0x0d0ae80d2c03d27ef6d6ac6edd57faafb88adb18cb43cb3a34052c92a8a0d6b5", "0x02217b24cd9e573c8fcba46d3046d830ccfdbe8f69e43eee315664c465fb6b5a", "0x1b037d4657b2b3c4136ff83f2de746a1f314dca33ee2b92a806636e8509694cd", "0x2be7d85266892fa4d49762ce64ef84575fa3bb6212df994ba9fbd4e2c3591f45", "0x2c2ec68b3fdbe4b10ca34ad1f1c9ee5296e4e418132bfd82fcbaf437210dd417", "0x0356ae0ee778d427d6a84545bf241a684fd562dea92cd30b0b75bd9a7880fcf6", "0x0ea67bcd02a935ed5631194f06968434fc9822df791ff6f6ad6c402a0beaf184", "0x188bba4674c2e1a2b8d1f1db4c2b3de7ac2f572e984804acd579f3c22e0e4ce8", "0x0d821e605046e0b7efc627e1f2dd84177a66e62974bb7bd3ca79e142f70742ef", "0x19bbb44064dac933d1074ebeab991790c637a4a34c33d1c9ca0ecc9559808659", "0x0b3f351b3bccd96bbca3453bab6d10bf252380a1e3b3ac2867b214d063b02d4d", "0x1f657838a4ddf2b0639961c92619eeaf6560243c0115152587fa3b633bc7b14c", "0x173966b03236c921b1b6e4e4e77fba43903f2b68bf83ffd2b00b2974cc4f4c24", "0x255adfccf4dacfd943393fd90822fb3e92292b150ae2205f9ee3b6837c687c94", "0x2ad9b647fa2c5d97d6411a5684ef18312cedf6f69fdef8f68afe434442487a2a", "0x26c815af9baeadf098c8be65a9b66936d88a90f47c878e46d55aa41fb23a00f8", "0x215300316d98fb3bc220cd379cbcf4b54133e613ba42fa8b48984667efae1053", "0x051ac2e037a8cb84449738040cb5d92bec1ebf64e1a65138c7f2d862aafbbbea", "0x1b0cfa4c9f7b4aec9c6a709a106d177fad8ffc6ac364914aabf33627d1de6a32", "0x0084f5b80cd3806bfd40f7d188bde0f5526dec4a77bca0449f1101f00aad4a4d", "0x2fd6803e516e8737c45bf2f40736831ebed2b6e7e7e643e0d4c67b5e51099d17", "0x0b17f732c6d938ac7e85bccf9a8dd401272d7d6d623a8e59ec3ea67e2aaa526c", "0x01b3fb88f6cab80f3af974dd496c9fa5f905da9a079017bc5299080e1d5d4f64", "0x2319f57279981d0a12b06f2f7541826affc4e51a44e1990fb3015ddf9a183715", "0x2f4dc289b5e7f23a370b0f61053bd82fe4cbfc7d1d11d13f289efba3a3c54121", "0x1b679b734eabbe6f8c42ad18dab54de081c89d68c708a81f8fe61438904c2ab6", "0x0a3453c08842ef3080b3af74ee8e799bfa236790cfda0023b588eca466f19216", "0x11c89d2f5498a788416d0042cefa0d5442dbe55f21226095045168139344f0a2", "0x0b3f2c98ca3061f627213760506fe76ffdd88ee755643788837c18dbffb68ce1", "0x2575c71fb8acabc5cb513bf66dbd4a4946f4e21a7b2f1a4062972a08425a03b4", "0x1dec0944dfddc9cffbb55c1902f845725cb92e09545749de3f1a118d41801560", "0x2532b96a8b50828cc619ddce80a2e9930dd8dec6588f52ed5c3e1980ee030642", "0x00eb3e072e9fc2bea9aea03cf45eb481c4e6bd67091f59ffa1f4602fc399f21b", "0x28a6e7466dab1f493bfca1991bfb886c2ef920770accabec486b96422698612c", "0x18b72ad6c372bb8b3b52ceb5c65e9d78c04814e3713baa81323f2a1956957b8f", "0x2fa98e48794fdd4cdba8e11d0cde18ce5b2cc9d0db7f65aa1b6c8609918b2c63", "0x022d6d05abbab403b1327edce33024fc9183aa514f69d1672d49ddbfc9e063f7", "0x22ce0a2387a223228a0a86b942f135a59d6bbee9f1b96d3fb3a151023a67fb73", "0x0a559e751dfe1415e40d0227d7b3dd1f188d99d935596d3dec2c033de5a22d2f", "0x13202360f125ca22c281a18e21a7ac10b196153236f86c5968b31ab50c282056", "0x1e85baa376985015ba63c3a38e7817ab0a39cd28e237233f4c1be35632fc72d4", "0x2450b198b045e4f0cd540b0b74de5ca56d85da5fe59816af30806dd2e036c5cc", "0x1bf04795a7979533886f7fb47d5a0b7edd2edcc1091255aacb96efaac6712b6e", "0x0f126ed9490b69935be97110c476118d00c8b07c586ba04cf81ae699607e62ef", "0x087ed4752046c22599473251c53f69b817b08a90f431417d9bce87ce4fd2bc0a", "0x0015185030c12d8cca42f20872de699989901e25569863a4b5b3fa2682dbf9cc", "0x1b424b9546d87ee6ca28fb8197a2186b6e001556b08e19002298e05f1664dc84", "0x214ba23a67a222ae9e33b4615a31e7b09fa911e18880bc379dfd20ed1177eb2e", "0x186e0edc096c6253b179102a7c9ee1496ddb6060c993fa9e83616a7daa6c2243", "0x151bc9534ec5f36cbacdd7bdf6176a60c9bb7b6cfb26859c7bcc0d1f7bc4dd0f", "0x28192f62ad97323e6cadfcbb9a99f5bada68adddbac3a4ddc18e69b95239b166", "0x0825b1232e6831678f691e7e1eb27888439e12e7baff84db3d18b7bd45172b18", "0x099e93500b62b10127609071e75f4c54cad78732b48596d16b44eae459a59fc7", "0x0dd5cd3a64731f803da7873057eb0a49a2ac15bd7057485b43d47340a202abba", "0x1d4cf162651067f82fc2124f6d674daef03adc3da75822bed2b0d8b690b6a34a", "0x23a86b440d5efbb0a26a76a9993b6ec01c33b46924c3f601ed79a87f9c464068", "0x2c983302ac40a26cbb323eca868e9a757e2a66053bb081bca55f55635168884e", "0x06e98d3bafbdb42dbd2ea2fcb9698273980bd1c808f1f7de799632a90ff09b36", "0x0f2ebb91192276ca7521084cff7a025fe53e14eb884989381d79c06f9fa9084a", "0x0b67885ad9dfdac5f5369f6e3181bcc79081981eb6177db27e5d6f6d851d5021", "0x1c32e21095beb791e1bc785043bb33cd94784b6231ff8f85a9edff92f91be4b8", "0x121818dfa76d98589c3274fe2d702da83ad88ced9df449626506be1eeef83264", "0x2832ac9bb20b57ecc969ba4ff5c713c40622fa6b4ebed066c655be21da02410a", "0x0917180fbd7a19816e8fc3a45fd43b435bac6b2de19f516b37641a6b1c423434", "0x1bd85f4c4b11ae715f45a17ba21ddbdc7d1c3ba680fb978a1b2ac325bed411a7", "0x0d0f2a86fb0d48dea88049d2bcb667030a29d721e4c1776d42d783bbcfd22af1", "0x0460af88f6d11afb5d191e488712fd79cb96116844491b4277ac0b5ef19b4432", "0x0bc1783c36accadd4fba3d634e9f72c5e9025f7784bd3efb8dc72096e2c56032", "0x0eefb878f6eb1589d7a687e94813d9d8423fa50db34de8d5ebaac1302e6f45d6", "0x01ac403196501f0054fa8d4b566cffdb7f81f429538db9b408a3dc20b92c11d5", "0x1d5bdde7d64a63bacc2585b8a14082d8d35f3ba8c1e857df1f729c52e6a7e5dc", "0x0799dfaff2e7d630414a7ddb0fdeea103e1bc3ceaf3ccce077c8733869e52b75", "0x0fe0f816efd74a7eba5c8dd5e7a8943889962492f14353e1afc78efac50ed96e", "0x072561c67ad2fc0793821b50518d4b5d8ac33af26da6d2ce77cebf80292bd27e", "0x2891352ac60ffb09e9c88660b8449def9986f9463f5a81c615a7cb9f4be0724b", "0x206e9efcc46cae2cfc7e866cada0a4c72c29f235f044d56c8244a92e882f464b", "0x2e7c4493e77005f49407f2d5cb46cdd6d04f22a061ac8fcae04d2d93d7c8dfd2", "0x0b9e944d5bacd889beef5909a139f5e7b7f23a1ce7a1e55a6c4b9c382a511524", "0x2635b8471126523448d0b1bce5d8f54ff5bc988a0a6fe53dca721304f8f622cb", "0x10df73bfddab994cdc079216cb585ea8530c13da58d6381ae0c517f2ddc88e02", "0x2da54f7a7bfd78f40c98e6ecadb665f2644b0a9539b27765df23eba241fffd7a", "0x19ce35c6a104ee3975d4a94908f5b1e0444d7709bda7c5fc59a527cb2c166509", "0x1a47dbbde2d5004a1be0ed7c21f57a388a1c86f8b4666d4d118ee99abc115a3d", "0x2f037e73c7888cef9d7046e58d9988837be8faca34c58bc50f021e8734c5399f", "0x27ab727198d9b7a62e0d99b2d1112710102464c3f5fa8deff2762af8a8699e7c", "0x301176359be9b665abc8dda6783d3bd7730c4b4936a1bd83cc5574c694080668", "0x030e87204cce403ee4e92e0507e8e99cae309599dce18929a9430100fc5c0869", "0x218e8653761694cf49a1f3e275ece28866a6e9963c3ee6eea46c2b193688d3b1", "0x2b219687a4549eb17e29db9fccb5796a11ddb6fb271b5a547946f0de32698a36", "0x221e784939d29eb5442fd1612b30a58b9e555a398bae96d6a2d6d9a616ece0ab", "0x080fbdb9bc4b4e8a83b2ad89383b25526e330678c057f7c34993f27eed2e14c4", "0x1601e657a22b8a280d4452d527beccfdb9d8c3edfcb7bd0372d0df43e93e9123", "0x0652d1d878dad9d7f854e48066531fffd4773e8a5c61301f581651b50e359751", "0x10db881688e3db58bb608ec993d36ec8531ad3ab580e65d537f4f37e4da26027", "0x1d8a06b51927f0379250e7359f9dab93aa9ccfaf764dd70acccec7177a4c7037", "0x19cbc2ea50b7bfbf009f709d159aa9ef2a2c0f68a5cbad1f5e1c99ea2ca2623f", "0x1a5279e38883b53f313f86ae7ebb07d7bb0cd658be590aa3ac3b413415fe3e8e", "0x1af136d53cdf676c284100705d04a976645234f4397140fd85a2d88a484eab0b", "0x0db8af764eef50bb1ddccfe0583ff730088f3e9c2c555278a3c9a7376a893232", "0x1613c14bc86f95e25e05f8ec72c8ff6aa207bdbaa33f912808ac693f137d5d51", "0x0fc47ef92f10f79d336550ab3e0a7545c74d2d3e2b9f97bcc43e4783d1d98cf9", "0x0f2cbf40b344707cce101e7797d137a9e8b011797c66fe6fb0474d2b711241db", "0x2efd5777f8ca22678839ac60c1a308703094a9d2be4413c817c751dcf56d8e1c", "0x2ab4e3413795ad9a695b04695db31b6b0ad0bed91bfc33739265bbdc2805b180", "0x2e3b6d8584e42666829c0e195571c50d7fa7bfacec12bad7afa242744e00c039", "0x1833f151de5bd86ca68d264d5de5d353b8128a96e3813ed2cd00e322dc91c8d6", "0x0ea82c252d8d55499ad63c61c47419c8e8e423257732f9f686f6b106d7daf0ea", "0x09857874422693705a7c9806340c6da0777f4571e92174d5f82c07b91f2c85be", "0x2772ac7928af0a79931f88a87e634dd61facccf610cb947724e7a2110d501449", "0x2e62239b790530756ca329c63e6f4338e2631ef4e2cc67e8046fe2e886f6769a", "0x0265bef6b92cd962298621e2609c90162dd587f88139bc60d74bf363c6712628", "0x24484c0c291379917d2fd8b48439fb3d70b05b155e8bcf330a56b5027cfdbc30", "0x2b2d449a3ab55ab7ee77d37759db58adbc91d0d50936538cfb0173360a2bd8cf", "0x23663d1956fcf1a723085825cc67cac82d3ebbfd0134f861ab5529e2a4c7de57", "0x28fcaec0fb6cf43a573261d10ed32c1dbb4b9975643fade00532c1bd1ea0e411", "0x0145c6e2418185a9ebc72cd8dd0f53dc537851eb5a42eddc04caa52cb3ae8abd", "0x167376a042099efae1cd8988e02c66e8cfda378faa64e85626bfe4636f3c580a", "0x0cb735de0e612a615759528eb278b1b34107c4a8df58ea674ee7fb719d0dab99", "0x2d67bac6616cc0464d4fe907e5f68f0eced070b8811be72905bf7758f3ebe884", "0x00dbd2a2f8d7fbf3ac403b1115523112b7f010a0adf6ca584d7ae03f947d216b", "0x11a992d7e8205757ae36bbabb544e843b010fddc7bd5abaa82dfddcab3f85c7a", "0x230d34341246fb715b784797e9dd8bb7307a4c46e2f4470d2c319340fdbe0025", "0x09feeffc218aafa614e8fb7dc4ec786ed25150ec1d3507b3a7170b9266ff6941", "0x1208ff94f1223bd249daa4e3a0266e079731f7c3f998b7fa707dd9fe53833f82", "0x260ca3cc820f873963cd26df1b8ffec4cf349fabe16e81f2f973663466802da9", "0x12655e2c98ad35ec444a134e55cf68dcde68f14a7b734b3834725308609bc854", "0x290097f2c047a3dd6600b706377d0e1c46145f3a9e9e0ba6d7ccdaf7b7e05ef9", "0x02c62e5bd65381e0972414ce0090a96c22b0555bf7ef8b2aeae1b984808d4f81", "0x233c642308dbf783701420788b19153dcf088a63e8da765c5182649424926fbb", "0x2b7328e368ed4b7a62fedb9cbf50104557b6c3d9be5d0c2745bcc76476f8ce50", "0x1738ea94cd4331c7b609f42f27c4dd57d8db78b70a95da0c2394c4ef18992855", "0x2e902d182a1fe1f3d40da28c358c7e89076d2ddadef80e31b9895eed02ca21b8", "0x1683ff7e84a5a4f1dacb206fc44fc92179e666450c5a65f54354bbe8676f585d", "0x132958454e01c1fd2bc43e02424e1296b54b55d3dd3ed1e1cbcf382790d6254f", "0x0deb48b7df7379266b123e0b6d83a1fe031807f1ee37f7673738438aea64eb00", "0x2c683489b3065e4ae5d7106e18f4553762d58ccde006ee96bd691f140b15f386", "0x1d7c17b521e158ad420c9d69237f4ba6e8152541d878e24876415572734ccf32", "0x064dee7f04cf564333fbdc610ab8bf68106329eeeac1b1a59614726561db5bef", "0x21e94e5d9adad9dffcc186e0310ac54ff38b0a29d3849fe384777d0048abd660", "0x16ee0a0b45170d89c5d91557ead0b253c39a842db804196bfa07044ae6e2b4dc", "0x0a7009f825b6fa180455fde8a901d42a28250e9948807e24a62805388cee836b", "0x08d5a34853ddfb099fb0fe1df7460ce4a8e4952a148da641d0e15f71efd2cf68", "0x0fb198531bcad7bc91489abaf1345a3ebc5f5ded5b21c1d17237cccf9b1a4812", "0x0a91f50c72a422f3f0c06cfb1401dcade6cb99c285b0705542fdaad40e0b5124", "0x2db33b34e5d9a988af35501af4e137c4717481b673292246d98e7728a13bc924", "0x1b745ff9c6e53c275d378f0a69d6c0d55d598549cefbc7669bb63a3d4100ed4f", "0x114554e3afc96df3b663c62243045e27f6a24a5c26b875e7344014b2a9858327", "0x1aef968db4765b450f098d4e1a6210b7165c53ef336b3d96f55fbac58a542bdc", "0x24bdf5ec4ebb16db47837189172e8a55b36038c50bf1f38cf79055279225be52", "0x2ae7c4a1655975ac7052d101d1346efa10fca5b0f13babddd62dfefa980ff78f", "0x165cd429a3966d1bceda614b06d459e7a0e0cfbe46d63f25521c9af74028a8f0", "0x1bb3d4b2f67440a5fbe410756945b7bddca2ff1ded3fe2108d125679097b077e", "0x18695f0185440a5f35ad74a5451da6337eda049d50b9a5d7bb284d52f9033d2b", "0x02eb1bdb4eaa3fddaa625344ea650afc460306e0e3d4bc618f81e9ed73b43a0d", "0x1de874e713e5c68d2f56d518f8eaa275229fd8fc8a7e112d7d1a24e604d3ef83", "0x1e5a6feb4dcefc2b68a5b2c3d0664daabb1f0735ff2a2d2b68430f4d39b109f8", "0x27a4284ee0c6f73ddad02f9d499be90fedd32ebd7af86f44ac50e354f743c782", "0x0099d8e9546fd891bbab547a0ec1dc838cf62126788d85b2759774d9de75e777", "0x3043a7ea89d1e4fe14f1f91b584d00c3ba79831ed8d8649b5bafcf75a00cf759", "0x0e7aae04dabfa34859024d075a3014e78c9096363690f53eb0e99b7d628897ef", "0x10fe0a11c4030def725ce7684fd8724e06d6cf0d295db09b4199eb3b6a9f06b8", "0x168cdf6baf5e970e1e6bd7809931d487654b42e9ed5d8d92a48f1dae8d2b4c23", "0x0d241d33c552c85556e62a7afe49e5a7128fe8aa210772bbae5957cb60a239c5", "0x1e25c0e00db77c69b87d5bcb95cba934b776ec23392d8cceb6c392afe5961f3f", "0x22b0e52f766a702afc38c2c60161e352d8803f920431acf9410f7fd11e9d7d32", "0x12ec9b91f395f1665567318bd3fced7a752ca01ee0a088138c40549a31164fb6", "0x299c8fdca8918c24daf876812258a75527f1b5d1741abd71a82eac0e1fbf20d0", "0x0f428bf91d4d31184f35d770a5475debf4353ce7dca9bc22763b69943344f235", "0x1be0549a5470c9429f0e1b6f9482f3c4e752e89c203c25b624817f523a79e9e9", "0x0fdcc3ce028e96b21f91bc87ad052d78e44ca6c96179ead64378cd356dd2acc6", "0x136a6a9843fe104838dc085992c0eb8e309fd3d169af68af8058dd8b605eaa13", "0x0584441581ce63a4ed2174db35365bcb01b93b2ec02fed5b6ced7314a127e66b", "0x1bf9ab90b1f5cf6ca9f0195bd4336e68135a5ae26b6b3511cc906156b621cc13", "0x2b0bf6b3cc9cf023ba13dc6501f00a742d44d26b66e9bd7bdd96abfbb33cc7b8", "0x19d18619bb73548590c00c7d02ec94b52bb8bbf1aa5c2ee06e1f8e875991397f", "0x14909f8c8920f79d4686a14a1aa6e03a71b84d3d9169fb7673317aa6b28433fa", "0x2397f311f598d249e6ccdb9af6ae5beb6f097f5a350886cdaf0691d0a8abd8f6", "0x0ac2f7a3c2e4a6fd58f9e502f9dfcfc904608763d69b94ea50288dd7b63b3842", "0x0abe36a7048a34d9110a463cff2fa23b5aa0966a3c58d3086ecafa112f5001d1", "0x245ae4790107afc9b9bd1f14c20f10d8a745f077eb15a960e5d7af379a18dbdc", "0x14ae110b2829126250e1d694f08436ee0c56d230b489d08d32bc3503e73bf4e0", "0x20a0576ebdef08dbe219160fdd1a7e75d838770c780a628b1cc720f027f61c6c", "0x23a05ca5b721e48da57d373df376c5252f66e9f963c697d7d8e4ecdb55ef833a", "0x2813d89a8a9061c300348cefa9447f1a96343f329f65c4e165b5b1387c4c64c7", "0x2bf7ee542e32e28081fabedd92f4b18191bbae48a436273dc04916ae09a64553", "0x25c148fb26cfe4c3d977b17da068fd67ea89cc51079fb5d0cd3654a9188b1385", "0x1d3dd23e6048866f0855741903765842756a627897cf47d91f9f2b1ec8ab2bbd", "0x0af7996cfa4b51163b4ea8ff49ed2ebf8a5e56a44687a8de351efc172c9bdf50", "0x0370dfbd98a73e24952f0208eb7e5bfa83ac7761d8c0b4b53ec669c693698730", "0x13aacdbfe05a0647fc158a1306803cbd1ebf8d995d5b27bc5c3a92d0438240f8", "0x050fb4ff23f5677d7f42b0c8184c224bb69d4f30579a6b8e9da5d22a4f7bfb26", "0x0cb2f5cee85cc6e0f9becb391b7edd42cafff7c34382aa9e19de473a2c67e393", "0x0a146430a98a85f906d31e8ca7b2757570996dbcf40a7aa8b6750667b96a2ef2", "0x231efb23ddd7cc3485b8bca812898aefc8095078e547151662abba0cce1f627d", "0x2ebcc008ed0ecd551829656c73b6ba8d8b0eef871aefb94a21a3ebac83561350", "0x1d2902e8b627c0443bea9f8aea5601b21dc0a41dffd98a1516761d400f7b379e", "0x277358dbe09c3bb9570889293f795c41d9c2c90425bdf1a2a566f9e4ee46819a", "0x1fbf692e87da200bc4ffd4898893cefb65a43fca504f6f675193f8d63c6039bb", "0x0f3b881fb65b30fb2f849620e74a0dbf593af33bb80a15eb7fb88a09d97e0faa", "0x0a116fa32c97610866b3a93be3919080219be6057a4b75bca3a7bd7bef88baea", "0x30384a31b80c532ecca12d2c61ce4eb98098a754079a69b0e44faa0a3beff23e", "0x1403e729814addbcf809e49a5465ed6ba6e4f0354a986cd27e9d03aa6a9fd181", "0x11794627e6125ac465ff2ed71d959c31860aa2d8eac3fa411b68152bc381cd24", "0x070354e3713899b38ad74a7f5e3154ecaaa27314b47f85773b6e066fd4e63dba", "0x2d1e01fe7b49660ecefd093b5ab269ae2030fd7827d6430c2bcc53d2800631b0", "0x11a01533e3713e1f38f94c3906843323c0c88bfab803e135042ba1b8bceeda3c", "0x058e4bcb4f7463bc6d02d6c40d7e858b0e0aacfc3a88dc320187d8c5a015d159", "0x1b2ad38762c6918201e093d2bc393f9fc50fd5f45ed943a8f11b269783335e74", "0x05ab9d393a4bb7eee00723e8de668b2404a162a0e17577a6e55b8025b1814b0a", "0x04058adeb5ade9a9c9e3d869edb70322278b09ce1219ba45685bf8f6d69ced77", "0x21a1c7c62cb8ece8d3bd434f87936c3a1842432f2f1a6c66101b1ac8d11c9a19", "0x2028efb9d44e5af38c0c1ed35f9cb843f38184ee0fb9f1c42121210542b00100", "0x24b0792d69eb31364cdc8b74c109223c1c2d244404c64a41d516076ab0240ca0", "0x2179ff52ea2032efd95ac4e7a37a9c0ce5034d3cad366105341e16ec7483da19", "0x29cbadb37f773c6dc580cc0c2ebf2926d598a19fa41f881e12cf4a5edfafa13d", "0x2b892f09ea9f60fd7204852f6bb995e20c3510648bdc400b97dfb7cc4d7fbdf2", "0x13badbd0953e09615a4e13d4b340f4e1bf2a03a2df5e6b8faf69d8697990c95b", "0x2b8fedf8c3662b0a10576cedbd720ced69f862124feb62eec83c7150d9936411", "0x02b3d62d6efea0a22e2d968f919a8bea56791a37b9f21d03f95185d9926c72e0", "0x07037bac8b6690794dd0907f7e315baa525edc729833c89c660406df21bfb652", "0x2cf9ea47493cb7867b86942e353487cd4f4cb3cd33e310e9fd4bc3c3e6b5242d", "0x303f5a8faaf2a6aead780f2a13937d75fdb4605d8f5a65522426442906edac25", "0x091b628bdfd4d49333c2a9ed84aba3ec2eab336a8d91a605b9dee9af0af44f26", "0x01f468f6ef5c35d3c95592e27b1de7a213878a653685abfb0d2972fb0f7f9e32", "0x1f5923725d991b36de8557d299cfe27d8b076c640cc4cfffce57e9c7477b89a0", "0x0dd5d7b1d0d52266c387c7e111fab8eac4404b207bc5e216ab64b7e10414a6bd", "0x26ea3dc5cbd01be1c06cec04ef328a7d266afe33f76bbb26da8457e966351444", "0x067231875a3d536b4511d0a0b21b7d24958a4bf1cd1eec4c597c25e3a00acb36", "0x0724bd4d523a70054c995241b67f4aea4e669458add9a6779d89cf3d3bdd9da8", "0x1cc9dbf8aad45d67178c5b91a0aa44701628b24120990fe6e29026a0b21e9ba9", "0x2b5841453a6653fd30c05d2581dbfbfac5ba89bda78842208e24a03c46fd32a1", "0x25a1bd92c9ca10226bcf7fbd9b1d8e2b227bc2dd4e3d46e133ae268154674f8b", "0x01c352fbd922724897ab79a60e47e5bbf3c4b714a907c63f4efcc5bd5cc6e827", "0x05e44830ec170a4a5dfd9de846e7e422ae9cb98c6f499bb67681fcf60f7e82b5", "0x077c2736ac2d0a070a1a1c6e45ea9cc526201d668ee404096b69dc85086ea9c2", "0x0303f34f6aa229a5228fec959544f831ee71a1137dedb6a4b76443011eec3149", "0x273011559d239160d463a2b9890096ba4558eff7b6637291082c5eaa9ffb153e", "0x0c4dc5efe016498ea823fad5e12d2e003f2cb4ecaaa7f0e02919626e58afa7d6", "0x1cb990d809fcea3daa8d03b3bcdf147a692ff7a0d8f0c114f6a080daa5a3ac12", "0x1a0a3d386c26c3d467f50ba733e6d7901a59b7453a4a34056e92e771b6dd4f6c", "0x20d81618c0e6ae5ec303cfde54346271041634cb3cf22219f999a54bc5033b7e", "0x0a39ba8f57c793fe65b66907cc656a97ff523817cfceccbc2c2de5bbb8dec0cb", "0x0de056fb319526dfec15d502173483ea35e6057e64949fb6e7690d3c25923f6e", "0x03f82ac12d5be639974794fb3c2322bf6e61a262c7b470ac5e97d20a4a4d8aec", "0x0835ac61001ea7950d80e32fcc20bc0c7197d12abb0b5ed99392101390de2a46", "0x120efd9c0663e0ef3b6c596414f018a73cb553266fbcb1564452df9016bb4975", "0x05afc3602e02391bd4e2c5ebdda280085ec2c1f356a3a5cd2fd2372be6f3f259", "0x0f885829358024fc29d041eb29a43130ec403922c4479c55ab3b346536ac159f", "0x09752c21e2a9c7d6d5b89634288e119a0c6406abe9e77b4ad1b8f36c9ecc8f1c", "0x1d6bb32d414b8f98583849694ad7ab5785d88ec70bde4bcd750287016afceeb1", "0x07d455cd69ad00e93b09ac44915f64a7d5ea3c4c1b3d176bb51859639f924b54", "0x118886890f7d3dde9af1204a9590e10750c9a6035e66b98bbad1fb625181abab", "0x245e7b3643a7766566395efde6e47601aafe307378fd000da08facc33dbb043d", "0x2ceb6176073a98a6613b40f768654dad8d119ae64edd6cc84e4b34370f9409da", "0x1b4e4d410613ae837b7f6a7f5206a03e9eca6692fa970287a53317990ce81148", "0x080057b8e664ad580ea5f385105766fc0e3a2226520cf523604973da274d10d8", "0x1131ec38d8960567a7fa9bd96dfa7fd5083e14f2843012ab36e946d4b901b0ab", "0x1d278e62c58f3c17e14769fe3dbd6c6b9faff11def7d003066d8e6b0fe7fb1a4", "0x0710431fa88e036f180f0e4d46e8ed78a7e6361a239abd787b6ce2f54615ccb1", "0x301e86b0693c07df60f8ac15ac6b1caa76f13ef5175535d8f97600b8cfe3b5e6", "0x25870378c0b7068041b92a7f44b485605448458c4d2e7a87a26cda94ca4099ed", "0x1176218d48c39ce7b6cf46e760d348871266005cb0074b9886eb2c4bef5be09b", "0x1e1efc3b03fefb1c972891409432c02fb0f4e9b6f6e32b3fc10942387a9a8125", "0x0192ce4fb97eec768607210a2a8fb1cb29828d4bd840236f14327e186d3946ce", "0x09d944903456cc43a43e9827368755b938a31d42a47cc6d910ca0b04ee10fd8f", "0x18e4179357588f230ab88e6fa610d882442a89519ca71bf10d8ba64fb2aabf34", "0x25d0f7bff22a9e99775d8f388a74d4ffd70f9df71d977a07d934379fee629378", "0x056ce0d47418e2c1ed7ea63d7b06dcb7e7068abf79478e2b53f402d584f8014c", "0x20dd7949307bc2ce53323022fcb6765379c953e8551f878c4b71205387a17b41", "0x04b97cd5a47874928e8e3ad6de644226493ca3a87a19b182eae89812db3aa060", "0x09374a10aa6cb0b2cadaa21e9f10459f79376f8ad0fd07830045b6f1e9452600", "0x2114b5f038cd400d24959916f83d0cc8273f7f7a51955bdba59df3ee5ea4c95b", "0x2751d812405f13d21c4d5937d20a981db7cd5933822124189615611ff4ba2d91", "0x0cd90a882276ea2b8a7273eda155a6fd9d63dd094b965024411281ae2babbf77", "0x0283bdacc14757e28398e67d6e7921529951edaf0c9872194456195e9781581e", "0x16f179d4dc4f2101cea8d127a6dc09e4f25ecfe4f79fa3e02851fc06108fd498", "0x286f91d1b79d9e681d6c540bd14af83299cfe5254d9a1b3aa634e5456afb700d", "0x15ccdfad34d292269d6734c173e241df98e2fd75e86e61c61369c6f59ab47bf1", "0x0ac6b90c6b7a47a1eda9d4a6d466b2adfe078dc41c9c6edd0a390303a9df210b", "0x25497ca515dafc37c125efdce7ee66072c8d4c152a2a30f81e195fdbec764982", "0x280948cfe3eca19e1cd0fbbaa5fd23a38e6728547e648fe80ba947c475827e2b", "0x0cdb1b6412b6db97dc592bc966c6e1a67fda70232ead9a157f27f6014885473d", "0x0c438d5abef5042a0a63ba4318d78911fec5373fba72bec6fd2f52bcb386682d", "0x219ec582c9278e78e48798023c5340d522a0f7e639858de4ca01199c4452060b", "0x03a092730cc3b1eea8a5a761259dd2bea4f586eb09a7beeb17c29a625bba8173", "0x10ebbfc35233d7cd631b6204cdc89ba4fd932ae0581a856a395a8a52662339a3", "0x22ce0890d9ef4f2b0ef4e69827dfb68f3a6ea6c30a24a675d51b9e199b6d7c30", "0x18948f58035bb10956bdf6d4667c2e16ce18442a19b8c281d49b2e26534fd8ae", "0x2619ceedcb834ba4008853aeb6a8d6144e281b7ae3678f1d52d352f04a9f0df1", "0x0244c74d793f1a16f197a2fb001bdd31e986f094a83e09d58f2bc5aed2c8beb9", "0x16ebedd4b23d468b9f36cbdb35e00187debb15668c180c8ab339ee5b59c87cbe", "0x2bc41c9eed9f63523245f4b412216715d29becf51d660c86bdaf38809677bad0", "0x009edbf534745f8c735ac87a602d806b99dc68012eb7d6c2c1d4c38a0673ea23", "0x18dacc8d13202bf232616f3a175bc021189a25a296efc9977880782b31407989", "0x0b2600a07263e83ac076bb1c4b07f48f2c2a3cf6bf7be4af77262d3917354ee9", "0x27f6d20fce0e747cfe43774331a19cfe4c234e99d180332893f70584a17f116b", "0x1050ba20c8f4d797a1aeec9de46fc7f794cb691a9b16868a2deffeed1bb3f62a", "0x07ddd2115a1e35311b052494b9c05ed47ff8fe2d418178ec600487ac8e65da20", "0x152a65b5478e0f92ec3fc360143e6a1cb83d6e99668168febed37160adda8a2c", "0x21de44ebe484523c17a9ce162f42fcdbaa71ed4437f8cdeb885e3d4a205c370c", "0x1be37644a1d3a397b6b549810568ec7636a1be4d7a64ae23f7cdf07ec93a0111", "0x18e7b112693223260a25dd17c71e431be5ed4a8ab737f3775ef61489298f8759", "0x0023f7f710bc05777402a21bec4372e3b648473f3747f1eb28a78c7e03a3dbd5", "0x2470de23677a016a0004c6ef292064ceec79cd12cb1fa49992a3b9bcd0a25de5", "0x1d1fbf8b2e41000803ef6a50be409987c6f52d8b53b617c4055bd24e7d27bfec", "0x027f5fe1f4bedb064473be4b6eac1ecfd656ad2086abc311b67f3ac8b8c9f367", "0x2d53af0119dfa77c28dd102b2828fee80af9ae651db1014c3f39fa5b9b8ff852", "0x12f19947c2645f4481c89113f4514641f4afb74a8c43e0366036e80549a71fd8", "0x2f0073674bf4fd79d249638ec64786a9445fb590f1088ebe4a4f01fe5f4c2513", "0x28ed45b47e0c45c29abf03b265d9fb7500037a95654eed4b6cf4a185d1c9aeba", "0x292142dc76706392f3006b8f5b45a451f3c37ecbad9f69b2711211178683be5b", "0x17eaa9eef3dc9a7059bf6ce3a51cea4a45ff03b7cc605cb8b05c3edf2b9d67fd", "0x1a167d224f703b83f20a9ae1dc90be77516a977e6f2ed07da85b06910a65be56", "0x084eebe766b141d7a2ecfcff08750b04bd6fea80535b2a0e30ae8933d98026ca", "0x2ec0f402c6cb9709e6e3817e2b364285e18cabe290bf8b8387e9d1fe8dedca2d", "0x1657e26c61a0eb6f8bca74c5bbf34a947772ffd6c2c0f9b62836a1e8ff6f4780", "0x1f8827beb7dac86958edddea38b28f99e77180f3c3b959979378c47776616ab5", "0x217a07d6592fc0001fc240be44f71c017f387006131b83f237fa4c9668ed4fd3", "0x0596d9d6c84f745470fc9997c5a1ce9d4e3904e17f16f139e1fc6f0bf27ada4b", "0x0bd2f1e61a7ed47726482de76ae4b0d7b41738eb06c9e98ff0277fea16c2b0fb", "0x14e4f14b2a7bbf9dd8c3a1b5260c3844519c3bd5d139b7344678f74a36f4e4aa", "0x0980b0b3d80710a167df147f9d475a28dcaf918a6aa3c967a5bb55d97a8f6dac", "0x25a6def1f1a79e8d6356671df1ca3350df855069fa1b5e7e86f27bafdee60ac1", "0x2cb242a29724740e63d8488ad7dad6c5d37e9e5d0915582e7a71c53e536b64e6", "0x06b32dc0408b1782c052bba587c379ceb352fb29579b21c6180cd3fb39ab7afa", "0x09f20a1375f56e6bee5326ac7563709bff6e90182ac092f12145ca088fdf3f47", "0x3040281c47d3b6edb8314182a595a1f3e6764e662cc0ec878b638826dd3db7f8", "0x0072eda160683c3ba9ca0dcbb27f008505e83a85eb5ac753b7a67a23d245518d", "0x1d0c406bd40bb8fe800ca737d501e19f158fa205d9f63a30b487e615f4721400", "0x2e1b6f701dfbe38462061a91d5f641abcc7406a5f463822b717de79344c8a9db", "0x2918d3fd3323723a1ce75dc1b1f82948d298da146366cf0167ad082f5afb2aab", "0x04a8ede82ea0c561443858fe08d2c905dcd445f51b11afd41f4676673d74af0a", "0x262f76f5afbfdc84c240e686362f25cd1f3497d195c79a40cc997225a4349280", "0x0e983bd202a424f24a83f8173737dabf2c711ecc05204e1d26b4f77f1f107526", "0x1a8c8a3b13837a4a657c26d0f804ca7ef83aac7e7516184b4c22eb7afefa5169", "0x05a16f27f460719f8b75c49c1cdaf348739ab5a216a783039bc055ec6f0aef15", "0x109a4e202a5d6ee943b2138dc5e3c868188b02ba57ab158a46e033590deb1d02", "0x114be636e12060d317a7f08c44b856144e883dc8a07af1f62caf300d23412dde", "0x1fecefae8607aeb2f109239e061d1839dfca12634a4b001bea1d1190e4ec8029", "0x1cfb5006b6281147b05dcb8a08aa54a7fcfe9b121f12bd36e989d2f47cf809cd", "0x2c2e31ca27197590bb0d46682ac10d2009edb57e0a88b4790d731cb34e926d82", "0x18f2a0b00b5449f4bb8265d9bc2b03a31a1ce6abae5eafd9eec2f3745be561ba", "0x0431b6c629cebdce444b0af77df0808506106f7657209a9c96c73f6b44da6b02", "0x0cf33fc2fde1e171be151ee344595705eec9d0930341489adc6433fdb9941f93", "0x0a0743877b28a2a675966e6ad6e2caf32f78fbe830bcb0187aba4c21fe7d9275", "0x195b9d285a58deae30758a177e20a4cf66350cf4becd8126bb5b89e672d39fca", "0x2c3eac5d52faf5b46fca54b5e7c16cd9503bf62ff1e3f7caf95149021544476f", "0x10008396ed7e26097d6384716ddf29931bfa8cf88d0f15406b7d3e30146bcc2c", "0x09d6120d8cefd8db99a2906268fc116f5d31339c11908252ec08fd39aee66c7b", "0x29f60fdfbe0d77c1641825b499e2452f5fca3dfb427be07a32201bcb38019187", "0x2a77d988433dadddfa317cf1a86c2503fe0194fc1595e7f8427c0b83f90b4180", "0x0c9650f149c994670cbb966f3903e52a637e956b5792fb69a0d7376e732e8113", "0x0cbfa17b2347e6821f788e9a44255c13f5032598d1e215a822e3e7ed9b757cba", "0x167c4c995f5a20357496678fc1ac33e08431127aef92a9a00644c61effadd079", "0x17b09378da9ad8fa77b5d10db6cc7b522df95666fb204aff23c0b9a9eba37951", "0x15444b346a2eee40220d5abbda30324fd422b12bd062507887a1749c9dbeabd1", "0x03d08a26f86c97f31c4cd9a01a7f68fec8c208d42ecaa7ed2cff73b74dc18656", "0x1c539c92417e0e11b263d99a0fad8fc61fd1c065e70399aff512d8777d7cf1b4", "0x19b9209e1055f404647d2f0bd4817e798972967e1f7688877f4e857400ff8526", "0x014e73253e3b5d2c90f199959ebf071b189326f39d1772986de1ba79db72f0a1", "0x0f76aa8a09cd042559e21edf64495557e806592a1d72dfe8ca3d583a04febd06", "0x07e97e1977f873a0581eda757955c93274a87454a65e6dfef9440bbe12f01489", "0x2fd534af9df31109c948d5a5d9336b8d7bc51895c34bfcdeac48f8b56dacb362", "0x1b7971c644b7fd517033b8df2325df82fa22a3b79a9ee0033237bb43fdf87723", "0x0c830969ca91ef87be109af46d0ad62c93e80b1ca9307d72709508cb1fea64a2", "0x1fdb86f3412ebb18754a1f9cf4df3096cb11ba89e798962295cca254c565f2e8", "0x2c9a5c82481cadcdea6bfbda30343d9815221e29ae617a30f950d29834ad2654", "0x23b19abc1dbe34a9793537f1f39a3d81944d1b8cfc4f26b0639ca4faecd98d2b", "0x0cd6922f3304a4d038833c697b0774147972516bdc8f96567b29a64769715483", "0x183212f2e427fc1080c237bfae4203ef12472a06c827f93dba5d5af24ec336a6", "0x04417a0dd6d3d8cd6d2ef81cc8333322d70f264f5100874a4c1603d1d6f839d0", "0x1ee7fd86ae6bfe916fbd87cf0a72a4be433d4d3f5b3b96707eda0c47a422c3a2", "0x0e386dddd870f8041dfe619d4dd8eef851a6391cf49eeef6f1f1443eea173d10", "0x0b31a49e957ac3bc7ff0f65ee6fdbb4cf4b145dd8a234f0d7e6c0639bea00747", "0x17bedf9f13ab9ce8a6e28190479939cd27863b892ffcdae05478a0859c7eedc1", "0x1c28fb33d99dd1b3ae37f884f3552546a4f5afae562f4862fe1e92e702409e15", "0x15c6d0a394166967cbc39280505eb9528cdab0ea52f1595c5e7871815ffd02cc", "0x236303150f9e76503ccf1be5c90c3a485f90f7c1ffaebb1c4fcbaa82a0519bcd", "0x1fbbe0747bd2bbc3ccbb752ced9897731942f79d9a761d3aba4a169681e30fe0", "0x147146fa6f464f7e58a1304441d2b7f64333e21779cd71f880962a50ea6385ba", "0x217e02c928941516f5a9a78eba51468d93bfb278d1c79061e666df4a32092c03", "0x246013b423cc893a16b68c228b01b9380b47b0afbe4dbeb1b4340f5801ba4c1c", "0x2b5225496c1e6facd5b74f12705ca0d4a7b77c30c1c8311c3c81837167ab45ef", "0x0a950f572749b6fad6d6c324f40568d7219e75a884f9bbf941b20ee81b42c022", "0x1a71888e664d2ba9bba5aa22fbc380f29810d0927d286af59110769f07f9976e", "0x15c5c720ef6fa5b02936376c298394bbedce59824d6ca9fc260f5edc8ea5fabc", "0x1c84983cab32fb96ccd0276d25fcb5a978edee693520c0b1ca097792cbd1742f", "0x10759b7a744e81322f8368fffa6845102867e21ca6893d97b463094ec72a1e24", "0x1ab43f1acf28763767e587542a3f399f0998b4d20f532d1f5b3935ef2ca3fc6a", "0x1d32f2e0c56427580de962f147633899ae7237f4ccfcdd52e0d9b7b037ce20cf", "0x2147506e00fbe0f6458115126df9eeb1ae4c331a4a381915cc195bec94888d65", "0x04e95ed8d8a554695f2a8441c175f22c61ab041aa4d27e4821062b02f7a29ab1", "0x2cc181f94de5719fe2cef2222777dd98aada9d4cbcd076a2cecb3ea78f8bfeae", "0x1615f6d5826caaa678c4e5c01cef49b442448157d2c651e3b1c99d32b2c51c0b", "0x054b0e2491d3ebd17f7fee0b0dce67b82346d224aaaa477d5d98fde2bf5df5d3", "0x21052fe17f3f83390ad8aaaece48b7924e54b8070b6304f4b4e8ab9f89493713", "0x1b1d8d905c713958dd315b0c84a65d479f6fb8d8698630e7f096342be4f129be", "0x08765df92141cc7b51bd0873fb5259a8acd5a9b5082889ae550bf3ff1e8cfc39", "0x1dd1e2c068b653203542fea3746329eca954b9e28fdcbd895870b32f34811054", "0x050582affdfc4e5c3ce73d746680b830a843939561216767e4ee6342502e2a18", "0x151572a6d1f57de2fa9e4aaa545ffb842bb184ad3e0b0bde29271b55732ea2d3", "0x18d0aa380c379a8e7000532a66d561410e8d118d2eafb6c0d6d3faf2dc8e85be", "0x2424a586bb57c0883ee4ca4ec731969c7422502c8a219cb95ced3a1209b05fdd", "0x0174d6643ccb632a14b11162fc35700604c59399d3a007f5f891504bcf7d77cd", "0x182104c94166052fdc748d49799011387915b299e04a80e33e612740706e7a6a", "0x0b70c1185230e22dcb948428cedde9d7dc9c967ebd45af4d9cd62da07bd522f5", "0x1db44b6e0142bae1070f734522bc1d40b99cfc51e62ff6dad389fde5dc68eca0", "0x23779598119faf923336a2e9fe15a7a32d4600a8b1f7bbc73cddf10fca81aab2", "0x0d310d08d48c04dc78bda687d48a00598bb963f09b18df3b8b8d31629b7b8a82", "0x2a8bf4e2d52476ec48829a99fa53b47cb1045bc3fccebeb252218186161c7b3c", "0x13cbb0f381a6e6609c3fe4077dce0da32138966e7ba2812896001837585b2eac", "0x2ae412652e44172733e1939fd32eb7804647d29768a74b335036b24553571b40", "0x03f426a5c7707a7da1a8348f9e6c0e6d5b2d507bbe98a006f715bf2f28c14333", "0x092fd1fd3d9c5bfccbd1581b4a16ec0a80915ed2f56a3d4099b239a9b4449cd0", "0x00b1e816dfb839a8b31ddce51963f3521131a5aca1cfcb3d20492f9fa4ff2b8a", "0x0cdaa3a637ae81ec5fc6b4f592b5e04f7fd8f1f67b915d7fcb95c9c5bf3d7c73", "0x11fed5b9e736562938a571aad6c1bf987895bd25d53efb5e93a89589d638d0fb", "0x0d06b9038f5d041a9edd114b3d6346ad5e11d8817dfa3e74034fb82fcfbc8632", "0x22f79b3d9df4256fc835f23d5e16c8f963eb0f80d76b90c47af463b7ee49af2f", "0x2bb2ecd74be3c847c7df14a1c83937f8b24a3ba2744959a2f3733dd4cb777e6b", "0x10bd1d611707ebe4a82d2ca962e0054bb2b7631de85e3468faf005adedc2b931", "0x2f4035fdb1622d23d1b9cb82da64f9f7071d09732cf17a53ce842eaa42f365c4", "0x0fa7d8c17fa7018ad14f089eb8564bc9a7c157700bbd07c3a64ba258b8e7920d", "0x0b8ca93688bfb7c1ae365aeb344630c19d0f1e74b666dec2b00436f496bcc5d6", "0x10d685614a99a405413e3559d826175205a03fffd9b037ced90bef0af0db1a72", "0x068e162c6a02caee021d6f4461fb4e1ca1d6092a85d90044c3eb14e07c4e4a83", "0x2f6d6a0c4ee21296496f69a965cb8fe239b91ea81767cb82064a8aa5e27bcc56", "0x0c6a439aed8ec86b5ba5f2a4a045faf2fe48bb442d9f7521bef498d057c2137c", "0x1e6b0d4b88e393a9d915c013b4fda5a7c3b589872c06dfdda207e1d6641aae2d", "0x1b2116f8a7de6981e99425446c1b720cb44955dd4bd46fcc6c522360e1c6bd8b", "0x05013f00c86773de39c01ba3cceea5c0cdb0d882f199569fab37c440e25a8e56", "0x083d430c489ec684c164dfdbfc5a0556dd90abbb11a8ba1037b92e7c3ce42cd3", "0x1b0dfa5c2f0fa739b03b0bff40616c9b5ab246c29694473d6e23ba5c5dd98286", "0x0553fdcea1498f28a9c4a586d47b0297b237e59c2c0e7034459f79cba4b29045", "0x164c272c42e1f907ba9fc7af62e5a9dc836e9e7124eacc6dbc5cfeee3b74e5e1", "0x2eeee949382b74229a3a5f86420c596b8224220ee9c1d093cf965c2003c773db", "0x1aa7b899db428b649fa1e4672581909f15a091c301c527ec4a54c3c093ed6003", "0x2844667092565157f2a88a0558450adcc388e6148d2417cac3dff95ebd707303", "0x247c0d8658c6a57ec482adc5e9ee6bb67948d96c781ad98311e279b81f67ef35", "0x21621a3b3c6489991b000d1efcdc69b0a540d09680497d61e96284e668c9abad", "0x2daeaab1259ff6596d09ee4b567cda64ab0fb88a31783266e5d14048118e62f9", "0x1906cafe7df4f4a8359a4818a4ed5b6769cada0a2e046e2d6138bf8f84409f4d", "0x00c2adb51600bba92fc53dc2165f80f7053a1350be50f6268dbe18b10eba2b31", "0x26b285169225658f8ccc3040cd85c3ce1f447e47eeb7be8e3b6df38df3d44bcb", "0x1c2b7e2db564eef0909dc7753604a4cc5d45d643355e3c60321d24a80ed6ccad", "0x2dda3e9fc09d2c2e6d52a76bda84df106ed236ff956f127a804fc7025bfcddf8", "0x11919b8f4797e0ee89f05e0428f57833d8b5e74104814a6ab664de8a45887ef6", "0x127bb2c1e855294058203de7a73f055c6f42601a2475b1d75f9395993ada7b1f", "0x2c59318cf432b8e499a99a0863c914e8c7836a23b31bc758028182f83283f61b", "0x13b24677e68adfb873ed0f23b0025bb5747a5fc744353025d2128d447017ac7e", "0x2628fe26b4d2bc5f8e90679f798cd9de5a47bd2f0486514b6db4c70cf3c247c3", "0x237cd160a1d6ae30ef20c93476c9ce0d6066c0e7a5abd261faaa4bccceafeabb", "0x1e1ad584ab675d5b5a4aed3ca5b804d62c29733574cb9c9ada2577d876b99c24", "0x0fbed731a82174de7be9e047985673580ab6cc4194893884c9f51ea11ffe8f58", "0x0b441c8f1423a29a71b1dcb16fdad0316d5334a298fd4480125e6085dcff1078", "0x214e573a6c57ff7da396c0aa15efaa21fc0930c59984cf9c8c74dade3af961f5", "0x1b6e4364576e33a3cf54bf21c10a91c48f7eddbd9106b505964ae8e0b48a5dbe", "0x2cb60dc30aafc3a99f1f439eb34c38e8a7ab265de46f45003cf2600f3a4619a5", "0x081c0b5c56711e541bdeac150b0644a7cee255102a4622dd990f3410d16853c6", "0x1920f847ae83969af5be395a459838984a0db77310b2c8c533eb602908321444", "0x1bd14cb5b0950d3b4783c53d2c733a2ae6e914ec6015517039128b154746aef7", "0x2ca16700e67134be0eef329f561fb057867ab0c66a7fa1dad6cd60eb3c0d32fa", "0x23a4bd6bef7f4d21c26192475547245663fbdd3a251afca27636ed1dede95365", "0x0090204cbe550a36f11c9d12b2a56a6ae7399cffcbc1682d7649cdfa12b5b3a2", "0x1ae99456d0e8b238516a52067559e599207da285d037bed5c748f39a6f94a04b", "0x2c18b3a0fc4bf35beb9a40064a69c7d976eff45bae2c1691005cb835ac07f44f", "0x2dca944b91011ea9f224fe5e0612ec2021e2e311dfad8d8d52376b60dd2963af", "0x2ea90ce7f34c864596617fec562b4cd9fa0acb71161655957ad4615ebdf4645a", "0x07d2a16fad795f38267999a70ebdd9b2b24de85aad12cabe10855c2bd71bda2f", "0x2364415fc864df4c341a8e4267a1f3e832ea5143a4e2686e0d8440c044ff862c", "0x2f5c88b96aed854cc0049a9ba476a6ba61789e5692cf2d7d8d9a7cc7b9d0cbb1", "0x29902aaebf3e38f0ef39c37deb5e4fb0f32fcf23b74511a62146b3f79c25f6ef", "0x0e190e057ebcf02ce0360f76fd5b279a4fe2ba80646ed69cc7d568411e81cb51", "0x23097b82c0c75e53cb8084869e51400bff9e1f0d75b5252e988abe3562702f7f", "0x30180e17530b860901b1fdcaf23b2efbc13ebd49574e69aa6df159d4a9dc8553", "0x11ba605959afb5de92d0a0cf68945b5e660a59e6c9dd2ee4838a9e52dd37a09e", "0x19f8beeb3629ca17720e83269c010278231a330319beabe793e9af41518a34ca", "0x278f39897cc83610330db265f6f959ec983fa13838ba88f76aad034c2f90151b", "0x2349cabda83ae2bf55842e72b804b36435a49e0b2f8501f00856605e24dec382", "0x07279b75f7a7c121005c3b62b7d19dacab6e1543f12bd3665c31818c5f2c7aa1", "0x006a49cec0500c059bf61970d3a03c4eca079f3bea76bdb652c9c13eb3a57f26", "0x00877dc29b504019644485576670f38ca53149695b5aacc5c4d50108e2683109", "0x29494a499fd7cc4e34730c48b22a629b24d74a728300696f523befad8a329f77", "0x062086a3a24f3dd07219b38975c451b48409e3433eca86c0832070c82f6dbaa0", "0x2b00d39eee2b4106a70ea6184d95dc19991a0fc21c472717740c3276a9a9051c", "0x25c788dedee36b381925503dc1bfc81f09876364b764989f86b9a9642c92eceb", "0x0a339d7c3399eb0090f9ca887196f55e5927dde8682c37fc9e85005d0ca14e5d", "0x010fddd4d628eecc6bb55ec4ed563c9c9fbd76ef45c591c221e08b66f44c9575", "0x08cad7f09fcd6d0a763b153a6ba13d09e4fb910e98a745707095c42ac32f7cd5", "0x2ba8cf3a07138c08643263e2d4edcf9a4a47328bfda137edd4115ba0b3274d78", "0x280c5aadb92f1863c0ab20ca14b01b00201b21dfb71c1ed32959b212dde8e8af", "0x243c43be625885bfba5754beffdb8c4e2718bd1ae38bac39b66883a20324547d", "0x1fb8a7db96d88075b7ab36e71669568b1a88c0bcc572ab1c780303c569e4108a", "0x0f7adf6a27eb979d0a147b417255058e3dd399f254e1d1571e5a6025d85d593f", "0x2a9c20bfb0234dd219ac5933e7616040ff98d6f099b53ce9dbb76b7a21c655e9", "0x2db11a75d864992a6df56cbb1eb569da36927f43362e983de12b7661aa91f465", "0x29cd63ef57ff897ac5b7df3ba8ed72d43a24ff18a03caa4d99f1e53190cd239a", "0x14d0521932e873b6db85e6a3aab001469a168e978eeb4c1a9386190dd74ede71", "0x026a3e834054cb4736723d1d15a241869f8f23475d377e69e4a3731689cded16", "0x08bd8277459e8e0a8359ee5323541bcc1465b27b9685fcf0d77e4aa73f4a5ea2", "0x19f6a1b5a8022bd124d262a77499621114c87b1bdc8e8ac715f0d906b5f571f0", "0x1f99477db5031b0ba723b1c0c6d156fe88eaf78de09241f1f59e0834f91c0817", "0x07a87edad5067f361df3b764ef37fc31175e017d9635a6628cef9158f63d44b3", "0x264fe161c98a2c04514b92f20b75c21223b2c22655e8fe2f76e4ce8d2563910d", "0x25bcba83915954bfc6a3fe5bccf6ec56688ec209cf1f976a48454dc6ded0799c", "0x2742a82c41ae2ff68e524803a43e387e425e943a2847fd729227cd01b707dcff", "0x0a4bca229eb9cea967db5f8650f3a9213a7eaba0664529ec48cb4816a32f3e40", "0x162dbbf72f31e2af5a8c62975d6add0dd747a86817bed09d690d2095ac1f302a", "0x1d90d3a9705c5a9a1e06c777c9158d78603ad4f9b10cef41aad2b8008d86bfc5", "0x2e97da108e41920c71507d3ffc4198f4e403fc080e3193b63471e816d3aa655c", "0x2bea7cfcff46cb79828d1bd5bc4d18a375765bd6927928bcffbea2aeee454519", "0x2e5e54e0fc642d8a0a21df48310fe89d3ecb81bd2d564b2b12d37ea41ce66374", "0x2df4a44be5efc0c61c496a8cb723e9fafd7dca85ef9c5ba52c71a78ff2a59d9a", "0x1dda9c60833b52676cc9476ecbcb34ee7f5b759fc0f8229f1d645e38073fe051", "0x2f91eee054fa514321dc0aca21ff25af7381ca3f4ef09a2fa27355c4fbd886cb", "0x094327a79722ee116aaf8196c4844e442e7f36444ea9c816948410ff111e3503", "0x0e0de329ebc013684671aa68f0f5c56a65a3c7e31b34af28d42e7db606b2ec4b", "0x0bfc1bdaea3997e63db63e94d43074ea379d5d5f9616edd9f19c1787e4875937", "0x2d74256d470e8f893f5a6a127237c24502c9e10567b892f7714983d142d007b4", "0x108523062a51a8b428eec2a66284bebd07dc1eee904f4347083fd1120649d616", "0x0c5a805d2ec7e6b3201e4954184dddc7a93d39fc221fd8674b33b68d65ca9e48", "0x172a06215673e0c0432c98acce1c426cfed640850197e72fe848b33efbc8808a", "0x0f65d03fccc7537eb1f4fd6c5cd05fb04b40396e99328a9e9f344c5dbd2a2e9b", "0x20c30ad3d6b572577a8733996093d5b939fb80f2e7caa53f0cc967c334dcd6fc", "0x0373febde10260fefc6ce9670914a9cec5c205a75d23def62e22fbf31a61dea3", "0x2334bac29b92db769c06308b787943375ba7e4560fdb741aa6569de8d16417db", "0x0a3e20c8a61c8bfaecbd65e43b13a59382b021358cdbf7a99805d65822f437ba", "0x00ea78ba65528ac7035e06fbd9be63a50e0caf8d0628f33c7b229d0931aa6f05", "0x0d1682fa0a924b9b3511188fbc8f21dfc6f9ef8eea1891607f22b1f9167204d8", "0x2844a8efb853b2db634a3cf36ce7cfdc331e7f32b0035d6705dec154b824b4cf", "0x2a2a574661f939e6c6a49f90107a2b54a0002022f963c20c1bf8753c826badbf", "0x11cf62ee06e4ab926c482f35525a5dd300a259bead4cd8fb9496ca06aac9065a", "0x29045c7fa9c73fc5b1e13499d171a16f376bc8b812f2654908b5ecd2b8261769", "0x057e44377642d4f3c7c1625dec2f3f4d22e915c7e90552879af016f7a1665f21", "0x258c4640ac1da995bd0525fa9162d7cb3a5d9b267d044a8c3c3c4310e68971fd", "0x095ee6ff5568fa535092d74c16311e477b7c62bab5fd585b7d4f1bf65ab4cc6c", "0x0806951088d6f83631a371948626f66625800d5b61eeea63d0d53f1c46ae4e21", "0x2e8cac5fe2f70b026d84f39f1bc80f3ebff2093625a1d44d8c9498a3172ee2fc", "0x112aae3d8032ae80dfe027a70961c04d17c99609a38c2a6e6a609ebd312a114a", "0x07f1bd289aaee1f4c2832bcd88746343d2128b9826f18ff47a02c604e04b256f", "0x020fb251f294ad1fc3d553cf9dc532cf2105d28b419cb3379be54f68384d3656", "0x0a76309ef4f35a0d942d2adb40042103117f8a92f8fa22713e5c8f4630a33aff", "0x02e338a6e276394e620855137d23d86e73b6a9c44713543e6ef0ca373032b662", "0x11277c021f4bb0566112a62d02989f306be3d6a61a55d6c2bf32b9b2d6eb488e", "0x0e416f597798c242813d07f02fa3f5afd3cd23eee8bec05ccf32280d2eaf0e85", "0x1246e80a1e90daf8f50c8e70a1973229c1c0476a262df79136087b3b252325a7", "0x02e7f56ac53002afeddd2ecf49250b5234d40ed25924ce04da52fb13d8197db4", "0x0b383f460b713d1af2c2721ef86ddb9ee97b4d51281993edb77472acee552822", "0x014c46b4a3f25b85a2d1085cfda812c8ae5586600b476acf5e6b6145ab449c52", "0x0ba3a95d3c28b392f3957569179db635593a9fe5eaaaa6410259cae7a66ab635", "0x02bbd2ad310bbb5d2546328872c54b64e25ab05e3477e04ce1f03021ef31b90b", "0x1cf0637ff2abd72a4c5d8b24af9998fc29d5f2fa62ab47914df14e897467d0a3", "0x263acdf45d079d43b1436625d9c3229e58d82daf3a40bf89e2672ff6785ba580", "0x2811eb97a600f13912348f4e9af47d30dbe08050ea0837010e174ec3f3acdb84", "0x15e681960836851b15c8e9896e91d65ffb1bc247794c5900e68ae82f1cf732ad", "0x1a1bf5d7b73d6cb3ddb0fcd106550674cf8b492a86440f90994543471d554405", "0x09137e8736492afc6d714d854ec1bd8c0fe63d4029ae840e6ca05fb3a8b36243", "0x10075a0236e3c6938e8acf35759f8c19c8630260bd8e58716edea970ec02ba58", "0x126344b41cb4cfdd9d78f912e02ee47059c09159f97c42943c5d2b735b6769cf", "0x0472a9ac7f6600881089a175f3287ffdc01fee5780a38e1e088b06f047024c4f", "0x0e52b1a8dc66014a14af480b80c8b3fd99592633eeed6cf9506e4f6ca9bbb8c6", "0x190e307e6626ac796ed7c96932800d3f155ca89d84c0392bb48a60b009867540", "0x19017529213e1cb331a1d076be3254c8ee5d9ea4005e9395706ea0f918491384", "0x1889decfad56cb14a6e2928091550a4504fbabcd71a9f4e3895367adccfec767", "0x14b3798bb27713b3f92fb086492367335424c56e0e7bd9ac39b5585fb18d0067", "0x217faa0b7866c660a700fdaf3ef0438acf44fc73cb7eabc5fc190b64ca97056d", "0x2bf465cb5271fe563121bb90877a821d529fc815fcee372474ec02cf398f9bb8", "0x06a83b6f33415934cc47c952b7911c5740d8d56de6a34837dcf8292ba823811d", "0x26bc4b7152ec95967de18162da0400a2b369c91088835659da957d1ce2b49e7a", "0x0d9bc3639ab1e9a50234c10d7041ea2220bbe7c94163188fab1f79e656d13b18", "0x13152f0714ede97bbaef3a29d44fb441aee818dac04f11e4e5c6a4dc31c8cb3c", "0x1afc129a674ba4ac7552dfead9ae8d2d584dc7e4a2ff2cce5d3b6f1350e08d27", "0x28498b045dd1b9b56e558065e0d7100675fa16284ac0ced1048e07c280a1745d", "0x13f8baf6efc94294c82829f59da2ac86191b031bbe2b2fe332cd302cd5d946c5", "0x2b0314eecfcf61ad7d4c6d8c7b95ec7fc99ecf8a648c21e23fc5f1946432f790", "0x2bd02329f573d05bd14eb5971f8e6df9438e8ab78b2d37a68ddb1a845d4cddad", "0x2f121eea462e2dbe253184030c4c1a59fd50fab1ac5c49ebf621f32347dbc0ca", "0x0b11ca165736db53fffd72e0d939b16fd5bde07a03678dbb6fe1302dff3abe2f", "0x244d9d9b9bdbf0a622193df5b53e533ae146aeffbb95815c14dd44340e192b9c", "0x02dff8347e64c0966cd327c431d42bbfa8e43ed65d58d452d2486f2affb4fcfa", "0x22362991babed59c5de9d9fd96a339ac988181b256bf1aec52a3d0cb8952f717", "0x0b5ddca04cf6621a6f22b94b90395a58fa8f1cf296fe5beb4049c7565f4f2a50", "0x03b3edc6b3744cf0578b2ec40d13a99debdb6e71973e0a40d265b99a54d6310e", "0x2ddfd9a5dd6daa9051779120cb17ff9046ede5daa24b5c33368fb84b55bee38d", "0x2e928f258564f11bd72156b627f0374bf8a557c49f88598ac940227ca2f59833", "0x0f970b4e284e95a97909459a34a03b90dc9703b24f9cf05fb5250c1a24861071", "0x027a802eaf2f9dafe4845f9b30907fdb39fdd9c44c5d181610f55882b7b381dd", "0x04ac7bc03182be8029a8440ef875a248a480985e693fd4eaeb92637c73e89e31", "0x075f3191afbd21d51497a26c524665de743157121f093c120d93e180582eaf8c", "0x0bd3be9213121f779c2b2b0a024be82b518e1bbc134a65f440c4476a9eaf585d", "0x0c9bce95f2d5967d3b58f93d7e03c93170917ea53b5f8b27dc70a1faab474cdd", "0x1e3b04dee6ae6635722e354655f6032d1a5ca2e6d7afa0c77b0be192f4f0c6f2", "0x0c1fc33b93195f2aac03fe6eef3e4110784c7c48322e30ee51cbd78f6ce9d93b", "0x2ab604267dae12494550e1ef273708dd11c17666770ff0cc7c077c935bf2af8a", "0x1c69985ff78559519a0052ea05e608e35cace62db7eccbbcec55af3db9156468", "0x16334fcd421256398cdeee08a9345a527decb71a01eb43524f8d3ddb0db24d48", "0x07ef8dd7665152f85d00939cfbabcfe37e2b1ef8a77a84568aefe01f1e9b5ea9", "0x0dcc426dc88bdec8c2848f2d88a200571b8a012cd0870fc6ea0b981494f58278"], + ["0x304c29aeb6f1873847879576d30f1f6e8a3ce41082c15c7632df920d6db5164d", "0x2b7380d8b25bca649b3f8bbd0a86ae417109069be27066f46fdd1c7c87d4c40c", "0x04c77200e5494b1cb8a3d334f69ae5bafa7e8775ba1924e563efe591eff302f7", "0x06c0b8966df93080c3ac1576486e61ab0d027637aac41bb35e482bfa10e34fc5", "0x24c73f425903904f40dbff590225f251ce1980a5a5ce2d07ae436e1d090778d7", "0x23df6f6f4448273c745ce53d5d7abb5d26c46724a58d68844d3c3ee45e9b924b", "0x1dc1b1ac389280188e937566071b84bf8189b955d0579b6de5ea8a5136bc2ee9", "0x27f71c5ca774ce20028b8140f144472043917cd4919cff64d848a745bd569180", "0x22b2ee53b302ba2e836b98783e15eb6de9d15a72cc7caa374e61b51dd0d2e2c7", "0x254d85065f87271e86d7b411d6acc280f9ed257c098c9fdb04a2ca4df7c7d766", "0x28620793f378bfe881e098bd2ec62beb46899f37a54abd053cfb0b3bb8d5e754", "0x2c19f26d0836635b04f38fa30ee5c648fa0ea1b202eb0846821acd3c699cf061", "0x0f9ed87e9a1ba7ee7c28bfd7ac38ff3ba10849fb04d3322898ba9fe0104fb445", "0x0d1deff42263b7cae8a123a1641b7258015476161ab881e1dc20e165b3f04579", "0x05b275e07a9e23f477a9f0e2294227286528ddda6dc74484d76e6aaa714db5a4", "0x1bc255052aed9dce37765bc5a95de779273a96f4bf4013542588b09783ea7fa0", "0x0ec2286cba99984d38c3dfb80cc08aebf79a4af8ecb98ffc53ec4abef79ea6e8", "0x1b05bef71fc396f1be97c82c082d2f7a4d8b32ecf30c19875409050e3ad35886", "0x16e93c7eed0dc0006958d1824d0dc740b5cfb8c986fffcf1b61d100f29eb69a8", "0x1ac49ebc00e374fc647c65981dd93adb8998d6128b917a6235aa5623ea461282", "0x0727bebb845f6d4744d3ddf12c2aaf6f2c2a58e04571ff17adfd905cd57c60f3", "0x1d5659be4fa9e713d3e428c29d34f9ffa9ae0f2aca3474543a20d6254b2f0199", "0x1316e470b54f0dcd5311b6a930347bffdb833901e02448a9419f127f8642fd77", "0x1f7182906e184bd88594ca2589ff849eb2daa30caf8cbf5213ed3fa4747e4581", "0x1319714ecdc7e6bab2b7cf57d8b088094a003f2d4f88edb0d0bd8441b4cef318", "0x088c106fdaeb323a76f94a0912add1b66be216084a42e14bec597248e017d88e", "0x0fb8ab5bdc6168d1ad8769225641d0b5eb4ff8fb5c609c661da8ee83ea2a0488", "0x2ddedde404858c4f097c6c8ddb66a00381635c4f155014d3012ad1daf790345e", "0x12d92b7c7a88c9869f79fc61e4ea1c1c881bb1320c0b7787c6437e230b58eda6", "0x21cad521c1abec464be99a77f0c0f792a5aaefa104bb7c036b6c8a405050aa4d", "0x11047fba7de2a553c3ec55251768314400708e617c9bdff33a49663ca2deb319", "0x2904529f4fc0291449c3af18fc9f54722ad2c751620d8f6e0e1f2a1382cac5a7", "0x121fe62c53f68475aa2ccbe28d58aa74a2abebb2658422cd6f145c2662cc96a0", "0x0ddb1e4ea7a6f367056eedacf793b94a5d37dfa020e655e90711306dc7142d19", "0x268b44875f19ff58a15dd84f4bb64ea8bacc7dfc04d1ad861910fb9942a371ed", "0x09c17828425de5e93c9eeb82d325f770935de8c24584591b744808316590319b", "0x230144d2945f1475376bde7ebb437cd7358d501b9c954f67e06c0a6e90ab3c44", "0x05851a8847cdfbc802889ade3444a577263d93718b2038a05b05bbe890a98891", "0x29b5ad2c6282954ce356aa7c31085eb91b6cc49ec6bf139422c39fa54eff00b4", "0x265fa1838ae2f6d591b8f33deb78d3d7c9ca14014170ff650618b601443be916", "0x1e87cb86588c69bf4f9eded33f03d497c15d61b0e48dd04594df336d8793a23b", "0x24594f115063f9a063ccb1a580e8e9f042526c8ccf6e4bf2a6a273afea167f06", "0x1d052b0dd5715c889194fe17e83763ca6f7bc79a204c4c40073bc8a516f934c8", "0x1e7bb691e67410a24507dd9a5cc323c0f86f97b842bc13ece75d88c800e76049", "0x2b7558d08ab870d30b18663ef9c710f97ce4c49454d34c4bf714be8865b80c76", "0x14fea23fd7fadd53c9faf43e1e30c1e426668d0080e706389f5d44f8d0cdb448", "0x0d8f85ff6b797e9a28f4aba6019337412d7a778c3b7d7ffe06d4e20864491add", "0x15d72cb12a8e6d3c9c800f96fdad51cf24527768c9d1334c608084d5a0728cc4", "0x25f75e361c26495bd9e51468aea168f9f097874e562d727f030a8cf5d8c5855a", "0x28623a688686721ccfceda6c9d786832e02654859b8150e21cf036fcc154192c", "0x0031e707664a432be639934c2b2daa575750cc41f840459d85a6d6d7d8abbbed", "0x0fd555d5513b8c6945f97bb6f3a5d3b1ff2ac2d81a7612f12eedefd222bee1a6", "0x2a1fe11753b7a8d0977038be1276a355857ab20cbe4484b08b150a46c8e392d5", "0x22e7970da1008db5772bcfba19eab45385538e2545fc20d950a60f840d9702a5", "0x1541fec85090b07d8856402ea224e1bb2d8a8a9d1192b9a13dec81b8f69682b2", "0x17c37be74622c608e70301092edc69ebd19d17be9a0d44bc78944a309f221cd5", "0x26032c97bbbb5c920e1208592a4f5246b11d4d78d63aa195ce386285bd0db4dc", "0x2e62d73cc8ace5bc12f5e5aa236ccb730830fda62d6dd935c6a3c420fd9c40eb", "0x2f026a82b15872385978b49c6b6b487659e4f5cc394de6e6ee4aba26a104e229", "0x25d29761cc1e49b6614ac429444e19c070b6a24ba90e7ac726672c7cfc363270", "0x1ba97b48605e1754e7e17d1af7ee496e7750fbe6165caba1529c89cc67f27911", "0x275e5aed25464202f1b713852b4730275b1ce92153d025063e0a15fa077b51c0", "0x2b363e45da3ff37132430409c8008ec685b22ebfe8438df6d3ed4a787a762e65", "0x10ada3d922f994d88afcc40cd9ddf995ae2119961df6b1daebadb62262f43f2a", "0x0a39ed164286e39b01282d6519cd022111dbd0ff83ef1556269a63a010083341", "0x1c37d6085793a30c47d92caf677c0ce0caccd2982bcff18078a46b1148cf6310", "0x2552caee804699d4d6ca75bef4a58f7408f97ea307b448a5c40d311298562263", "0x072529903f5a556c8c51e143c97853540a956bd3b9502b1a43fdfdbbc66a5b2c", "0x1a9611de6b18894ad967a44f129f48af82eff2bd0fe40b0bbee63ae07bc8ab76", "0x0a014cbedf93be2a924b9aa3253e8f832845a8562d459ac932bc831e042524ce", "0x08642d914725572bbfe7eb7f7b45d917b2d1debd3c44d3636cbd6617c129b24d", "0x09f8138cf03fdd6bd110149c68dce4ded8d45206e8016fc7d3ce6e2b66f743ac", "0x1afaae2609ce7d15c7ae47509767687a58ddc2115367151d6f38d2ee3373016f", "0x1e273929c27ca3f6fe04fbb488fbbc1d945431fa69207100dbccdbe2610fc984", "0x0345fe0b8fd130b8e3a3b2379acb34ef73feed141b806c074621a4e051c149a9", "0x17a3a98a7b70a445a3aef301635e8e5e8b277eea1773061eb9c5364f1f76773b", "0x0b124c9ab4def719e49619aea6d374bb2bdd842d5b8b84eb55665334c1439170", "0x20acb7a69cfcecd60733426ae5a7472db9b886e2f11369aa9f0f9270440cc1ce", "0x137ac68a78893aa457ce3af79f84a52ed31df7407c5feb5ab4b4d9aab3d479c8", "0x2822e5e8243c20edee38cb142be3e7d7e005d274fc346522f531c1ce0b0560e4", "0x19c53be6b70cb5c79e3e420968b4548b3ee55dcde0ed28075945b2ae8f2331ee", "0x270a91c925ede45c008bdbcb162d9d532717577a01ee948e0a9913ecd2ef9d2b", "0x29ca3e6811d8037a309296a3fadcd7371e87abe21eacb37c8f4ac7c98f1d48a6", "0x2fbe832874e6a044a4e5ee1b63fd7da24910ed685e1dd12444b80c95f959b91b", "0x2b10b943bc42b1306ae3c0c962fac147f158d9e2adfed079f4a8b7cb836e998d", "0x06927353ce97f1a2c75b57aa42d742974a60dcbb13586f9999e52d42b7bca433", "0x08819fee01c9b7f8f1d987fc3f2cc70de7854ace6de0728ba7a0e7a5d721917f", "0x05504a16782e9c95d1870166d6ec853dcd2859d0d4cafa6d320709069e221340", "0x0a6c9c3c69e558408931240885e4edf91e5448230aa020a59721e94ee19c4b10", "0x1638a245b63546e931ee796d3ad7f8fdb1f7373169833aa6ddd4ca0d3499693d", "0x12b5ab3d45071d84539be772c9f468c8cd6efef151a3f5b2b52b86c47c9480da", "0x2f9d04c7aaf854180b7c9943a86ab766f1c61f8265bffb8477263b59999a4ee4", "0x11709a242657e17727f2429c6736ed1bf6c756dbba899aa4eae5ecb6c845562d", "0x029668f5f5c4a3246bc3a86f22132fc0cfc625666f99e640dea0e1da7a9b5670", "0x2b613d4804feabde47da71f26e13d61428f2781b9ce1fde088902decf515f322", "0x25f3892eb57862f0087557ea0e93867d2bcc0220f7da2bc073ca276d750ad83a", "0x2103f7a5214f40e2ff64474583cce0914d2e9a4efc022f07ce5cbd791f543271", "0x14a8711072a8aeb4e3c72bf7685120f2325b64f906e2c1ee31f6afad6c815138", "0x2d8200110c740dd51bd22f4267cab97934e5adb86daf1c2f0405c2781bda7ebf", "0x05b299e405131bb5631072396c5b57cb87f50d070f196533bc3f0506c8ff218b", "0x2595e4e223f843dd01b550c5532cfdc51931fdc340a11cad1019fde0843cec87", "0x1ba92bc78f26df3148da920c7b4084f015ee164662a5abb3c94acf36f78a957e", "0x092caefded5f804924ccf1e63543d61dfd570007a1052abb764983233cc63e4b", "0x1c0dfade3ec3d45119238c75c700b826a422ee02f45431ec110449f1f75675b7", "0x1da05eac4674e99b9546876461369aca20e289e67d052cce10fbf418b0a0442b", "0x05086928cbd0d49403bf4ad6f4c626cbd48c1d9c7a22957306f0bddce9da919b", "0x1d32f71e4dd99385a2929a02b92912085173b482548e1bc06efb3ad96fa31170", "0x18fe8945c081f1a9937e20359578cbdb19343ad0ac50435f26dc8193cdeadbf6", "0x0c27a1469d7c1bb60c6923587a81bfa0517587a3b0d3356826a45c3ac8afd4d4", "0x1a0bcdb274bad54e1c3eca1e4e14eaed3bdafb0846b4fdb41c0cbc6efa4900c7", "0x18c15a3bfe80e4883601664288df62171afead7dcaeec0fbd959b3e7c6a8f768", "0x23af2addfcecd8cf403bee8c4dca81fb7c978faf147c990f260f115b2d3bc8f5", "0x186efb35a6b23d406efc6237e175dae02de9c44e5dc2897d5633cfff571c939b", "0x0ab171e95c605c6d5361ffd31e76ff8e4eb82ff2da56d659c66902e9d392879d", "0x1226226d5541e6086fb775843787ca537dba5a9684ba87ec0de592cfd20e88b0", "0x246c77e6d2858a34a3ca29d3597611adf328a4a2211f74d5fd04dceca9830c8e", "0x0d7495cdf807ac3d6184c18dd9e858b250fbb37c11a29e6291c12540d5e2bda6", "0x230853ec47ed72d1ffff83abef03b5ff7678f2e104b9296d8d29430140e89702", "0x141d86088c6316ce0dc3a560961a50f0769cb7de216689077cf65c6245ee76a9", "0x1fd4fda571ea5db50bf9a375b7e83ee18dbedc37914b06646014a50092a81e26", "0x0597cc1432a973d83896fabe991e7c2a537045f9a8ac612ac766a37bcaf9c9da", "0x16dc93239b74eab89823aafd91397dea7a5c2fea07e12e562afe2a94e7f33cba", "0x15d73eeee6d48102a0818cfe70ab0f2add92ebb7c8d847922aaef02054280414", "0x227c8330e2d7a7de907eebe9e82f7264c16de97fb23f4bc0d563a7874bcbf578", "0x1b952fa7b0d9dc8e9f3c52a957468f492a2aad45cb2d4a5037a474a6b3231afe", "0x2dfe192bbde5da75c175ac3265857bce905aa7ecc585ad20f4997f67a5042e44", "0x18ce1b58bd3f2bc554b746e90f188a6705f842be29f85b6a672309909fec2156", "0x146d5f383b2efb9962e773afa4b086c164b0aa5306e537745f15680a85f6a1b4", "0x05130082aea77203ab1e2819d4704f0e9d723d06c4579b1bcff7b9e70cf1cb26", "0x0122d2c1c48550ade6c88d3498d7ba8395d44776319f12648c14cacbada6cc30", "0x02be0dfc2a9ec2844a58563f8f0115944e9a39a8fbccfc3d79830f4a494a429c", "0x02362b83ecd5ac86a908533a876ca1738c844425822fd0f5e0646c965e94cd99", "0x27343a0ca83b7cbf4cd78fec7c2bfbd6452859fb0f7b5c14f62391a8fbb813f7", "0x25f66e4c31aad3d3e8f8940302a771de770c855cb7fce3fb170162449950059c", "0x1728135861261e3f1995b078af0a0f1236eb457fc6201c5aceb8c93f87217b63", "0x153b4d75654c5fe604fa2fc96bbb6a0ef1240c8281f8c0b6432bf1a529f50eba", "0x1ef294fe797568f55253c2f93c4a32ab6937a1332bb1c412b8cc15e74b3b8ef8", "0x2a5f302c49a8c8fd6e4dce1e265bc6ec0eef34cc46136f9cca664273ac3d8eaa", "0x23215a1413633606a8c8f22ba642bcaa8fb559f7cd322cb08aae796735bd5270", "0x1329f0d6fa9d80e536ed120858dae6e51376624c7daae3ba79795a5525a6c484", "0x2664e9a98faf74e1416aa645b64589ddecb3bc2c85f9a89688af7db70ec60285", "0x305d940fdda525f49e235ae6d25f9d4471e396e7bc3a133aeece1e56eeaa7382", "0x1271af6fd004b867484dea1dd43cbb5d58d731dac6de8dbfbb3026c17331ea9a", "0x231fd9e11aa688e3312731a6a027ecc1331516d00d7e30788c63521aa9326251", "0x0e19fcb863828bab9d152e0504ce09fa61faa3e0a23c02480ef6f866655d575e", "0x13030654176b06afcb611203a2369a442e863b3c0d1c88b89cd4c7fdf4f9ef06", "0x1fcd60b9a522c7405763bcc95462d77c0a36b4e952c461bb2eebf1e842854559", "0x1bc1cc4f122eca17b951451c773472f0a3f6a57c185319ce1d2de0d19ba1f21a", "0x02c0318563dbf99ae636bc012bf310175cabb7663f2a6764cfc3d67d186a21f7", "0x1cbb1a2a490b61176f9045b4b0b60ec03f12b15b30555a3932aa3c1ffea6b3b7", "0x006796f10e9ba669dff948e86fd462dc5cd95ba8079b02c2b2b4ad1e62fa37de", "0x07e6a8fe4a4397ba709215c5ab272f3c541465cbd8e43653dce2f59cdef8dee5", "0x284e093c985657bebe96bd671120c92995bdbd2c991cdd4909309cc3722b5ed3", "0x0d2071dadfd269cea8740cc0299323cb6e1a64bf123dfe1af98a1787a6ca3c04", "0x1945b6f5b9cf94b95d9341fbb6b8b4b7b461b96386c1e9cf3c7c4e3b2f083550", "0x1576a69840a50e47e5ab4f21ab39d53190038594ec599700415e12c4692b4678", "0x1d9f7484194e9043958d6ee7c8a552c0d25f9587e66cd899d2cf029179641675", "0x1506003f39bbe412e1a0a4f2a57db29e29af2ab61006382f6a1d4ebb8c39437b", "0x2245f77edf9eb3e22d647853698be8a2783facf92b14b8392e7368a459da62d5", "0x1897e74c6f1bf3139060eb8049b95328fff4e9db9260eada1e55346dbbdece3b", "0x209ff86085273e680ced957d0e4e165c78bd9670a24969e83ae8b0db12638c3a", "0x0622ee9d23b0c61b05845b23853e40d88d73593ab851e8be3b338ca7ce8cf5af", "0x2ae0659e9e749a47e3e0d244862ccf5fd6fd6e1af0b28894b4ec72940774bd9b", "0x02c31714e2c67c045454653f1bdfa47db03928439d44e321232023ff4d2fa0fa", "0x1c4a827874bb4a455d790cd7a86672634038bafb12d3b8954cf3a3faa87ffae1", "0x134da7e19243eeb08e0f7e68eaba7641e98ec35f8ab77f134dd10a8adc8499af", "0x15f65369e51155ed42a0d50c3479d7b880cff87e81765a97ce8ad28b9de6725f", "0x1081dcae10fd7fec12a3328a60678c2d760133860cf30f5e45a0fff5ba95fb14", "0x28206b5cd44cdb7bf177a2e3d60ae385e3ab2c7c8ef9daa9b3dae35fbb992678", "0x05d9355306abea7a1494b4875f06fa9f81f4fb0b85524aa61b03aa053baf43aa", "0x0869ae8683287423383a2317ce58fcf88433bb546675d6971ca292a0f00aaf33", "0x0b07d8566ac61df9c2fabe8d4062d8fe46bddd15d08734a4eedeb91dc9873891", "0x025dd57a9bee5a30ef1291f0aca75d55f20d11f8e0f2e69704013830f26c22b5", "0x1c9e2eee7d79b79e19a01f617f37eb8fdfbe0420f3c5fec58491ff136b459f2d", "0x1a053731cddfbf2d58d723ba5d50f874125755c8b2c236b11a2fae3eb15d154d", "0x109dd67f06c490940396df6410636f6535ea7f2b8eb9baf8e3be3ae1da12b374", "0x1b8e939a3cfb76056a4793e85b1b42fd38059856c1a434ae7ec90be0407f80ff", "0x1bb4549873191701fc74397465ac489ac5adf990710f9ae59fc7685c489f2e31", "0x0d971a30765153417cb648298e392f4f61defca06a05b4e423b97e45c8ce15e9", "0x2c58f7231642e86db82dc34a11ace0e87c24f9a1bb8e9cd926e073f74a96a3e5", "0x1797d37d7ee35e50dac62ab43434d3c103c7442b00891dd3f8bf0dad7d7f44a4", "0x147b1cf0b44efb08f03bc4924877bf51ef5f7a4cf15e1adc57253a33f006c607", "0x097667a035e3b304702995a8e51a212813913fb94c8db886c6c4fadd5261b744", "0x01d653ae96dc57c1bfec7cc425b328e4f4a7e017621b6f528188d2fbc5ac8460", "0x1b39cd9f113388364c77f755bf1fa42b706870d61dbdc416838f26459f4a2630", "0x25cbdefd82649ce519688b4e4f853341c11e14eca83b70c6bd27efda86352931", "0x042289f519c5c7e22728b74ca92afa8ce890cedc07a70547fdb8fb7e467c8466", "0x1cf966e94f1d7c69613fe1871f2704d239e1804179dc7ed1301dadb0e10ee728", "0x2804d255b571b9ab3f54011b69fefc0772db77f529cefe27eb0acf1e4373511c", "0x2b274b23b66d9d561d057bdb7ad38a96341b953943a4bb361ac57f816b44ab98", "0x1637057ba7c5dfba78dd8e38a2e3a8a4141ddc2dfb41598923f66b5ef886cb71", "0x1e55cde5864bea5d60d7c1ed34e6036c007d76d91d0929e81e1929f6305322b6", "0x1690e994aa14899d93ff21ab98ffcae9692d7e3f00ca258684268c06b7c80632", "0x27df430f854092fea91a08eb7e40570382563b16c78c12b8e839e7e7e3d723f3", "0x262c27865c6ccb2920d7a8d7ef181136cd5f7788cae7ab9be23c7498d23d9e0f", "0x14d8d4ec65500428ebac44b267b322e41d5cbdcabc277ecdc3cee7838b0877a1", "0x1d2766558195a3ae3031bbfd302439b08cc85d608bbe36e6d8c9aeea2ea0b66d", "0x11c2be8af313169515f4a855d0d71e80eb6167bb88d3533b70f818eb0c945cc8", "0x20c9692f4a3fadfd0ae3d2f7a78ea300a4417696e321503b0b6aeaebae7e4549", "0x28cd4e2e7c1f3ec3343e44f6cb1786c25dff23decb785302820d0dbeed3302bc", "0x11f34dd9733bd3d0822c7635dc976b2cc2f6707eaf4178561ddc5d4f563a27e4", "0x02d6c790965582a05f8e3abfd1e069e414a1df5d86a52db0fb57de9201d9b964", "0x305025e1c03aaa1a9b43123fb9f35399c6edcf30dff7398320a78bda920b1ba9", "0x1f9a91691a4a3aa765c7303f4b7ab8ccacd4d834f5c8e680687053eac7b86323", "0x03f134e018dad8b80ccb8dd780c808d3fbb1eb2222c364a0a3129048259d29dc", "0x2d9cdc3b3ca2467c237dee666f37b7e2dc58dbc59e0be477248961efd6782b20", "0x0f437d8f3cc4dc487e8971b038a11324b7a984c85cbf698d2823b2c3b71f485b", "0x12413aa63de038cc0427b1acbd24ee2ce6cd19b37149c6ca761504fc1e39904f", "0x1e42cc0b2b4bf580173dfac63ba6210d195e078880467cdad8774980a186756f", "0x08d62b4ece35499b60d1beca4f23a9c3d39bd6798dd9818f95a9f02e70757ac5", "0x2924988422b3cf13ee98c513f4fe249c3c3fb944805288b50864c26c2e398875", "0x0a797e9016f8f52786057f1b2a3cf50fe20f1fcd98346a958e4bc1c50ee8b685", "0x063d8222baf254dad1667f6bdb24c860ea17a33121763908e8ab1e9c3ea48fa8", "0x1815d8e9cdcb9c3b7d19759c898b078a33dfa3a38f3c22f1ff4550363603cbb6", "0x100541e3ea8bf5921eb66951943b5fb44530076330d19c6ccc49d5fedef81589", "0x13ed4a0f7d5a26c05266535f8eeb1eca63e346fd7ef20db88edd1d1b05ac1fec", "0x217fb49a601d07a6e772122074f7bae116fe2061315966ee39e7b3cb4f51e2db", "0x1eb9080e0f7bb6f01b3b05f9c60c62e0bfa768276e9e59eeaeb63bbf06f5e127", "0x0211d02e9d453de842c6e2744d5ce6557a3faa6467cb923755d543abfd302094", "0x0cbd5f7cb609c7e5adcdbb25f6f0cb74da626a4254afa409b9d2c1961b4dd4b5", "0x13ec6d0550258fa91057b0dc06d8f00a47d40c05aa124dcd1124c59f4e22635a", "0x1258ca1e77cf9d67a8ba02d1f665bb405b388553a5cd9d6c43037d0824ac4bd2", "0x28c5a7824391b529e9adb062d3983826ee1e7bbbdcf2050aa24045b2d5acf8ef", "0x19cf73a54ab1f2e4421cf88acba44776de1741a0b317cb5e1e2012df57287bae", "0x3011455d11c4a1433e6a9f6ea9ac559527d7a17a0191686971b7836a3170731a", "0x17b7373ac5c3f3e20d71b349aff449c73d41f34f1d008140ed5829cb265548e7", "0x204a96353538fe08da8072b3fd97d64b245e064d9bc901f0c0a18efbaae0995c", "0x285a72987d0f0f228cc694d10def85d22ba358e744825522182daafb14f4c258", "0x2474bb9f91f6f5401fabbce0f102f974cdd061a5e57a782d5b239cf7f8925a96", "0x1b45841eab52a5105aaa42cf7f6d8acec5c06ea8a8b0ee13ed691477054cf5a4", "0x0a3a4b8bc77d458c8eb26352e92b685e00602a68dd4a9f13cac10e88ce972ce9", "0x2cab4c359d890a1dec1881d24dfdbff978218003735a10392cbf6049d5cd382b", "0x0d0fd0694da677f99a809f785ee1ef067751322c28613929a8fb7249d3e6787d", "0x29e4e09d975b50201c40a8bb9750d31f30ca3601e110d17bb21c5ff860727a50", "0x115efe78f8b2a72e8a213c24b1f5c6efe80f63470439e678af721a0f04221370", "0x29b3ccdf150428583feaa28461cf1ff1a4e49aa92f90c6f720ee2fa89b589031", "0x2eb754990f68975867e35e9589436414b88a25440bdc0886623f1a568f516077", "0x0989335bcfd41020ca856ccf61af50321eb1d21ce04d1581db0c62043fa209b6", "0x208a9857b859c3f620169057519050719043b2d42c669ffd4b681a1e52159150", "0x0e7f8469184f41a9eec6990459221b111b01c5dc0fad09a985e31576e0000410", "0x25dafa7bc6be0a1f9fd21cbd71a64e56bfa46fc7f27b2a7b135904a0f7672e6c", "0x03da2dc2049d07c4d185a16a29800f785bcf6228cc891f1ce30156fb3175ca1a", "0x047b5ff19a973402f4621e51ff3146513505687f720e2ec080b6e44c46881d3a", "0x299c01d6095a1d660d4e001a6821f800e50efa1366c25656d144cec3b0294c65", "0x1662d7fa007ea31e89e692ebf522794e2d106cd844f8f0dd5d0b5f59759e44d6", "0x00fe4cd065090dfef40d074039bd06228c925c77bced4b25c6eb2985ea6da5e6", "0x282e49e314c31b6d337f417e9da54ac7b686fa6cfc1fae8b58273353be658678", "0x0e6cd752537a9180b86fcbb5ba8571814c7780b2e486697b18a8dc3a159d9fbf", "0x0cc70cf2866f123a2cdf2cb9e8a238813b0112de364fde0552d38062320bda5e", "0x1aca51b94c7479850d3f67d07a710f55ed784d4cbbef6f045422b80b438e5d07", "0x2670a1cc090bfb1db16c528c1ad51478b58db66adb1ebbbcbfe69f5ae47ca844", "0x144b566d3667faf0eae3ea9c8c0e4be553a7917bb6f8c45938036611327559b2", "0x27b0264ff594fece22cd26e6092542ed28851a75d1f15310a4091bdbfed36fcd", "0x1f608a88e8d2dc5bb6cc91be2f474eac4c3a659e0bdd373f9c6dfde4d6a0add7", "0x122d0509d2508c60e8a2a6a83f770f27d24aa528a40427db069093fe8e78a064", "0x015ea3777f61dd2f8d4860b202d3f4eddad0f6a5ac5089705be0ed60135fd988", "0x0f0f1c69e52b1e410d49a46939eedbd48129808923ef9f05de025f993741a4b5", "0x16dbd963fa198fc9a3c230caab4580b34d25c6223d611351c9657702e5168545", "0x01d85653beac61609f08d4a988b85c581a5b574c269821e66b2815b31521285c", "0x09ff09f0cc9a53c87802865299520b8639f59b6a5caf06cb80cc80fe960950f3", "0x0650ae88754b4ed48d3520aa7771f4ff9ee40280b85d9e767d3e53ced36ae0d3", "0x091741b2a425d5a56b2f914bcfca7699e385c734bba606d394261b6367b10263", "0x2ef48108bbc4c7b67f1d00e045eb30906ede0032a9838e68067580f22c15a386", "0x11bda846a5e5868bfff65e9331e0bec764a72dba5549ac66179a4524fbd6e3ab", "0x2b6b3bc942da684a5812478dcee5f2bc0138395cbbd0a05ac6b04b6e9df0826e", "0x0e117fc5897aa6d7ce2025a574c8e4f1651fd95ff1e63c32df1fad41f2830473", "0x0d285c64565bc502acdaea74795a0a64a46a148b904ef986a7aeb3a9e6dc56d2", "0x098141a57c9c6b72eaa0bcdc98f203359137fba1bde27afa94181d755823c723", "0x1d113cfff2cdf12cf8353701521ff920e8d10489f477d57536b59c600812a023", "0x13bf98387944aed3e268d0ad15b281a82b280fd924b8d4eb43a05b23e0f36ebd", "0x1c84249a8cecd1361a4b66b6d1911635ade640f4981ace2cdc4bb85ae7199173", "0x1888f869addf2a91230bea0393ec80b7cfb4a4cbe7a2a049f74401e7479fe4aa", "0x257341d8632255d76f29cd7b33d890b0c54b0e97b8cd6897886b6e389a8d2305", "0x1df9bbfb49acc99c43203403c99923a6fd9c8bf7f9aa6cbb91bd1a91aa4d7e92", "0x2a288ce4b8fed1b94cbd37adc8b6f814a3254feb0d0bc687213c1077648819d4", "0x23dba7c996de6b3c227c23a70785079fd4232a17f19d0311d561395d993a4bae", "0x199231edf22878bf880df305412ffd8a3ce6a555b1e7e81c7c3c72aa02b358cc", "0x2cc3d9d1107e7a5fa6aa9497994316294c7d31898d80ecc3b782573d81932873", "0x1847e8e68d4c183f3094888dea15007a6bc6b35daf79decc9f0ce88b88dc3c65", "0x1ea791dbd9aaa3d2ad56e590aa7344514e45684ea3201dc9bba200a046c3b896", "0x0a38e9e4712de317a533e3c929d6ce749307e8849137e3ebfa2a4d0bf6c080cf", "0x02de42647c0232f7870c412596bacebda08bf27fe124e16f1585cfa9d1f61bdb", "0x208c7a7f4dbd4c02d11bb6840a3fd96ab78ff9623cd0a39e3df3accc03fb5dcb", "0x0ddd22d2c7a22798707187615a91f9130a66d2c0d7d7a015fdc35a68deb8e388", "0x2a90b2d586a6c041362cf2667d131fe7c426075013c33923b0c62e3ffa7360cb", "0x298ab2e353df6ba628421948a02952b2afda68c463bfa36050a7c1418a026643", "0x08da6d2ca619829672809813a61cc5315f02460d8b1757dc014f947b729e5803", "0x065c9c7619f718cded1a784f0373fffea114170310b3105e2628eed621a2561c", "0x25ceb8bfda01132364f07044c33afc4d14755edd1bd6502528c367497c2e1db3", "0x02facc79173aa070593579d64b0f35841f65cda3b47c4ae4e675113a9eaba231", "0x092f157ad123e65d991404a2704a91b23bcebfde142a1e20d88e13e8fdc599df", "0x2e47ea8e1bb77292c06ec09029c1d1245949fe39de87f4101338417dd3f72bf3", "0x1e39369419393b8ffa389a34392449d953a992d7afb0ba34af8f2159f1396536", "0x0ace46ad0dfcc316211a507be4e87127b2180a16b2444fa8917459961c030590", "0x2e25fe7c19d848ac780af912aa4299cd59a55cf679625fffe9c14d4fb994eedf", "0x01d8d31d97fb5ebe90c25ab3fb433f8a82ba9fbb4443af83c7549d2b7688c17e", "0x029561c80c9527ae48a5f605db61e69b0892e43741f27e38715ebe14554776c2", "0x19104cc8e39a77156a55aeacb90058a42b001e74298de81f2d18cc617760db08", "0x1cb2e1388605bdd6583aa13a6eaeb2fc9ecde1337ade0e56f3e2e3e3f81e25f8", "0x164b7c0e87b3e37cd027652e2fef38b0897675ad34baac7a777a78a5928660fa", "0x03a2c5c52f34b9d603addb63238347c204e9bb1e65fed2b2d8cd09428ccb0601", "0x143107befa4803b1a04269d030233f68d927676832011c7512bbfe2b22c35785", "0x0606ce26a1a3b7d8bcfadf00f30d4ff0dfcbfeb1437ea0fb35f918510b1c37c8", "0x24cf1337b43c827ea97633e387c7948df90a3c42a8f7f27a1efa5e079036f982", "0x1c26028b3ff7ab73dd2cc99df0ac3caae4a9f81be4091ac7fae5767e4436da87", "0x1e0e4d243dd982c611637d510f43ff32874ea6680c88246a053121fa0e302a8f", "0x00404f39181657306e1eae8acd510212389713698606b3c8c656b26cd4f2bb73", "0x1138aa24e42bc883993d4c5f6eb785a8c59cb7bb1200186b5193afbe1c2ae478", "0x23b126fcde502df569a036f9d65e651805ca040b0e017355c6aa990e1f48e8a6", "0x02e761239a389a531493fa699dccb3d86125533a4608688ad2f159278dcac908", "0x18e087059de0eaadb5e3c5c4b9279cd76dc3f6d8a0d060558b19c3cfded6a6d2", "0x27364f27770f58b6dba3d3f1666e504aa45e867b30aee59144a53cb281528965", "0x0fe00ce1679e3aa5f4d6b7b80e8e2022bc2f8045eb43a4f8fe9f04cd4eaee94e", "0x1afede9489f5ab94671d20d1ab49a5ae0aeea4fa29d38ee212e0a9cafaf5de05", "0x2fdb0d7e75731eda93fc931e8d8f59762e0cbe15bcf6e0a3ee1da0e899546a50", "0x0b74792ad4e5624f94cdaf5228d8f7b7641e759a25ef4e30e802e3076ad09007", "0x0407950b2453c974580b9ba314aebd49d89052a1d8eb2a606fadb4052f2d9ddd", "0x29b8d1ec888f27ddb52f8e366cb07a3829a821bfd57296df667b49699e249593", "0x25d0c20a9006bbabd4f5160fa9eabc648c7e41552a0762b5d350cc151d6c4020", "0x2f3540ade2e57f26ce36acdbbb4198cf0a17fcf04c6c926bc3283a11a661df51", "0x14695ff8da20904e07fef545ab104fdf0dcbaf5b69a3b83485048a0057e58312", "0x16c7f28531a7dc674e8f240e35d75b08c6673995a46ba746bc718f42912ff69a", "0x2e2c2616f6bc0201be908941c83c38dd7cf79c47805ff93bd640ebc552c4ca0a", "0x063bca2d89100a11021bec39f11590ec08488206e016257061ccfbc613357060", "0x0f8c50aba399310f30c201d7be6990a7b5061d52e1dec5dfb59f69ec93d7af9f", "0x10b6435421a2edb44d8045a51332b050f137e26b37d4298dcc33213225bf1452", "0x0da21a08e5f73a231b94e20dc513f2681bb15ad12f33bae3d5f71a4c0ecc97fc", "0x238fad1f6960d619947d509d97efddb3e2ef3e30f18a26642e282864a7ddb426", "0x0eb8c17eed2e330329401b5ba5966bbace115ccc893423b26f224fba2af1179f", "0x197f1200a29e7fcf3537b187554dce9edd225cbbd8031120c57fda9a2a2d6cd7", "0x007e59ef9a273220fb6709ec8d1b831069b32169caa98e7f32affa732b55b827", "0x08798f412ce2aecaa57a737829556e5c05bea822ce81f856f9cc095c6ba65747", "0x2c43f8adcc2b39e262c252c3309e5ffbd6ed736bc0ed1e45973aaf52f7e0063f", "0x08c1d017bcf1edd53e4dddc010f9b9979f7a0d0dc3fed34dbbd8b0efc49d196c", "0x21ed2f1797b5183a2719257ff3eb1d3bfa896e6119929dfde80fa34197627222", "0x286886b6067d627947891e65b36f8d4b7c81c5c716ad95ff44e911b0341eb0c4", "0x1c0ae38a58b0cd3e5df96c8e5fae5f9b19b7ac5dcb839edc4213a5fa96c95f60", "0x0543f286b8254edc3f5323bf6ca470ab50eaff46a75e096ea9a215508aa4f7cc", "0x25bcdafb4d5b6dd773d7b3cfcba40f8cc8db7675bc541d187c21537fc2c0a340", "0x28a81071826eb4f16615964306aa7b1addd0336e6158b30dec2773dc4fe7a662", "0x0b2ae92d96d1937e5d1b42c830388254dd27e60d512fe8c417b85fca8c9b03a6", "0x11aeb340ffe89088b98a4fee7204585d7db8423fddb1b41064b785aad0a2878a", "0x14157e2dab04208eee16daa67f355bdb04f7014036d3c7586cbdcc6c1430b82d", "0x154035799252f5d335eb15af6bef9e12d6f37e33b43d4c099e89e518a4187c42", "0x145ee4885281330b255068756690f8af3c52ffe3a03c6f53c101a841a7ecaf83", "0x08c60b040006eac8f019307afdeb00aa9314bb8306b8fa60f8c1434c00d2ca8b", "0x1e0aabe003e834900958a13b47914ac4cf8f89509c001c7f8ffefa499f31800f", "0x12a0d132f615b78b0777aa9136e679b8dd334137027ffe5ebb281214ebbe4a83", "0x03a7748c591ab7a91d8f25859e06e77c66cc0088f2bab04e919508933e84d98b", "0x2815a7d428f1abfa2ddd7b67c2e916e3cc8b2d6950739f514684e8115f0ef0fc", "0x2a4e69d67391052f8e2d9f09cf09b0f25261bfc0b0aa208b1532e2eb2573253b", "0x28f42bb5e8069754d72b97f2c08ba8acea2ef1c21b3aad642c5cb04dcb4cee6d", "0x20fb72c032f2cdb3caae7ff84a3892097053ad8c2ee097fce6b247450ecc3987", "0x1369c95af38ec514dda67ed9ea6eb0e18e0e1137f70e869528e37bed1876859d", "0x1c021f2449f25dc718673ea93e652012b14958fd9b0268c30fef793429b73e2a", "0x0ae3815ea26af43c33567e41f83e305d0179a059f89a228e824db1684c54964e", "0x05bd2be31565865033475b0e553be2f47c0f7b1216f739365469174f67f8f982", "0x2368da2866a5dd17d187564fbc2a4ffe8682afe7140a9d957046c2bda1a0f669", "0x213784bff6ef1d44d08cb7c33602666a4002aeae491dd58196b0bc9d731e3bfa", "0x1dc824be3362a184ee8ed97489333ad2c5ec8ac80fc29cb1a3fe93724eb5985d", "0x255b2a1c202a2851250ab9d1f41427e8031b637aee29ff6a41d2f16e235e5d2d", "0x0c7af6613e1ec2e006780fef74b37a1039dfe29c76f6374c811ca923962f1de2", "0x015536861d874742904cbc356a66f3033a43306e67c3379b3c397b8d73979713", "0x2549c7bfad45cb19310828ccbd3b5b80325893f3f537bf6900b37d96cc10262b", "0x17853e6a2be92b752149605e938c59ed5b98a51b5e298dbf0a3f42e785ec611c", "0x22fb9187e826fbc34056155b64241d195a021c199bce96140c45a066b755ed04", "0x0e01dbb02d04ded9921511ee0b41d422a47df1acfa85cce84341b3a1a415173e", "0x13ee7aef873f8a2b2d7612cd2ceb88694d9dadad37917e8d323cbf7ff85dbf13", "0x06728405a1d96e7e9121047c6e9e4fa91965cd569b8a55c98acaa8c7990586e0", "0x1b8d4c1d90f139199df8da04f6d098b38e8f08ff0815c7c50ec70f0f221d6b86", "0x1bf50f97a290f53dd99387bc9c3ffdfe2f878bb0ff7b1e4731dc38f8806d469b", "0x0708564cc6c399de0e3b96dcc06ef877f839229aaaea1526527b8abb7e8a1c72", "0x061cf4c2260afe2472093e2b18d5b7a63e023a0dd2332fc11cb9c77925369e14", "0x0c1012dd2f4168a4ee6c8db5c7b51c8f38934e9ec835d0fd12bac1afd23bffa9", "0x010d2c7b272f6b1d02160bd78a9fbf556fca6cd21c7bc86e23abd7497786ad20", "0x19a7dec681440da95b1866760bb8a48a17b491f71a61bd48cb7ecd9f0cf2a2c3", "0x2fea37daf7c788558782a2d4636bc8b12a021d680655e16d44194e88a2846e1d", "0x093181302b44dfbc064feb7ef479d1788c5b9c6e76f00247bcc1f4f28d87364e", "0x0d562f7dcc8b1a57b47e7316c2832470447d46b1a05d15fb87d3550d52e310b4", "0x031d768025b65139dea57c8234259faafe28a1a4add5f4de09fef5b0c53a800a", "0x0c8c252ec1046f288ec63ba23dcac68b914795281ee2dfce5c3128afc6799391", "0x249923ae3dad26470f071c56d93ea8a4c45d9ecbc335c18355e0c8961a8f37b5", "0x18feddafc99611ece003ae06d7ed3ca7d69a7ccd5adce377b9eddae5df20a67a", "0x01d64afdfde99be84d37faeb3740ab4844d5db1798346e3e220e85424e4e0318", "0x0fb8de6ca433e586c7b5e1cb0a380769e6bcecf78ae4d9e1c09879fd9e28247b", "0x0d5b17c9447052c898a2f4bb21ed827eb9d36eac34e49bbbe1830bda935f038b", "0x0f2b7d51ec7ea6577b2e733f03525ef1e8fec6bd4f25c1f579f7f655ba9327d3", "0x2b23d5be39199976493c64732ab655589e05532a79a5197d24e046c281c0dd1e", "0x191eb6a33f3e80fbd227fbdc436fb8b1e3aa37b03617a7c87587a2cb068fb2a2", "0x0bd19b84791c746fd5b810f68f10ce1f514ece00a0e7749537c10844ffca11ea", "0x25a91a2714a79060f77b2503f0d3070fbdbbd187d34d6097ae283bcbf4d65c0b", "0x2e507aff9f00820e21752e75690c619b8a03b1e2699ec7bc0bd550fac9f6313b", "0x0b0b051cf9526c4019612dd0fd2afe774a8b1e828db2e42fadaed6d26d51ea17", "0x156b4cc0466b953f9f389eff9a1c7e261e902ac034bd9d285559e9c58eb5129f", "0x02f8887dc7c16c111475131c409f22cdab1440eea684fb76148fac7f33aea4e9", "0x1f3a7c2e46bd4fc1786dd949ded2e2d33ee5fbd53130f87235230209818346b3", "0x1102546f1c65fb38431152174613608dfd17564aeae1764f1570f72bbf479950", "0x00cb2b67c1f4aeebf54e927ef903fc6aa0e6acf0d4b1427040e981a102d15f84", "0x16f7924c29a61d1790d23da54fa4dcaaf1e264e46d6882c85d4fbd86f2b97c2f", "0x1a8977e7f9f883320104bccaba7b6920d4fb2b3e15d5134184c8c06ffa9cbb5c", "0x0038dde93666a06ff6df51857a40218b6c34f368e7bcc52d4504b85a9eea9994", "0x09af8b7ec74f96740f8eda9f69ea72c08f5e2311e78c0633bff78876646d6ec1", "0x0f06e7643fa6fd0b016904bb1234855dae0604472aa1f9e7b12b0ef594780f5a", "0x10ffb0f0d659b17cab58b2e7491212a734d45b41ddab889beb65518cc2b2a3a3", "0x08393e0581bef9db272b5512d3d6ac16289a6d51a7e8fee8f0ca854b7e7968c9", "0x0cd919f11e3940afd0fe3b7d687ed7117b40100f89a60ba1fc7cf743962cf97d", "0x176cd2d5dd5039afe4f9c9af84f1920de7c83f1d663a3dccefaac3c0acefa46d", "0x1ccf20b79ddc78dc632e41c11e537e599b418d4cb9ab88a74101a27a668cd46a", "0x1f8cb61ed38061411c750acb4c313d2fd167fbadc588a14fe6a30dac6719a12a", "0x2de3744ef2d7114fd6bb58fb03d0969bbe92fbf4db49b636a2a48764183b679b", "0x152f8c47e86343d9780324c37b0844681b1a6c5b76dc7aa3a57e957edc0aafde", "0x099e633a5f55fcb80e3494c20e6c607ff11cdf92f45acd6134011ef96e23d4e0", "0x18f88c7dd5dc507f63264610d668b8da3b1c704358336718bc68ea22d5f731c3", "0x29e39b42c32c642ef36100451218da7b33d7cbe7bc5882561a3a4c2f30b90c2f", "0x0dabe6781251df0230a700efbfdf25b0776b5b55e2816be9b614c3433ea26c5b", "0x09a1fb48c7575cb215e981afaf6fa4e0f05949fafaf7ec3f1ebc1a6b2e0d61fd", "0x0954ad0d0b6b9c663b1936b4301194a9cbe677f9a38ed0b544122334bc509f12", "0x20d340bda271bee29f093f2a5e2f257580f7d773afe3fd6006fb5d9c9461d337", "0x04e175a9a568c9a3473226fbf67f3c8dbdf71891833feb516ed8f1dc952d143d", "0x16efc53ea0c960e6bbb67a4930b7714a504dbacea7850303d662a56189688c9c", "0x163642b36df9c9b99d6a5350222139406ff558c486445a57a8c200065a3f85f3", "0x16885f2d67dd2eaa6b6e6e4a1cb778fe5b38d249d1d668156c033e36f8f35bce", "0x2154d6f24acd0cda11326e279ee9f9e84ddb4ca4bc11efd7136ac5d54573a933", "0x162cf98c08205fb5f4a0e9cb76c65445b300800021db1ef3b2d7919f9c202fa0", "0x0a6fb67c2c0f3320e22b4124b4feb76ce1330f85dab89c4477acd78214f472b4", "0x26021cf74a02b192f0c4ee77938e4f452985f021c469b6e84f7df3dbd86535d4", "0x2c8b9704c6b41769c9059238f51fb3827a9fb146ba424e318ab359358bae0d77", "0x28fb6c843b7e89259c13e51589804ca40a10f5b97fc4185449b1a61a6321518d", "0x1e234c17405876154e1af71c2ce4033078099705cfcb718866b347d80ded098b", "0x22836e37162efc88789ad4a5615f8e32e16a05fb2778006490a2fafb3743a7b5", "0x28a70d2aff679df7246dba5fc5d8e401c7261129e8a1965c5c5ed57f2ee5a7a4", "0x20a5a416c4101fb1ccacb4f101ec93c08b8ad9f4bcc0cd34c518d6bc136d4d62", "0x084057a3a39dc92da1f3da1a1bee29679f343096287d1044dee2fe29cc88b068", "0x0edf44da29ee4186c3ebadd1148e1011b508aa94a544915f9746f75c57df777e", "0x1f75f3cb325a537b11c16002c927ff5d8c75189c632bfe66793252d242220d4b", "0x020acb68f015bd689779de6a6c70189e40f929ac4843d1df1d78e6cf25f6753f", "0x156c068f32e0d7caaa30e86ea973f7ecc4bc2d53049970c956b0aeda3af888d7", "0x0eb5c66c8630a1c3b1b67a287dc32eb874d7b8944f7e2e4b6d5f81ba9a86351e", "0x086432ca6c103cbe76449ff27acdc0c72ef5535b3df5eb728e1d4caacd3867b3", "0x2591a12a1bb2e85526f2b0110b0fda970337bff3c42b0d0e0921fcf12e13e91e", "0x04ddc8e152142c57c766b50c4c8baeeab6813467c1cbd43ae57c95b0f4b74cb2", "0x16bef300d87c6582954f0b2e5fb74bb04b7852b2d09af537dbb87f4c037d114f", "0x22bb40ac95127ed05da2e9c37f14eda92586b50485efb61bb57e7b058a5cc5dd", "0x2152a25e328616ecc63f9f625be4ad4ee37a296e5a584926f1c1e6a99d335fa7", "0x1bc5d41bad17b44fc5aa6950aa643ede01d373b0aedc703c26a27dfa6337d04c", "0x19993e2352fe907ecef8bd33e642d549f9784545e8aed512af7eea0a5703ea4f", "0x0a8e009ab829fad34ecb98660ba055ed46d9e19a5457fad0e571346d83207276", "0x0e5abaa3b20ebedddbde163027514ad22ea8b6452d1e0fdfe5d6c92ca18bcde0", "0x2dec3c17312746988f783b14f92fd900fb3bea137b9da241e2d6858dc7b691e4", "0x1a05b78180f3bf45994f7844bbb59f02538dd3a06a1f462b3a8586d45273ffce", "0x16d22b879334448785405b6e74e823fd23ce82e68db2b392bfbe3ca740c141b5", "0x0890771aced399845ecc5b9cec64a6fc925f28e39e48ea0cb473f2ad38b670f0", "0x2530f400e734ed8b165b590db1658060cb45178fc4a3b6a96bdf62437c4215a1", "0x15e0290d7ecc55b275f623a63521d3979777442a14f18914d1fa8361bbaec66a", "0x2047fb78d48665b96c4885e5561fd89c6ca44218f4aad4adf202f32a3e3435fe", "0x150507a482c9b02e9c8884b33b154f4d856228655e7b64d0470eeb92f070517b", "0x26098db852bfdb0733c07727ee94598b5b75f96170f2cea41b51088d4fceb8bb", "0x1969394fb4a65784c3ca4b1fd9d241648e6aa58bf45dadb5848b9b55aeb49dd1", "0x2ccd5ba044e09902e540bc58af998861195b8d1b96bde96f059ce2158b8f4d27", "0x0e241a1e88c1676b2cd2b48ff54a473d3b5e8c95da39c24e84375e74f7640eb9", "0x0d64f55b84a0a5249d7452cbbcd2657bc2cede899380169ef36acf73c6fb42aa", "0x276cf981b3c8485a7f6e8a85a0c37bfe9485eaffd46796829cd170df1d25f5de", "0x125ab705a0f35a6c9e70e37cf82cbfd1b74a47ce4dd8c636520ef527cfd4996d", "0x2edf2bcb182b6c165d77946a219a542afc9383e9976271b19e585cdba3b4c034", "0x03044593e5115c8bf4b42bcc7374eda1f336b1d00cf30d0c6e0d8b8a02e70b17", "0x2c9288d07b86474cbf24db27b74421dd413b90870cfc013f00ecc0da9d880086", "0x08096ddb7dac5cabdd02794e0653def787bdcbbea73661915b20b233b13b4938", "0x2ca0c65eddea643c6cdd2b617752f71c5b36314afb56e2d7733c54ed7dfdd8c6", "0x00720ef11b7868de6172541965560951e30f9eacaf95da183e793ac4405c7aee", "0x15775168211ae2c9505cdd3ce6188782d031648cf812d9eba2b24ceca36277c0", "0x0dbd7358505479eca3fe7ce7b3c75615018996d00992cd43bd2736bd8ee0fa6b", "0x151a6143a0bd9763292a6aeaf7c0992ab65ddab5d35f2e713287fbd672b9f6e9", "0x119830a7f1e16e539fd97602ddc967e4119d9a48d6e84281ad0e72139c0a54e5", "0x166d4955f6c7422f53e750084462bb82ce565161c78a71f68c06abfc80c5f578", "0x2bf7f7791ad848e6c8804113cb78a0a6dc5f1a947341006ddbfe84dbf96ecbc3", "0x09b2550da955c2746eb3a0014c116e67b061402072acf2cdddc84af76da21cc5", "0x03ae24e58f82a3e97fac8b390c64434722325b338c6de16ab07ea83da7115b89", "0x22ea98db27502e4142824a333d94e297e0134757f316dbad2371cc2f0ad18d21", "0x2d42020b8f02617d9afd0693dd8cd09000c02a94aaa14b35d8ecd808edfc1596", "0x0d948c0328d6ade9ecff1391cc926da7311bb4b311cd893a9fe917640b26e7c1", "0x1ea1c2c8c2824809bde63dcc62f6b06a149fd2b9bdada635a4c35ede26a79e82", "0x2e90887277a6e6e8d963799798c9993b41e1d65845c17840bc1669c3432c64b0", "0x0c850a86697d9a609d26f02a99e116c164f3d8395d3bd699f8321f7628077165", "0x16d89099db9c32d90e67a74308b85c8867d1cdf0ba3c97c7a3c050322f912329", "0x122b8bb74a1b8b229c491ad31632da8e0b90c66f52be1cffba1f50bd740148af", "0x2cbbb2da62a9525283fda5fc5782e4e11c0f4ef559c7157b83c599fa51c11bd6", "0x1644c2d0af390c7835bf9a1fec01ae087bddf1a21a3d988a75c9c5da6006acd8", "0x147cd2bae2e9b717963ca623cf2f2b7fcb95672d056c1d73d2af372d8dcd6cf3", "0x0baa4d0ce6331d92b98beb9c28f6afafa0b9c2ca2c194b9f70a6d3b628e3ea25", "0x046f9a4aafb654f4a6b9103d20814e485b0a00819f200f8b2fc4844eeeb9b871", "0x2e6e482813494b77a2d153f8ce9ac84f614871e2d6d6410a7e9e9a786210e9dc", "0x219aefe0530bf083338865d59e42657596ca68ce12067fbc845c4b906ae6d8f0", "0x2b93eeb5f5defaa2cdcf165c91dc4b2c679f0a8275e124d9a45e4ef49ba78419", "0x2f5270ac7581f2186ff3bcc58c6fcbe53c3a8912a5e2b51d073b0e3e2a5e0489", "0x10cdbf5f96b3ff7196f8a6caa0e8745493277fa659bcc448efde72b71e8323c3", "0x2fd3890b8256cb06009edc1ca614e5b89896414190c4ac912ddd2fb0a54547ed", "0x0e0158a776bae6cfec58654426a8e0874d2a0b51580088682628d85b8f628ed9", "0x11d039e75730946e1b43ff6b1a36ca08cc68efc163a44afbbbd181aea1e3f760", "0x071e4c48fc462575c67463be4de4c67c178e690f7da3a02555f124f722f28c09", "0x221d11a98eebbf2aee536ea32d02ac18d539ad54ee9172e46a232a010017b2a2", "0x00ba4e4f69c3496368a277ca36f6b2d8e740295843219e90cf7cba25187357f1", "0x300c4c6484de03cb35ff858bb199f7a84a414f0f728de84742a88773642d0aa5", "0x1c508d314cce78c25d37c299edbab30ed7524e1902b335bb4c9386f596ef3f72", "0x2383eaa5db4f7ad7418a38459523b2b795a4f151505bd796916c5e05c0b7b721", "0x095007c9bace943994fd0a9f9f2bf09f8e576893256aea86969d1bd210f2249a", "0x2ebea4c9470c5979655c311724df6a0e451cdb84cb2efb05830374b4fee99a71", "0x24b7e73f62f97c13ee370552f0fbe6ef0b5a6e647f42d95f3c66e31e0b0e0226", "0x0803599f8035ea689063376c1ab9acff62203f5e0c1ba15ecb8efc30fc1cbdba", "0x2ab4c0a9e9115cc1303530733bea83654fb3d8a8ad4adbbca1b37ad21f8d9b35", "0x10f10b0d5b7a21918f84263cd64adc10e54f8767ada0a7fb59d7191c31d68f4c", "0x238ee32e5ca6f2911047e0797f4fd2571dcdcd775a81bf945787dff83c1fcb6a", "0x1ced6ad5ba466f3efddeb749c7d093d5a5a24348c9bedb513de6047627ca2d29", "0x28429555e34e7b9d39b0f9b8d68b09c89cbc0bd61dd301aa951da42b77ab72f2", "0x1b3a4e3db4dd67a5df83035ba6e55aff71f517d7e6692238091ffd1da89a1655", "0x13cc2082bc604551ef4fd01a81a52261f7979dbea0eb84296f2f6416d57d460d", "0x263b9e3cd8dc5a4413ce8e8c573a8116de4af9642bdaaa35ac342ac8705ce5fe", "0x1ab39521acbdc88aabad582fa222d6adf5633cb16fa853e6f4ee0414dd8143ce", "0x0fc133010270202b550a0322e569a9653a21f034a8b305a61819c26a9cb538b9", "0x291875d007b5cdd415acbc76c69b6122c86abe51c18eea30136bf66571588216", "0x2e2f9329346d920a98386f2c0a367740e032468696fcd5ac6e2cc6622ed81d6b", "0x0f093b428c6244578cd070ca16e69b36b0b8e2a585dabe4af899efa7c5f7ab34", "0x085bc13b698239310b05501cd59a78e9d1f3aad161541bd43080d9fc867d81c6", "0x136222a91f1c9487f3ff320b9e3baa52ef2327895f414c4d4b2b8ccbfef82d0e", "0x2e9341e5aac4da39b3363dee93af0482244b47679de4eecb5a54655e11841305", "0x28988bb98a34d5195384445d76cfbe9a7cda979693d25caf6819739888cfda7b", "0x13b4e0317e3f9cc2f3f49f7dc14c971372518f2b053de35762225ed265cd5b36", "0x19eb35c7021e14e946225fac7aae09481548d0eabf89304a3f62ce915768a7e9", "0x1d37d1e1ec0d7f119bd33a5116e19b07ccb42a6bf7b129bf2aa1dcaf069094fe", "0x1652a1124b3a6fc2029e43dc24de0a2e306968b12092787e3d578ed1d851db17", "0x2d82e3d62258db1a035e60aecf90cfc35c2a68abccee846d6f30dc7be13136c7", "0x1717bf8ac6146ab14ed32dc7a340f8bc0165bdeee55222d4fc0d1b9b8e87313f", "0x2fea8ca2751b165005fc5799cb9c928d3f5719fd377ac3d5ab988cfe7fcd0b96", "0x13122020261638533ce1db1818eaeeed3a3e5461925dfaf4d1ad253d00c0ed96", "0x08e63b96916fc88aab33140f6ed477424caf1b792acd7ea43c32848088b35b61", "0x1faad0336f78a518e2209d7e85823be53ead506dfb0eb4910664121f4db6d7d7", "0x09e63f2c7fa18fdb6fa1c263ad5f6cb0c39e75741a94bf9f32c5984347369172", "0x0d5812bcd3b13051f2a5811608cb30968de4f9c36dd7c4f6d38fcaa9aebde1fb", "0x1cef48b1d61226b8988148159e826f942e93972ce36051f55d0dc019f9ebd106", "0x213d3f4a801784d43909b5479cd159cbd628baf8b075cdb2cbef556dc12061e1", "0x1377884a51544da78a20bca27c033d666c05179f6f0c3b57a144a4d7c154fe8a", "0x2c2028206c6a58ea6b3fb8bd732935d210439f6cfeb683b7fa0b5f2d9041f86c", "0x291c29c826514d2807fe656bc2eadb0a5f264411b1381b0d85ee215e4806a4fd", "0x2c7f267d39069e4902597c9e3348b84a950f91dc7eee91a8061785de0c231723", "0x1bdffff475973387eb8cdbdcb9adc7ba1c9f63000a333d6b5a77c5b9d0efce6d", "0x108504de6c323d7bd6c6a54b3c7b2cbe67e2f863a483afcf8cec4d66849e2822", "0x143830758702da287919107b796f3e2c4208537704b355ef6d7d4af3b16519c6", "0x20cba0f444c54b7d446e9546034760bbcb21e94f64d6b4c9aab41356da39fe34", "0x0d05f1101da898ca8034234c57c1b8d90a84068cf4242d3a4dc3ec6a71b56a91", "0x0d58c99e7396f36791b921ef6b65b06f87c391b66e774bf40da42af79368e78e", "0x2f0d35b918fbae52212674d2c086ac35ffef289d3bfd783e761838f119866214", "0x2cf4868270ba3c288f4de29e985d0117ef8f2032235b5039cbfacfaf95b9f6ef", "0x014cded55649259b92ac128bd6e1b1bdb71152644c4d818c1d9a3a0e3a46eb2a", "0x0f16f496633341d1709e144de29846f7fb1a40e41bb3909f41e791b749795d49", "0x02076608271804137e0c9f68c1b0aeb571e4d34da3954e07e60670e31cf4d691", "0x21415fd472789e80cbc15fbc4a5e3fc96567d552453049f3ba8a0a4158d8b293", "0x28d80c9d6979564568b87745409fd0c33e38efe056510874727cacf65e7f4068", "0x07fc32882a7484c03cdd3a0e24abfe7587ef02c1cc52b11c55ae3b626f8b0701", "0x2d8dd2efa9868ba55ade797226fa74ab88dcd0cd6bd94ae685f00d42383e5f8d", "0x1a986dc0a9c125037fa3b30ba0bb49959d21ceb20ac5d336b09597c422537ae0", "0x21f392183eed36e011b851311afc2caac6fe76cce1eb6ca42b9813702bf015c3", "0x14d56f1ce4a77333e61e10d44964474bec74349d22c209bd4c1e3c0a3df5022a", "0x2326ed65301ef1c24feb4e9603860caacd9c6f80683303caeb0ad7f26cab0970", "0x2a3d9fcab4c508b0725e9fb8520ed06b6d29b522e5e8af4e4626ba281ee85718", "0x29cdcfde40f6fd4b84b8e3678b51ed546be8a3a0d0025bf892357a9a2375bcfe", "0x1ef82bdad09b9fc4f7d84b1d355f0931b096ca3d0db7cec8e33daff2b4093a86", "0x0bcfe28aeb735a664a360120b09176863374c387d6c0fffea5870bc0ea877cd2", "0x07f3e3ebb0d7fb60bd576ad9e7cb241aa310cca0d5d45014964197f7594bff2a", "0x2ac56c23ad3b8667fb05469317023035cb87ba64ac066fa035c73837ac8df1ef", "0x1e2e9f7e3702fa82feddb16036b94442ef1611ca1a2f1ca2f47336f16db80f9f", "0x245d55eaed831cbeafe45ad8ceb4fcbdbfc9d0ef8ee6ff03e31068d0832398de", "0x1ea295decfda9c0a400df14483ab3dae5bf43987ed926a02df2e7cef2bb64ea4", "0x05bbf568249f3ccae4c98e2549dbde639882927b39e4f39bb7d05f37f6af0d0e", "0x1c1291aab9893e46d2762beebb1bfb97465d00f30da6cf33e860785874cad7d9", "0x17634d1ccd51f9433152634c359773fcfc9f93f80fbe65baa59637703646f7ea", "0x14fc8f7234f6912c40f82a1bdbce93fa1af8d24fcf7abeb0c2d4f5a98ed71c24", "0x27efdff5ad6678d5fc5bd1da7143b076598b90db77772a8e9cf5c5295e0af7b2", "0x046644c4e7022580e83eee330c7228469b7ec8afd154a47564f0ccab9ba89872", "0x2c00d457f72e3452c86c1ae3645e645d0fee2d34f5d502ad1b3ab4d0ee3bd431", "0x03d24d7d5f668e0c76330b300b3eb77767ad982a878f643ca935a00742a21ae5", "0x03de941df807fb1cbde0f88b9ec89b64c11252edddce5123d2443fdabdfec534", "0x13968ee75a666efbede2dcdc1cdd9a5e15543cbfdd3d045486ecabad362df82e", "0x2a49f11f36030eb28dbb1c123c00bc12491a461126edf2371d4787dbfab690d9", "0x0fa680c08661ce0671847eb582b5ebb305c69b6166a2d3d32dadd35b73c87fff", "0x06d5a0ba4f63840b7dbeee170772dbc060c4e7da78580f7f02dff8dbcabe2adf", "0x1f624813ff4e4ea551b18a754fb0a852be6ade91807e86ca6def238cc0f23f20", "0x104988ebd6577839a2b07a037ab4d20e2b00daeb6451e21ea61028b2b6acb296", "0x04e71dcb7afa2e832487ac7f13b79eec44d7781897e9075b9198dda984d7f7eb", "0x236f6b011d7b96496fa7baab4c5dbe743276bc974c0d2d17a81ff079a483ff20", "0x1587663e2b5d740eaef59e36292d85686b5854082cf903e4de4beb5340e015d5", "0x11d45895b6239ba0bf7d68ed7790502aad8e13c8b45d313e323e27432e2cbcfc", "0x253c79369fb2bb163ad88c751e81d0ed903e0fe6f15e12c0fcfa9a06eec12476", "0x18913458b59d37dacd0dc16811a34f844b7253e8bf4d7dbecebf97b0549c2b01", "0x08d5bca196a8ceb1ddb165927affce0e3e57e42b22a130392bc52214749297d7", "0x0df1eb022b44f3c8f358a7424021402033eb56d439bafca09201a463712f6bb3", "0x1ec99a4a3dbab58148f9cc3024da287f4083d70a91966a5c76b46b0a27bd651c", "0x1cef3c619c6c700bd295937063395501cf4e208182209f6718d57da33a23e66b", "0x28006478a2117dd3500711cf843ee17b97026884681a5bed0621c157f78a13b2", "0x1f8db17184e9aa39e5ac0306e471408a83154340ac6f9c585ed910d0d897ad61", "0x0b4dd727de06a0a5946961b6f5fc0bcef0263f7e2e5829ddb6e49008cbc1b16b", "0x217209fa8996d860daa1f9c210eca2580eb3f1cec5aabbb56bd901b3d9fc871b", "0x0f68b53bbb8bb4798d191608f9542849c18697dd7402db0b5f30317d2178befe", "0x0eef36b6a205fbbe8be6815a1983e6cd146e42295eca46dbb316f976bf0596e6", "0x0ea89f549e8977b2ca99be52e9fef5713a73e5a06663918c83d22bcdb017f15a", "0x2bb5f1827e14485da2183c2c00d624ddbc01deffbc3235878f07a04a47bed1bd", "0x2f630711a84b9a470356b3cfc2ea0b9e09be16dfc9a75086b4b5978b69e8de4e", "0x2d1a64e0411d666c0ef9f06b3eb1f0c442913ca621a54307961896f61fe74646", "0x15eb85dc380a0cb81f1511dccfaff8a5079ed3100907772ef076f64bb4fb1f8c", "0x2935deb4412873991b6220aedc3e923c05eb87d8fddafdcbe1da6ae476075aed", "0x212a58a5f2ac5530a2515434437538885218522ac412496ce5f85a9fefa2d074", "0x0dcb873fe2bf8ffd64fa76001023572997bde0937993bc9822928476e735561e", "0x0e39308c1281899d7150092d1f116e41b981232c9d096111d827592e32c5ea5c", "0x0a5679d09418466a7300e8a0a964f4d3bb922958885147b5decb1438b101cf84", "0x038a8f326cc8a51dd41092f40ea3aac4ad722a8744101f4068139c5d9115ebe2", "0x1dc0fb391c19c979337f1983b07d90ad225179d1c6bf4fd85601fcef1c1854ae", "0x1ffeb0fdeeb9c720e7be5842a019527689b3b8f5e3d63a3de2505a964223a292", "0x2cd6511bbe7dc9d2a8cc050225b73d69f7c2075a623fd6ff4bd024c2a69ad268", "0x21d4706590b1854d962bec4cfa56951ae8441cbeb1e4175f5d3b61b8db79f68a", "0x12da59528ab92ae9f0268eb1bda47594920e4f5a4526278478dd9a0107bdffaf", "0x07aed9e16edd41aace93c2078ba1333457676697ceb8d77b5833121aea63f06a", "0x13e9c52761d0fd356778f2c9ca94f6ac1c714324435e0105d419e112d3f42c7e", "0x288cb3c2e45d353233d2680366d4913c125e7f2cc6bbfd65069538d89f4dc477", "0x016af712074445c8af7578cd68e6e32e0f88cd9e99b3f46c63b84c8392468eed", "0x1c1d9b10584a446463b905d7194c780666b9aa00a781ecf1003a6a0c81685f7d", "0x0a7c876f83ab4efd0d042493681e993a66420f23b0dc6337fd8e1ff0bedeef7d", "0x1bb8435cd2e6fc9c768446b13a53fdecee056f79ed8d0d1d36e3a784cdbcf255", "0x2d90be1ae182c3f440b85fd6da69e21de9eb2929e54b7512216ddce08a7095be", "0x0c9de3a0dbd2d14270f8a16c486495ae5ad2d44c0322f0d990ac4a4e024bf575", "0x1e397c182116d4e00a53581aa108e5bf880f8fe0736e98124aca92873840399e", "0x20a611d4fb392c94d85684590ea0aaa38e4800d027650f823bdda0e8083ba202", "0x1ea1b882a97d732991805ae46935233eeb424f9363f9e5fe864d30237484ebf4", "0x13f67ee6e8ffc6ff26648bc6e3106b834a3354ed989d351f4f08f2796910d1b9", "0x035d6e11fd71458caa1c0a7f76828e3360ad2af2e88a7aa8e5e5fb2a6110a56d", "0x1254beb4738a5e8e50f45fc7ad73c512165e0c20c0c764b1747dd24da4b5186f", "0x1e0b231f595958977dd7571e0e6988ddacc14ac1fbe98ac784f8684a101f417d", "0x1d787be18d93eeebcacf4eb98f2226645cc1aa4354e6af4cebeace6b44001963", "0x1b629ce1b52348a9865abe18e6c537f88b2455e0f0de338cf51dff14e09993bb", "0x102b0b82afcecad50b6cd976bd3acabfd34ef4f57c78f5fe7b57127d166504bb", "0x2c4f4e1436d85e914162bd51bb9d13bfcaf9f9d30ef53bd75d8f659820124eb0", "0x0e5d628e75b9cdc3a9898c4722023bcd26c2307dcdcb74d097f4fe00bad021d5", "0x1898efdbbbb625982db0dd512e8540ff986925bb78ea970cb5d044c53dedd4b3", "0x2a586ae0193dc050c68a6340d6387b5944d21cb79566610ca15cc0afbbebd619", "0x2c8df3a839ff2b2e1071ff973963e163cbde5994da3700d24c0942a1fb8f3e81", "0x2c40e73f41f7ada9ce46fed754b987d77c7b9c9be1c866cf0e50491785f9aa86", "0x10a44419a271043be49ccf50d187302f300027363f20187925db8bdd0aa9cc5d", "0x28250cdc61eeed8b98fcf0f9a839b0cb299f4a80f88534298660902932b1e8c7", "0x1b01b6d43822237fa886bb86fa5d0adaecde3b834324e93a02571202d39c16c1", "0x2b780386f9f3da9b23f88dc7fa2615e3429288d9c5de4803d42ce69ecfb64661", "0x24984ac7b0d3a403500f0a88a73ed082f8762c1686f379d5241b64c6d1ca26c8", "0x2954829e72a69347f4a05b5e4bb3a3e6e5badc6f7b963fedf95c52ed5ecc488d", "0x083607f9e053a5c77ab95343c1a4620357262891d282195bcc4ded3dd788cecb", "0x27cdc8f0618dd378a7ca6b89fcc86ceee70a7cc73d29367d3d4539291b73775e", "0x1c452a7426b31ef9c186906b2528de2b6f8b264c7083d07195fee3240f0cf082", "0x2a70b8f7a4f98c94dfe478396c24c0c73445153ca6a63f4135a61a7a7149209c", "0x1ddaf2c29060384a64f142964f68c38ea9b2ddf14c9aef92b701a00f4d78c967", "0x18d763f5955669c75685d78bbcfd9923b1e28a6fe22d19e53182bae2e387a4b1", "0x15487b28b3f0687448c73f432cfca0db556501a9985db9782ad1f16011aa5584", "0x1cd157f6023cd720180e59db9dcdd1d6d6aceff9b6db1ac72284c0a54157bbb8", "0x02f2368f8d046b18934dd27f29bbff29c909bb480ee0fdcb7705273766a189bf", "0x09d13a02ee4793785933ced2ab70bb0334e7a6fe653e8d4ed9783fdbf9a5f1be", "0x0d66c61f8b505a8efd06a8659d1f83910a781182a4383b9c734f51200dc4d62a", "0x2d32aea4cc326f82206b91c986181f18ed3c3171a53177243f2dfc7471976b72", "0x0afde5f85a042ebe32889c6a3e00fb40c40d9a1325f2f418916b1a46e3e4411e", "0x29a3c3d0caabdccb6c7d358593bcff8dc2e0518a9e41ffad251b50d9b397cee2", "0x0322c3386bfcbea88f4c322edb06aa6d5924122d858df34efe6373c44b7cbd61", "0x1438c5871add7ac0d3a49acd828a005222ce8c8df43059edcfe399d90e281363", "0x168bfa7bf400f5bc0cc14388dd1780550980e4134701a2f21fe0eceeba59c712", "0x1dc073a172aa9728c523545245f9160cef1a76e4cf74b6eac7d113fdf911963c", "0x26c80f81e2f12a302e630e9e4d3fc4aa14a7ef41508e4b35a0b58f3a63809290", "0x2dbf4afaf4c5ddfb04cb3ae7aaaa6bc6244c57790a6939ec0febe2c17bce532b", "0x00905bbfbd61ac42226f3d9a1fbfd2e90eb04dc665e023ea2395e2b1cf79d436", "0x1c1daa03e2b5bce3607ff15e37bed1dcbb5e189b073b6c20c27ba16ee2aba814", "0x1a2f8e8d55339623c11340ae1b135454635c71cbd8d20b6a536a39ff736a5243", "0x18535c592e62581176a3464783cf099f6b90e5cbc6d80f12398708d7941ef453", "0x0029f6bc49dc5991c8c89c9236e0535ffd6ec13e23042bd27843a51f9fd2b369", "0x0f99bda8902bc2630a41884a5c477fe8ce7697fe86a28119d5a17bedb9ad85aa", "0x2936f41a19816dabc413275d943ef09f3f961b49e15ef9d671d119aa39e2b4db", "0x2b3e5c1fa1bca2cfe43fefffaefadee5d8bce97f52484ace59b10654909a3c2b", "0x2cf54da2864c28dc6817000aa815f4d585821780bb27fd6762ac6f8c2ce50398", "0x0318d4abded11ff442e3295eae5f62b9ab53c783b0509643843123b802d2549d", "0x0ad5edae189c9098ae537345a1d3145b442a7776370ec6fdb6cc33cea6789c6c", "0x0c02ec64e912a52f98bc967f67d74ea53374a195e6b8df2da1c0abf95fed1c96", "0x10b354fb05e07b72d7d655444cc964130e3ee7b63744981e3c5a65279ae805f6", "0x18135a3547443addb809e56d299d6ab71600ca6a67d73fb903c46ea1f88a78a0", "0x169b2d1c9533fde28f5b61725eb1db2df523c8a7f326816a48a06b492f7d0971", "0x0706cc6846991bfa50aa52747c63ab1bb357c7ceaa4b38a0b6bdfdc48cc745d2", "0x0f23a2df079a3a7f3909ffe89f2a2e5d48e08c81f56aba869b8a073b134c2766", "0x1bb2ed4cd681047a7d449a435b1412a1a54576d1a299d8307c9325d0d9576658", "0x28d41a2ac7b3c71974ee058c7223a0a7ce0bb5a1e485dbd2686bc1300b47e21e", "0x25ab50f20dd391b3bad83fff0ee9692258536da228190b723073d55310c4bd1f", "0x27b24b346de16f4f286a056a24239895adde11187ed5c7d11e7c535ba5ca6300", "0x0ff16afdd9da02815b98fb92c5763b49b0ebfb16bced629b8ff2d6371090c495", "0x08a1329feb54f08092d18db2291e91c4e17c7c09913fed4c0130fc8e7f75c9b4", "0x0cd6bd732307ec5314a14259d354bf7d277f05badb1cd07253866472d7e90769", "0x101bda1f28311c2977cd3b452df6aa429424b87cf47c92366cd45d9926a0abc8", "0x02c39319445999f80e7b80b5a38639a0cebcd5b0766f64230227f6809280ef6e", "0x23e7afffd0c6fe2ec95a394af2cb724aeb088250214c099343289bdf465d46f2", "0x2176e7a545a244ce4bc1a7c2bdca95312da62fbdd2bbf8dae347c611670ea7da", "0x1c6067731c77d01d3fa867e8dfec2b88acbc17e7ceadd706c58aae38254ea2e2", "0x1588b2582131d05ee20beca1ce405c949fc16292219447d2b73c628fac00cc58", "0x232f65838476e01be1287b72f8897938f0783eda92b9f4c1ebe8202eb29dc889", "0x022b6f2c624b637e843e74a76c325b05ffc2ae4614384e0f3a0cc18565624676", "0x1202e2c0a73b8a2b43469495dd9531dcc8072d16e63adc02923c50b141a184ee", "0x014e203ca64dc05735b33078ad83b969421b96aa9e8347ce2e522eb38886db24", "0x040923212b1b7e37c937793aecc233f202d6b7578fc6f52774b165ed6784e471", "0x0fbfc45be7c5f3901abdef853d2e6216b71835c365f0f97df2f341f0f049e92a", "0x27310155192b1726750c5bff7117c4ebec2099c98b0de8c553f58defc30ba318", "0x19c2594328dca95959c2af80bfb179d25adef59eaa4a74f15ed3f19340a08cc2", "0x104796be743633ccc53f728144bacbebf5a09b5bc0717ba33fa69def3f31cd72", "0x1c97f91df1d79a0e5b7803b2a59f15ab176a207d1ce3f686f2e322314bafcfe7", "0x0a24aaf916ce0d22fe01afdc5f96cb1c40b49c48c99669354fe2c280a33f8cb4", "0x17dc7a5303ea797184fb650273faac447284beb23e29339d3ec9d91d3f8c76b2", "0x2e1b387ef959f82a150f807dfe5a3480faef6e7f79d15ec65f924d0aed280a56", "0x1153c4ce1088b51359d71725823d163ce69541317610e049beba015f256c1fba", "0x0d8b8924cba44d571ef53912455227a5bffa46057018fb68314dceeebd088515", "0x151e868f5e19e96f6d2367228d388afd8c080794d0d5c77c763beeccac9fc0b3", "0x2fa3eb12a770e7837a8e690b715f5a811f4102f3f14bd30a308a13986a92d7d2", "0x28318e53a9949641761ea87af6c8159a0fb94915083d1a1308be8bb05dede389", "0x2bc3819053ad9a6656006fdea87efa94e4faa379e89c4c1d38aa12d0a141e9b7", "0x1c124776d2bb735283d4aad14ad82bfa8e821ec542aaf7065b47657757ac31d5", "0x2a000712e4a9bf5b395edda3092db0040d44a0346178aa0128997459874c4bc5", "0x1e0800b41ec9c392c2efbe25f5de7ceedadcefd12d437d874dc46af997ae0087", "0x2ab3b50a1e176957dc1f08dd47185f0ed0d9aaddec45c5cab796dd2d991e9e18", "0x2190a0c5576267156ec9081961338a471a0422d56035b8bf3a8afe7870a3196c", "0x03cb7bb7d3a38a7ff1abf8c9282298a5551c55d28e1bdb6c4e7377caa034961e", "0x13432d180a4b815ff8c3f3afb4250c99e89c9518417ce5e147440df80d93e730", "0x1596f4d7e5a9b9f5b7f5e1a4b6d068b6aac9092877b820ebe95a15c59830fa9c", "0x2b757032499016fc85df940d7ea78a6b6c8a1bef0417c976554640b914dc9b75", "0x2b1528bf87a89c542779e1d6671a269331a2b9a64b56501a652bef0dc5bd5099", "0x2fd143194441382b4daf486d159def58f1c9869aa0a3fd03abd5d9c923dbc601", "0x084e5bd84e9f5a3f8ac1a0be4269e1cab3bea75a651eb476b23af0a9436e9e10", "0x26c737750217a4e394e063815275f3e99bf87a6339e437655ce91f99a3f894e7", "0x0011d44a14a217454b7cb9b013a7ed9ee78d380846903dab930a9f39c072a54e", "0x2cff02f46b0ec806c47b7c834e0c3378172ca0f7719b62de17f598ef8f047731", "0x18d2159e3a040d8af39903894bc9ec51d49aaa6d5776db31f1cd4dfa616268d8", "0x18f0110ae1d067eef4dd057722e96be6616b6c5edaf101db529b049a4e6126e7", "0x2870e7ca2635b5c3f898656bcd8dd853991704e07ad301612f4d7bb174bed2f0", "0x2674f59ed1fde5bb303cd010aac8a91458bea65a29db9a163ba3ab313cbd6c76", "0x03e34b2f33b176b37d8e88dd3501772a8961f02a5bdb29814588a44988157da9", "0x17944c0c7d9146518157f9200092bc82bf2c5672dc8584823659b07a0cef37ef", "0x1267aaa77cd7199c10f7c2bc5581a42f3c7b08371e3aaa60bb423ad2e2729830", "0x0efac3cc0daa23f1e378d1dcbdb2edd6a5d84954dd00553fac96416259123831", "0x2872ef46fc5700461f9af029c3611400a0a80497b58520afb43794da71326a97", "0x1abf3fb66b933fe5c436b2e90dc1dbc6ac2ffa74cf60bbd15d183134f069b42e", "0x093da890a6a4163a094fb0c3140683ba9868fccf8e42bef0a51e7bd577bda0f7", "0x2520ca8de344289083f5d01264ff76a5ae776e69d65d671442f52a680242a44e", "0x08f3791175eb454942ba5e3fd7f00463eb88900ee9c053d105f9c838d29b1035", "0x04389b9fcf9b26a0d52a7a86b11f50e4cd49cc758ff9c1c9352481c2b7cf55b5", "0x08bfac675d4d1623f5486662b8e9a72fdb4973064d5cc6572a36f8691574cfa9", "0x2a8e53108a5e6fa2b0bfd2e01a859323491aee5cca45981d7168f1ad1dd42a5d", "0x1ea97e496fa619c52c19d5b33076ce84d51ed947970643b0a6df301102252a9b", "0x2921097b063365942c0d6a534e2a92aa408908b6897945ee787bce67e4574ced", "0x2113f871b713c7ab1ed7af63982cf46095821e2aaef61368eee133aea6245f27", "0x0421c9fb1ea7d058c01c2537e22d1c717e40c0396c643be3e7c029c055616374", "0x181c57d9013554eebd5b3e9a9c4a89a7fd55e772eb2fd4b2f47e5f015b52b7d5", "0x210fbc7fae49a8711b72744a25878d1ecf3a88401dbdc87e7620ef080e9b1b55", "0x0038a73037d04b19c3cdbf74c32cdbff1759dab57fdd42954a3afd9807537c8c", "0x1c4faea527a5a146170cc3a85289479fb22e5bb5ad2c1900999faa9080bbbee9", "0x20bc74457f7b36956f2759ad6a18b00ec602a039c00ca7929304afe1aa00678b", "0x18dbed8b1ebd14fcf2858ff2c139d26fe901ce4e8b50f28c16ba6a56cbd6c3df", "0x290e5f918ce5182793fee062e0ac82599a6039cedb0327c69cc35c484a60b52f", "0x1270f1c49bf05b5711299838acb2d77e4d5209d650de540d000fe0b636957250", "0x244bf00718449105a612fd99f81f8293bdfd43758a8375aac6447d67afa07d4b", "0x253c1267e1697769dc5b914a341b02ead358261047fda749eddcc3e6496ab62e", "0x1f6205923f15d6674f8fa3f5dcbf9b6ae3005471afbcd8571a0b02535246ff74", "0x197d7d842654c8e9582900b5b72a9bbd5b43155c039140646b08fed032afc7bb", "0x0dc5162814338dfbdc374e6db2f4b541c598de3a6832361f44003a8a88b13f46", "0x118c03871e753f7528b2c0834123ca8f43ca7ab37eb1fda534bbb334e94c52bf", "0x212a8c29677a919cfac2b9daada92346ae588bee142654fa836347239d23144e", "0x12bbf40d2464fac9e64dd04d65399fa6ef74f8528cf6a3aec23555a82af23856", "0x1e1debb4f76f3d7ac15633e36bff09da18df1f9ea883af3bcb5ab4d84b4a798d", "0x00ce98db1da5431b8dcd8adee704963f8e89a35b3f020e696d79068ae3cfb02d", "0x21944627e60ca87a770eaddd5486c15ca5e487f4dd1ae6ec2104de83c3216e86", "0x223ca483774a7c5d4f1ce388320e1d5f53ff95dc5ce53442aeed94bc2625d392", "0x2501b50c7e7f729c7f4d896501e294dc91c266bd2a6dec0cbb09af8a13fc37a8", "0x2e438c6ef07f9bccb0218649a91da9373870a45ac4524c6cbf073319a2194fff", "0x20eb17b53e680c2b60d9f3d55b9dcc8b5db59e04b62afcb968cf6147e35a91c7", "0x256118253984eb71f26d781504b84d8288398293cc419aef59e8613c9fafcd42", "0x20bc1706e7de27b979166c50f3b4b713aa07a5b868f5fcc9da4faf7a066feb44", "0x28ba38a4827aa8ddf9349dc4640fa8017b0cacdb456a901065aa6cd3617e17fc", "0x0561f8d6997b836522d4f18603799cdc60381f5f65fcfa7bce7620b8fe8c7462", "0x0914871465b2f0f3c83c416535a525082f8e6558b54de301e5f4edf52bb6aa8e", "0x160e0b49d6bb20368b2a48a20c55da0d2659a94ab59f174de5dd4c13505b04d3", "0x0971ac2fe1f38483d27137f792f6bc0ef51108d2a87877edb01205a23a18463d", "0x0db36e959b2089b379088932fa5251e65d4ee1f415ad497f5677e69d620c3f3e", "0x260e6baea06a53e7947e163f0fe833e512802f7862e8708f575fb6baa7ed6ccc", "0x0103e7c9849aae12c3642ba73872141c0bfb65be896a6ce0f45ac9ac8d746ff6", "0x19853a0ef0c493811c3168e292855f690100b73069bb50dd32dde06c96a4bbb3", "0x0e2823849ec0077c2e8cb25046f6a38780e943ca3affd973c883809e227fcd9f", "0x15669e10f37a3d252b28f8c05f66420a4bc6e9baf7a6dd7032838972bf7cd9e8", "0x1da3b467c133912c54fd24e00f2916a91d533ee46e68fff074d1a1467179bb9f", "0x28c8aaa806b13f8e240e947d48be89c609ec24b42ef9b1b25916669eb613f715", "0x1287309126dcf2034cb33aa0d01b7e5e1b020a8a08ace1bae33530d5db8cf15c", "0x273d73d56fc498d1be414428870a92f0082658d381013de76cc13c80a2cd8de2", "0x0f73e29149d0fa5e27ffa53e4851187a653f2c5b310ede6b9598e4cbbd35a5a8", "0x11508faa2ff4f86a4ecdfec774e9d3f904e04d0fb9ca25b99be310c23dc74bf3", "0x08ada36165c3a78cf93ce4de9c7e13bd9fedf22b0222e5e70907c176588e4966", "0x1a649f2a76121b00a1fd7d4945e391fcdaf3bf69443b861fcf15d923a45658f1", "0x0c7fb8dcc2a5da940996877b67908497fe074a98aa8d6008041bdb1f4dc6d6fe", "0x0a6a254a2574b86867bfa9e5055ec61826368c028e52693242f63a83153abd3c", "0x00286876e2f3e95927a7dcd76f37e4c937b4c5e274bf123801f0569bfa6fe34b", "0x2095c2d2a9f23395d77f1a86179c512dc1301d549996a3250080f52b9704c8d2", "0x2ac90aff52b956782ca8598cbb2b22a3285596b5891a1f60e141012bf2812ef5", "0x114e912fde21fbc12348be91e0598b057430bdafb0b4eb9cf93e67f7235749a6", "0x301fdf0c1ff5be9807b51a91614541bc0696cec7fb16a503029cfb4704d9696e", "0x09a579c36f8bb8fe12c0de65c24ef587ca40796c850053c022fb015fc6bb072b", "0x1c6f93d553f9e4f96a575325aed9682a53dca61b88507723b6d2adf2cd683388", "0x000ed419728fa31c55c5946db446b7fa783f8af594158ec60ad8c1f66893c17f", "0x19411996cb83bdd95e61aff2e6d4a57be99120783e41fdc495f358c98226890a", "0x2a1eea5321ffc604f87d055b650ee63503584495923a451b32fc241ac114f2e3", "0x21d5fe87e3905b6c19c384d4902bff4e573ed1df960100fe2f630f5ac7249636", "0x222da21f4b7c807ebe8f93b67bf507df715f53c3b2ba7754604bf93aed23a7ce", "0x11bcb33294e5f8e82bfab58152eaa2b91ef6352a9d0ba55bac003dc735172629", "0x15f62b8e5ac177e7c52faca91dbf24e6a90edbda53ea0c54d6ae7c38247b24b0", "0x1e329eaeb402ecf26259a1257fa85cdf1078dbd858394c06dbd1e47b988cf257", "0x1fca943281035ed71d898d161ebc246f9cf04135c3255cb87cafc6e11e0e715c", "0x21127d56f6dfebd40f026d758a4bb8591d3e1d48c12e28753cc71431a1db1ecd", "0x06a69dfdeb9e80796a63b4a698266093e1ba7534ebb7e2b0f3ab58751d0cbf60", "0x2c0a57a5cb496459e547d4366e34a9f89adab821f418b9a6c70aa1c61512ce66", "0x261858f737fcd0820151966863a110343b6065926b133870912c595d0fa803e8", "0x074962d54f26a02909f99bc37c93ef70043e7cc51e773a5e873d3860c57fe9e2", "0x297eb20bfffbb3c3dcdcfb56f0b0e221ef28fcf4faf052a5284c04bf776a0873", "0x1b8c711b0a6109a9fbaae034c0df650c32dd80cfc5981816dba5a2d3ba884246", "0x1872c0cfacf2bf6e42d11d52d28c306fccd53c2575a9a2534b83dd27186213a6", "0x09e802063ab8c0b001265ccf9e5bcd9a83de0f56fdebd385ccbf5cbb5da8566b", "0x2d0177d9e97ae16ea923bc29c3b34f43b9743bb04e0af385fe4010eb92b3faef", "0x20f64ef9f3b9143a4dca77cdb2c11a72f8e3bef8cad37a6e07d156d982d36ad9", "0x14085e315fd11bd4311613b563658e194a8de5dce828d0b401974da62a8f5953", "0x1eae390777228c03ebd563fc4cc11ee0ded718d0ada8ed327d4cc09a3307ede9", "0x06472d3a9addadb7ca55ad8d286d7ef0630ce84fa631832009f2dcdadc315da6", "0x00fcdfdb353d3a99bf2c213d9a687d0321844e2371a5ca48bd41f7b25e96b6a7", "0x224c451f7674579be04568957daef86aebfab8746b8d8d68cbb5d4e2c53019e5", "0x0e378f20b71ccdffb0b20149df41e2832c57bbf385e953f2c8f55fd541291a1b", "0x005edeb6a4ca7a6cbff5c5d92694bb46698d2d476ecc1787904863f49914e49f", "0x115bdd6b5c9385955a8a20d244c4062b08eeb78eb692ead7893482b00beffee8", "0x0f6a5a9c39e7623c4583d9b7215dd4e3cc97e5a8e240ace0e8c5fa8343060ef5", "0x2aebe737741ada0dcf9980e84f021506d5f52f7a4082f0e97d37940123ad0bf8", "0x1b1ce923fec61ff8da2ac4ac5d3c2792c9a1adf90395d8c761aa96735a38a266", "0x1c221671ca78f00f58d5d5439c0d11bff3b9f74b62e40770a798dae970a5db24", "0x15770a93016e8761589b6d6e5bc57dca84cb91156222639139acc6f25668ceb1", "0x0c530d9fb0d84a2b04d4fd5d2345c5c587e860361f808e5d5e60d7f6175b31b0", "0x09c928ddd310f013a0176e314d2d76e9487c5631082dc4c832b183b143630782", "0x075919a774265ef6248bae80704929456314b2a274a44d8be22c1a1747ece847", "0x1cc025b3a59fbd993318dbd65f22b4418faf8a597fbe9d9c46262f5b99fe104c", "0x10244f0e95bf93e832fe52e49e1c05830f10fba9136227bc7bee9ca10ab72667", "0x27fc48c5fd8fece4851eb5fab288d4fd41b3eb0cce56827dacc7a3509e4fa4c7", "0x219404cf8c7feef751db9e5d2c4db1ec96ee66701e78422f57b736faf2593398", "0x02c1636d612ee048e2df1f38dc67920abd00676a977af875ae66ea5d5277a134", "0x131e408587a1b372dcb79c84d4a9327e4d1a93e225e682f5a8c1e6ad0f79b0c8", "0x164064b05249b6cc87d1edafb21c8e2bf177f979d46b68b2bfc6d2f9bc636a39", "0x1a32d386114cf8ea9dc720717df855af4106533ab7e427da3d6f8091ea695905", "0x26139768d3bed1dfcd575cbd5c61fc57dd2cd45b8f725c25dbd87819129f23ad", "0x1d24e974d3c14d9a37f65a36ce2a2a593f321cdec81a40a58d65f12da202c3d6", "0x2569aff88e4d3f209061cb023efa93c26a627daee66d1b67b99740682a057fd7", "0x10b621d20c61e70b3292085937120b9b28c488875ecef4bb56ecb134e427d5aa", "0x2b4419af0353be507f3d3121275f9ce9a1a3c84003f47343972248b5c0d2f1c2", "0x187369785670fba473da72eac6a6b825fd4581b5bd52c78420cb246865845bf5", "0x2103a328f4a2673a0c329b136fb7f008d1a1f005ed5e4ca26db74d4d7f49fbcb", "0x0799c7bf30075758b400e34108557143c4d713194e2dfc6d8a50089b1cb462d8", "0x20aec56c0e5b894caaf4e537d708ca7f8fa1e8a1de6009a7a2fea43a70519234", "0x2b839e4cbfc3bf9594e893e041989439863027056db91887c2dc09373f80cc1c", "0x095c1c06a5393a5995870dda2e65b90a20433dcd97882587aac02cf8fd0442c1", "0x08f2cf7886ffa7811e14cf8b4f5ee8ca28196b83478ded3719c2cec9a2b4de7e", "0x1ea2763d97a919bc44c3fb92e61437fe4093253c47bbfb2a9e55b252cf7f9f27", "0x0c8e9f9166ac72edd6d7cb80e80227cccae1d2d2056d6a856a90455f56fd7067", "0x057bb346af28bfd4bc2341d64e65b1a5734034adb3e1099cf9fcca79cda9c803", "0x070f630af25efa8e4d8c5e35861344889bebc7ddb790014113c1c2a221e161ff", "0x11d35bb72abd9000474d448fe22416c8ebfa152c08e6a0ffcfa2217fb86e9c14", "0x2e486100284930c2e91c1d00add9c6c98c3114739b13f3b3f811717372c25a26", "0x08c39ff6e608dceb35123f2d64d68b23c4a81681e5b7d0b8b8407e9aa1c50ad6", "0x270aaab5852da02e7c1e6c8167739b1d719f2da3806118fe66b08b510aa1eb9e", "0x08b07ed9445f3d4f9d5205530d7b6490440653070c6f4c3e38968e82b93ba584", "0x0666b480472adb317f5b138a92a4d295127befcfb83b7660681d41b96c408ddc", "0x2e06985058af9e113eb22379cc55b67a15e193613385bbc4775a68c6c526b6d9", "0x052319c919c1954c4d38a7c77741949a839b3f188619f74093e3180d144c725b", "0x2f8c80a8c321dd74d85f2dab2cb172a0824b990ca63765d6e17b483734c4a4cb", "0x229b17fefeb71703a7abe80495ff7ddb6140153f77e751fff2900afbe19114bf", "0x0f9985aec263c3be8667e4c93dc0d8812f874cef6dc321827d66fd92681ae9ce", "0x0af15c566b682c10cc83c3bbaae3ce621d1bc3e0b45108126cc0df99c6225c78", "0x03177754c13726a540502787f03dea917c9c0960fb205478714c9515d6a10e87", "0x22c84885da685ac6b74e3914bfe2668fa08262ef24f1adb4c55ddda0cdb580c8", "0x113bb87961b449ccf5595cf68329cb19309e8d065d013fdb009ab0e90645186d", "0x2abf19247afd7fcf68fe30989a9a370b99a1f12df9b2fae30b6cd3383f8d6914", "0x2fd4fecf4e46d2fe72647bd708f4bd4809ff961d89dcfd2ae91f812e0a3b9fa8", "0x17a17efbbc358c53fb41930002768de9e1398f39df32a8b06e23033114c7f9ad", "0x02288e2ab2b87a12d55a319b351d9874c32ed44cc16d93a6a63e0852f0f64697", "0x03ac39f86700b6611f1192263d9442e900d1100f26031bcb8a8e6255ed1a9f4d", "0x00d5322a34db3009785366c0060c47d29a618fe0b2cae945def9a35f3ddad1f5", "0x09d9a76e376e194d053554a267346b7e034a6d13447834db68d1c102367b92cd", "0x2a1e0bfc7f387787b93cb39bbd51cd9f023ae0e738abc43de81cbbf122c13e5e", "0x2c9ba1265abe8a7b57f69f8b3632bb13ae772ba1cc98ca033d5369664c40f5a1", "0x0e82b784df5473936515686de5cf8ea1a86455a68b3b55abda5857bd5527e3ee", "0x03ec77e964b4dc113afbfa1dd2eeadbb676f73e27899f033c6faca223802485b", "0x0a6f9edcca76c77a5d699a217dd7b62d0d704485236ed912ce6b8de2293c1e23", "0x1b628084d0fb8fe76d6353bf9482b59af97bf748a6e8046e8eeca9a8a9fb0ca2", "0x2480fbb04baf093bcc1c9162f78214bfe14c3649500d798e87477ff71ea99159", "0x2c92c181e91624bcb26fa27b6c0046054e80aebcf342de822df775333e2b1b33", "0x22cfbcf84ac83392239762dcdb03e8477b261be19ef57e2322c043c08935d271", "0x09aa0d0fd0027d58acacaf20e551e76434bd8216eb1ea6b317d1a6d23a53b1e0", "0x144d8e55408c898646f2e0ddb6ec192b5e4169bb312591d2c758b97207409ac1", "0x0f1a39ddc785cb0881420f42eb4e6b5ecc10c81f490be17f815f9d7f34e5e54c", "0x1e873af18a55663a04c84470498b245b46ef6bd781fbb2e4bfd4333ba143ab46", "0x24a4779886a1ca1aa57204e1fb50e033e31c7f99b8084d285b0b9a933cb0b3c7", "0x0e73aedc9a4578255f1d0f8527708f9d31131205e1d6140ef9757e8e07d593b8", "0x106f27e82457b91e9fa33358ed95a1fbaf86aae5d4ef9954a04dd4635ddc4fce", "0x1a952947fcb77c0ab07ecf32ebf40d96d40ec7fe87b24eb92b4c9eb16f2fcf7d", "0x197b9ed1a8ca8487b72d1e8cce502da9d2ba78c3f22cf7c05d8314722fff72e1", "0x1608554bb309772cbc9a0aab914c4e2c400d72f9f2e5dad466dfa1dfbe05d5c8", "0x0848283bd8201837976d43341d43578f9b22609ac2e457e02664d34830671e36", "0x14beb77cfe2854019e05160b921f96119e94d616e93a0607936b450a3e033b64", "0x034a1494914e7698185d58864582bfe82fc0b7de6ad63f931718abf8238d2805", "0x1c319df3b2680bd8c716696b5d2cf503e0eea5b11d5dde8e95217f4aab6abd0f", "0x12c29c95fdebf01463121a20eb33a06425e914aa9ec61bf665bc01ca2258e1c7", "0x1bcdffb410b009efda67f405fa33fd128fa7cff3730b3860df29b2bd561e1ac0", "0x2e8a9b80ccd2b4387f0ec24caa0ddafb7b0fee1cace342ceb18e91223eea76e0", "0x23149eb655b8640b7fe76b1c0d3b486c2749e647a8d20f29b5f92b2fc64d7aa5", "0x2a650695e37bfea8acc998914335ff376dcd297583262384e27fb805a2223f85", "0x290a2e64f4e1f17bf39d5d4519a152801ffc2d2035d48bba0eb1a8f8238e869a", "0x179786019d36917e8bafa6829471c581d532bf10be7da1e8917a5f70a7724e13", "0x22bc68c0855eedfaef551448da3b639271008d0633aa9e783fae52404e7ddcb4", "0x1340d5b6ce060075459a84ff7f47920cd5318f9d127f9e524dd1f7ac1d082b8c", "0x0942c9ad7de555dd976278aebbf1d22f1beaea0e5ca2bb5b0e6e679f2c7b6b22", "0x0e65bbcb5ebf23a40d6e25703ae029a31722b64a0d210496dc17c9014f9df451", "0x0112a919bd0ceb8455775ee49e2165b5291b9e4e400a75e977ca6566e6a0bd69", "0x1b91c4d8a544369b0daeeade27a0c2966b741a2d46131d3105741f31df20ea11", "0x02dd85797e168d21fa7e5b96622766ec0c02246bf9ee328a915ff2e2c8d9742a", "0x16224724314147d479ae0cbd26a381d4584a8acfd3185d4439b527619d3ae4c4", "0x2fe84e5971bfd3a919fad04214acbc50d07f3015d97c28405dde92827c0253f3", "0x2cb6734e19b3e02c46a803d5616730ad6343d3d923fe9ab98492921dbe14c3c8", "0x1a857e17f2ec1b4c210adfb6ab70c7b3dd0ce6ff603b7741dd2a7eed474453d2", "0x14ce63a350d29e5dc70f9ea2e1dd0912f8d734d32833723aafedabf41beb5b92", "0x0131d2e152c7fc3e65a89f4a22e737335ed4f68c82c5dceb438b519c352132bb", "0x1e410af2e0c4f2d213cb346414d9169cbf481e9ba4d4431e2359119d796710f6", "0x2c93c1454d0cc86eb41df1224d9869700ede7836475611eb1f06a0360702d1e4", "0x0bd5835813addfdd7fe52f4c8a3b10b157ca63073ee2782f74f43506ab58fc52", "0x20944de1bfc17ba91e7a4e57eaccb12a864f0f03f4979bb4a31a84425cc4c0e6", "0x21787b54ce543e9a71d11be03e1ee3ac9ccdd6221f43ae0d261624adc2bd982e", "0x225e74a0bc023c80bb25adf111d52ab833ea4e46967281064061ede0f3d70e3a", "0x19f618947300b561dc3d46a3cd62a9d25f7e9b33f301387d81ab1209feb0a541", "0x233a46287d519ac568adf99bb8694707775b999a6d0a3abca8d6ca64e0184841", "0x18d0dbaaa98db673b472c8ad11b490fac76f62089e10dec1e25386e3d04dcff3", "0x177aa6be86454adb4e45f649672423189eaedf3443933ca5d8cf2da4bc086fe5", "0x01a02810ac6a7679e40266f2ba978c62785fb467b84fb15da6b03c428ea1984d", "0x1ae6c70a5ebf251f5f7e4a1242096a326ef1d5514c38433f0128fdc668357505", "0x02214ef17acba28a71587476ce775f6ee0d3bd3fa5edade9895bb5e8e5d03558", "0x176948698048b89edde8c41a02d4198ff463d76881a3789b4b0dbe8837bdd612", "0x2fa8ea7b2bb13415e41758f04b784973ff08f48be3d5dcff9069f489ded8428f", "0x0144cc7c6ad28fa2e47eb0275a1a4beffea9738cfa8f8e73cc8916349d1e22c6", "0x14f9aab5c16fb02c9ac8c143a41d7ec1f4968f48ee8df78ffe4f87b79a1f3c5d", "0x21e7fe0f38fcad374f525a7e5aec05b47a33eee997097d7b674cafc4a06cddc8", "0x28b0a91e448abe0905876f7c4b7cf7e0d582c3901610d72fa2fd3445339f89bb", "0x1a16874dc677554af43683ff0af81aea7c37d0c8a7d48026698640f69447f44c", "0x2422891d43ab71f8730f1c1447320e50f935213f5036da1d2ca308b84a594ee7", "0x1da66525137ce8f72bac9da36ae4f666c3cb7a3b29dba9d82f7b286b44c32fce", "0x00c4731825357ab15f49be8be8fb61ba4aa49bbc66b9ea889de7433e88c6d549", "0x3000028c4011daebe4e6f64edb1fd3333638af69d40f0e95f484165868c9bbb7", "0x29bedc93abb3b62569dafc8b8987f295de2527006fa7d1ed0fd2f1481fd6687a", "0x0cbe74380509c8ac7668895899fc2fb6b7fbf752aa483e1d9dccc25060b960ff", "0x22b694bc68df2bc4689a4800531bb1c9d8a536287cf1e991a03c0264d009fc25", "0x2ad8e28c2e4bf73c873ee8463eab2f3baaded932a543d50bb9182f246f394dde", "0x0bbd04b434a55d4c5cdab684fa2b8484f8a1b83a5709985668e2d4e0c739c802", "0x2bd154a6074a15b651b61dc15a93640a887bd9e11704263464ecb9fec3f0439e", "0x2d5af17ab25857bdd7604420bd00f1f97232db937789672d2ca927a082046b92", "0x02f8e794e1b2e961d3b2cc77ceb684ca45338be65dd98f4ccd12e77d34708ea2", "0x24ea4fbe7f9b9e66c41cc0cb1bb5e2ce337611e360925dd3cc94953432a233ce", "0x0a37dd5bcc98bdfe4fc6d0fd0ec4520c6f449af5a8bbe4f813b5ed5dd544168f", "0x086a59235fe20dbbe10cc603f69a78b796647cb0af35bc7206c541a48876721a", "0x2bd74d6c3dc977dc2309a0a7b0c7cdad09d54bb466b2bf0caf198218dfceaf00", "0x1faf44bd04babf5ab2e71528fdbccd5fd91db2c2001da3f5e76162313608ecac", "0x26ea7fff86fe56b7712b59e70e502ab9ce09bd8bea98022363816b726f374145", "0x1db2370b5f14be48485e1bff9033853c99d8073cb18bc9ec0b078c2cd90528ff", "0x24f5bf757d1a7c28fd53de7c8cabec5cb62e44c373a2a32f378da5aaa07d19eb", "0x0bcbaced9ef9e0b03d3b87eb09c40501052c4bcd5fc32e4b2bf7b75e21148ade", "0x1ab76daebbedc5f1db440788616187c9fed43b1cb2668e53de5151761b39277b", "0x249dcd5ba6d7d23473c2a169c76eb581185399f9216aacaddd2463e0519fe6d6", "0x0c5da17200b90a0b125b039ed922b6954d34b979354423743e6016b5bc5d8023", "0x2df908878c9402fdd0a3014351b0928f1c559790a0d416ad25a2616c1a073cd0", "0x21ce2e33089951b01af45df3816c80e2048686f1e8014c257c95e2ef3e2753f1", "0x1bbecb607950c54f74a627369a9f94548867778604dd8de406483e21f61ee1a5", "0x23c175479965b3b4a9719cfe6be6a610c0c77670e586c2ab0cf083501e69f101", "0x2f370d158d15b736562d6d0457c44706e671be9aaa524bc6b3bfc34280996100", "0x0ef11cbff50df1e1d36be0c8f35588bbbe406bbea31a3bb6e69b7f7c4f4ea1a7", "0x1f2ff117675d97535c24d19a58baafab0390f3d4114a965c43350c17ce095aef", "0x14712d01c897590d2eeaab6e98e18e5ac1958692a04c1b5124ee06ae8628cfa2", "0x268e361752c72a4ad949b2ad1ef9e6f2e806375946b8b9e6336038d4f849c2cd", "0x11de1fb7c05eb638a4abdb4b4382618529b99978acc73f4e8563c2831cde12b9", "0x0d2a72343a90dbb53290239581b2ff31206a02b9cd98bac6667fd247ad909544", "0x0fc693f9f8f5cb6a1b8be6689dbc03f5031f5df4a30782d8091f738dc7e1e9df", "0x0e41e2a997fa4d0f8b752ecc0dc63b3a121be81ea0e242154dfe67ec049f5704", "0x087b2ca8d78931f6fde0837ce4fa58944596f3c9cf2adab8eae30b44944e1788", "0x125d93accf769d4d3514b21d4c663b1539e227e9cbc45964420361d8d220215d", "0x1f91ac718648cd1fdaf2bf6f11aeeff7bd8206cee5769d8817bb970339e88eb9", "0x29914ab6cec465fd92f8f2c869e1ce9d4dbb3f883b29685063f339588112659c", "0x02da4a10486ef6d0effeb26f869bef99f6d50d8feaa1ea1c8bde95989429e5d5", "0x082557d3f50fa517de2710e0498a683930db5b9fb269e8ab6a42771d5ae7dc33", "0x1d20832e960f550d7061872f6cd96796f9cf61faf4f807df0c3734a5e839232c", "0x1b57a822d34e4ad06cec4e19dff3246bf846bc3408036dab02bc2b12ca38e044", "0x0bc798c8dcf79ca9a7c76cb0e8bb7c2366719fe74092e61e6f40e8c4087fc0b5", "0x1a975b179649b114e3c4559a1b14125e35e3630bf1f8383faf9af282c936700c", "0x0caae9f4b66b45e4732e97851913a594540730f26529801539c4d44896075fd4", "0x08e3da8124c621e070e8a41f0ff1f1cf75e2211087955392d85a1723bd2dc41f", "0x260e3155148f892b7f96b2d74e6c79b9e2c1a3cd9cd0784ae507875e4a267881", "0x2e3ed8d27ee71bb41e5bc98fb466dd4ff9d0f8a668861b773af825d260ae3943", "0x21d0fb7ce364e0ac781b1e11d89abfea006392cabd20f0740d156be1e45e7eec", "0x0301a1aacc4f86684e3ed7a0eb023b92cc75af6f8214910f840c627c3da3cd71", "0x11ee53beb1e8ee4ec10689f4fe40ebd93cd1c9fe06d812e96a583368435ec2b6", "0x01d42d2dd9d2372530c30f4d6122732d1cef8dea9e2ebfb3b2679e9f0dcd04c9", "0x0861e448b92ffe738e18ae67a143876d55a58c162f74d8e556714d1f7e628792", "0x193793bfe5c7b90c6d61475e89cf0d41447128f280d8c6c5dd4be1fc9072ef2b", "0x0126b05ee124c85aa2b1c1273c21c3cefe7ded39b305c5e039a35f9024cc1256", "0x0569dcc226c2e215ae697b8c6001011cbae7ce535f45a803dc60fde9da50c83a", "0x0fe6172dd5afe8ff0e7e33f6499916fd4c5ff2fab969637ae32d8e4cfd3fefd4", "0x074ff2c5f008060e89d30965591260679cd3f0f5aed33162ac9ac99da10bab53", "0x086e65444d5366d82133d8cad0a61c20066b89be1c870dcabfe453648d2b6b06", "0x0b9bcbd52b7b899a651a02c326e064ac6a97be7457bbce896e465d73e93afb9a", "0x0269e035c429c4bdaedc393d2a87978a1c2f8ca0b25b085ea44ce5878ec506bb", "0x09e1b7724583b0e16a79ba7670636f87ea134a19e20dc3ec70c01c7b94664dad", "0x264ca5651ae7b84f43d8841cfb296bcb5f19fa5a06a2c4d2184b54c3d6370936", "0x24e4ad8c2f38fffdfb503a4dd50575c5a12426a5346359e3a5654af0188f0aa2", "0x0adfcacef6ab262f8fc9d2f614c0fe4a3273c82a9e7335e5e0e0800d81e87875", "0x187addb97c4a6437145866cf270df4a57ba705970fe1e0619a0f016933065d2c", "0x0710702df841d4ef5e0cadab7197a9ef19d7524808bba56df845a2e8f141bcaa", "0x2e0664aabc74b5c54d9d047bf5470e45ebc784026159273f1d2f5e4759c00651", "0x271cb7aae9142ad71842a770cc65df19d7d102d9235454d7c600a735a1fa4da7", "0x2ff475f9d52241c2261b9f520d2322f52268d289a028e974742d409fd8bb3b06", "0x2d3bb2cf8530e698b771ede66578a0149e561b366d502a6e79c23b33c500c2a4", "0x05c80b5a16b6a59e1e36303a59ba782cd71407f83273f37c19ea54a961e0cad9", "0x17077cca69eed28f21eeaf0f0048692cd310e6ba87b65b7594de5902a829d7af", "0x2edbe4d8286962d91cf1a93175f925b174cf53d855928f2f10cf46e7baf1f994", "0x2f95757a62d1a5289c6a087e5c829e54d5bc2e03082ad8621641d82f5758259a", "0x0c2ca1a4f1682da3f56490d1f154194ebe40ab4419951cbcd508c86005cccfac", "0x151b559773edbfd4a49a453c1732212955dc9d5ff614e80e75ac63d065dd0ccc", "0x3043ae0869eb8d13b810178b96eb37caa27a8470777bddab85002384b6e1aa11", "0x01a843dff9621487d353b70ce04d9ded438f76c5013f4780798063a4df6db7b1", "0x0eef8241527784cbff33f551f6e2e53d16b744589f50508cdaa0842e05eca01d", "0x1ae85b4527017d45d805a25b139e3f424d3745841cecada4658d97b38cefc4c3", "0x0ed437f0f11932bf16b0cd77f4983af1511e57078427feed328780828b8d842c", "0x17de9a117161bae7f824314ddb7a49d59e2443cd620e0e7af082e7246a725e9c", "0x12858cea51eeec2e4fba5072a9049318de40ea9a4179fa74c7bfc1e15706801f", "0x08cf404091f4ee5fdc068ff51a27e79a18f8ae93adda23b412de37eed164fbd5", "0x07638f755834b05e6dbaf1b992ababe1b575897e776ead3471a4fe68d9e70f7a", "0x246105558f45479e8cd5497d9240a6dd98d96e8111ed4e6fe8ae481cc221394b", "0x2994e4de23f47371c68cd1f602e71295a36a365b970704c70b22f8a816850b5f", "0x22c8d3bfbdf3637a9631e9d1b08506d60fee6945b0038eba8f2da85f10fef0c7", "0x281c2faf2a2c449bb40a4bc4738ea64efec118d34bdfb38652fc86e55297a33e", "0x18c045cddaab43389344b4efe95254dce7d25f7d392b05256c2b949e47caa3fd", "0x00f89a7f1ac9fb37b2753c758ad0265c94effe7e7838c5f03696fbe1ea19cd62", "0x17aaaa6bc71b2d1aa0d884b00934f1283c599011e96efd46d4d602d95d869f8a", "0x2913457175241255d94f002ec50a51838616f2758d69723a91bf0adc46fad0eb", "0x12eba34c52c9376522f8008a66608ab4f08401aab85d16364791fdf91ba661fc", "0x135e9379693f4edbe9fc86844938a52518e89db9fe13e457591328728f15dc08", "0x2f6bb4e91820b1e1367f83134ed632830307065adf75aeee1666d3a59beaa76a", "0x13543a98e58b1b6df98247f452e000fe071ab3fcdb0b3e6b1a919ae352352818", "0x2fd81f7d844b99ac61e8f093dc65fe0cf45dc2a5cdebe96f00b0f43bd0b7d9ce", "0x2d5552222ced4e20cc80371a0210411e95180cc4b310eb66209c2a46681a7f07", "0x23c153388be12196bc1c97d88d9a18dedae099bcb0f1ffa576985379022a1b21", "0x07f0d269eb34dd69addd5def5902b9a7a96dcd173bfe460828ed398efb3a3afa", "0x0d511691b6ef7b32d6b64bb70e219826d105c0e3dfb905a8b88164b8e33f2ddc", "0x287dc3609774096d2b9d98c6f2530946900d9dcd05f003de1d2f8b3cb8e7d1ae", "0x11531b14ddb49b066f1129808f043e3c9d3f32089e3aebcfe29ce49d93d0d759", "0x270c07fb85871f3017c468b3f4701c42c562bb79a2cb74a1b63f857090933181", "0x091cfd790d49049722d482129211f0aec3a10af3d1cbaff1acc674f598cfbd2a", "0x2e1f9b5465ea5e84c8cb259ba5cef63c7f78b04477beaf3b612774add6325cba", "0x064d5ae70d4b8574ff3077e835fee488017cc317ca8af262163fcf9f134868d8", "0x18dd9456a767449c657c3d5663eea71e54e5eb5b381d4e0158c71ca0e3a8fb29", "0x0150f8b58e0635bca8e54452f3e31ff5979c2122e2ed6315c75e2e1efbf4d953", "0x19c1f822135fbb5932baeb862261d37f58613c1ac6ecc6d1a985a546a52e6142", "0x2ceb2ab2576b2b66de64c9a8c564869f79100a783d4aea41e74f436547cfd630", "0x289ef304a10023e4f2d4e47caf25766079103e5b7059fadcc41a475937ea47b7", "0x106455ac17ff5b1625135663f28627d919ebae910c697c940e967e917b66e3a9", "0x27e194161a1d0de454c9f47a47d86289a1324f3069e346a0a14a291ed1f50f78", "0x03ea3ace131a580c737ead77275aaab1fbbf35f957ba5ffa40e3190117ffbf19", "0x108e136f6c0a7016aa3c91140178668f8be92aea8bf22a58a60401bf037f38a6", "0x1384b56f69cae939300958285cead5cfeb1971f42bb735852d21f3f3ff2e6bd6", "0x17afc5bcc3ae14f0ddaaa0ad7f068785c2a88672ae2669ca68d553f4b5611da7", "0x2af2b4d6e48590cb6ab37260cd0628c305e9571a104aafc5a30086ed36eb739e", "0x04965fc8bb9707daaed207994c88d236a33cc0999c7e116512fc36c3f3c48516", "0x1aa274f939ae925bdac809179e60547ba9176d0cc4d3b66ec61ea59146278704", "0x02cbcff5d0b52769ee0fecfcef4cdd995e66417094e84c9479856780fb1d940e", "0x2513f2ad59b991b9015b8748901a37026d2e511ecaf12a716643810327bc2349", "0x23fe312e7bb6a30fed6cd00fa0d98a215e903b45603eec14ff921352d6944da6", "0x0ce352c15bb81b39fe0e7263846b9c0bad0f9adb2935c112a4ca4f58c10b4606", "0x1784a8e161be8cc852574a40c64862adf5ad640468f451ba11de3fdac35ecadd", "0x148af66b8d3a06d4da4bfd09121cab2045cfa1a96e89ee1e23dc61445366f1cc", "0x0d28295b17753024395c50f80bec66890afbc458866858474f5765cfbe75af54", "0x09bc568aadf25c9a88404da27c73732817b6aa6c9bfbd4ce851e89aefd1499de", "0x0b0ff5b9694dee9cec669862d49825b8934f73deae404c9e5a601652af8fd4f4", "0x0e7fcee5bc529956fb4d31e98da1376276cae79503906dd5b3f987bf423ec0d6", "0x057903969900117c287b29cac4b315297d137b29ef2883e39f17edc318529a4a", "0x1dcd75635c831cf3cf5beaedd5450ed63ffb17dc35db44ebfa02078fc55c36df", "0x0f235e7fc34780e8005c242cc8428764be6e488c8eb8604bdbbd7e0644361701", "0x01d84ffec4654dde04de9b0a09385d509cc2b2021624a59d274fd0e063b3899d", "0x0802cf3684ec2646c535c018305bc1377b437590aad654951519c539c30d54de"], + ["0x148d9e4542066b125da6d69ff3fb676ebd27e6a38a1ff4281bd639c97af6ffd5", "0x0b60a28805324295fcaf51bb88d9692372cbf4eef1cba8b85cbc059346691a88", "0x2d38f812ad1d7ac79c32fdd57a56edb861885f20fa4bc6d0d942c2f41e8e4a7d", "0x25738acd1163580033367fd8f1ee199d7eb3c37891e06bc20e6b476a0357588b", "0x247f6967fca42689ae8e20b5a7a198d63086549b78c1620a51f5d36824ccf43d", "0x2e22813077a668b2b75249b8d515a3dcd93502006694245bb087ff0732708b93", "0x1523ea89be61be47e1c36b0e024068c28c48da74bf7069ab2d77389c83d474f4", "0x146695ce138230e087b53ef1bf81601f2591dd344a7cb509f138939369e0d1c3", "0x12d05d9571fa4b4171886d9c2cd44c7d7fc5a4125195e7d28c3c47cb5cb5b7c5", "0x242721147084d4613543788977111f3fde6c89326a556e35bccd2a2e73cac68b", "0x0fd921ba8395a5dde833e6dba4173385007b38d1af5e3841a345c9a480c9d292", "0x0f0bbdc7a39e5146929f2e1ca9fb4a63550cea8f12109c1d82e601975d581f5d", "0x000d65008588b2ee1a4dee0313b6d4396952d901385f2e1afe6a0a0def765dc2", "0x0aea567be31e1c42ce33f589d903363a482f21c1c3d8fe50fa6df018a2dc7c25", "0x02fa334757b03dec6be1df758ebe0353317b35316ecfc72934d069f182346bbd", "0x0017322782b3733e379c8909ae7da94655c46dd2b6b061b9253d787a1eaa9b8f", "0x156816f48e3ef988ffe04cc77ac4c89af8fef8482604e7f93b75c1fb1164d60e", "0x2c8ff977a27352b5d7d9ec103fc8f0c727b84a778f41adf777c38e01800afdac", "0x2cc225cb5ee4ba2b7053f98af7b3b488569016ecf6f4943d64ba843092c59229", "0x0d34d7a8b8f49abfa48c73b10f293aca19e09743a8345e9e1af9f2d63fead969", "0x2a0355ab04bedea61feae083561067edf1476b20725cf5e032db806d33edc204", "0x2dcaeb4653a0ccad1c0872f76b103bf4fa38f6d63119e1437c798203d29768c5", "0x22d2e63907fc0b6564850122c8e924a972de827d7491e92dd84397b2ebca7770", "0x1593a5b503df48305ffc360c4f49ceb02536c73d76b4f2f774f9da3d5b8dce03", "0x22d45f1203cc11e52b9155749a7c0a0a821da4b063cddc820580280e21026ebe", "0x28f01a0adb5f8f85236e1a129ffafb2cdf86aeb4056eb5ff5a06951d64c3d4b2", "0x1ba602ae9d3c4cbfadd0ae2ccf8fcce759f83cff29bf12b53d6050a7585e6aaa", "0x27bca061d815778ed8719c5f4f54063213c5005a46ed7aed0c979d2ad1557c33", "0x25593be458b75a5369a4bd6a86b70ae79876e95ab93705d244101d5df3e45700", "0x15608030e8bb2a8cec5f6e69489064cd21f9b3617034c9751c53056cc113c04b", "0x14ab657ef52773269b4002b7a2cc6d01ea66ec8eb51a97e0bde8ef9f593eaac1", "0x1af18589ae90058d0db1569f4d4ecf74154386cbb6fe90564311b4340b1a11da", "0x1f60106f88fadb4d8f97ce9ecc24d0910a4575c5a710002504b48faa28fb91cc", "0x0066027b365d51255f99caab82d5009ae066db65ba103962f7c65f2f2daea562", "0x181301fa387e521e8951a3bf77c5942c5bbc4a8fcc6c395c34b4f491a9068ab3", "0x2dc04cb3a80a5239a13299eea70ba026593f40ccf49cb8ebd73da29a76413e3b", "0x2ba55e1d5cc09043027597e4fc546a18922baf85d6ab0ec6eff1cf13922b5592", "0x2d5b0f0163ae47693ce731568cd67c54b82f249f2a429e585f65400f0c7adde4", "0x0374ac4769fa6fd0b8166fd62a112357902308a127645453d72f5249ca5c9368", "0x0e767d617dbbe410968708f585dba04e995a8347ef23ea101fea088508403aac", "0x1fb38ef3ce50f158451e37bf5480ba70a91f8fcee93274ab021dfed70f2e2822", "0x14e239aa73b943e39c9b48abb205ccaa4ff59d68f9d325b717791666177db65b", "0x2712d94019540f5f0d61c11c2c16d3dfab0257385896be59c31ff97a37c6555b", "0x0e6f524392452ebad40973a980e08f69abdeb214e5eb7830f7284c1d13e36036", "0x29470b692ab4a550523b448684e197e6be9bc885b9d3110c281575c1bbc67ca2", "0x23910827d0d4a41ee8b13a711ae19b5ac604401a221417172c3018a49de959fb", "0x0bf5862f89a9d3687f2fb246980570d96ed258e8414aca7e0c9df7cee833dd85", "0x00270d4863fd01f27b0558468bca95648bc8db3ca55aaa5feb27c286aeadb27b", "0x2dfabec7671e1e932b07f164ab49e69e63f173513f2d4a015ce8de3e168c1bc8", "0x0bab26acbc48f8648d736366adaa29fde492480002f5020c6220fb187dae8891", "0x2bcdf080431544a4ed25c9db868837a2d17876fd7b3001bfcc22bcb686483bb1", "0x2064a7ebb7e6ade9cbcc596200eec97ca5e2f9beb2a26acc673b93a218f16ac7", "0x0451e58617ec882799b2b33aad34bcaab6a871538c20782009b5da2a377b91aa", "0x2582f9576b56b22907c4bbfa7e4155b4e28ae03876964cd40adb0e255b6c1a14", "0x1af73515b661bd03915b5c3b5d8cec060b490d742c4f48d43ed907ac65ea6c89", "0x0eeb619b01645cb31f1f5145d2d1aca045e69f9a89742cf85faa65a8f30781c4", "0x1b4ee6b9a81fbf0c201d0898a6948a0995ebcd080e0cea83ada3d8ed6182ab17", "0x05abe05399288af84efeb848ec61d53dd0f07439982e04e3a5a304166ac1730d", "0x2cc02c9ccd63f23dce9ec2b3587322da4a4cebf9cc9246c700db6612aa769674", "0x0da64f9355bcc3ccf87a9696b344e5683cad3f876a5b9e5f715a0d70a973001f", "0x2d0b3f3a901f88ad88c2012c2b32f4eb9f02bbdaedf4cd1e37b84f4016feab7b", "0x1d566523ed67e71b5ff0cc5cd17a325d3092bd66a52773a537896e3c6df86c76", "0x037d35446e19eed662a2b628126b2850f7daa087974e21fad3d339d7e2dcc33e", "0x22b59547c33c37e6c300a3556f87dbba667bda84e1b8ef87430a522a576de9f0", "0x196f8d6f851f5bbcea6a1614656b38a30e5bcbff261cef19f6e34066acbdb74b", "0x0576d6d6dc692d9ed7232005e63f954d2da11c77e6e919b2b9dcebaeda11b507", "0x09dcfd5fff0be2df5a5265856c22ac231cedd81a1312304f5896f0909cc3e6a5", "0x26f792286cdde888e454c1ddf03592d6d62f4be4843823526509829fcb496163", "0x299921dbb6a9201f8aca7e69d8190238d5e4a82dda743aed85ca235cab80c163", "0x2863a223856bdd42e35069d206a5088d217b5ffba6fba0939ca22858cd770dea", "0x0ffa5609d1b9aa848721d2e1e2ad6da05d43a241e8e0a7f59508ffa9b1ede432", "0x11d925274d8fae7d518dfecea58a9a57d88642062969e67e457e962e3ed4a144", "0x21c219204226bc43f0db2448349213a9e563e94d3fff28b2e692688d0f5b2b12", "0x2c04ae9f250ba0194bf59eca9404e3af6dcd64dd38e370a038f3fd1e397f5104", "0x223cca831dc760db7b954d41810614ba6e2c62be31e94884d4c7e5ffa67da5c6", "0x244b3894104e51a151a671ca11fcb342d1ac225f43abee839469743457133d81", "0x24f71d5a0ac04a387b758c69782449df7b9ccedb6163a7eedb21ef401452f450", "0x2efb360d9ca0e15f52aa4033f4c423e0fa5c175cdd05e4aebcc278a7b8296b97", "0x29ffd7ef3d018c95e8039c2e990e4cfe66ff093810ad4508c30e28e8bb970620", "0x267ff75a53212383ecccac4e8a3bf2fc9e982baf37ec44478601cfaa6f417233", "0x2fbfc4b2ce6c2b08cbb3e3749fb22ff3d68d3bb7d335ce0e42ec6dc27090c385", "0x262f93de20005c4de2f4a5d8d055c8d5f568991b0a862047e5ad94c8868ba3ca", "0x0f080be27a791fcd1755754f931d9b87f5ad8c1963a02aa7cafdd1e8d31b94e3", "0x21a735213a8c784976e65ca3bec4acc4224527493cd1626d2346133ab8875ff0", "0x160a92fb6a607d5ee7949fcd5537c8431c449d79aa51bb955845d2cbe684bbfc", "0x0079159f6364543eb643f0424461f00135739813840ac74de81df7c9e10c8f72", "0x2286247c58eaa4509baaf85b947e699501d3b5f901acc8475a7d9d7941606cd5", "0x1110425198ba06c42efbdb6e95840d01c00b5d08850f0cd46435cdba1bdccea6", "0x0ec5a15571950cec3c3193aca015791604b7dae185d7b9d8992e020185ffd909", "0x220f98335597493c2e7f4fe3bdc0cd229d0c81b2d0b6f9e565ccf65eba2877e3", "0x1c2fa2d176f4d7070fe45cfe6a8d4bbd0ce685aa196e4ba2372a5195e7ab644a", "0x298c1fe3f63531aa98b6aad02e438a8f278bcad4ed97f3c82a091faea910e50b", "0x2e814b2f088d90012bee74ceef10c7013033af128356dda488e3feab3bf25253", "0x212609944ec047925f31c13d7ca9fd43a4e54a33fb09a6ec9463cb63d2570e69", "0x157bbb9d0546f86e4a8b5e450036ab0a84d6109d5506c85f239267f4ba584b56", "0x138efcdb344b5b40faa9c0a415664bffd77240b5a9cba56b499da2e3cea6b3dc", "0x0ca50e08d27bea508f20273021f6e839cf124a54361def3c9b2a64595e58fe4f", "0x0d34d2d5975a2da9f0dd72e846d797ab312022399e1fe70980f983f1587ef7c4", "0x00dd1be4f3fb034d4669a81922fa014c3c1c5c575f39bd809877db2b9fff9744", "0x25540fcc162307e3906abae7ba258e4fa84ff4dd4ff19742a0969d08018b21bf", "0x24f57936979ae2a3b9752d37c017574493524a254a5bbc10213b7fa6b15ad35b", "0x02d9bd62647a45334db73631da9d97a27e8c627e911b83f1962dc3417dc6ce29", "0x1499c2994ad838770ee3a9af64362a10de6c4c5f32d5ab5bbae55ca0b29fbfba", "0x15a6459a08eed36bd3e23157dd59512bbc84847e37e8a4e3f7d7fdbc7be20970", "0x148d65a6a75fbefb33965be2df0989fe031f47478922d2546f1ee126de7f35fc", "0x16d2f4865c76d38379fb5ad2efb21e777e01744b4e209c095d332e41edb45748", "0x0c86c69e94a003cc454e2990a7ad8167c3bbd4732e646f9f91e961114bc65c37", "0x00b12227a310f8622c9acfe2bb3228aa05cee6105c4268c266dd4176ce7f8e21", "0x2daf91d225f915884e6cfdab42acb62d276341987bc3a2541819ec7774d90e8d", "0x0bc4e8d555614bac1b8cc99bae7f008cb7c82b5cd1a3c481a553caf8ac373f6e", "0x2375f37d0030b894a1a8298dd2dd59e2b7e73667f31b156e86d9b38617500fad", "0x1e8e3c2bd0d4852e261a3c0fa93d83fb9c21d44b49578330dcb9718cbd54b285", "0x1e80ecca29b345ed88be8e53ca042d6c62afd2a4624cbacb3bd07c85839332b4", "0x2e1f5ee70338c50c456f43077216125fef314c6653c9ba72c75da5b53cfeda99", "0x0e9ba31ae136fb0199f9d9e0d8580f5560449f2a8b6a9d0f223ec52c4120431e", "0x24de52f156b2208d81bf109c790f409baa941ab7978af86fbc0f891a5e904f75", "0x05bdc7205a26bf12700656425ebac48d1150e02fe9b4acb07a41609d7168f04d", "0x027f8106542d99a1f903582ad757076e18afce563367b63d5d0973d80993a3d8", "0x07caf2bc3785db7ad681bb6c05ddf24525c19d1519a981b44045a5f78cba52b6", "0x0230b844661066c234483c7fdf632449922453ffb8ef379757509addd81cd773", "0x1c513a7ff8bdf940ef0d01e76fd4ec19086170e88c64294f737ef20b661982ac", "0x0e0e97979ae864b55f27371e6c6e619ab7b887ce3d861fedd84ae111bea40e0c", "0x062d46adc59134784cdaf0c4dfb6c9d7358f315f0948765c8fcbc97ec3f38eb2", "0x2642cee234081127b28b4edb038497a79a2a313a1b749fd2eb67e37794283645", "0x2400b3982c92f7fc2181889a7087c0dc946db2b2e8d86d3450bc254f6518db37", "0x24da88b4f2c2dc7055f4a55f78322392d808c076f2de6cb6a03881f2354e9106", "0x1a3951cd6925316481484ac39b31b83627a5484c259c818ee23a2700c6ceac9f", "0x2ceca27fb996cdba6d6ee1e105fa5df8ba6b67b865931c017515fb42908de010", "0x16081d04bd65bc19e41adef6fd8da7814d2bb0cfdfb2ecce5df82a8bea879e6e", "0x04eed4b89c0ede1bd58851a931e4de791e4c69cf2b1116f8a36b2bc559000e46", "0x1d60021b4137b2077b31173787004201f20b0701411c48ab9e14418fe26ef4bb", "0x1636c29d85687fec3aa4125bb66e5d5f1556557a4860c1df85127790f09a61a1", "0x25c716e5ea5ce2c6a2b671a863d5acb3b2dd4963879f4c163da6a06fb265cc42", "0x1dece00284bc698ea2af97de3d426cf90110bb49be71a393c1ce70ea971db460", "0x292a18569aed3c28685001d40cb42dd8153fa99001cbd52729ca6f8e2c466eee", "0x26edaa0ab7f7eeac8776bff120b4483ce9a6bce85d099931ec9322ba1fbf3881", "0x05d23fd0743e0e37089588392c6df0b04d5aef2e5268ab19c2e9e9b3a3af4921", "0x300bbec302c9b8b7e4baa06990571fef5dad26af618d0779b69977a244c589f5", "0x269f2d9ce098eee89e694d53d3b2d9861490cf184ea09baf640f00a39ac72a3d", "0x1122a37fa0c37863431182bb8277bd0e849b2178a816d31c7604fc5219d1aa62", "0x14e2dbbeb30a3a577a0b2299ce9af0539d08eae0748a721880aacaafe1864538", "0x2f926c6773a8c411b87dc5198c309903d9f492af6f0a43a5af2028e549f6c801", "0x1169f110cff49700bb5fee9e524a49e35889c4689e384b927984e9957c587fe3", "0x003fec863f40327b066e68054c87d20cefa1eb13140520d43a679b9e4a147a61", "0x2e87640ceb4012a9ada31482c79a08f64bab2e2c010cb036bbac1e4a87c801bd", "0x03e07a8e8e86a863b1471947bd2e9629149b55502a6acdabf609edafa0bc9d98", "0x23397da20fe1dd05ff21ca3d213fc0ce7ce46c469537c1a2aaf52294d2fd6dae", "0x179733a75ce11afe8a4842f8509e49301f7428d63ca83973b8d8156fd82ab69a", "0x10c1e8a0ee811326b883ca8e10f3adb124428ffcc5c7dc79e83c7907b2a1eae9", "0x24df93681b43879a4bb61b5c6280f4d5e1360287945b978e59b183f0233387ab", "0x22140f342fecef8e27e3458443baa7dfcba7ac35cbd4a1a09ad87c7f63d7bb5c", "0x08baf85894900ec08322259d5175b370fd4ad33d5f599d609c95e2d15c26fbde", "0x24de9488081b84914effbe7d56004598675363e34b41fe0e9b78107930312e17", "0x1f25291093856f64a271dbd8614931b97c31f8ec8da7121b0bb82caa71f453c7", "0x11eabe4c7efe3aec592a5cec6b3f6dd1095f9d384ea0ce040262eac0f053c919", "0x0b77db0420ec1e32b9ba0e9904a28921f236ded48f3f49aa2d761a631c25038b", "0x1689e35a0fde7b1d3a6e6d149380ffc6b7d9772807a553ab7c5073eb2e3ede1a", "0x162236b343c2c2f7f48b36f3e7a7ec97c07cccf22e3254dccc4b3a30f33c69b3", "0x248c951c9505d2cf2136f6b24c2b749c7751a01ab1cd83934be12fcbb8d05c86", "0x09487042f01494c2af046b94105b70b1b8e5ed1ac5f158408309a66a77a6abab", "0x0a9a97076c5d53411c3e8fff6bb537029080b671324819fb8af33d96d432ace7", "0x0c43d5fc0020292fd2ecd06842cfa8373eb9bef8a9d984348b43fa9614b32e23", "0x146d10ae53aaaf595cb8e8eb29ade3e56c92da9b55a3bc24becf2a2f5fab0393", "0x1bacba42d80c66b3b062cb5dda6a6230492d8685862447c638cc9b4ec374337c", "0x16ec168db0372a9144f511c5e860b07113a671b323952a86e8fd40722c7fc879", "0x0113e5457aaddfe1a393d7625ad05bec40e9d44a7e185ea3af2b58ae695ab77b", "0x18ba814a2a7fdd1206db6a30f7b98f3c45cab593362befdcb0d2a896ac78a7f7", "0x106843bbc36e4064856eb6688d8f3a90a43ffa7f73bfe63072169bf520248328", "0x00ce790f54ac2d34a26ca17cdd642a31b1d4005c09752c6bc5b433064cee6322", "0x2b4e47ca6f897e337d6d52c1ff33a52487c689bab5fd35620d83c567b57a600a", "0x27219b83ad2459b2df9f73df5cd1d2f8be66512d95c4f3d81ba876740519db2d", "0x22cc096806612553e5047eb6e0ec8d01759b9df23c96f53b6fbcaa8a3616ba8f", "0x273e0a2a56e4243f2133bd90e54692647184a8805fdd2ceb541a220253a78b2f", "0x0d449aeb41e8cc9b2f32856f89dbf1409d5605fc557c43c7cf573571d5aeea14", "0x1b07cfc60e61c162dc9f12de253b7f952a9246bd2c7c445ca35b8572e5d719a2", "0x0e4eeb512c3cac847535897aed4fb9ed34bffd87c012a117f2a3daa810dfb1e6", "0x27021e720da0286b61c23b748cc7c358fb6882d8100787fbce685f06e11046cc", "0x2eac1fa2d1212624bc5e0090e25ac0e0160f2d7390c790a2de7740775830e542", "0x0cc0645876817f8152ccd9010a6f262a516af0ca289330a340db6474ae66d261", "0x2ccf92d23a6abeee6e7924bf0d4a9e7040b715e662179a182fd11bb26fff58c4", "0x1b769ddc3111a9d38df31f4809f314d749b8be9fa642d2aaa36961dcde0be23c", "0x2dc09a5638b6194c6d6cb79c56ef205b0be1e7c83fcaef98b1cd1365295c7d2d", "0x07efca9ad6268754a03efb676e593a8c75a3ab84ad9046850654a5488312fd4e", "0x1bb73b4e345b0741548da2aa698783a8c87e923ab1b1008e72d737fbe7f6d9f2", "0x0635173b7551fd4fe8306abd764a169bcce6f3719dd606cd0bc1f2b117fc36fe", "0x189dd3b20d3f8f53f0f5a2ad97f300f99ebb84090a438f7738f2a126ea8a450a", "0x265e8dd1fa619461952ccd1d3a96f2aa94906d9df07365c28dd3e93a244f6eea", "0x143a058fe3987aaf1ca1bf2c376b4979310ef54c29a3e668c124e5af437902c2", "0x186ec8f1c3ba70ad834c11cea7962750d76c7be8691e679bd195a65dfe698ec0", "0x2818eb031998c554c9570842180458d149316f14e29fe162600507b1e50952af", "0x08cf9b17dd2cabc22de68072b0f3bbde4beac5cb58b575219c70f93fe1ec5de5", "0x0a298a9f044a1590bfb4a6835027c9481a406c765ed5c841878a5c14b1c4f4ed", "0x2f4050e4b3b15017c6c19d417790e22fa6d29269d33b54d801c4af98cf662ce9", "0x1f1e5035f72cba3a0226a0447fcd28c6bb211da5fde9229458c8f7d3974a06a9", "0x25763fbc942135da85faf354f47b3ae9fc27606ad701bfe7de3ee704d8160f9d", "0x0eb6142bda2a5f26b49f6dedabdcb7a97f20931fc14256aa85e6a3b0599c8383", "0x1f8e3d89b5c97325a7063c703014144af195ec37cb8b09d544786eb6721e8ef4", "0x1a027583e2da7adffb3534095700dc6f7d6ff2a7a19b06d7d69d7eb63da4158c", "0x2823d3822190171f5924b4ffe5383050cb301fbacd745c2e074f89152a53470c", "0x17fce7a205f42f17c80a146aa3528e74a3cfc444a1289cf535407fef6cfa1e8d", "0x211b7a11f1d36c9c10a9b3e78ee5329ae87e7effbcce5968260b64ca4dcd06ed", "0x1861368bb98ea3229075f4ac8ceac511120ec3fce84eae632b03138a44b4bd5f", "0x111b4df9aad81b42dad504cf07cd2956cc4848e7ede8ce10075538f78cb7f758", "0x12df6e0847db8d01b389639603c878d91a19f446117f9a4aefca9038cc9d147d", "0x2d5e474114c7c6020bd7adb6e15337c4e72f6ef15324106e7585ca3f8c116c4f", "0x226e655808a4062f8bb47c131ce125bacfe68e7840f4ba6476841041c2808981", "0x1f01a9d98aad3d9a65a5373ed6d2b672030dc1ca9b46149bbf9f084a7d24f4e4", "0x2f3578cba83aac8a83f34aaf5c651b0571199e3a4de39ec0579e5ee33993fe03", "0x18391d423c454019402cf0ec7b36cc133247eb98b9bb439c9c189beaebfdd5ac", "0x26fcf6ca811edf267bd800e0b00f6b49e60e5a13ca944810a36632595d788181", "0x140f9b585984d931fe856bdf451805fca64adfe34d55ba4f4140480bd7a97acf", "0x11e878e17f1f867ade93e914e58024464385abf6403fd4a622e41fb1dc22e3dc", "0x1f997c6de664e9ceb042c55bd22c9232b858e40ff4efeb4082c76fbd62ddd8e2", "0x2773284b6eb1c47f14de71f232989ca9bd6a70aae1867ee095299f6419cee52a", "0x1066b87300af439cab83660521ee9d03b06a17c9a00b5b7a8d56bfc401fa5bdd", "0x2f1309644679307e98d620766a2861cee589e6d55dd970c8c43de7ad84d7d110", "0x2f1043b7f9e4b6ec39aa0764007e50320617d97a87be9dfb8f00b4cc27c5baeb", "0x1b3ac550bfdc6fcf4ef9839b66b3223badb9ecc76ae39fe95c9a47c2a1102cab", "0x070be30e43784dcf7d99e4334102a69c40c7981eeed360d5b9968e7cf19cfeb1", "0x0e5529c5fd64e3920f611507fae99f8c877e9257fc367bf54dd073f091a3c651", "0x11d88f7b5649a4b0e1f788c89ef190ed917dbe39ca64cc58cde8633aa479b95e", "0x2f6cbff18a86d8b40f8973b1ce30bddacd2f248a1f47f1f66d3201fd46d93d17", "0x176823962788cb748e12ed59426bad8ee881381024993d5703c2c1079c0b7856", "0x077c3ac1150cda4394aae4e3951f8d0aebdb6fe9e8b336d899ed763745875ad7", "0x2355c7225b6025168045ab1f9cf7d6754e83365563e45a211aa997d1b85e8f33", "0x186f0b6b6d6040a7e140bf72b74a71b23c6ddc1e8496e2f733757ae000e90027", "0x14740840516b80d234f76a02dc3127f9a5ffab1b3f2346aa9c9b910058435ed2", "0x2203433be06680bf2ef05084f45cafb6d8e94158c6598ab1634f3ba66dd16e4a", "0x217d3e984355aa1f6df652f101bbdc281c69b7c75164a13fd29776b80b2a9314", "0x1777f06ba3ebc47efa43959fa089bbe8bace64f9a4406937600c273dbe21e4d1", "0x1fd8a54df4e6ed46ab5d2997b9fab040e8b4870f5754364850c508a9e573e767", "0x11d54b8c949efcb99816328db7aeee0a412c7d074a986a0603eaaf5acfe32a1d", "0x2cc41e52d8f986ee77c59b1de2690ae4e478eff25d4f103b15cc05ca7ab7446d", "0x047c5febf774c62215aa7e6cc3439898f576041f19ab3c8500b07d5c19a76fa2", "0x2e9870ed58dfa57d100819116368bbfba81c69a4903a85179cf7a4c2a8f31445", "0x1fadd3bd3a5c6158a4ff3f0aea374f9635f5211730c79b39d039f9ce17ac8945", "0x2a5c810d6c43ab2d29ff1c5aa46e4d982c1b6527b6a2e83ec55cd0cc4d45d1c8", "0x11fafe98343013c2fd3b4364e1e5922db5be5c0f7afdd7b8645d07b4c91d410d", "0x1d1a82a8b25d503eb4ae65d6bf5113049342c0c10e2f3cb8da9536c95b1211cb", "0x12ff18aee2ba37f448e89dcb5071355637d5d15545cf9cf8e60baaf2cb832793", "0x11737e654c3374ae5f4eb5c74f203d1da2aa812bb60b0c5cacb5f01c0b0f63e5", "0x1af3faf8b2da944010c5e3b35355ab593d59faae404165a07ce92ee11356d2b1", "0x05ca179ad0da359d92252ff3324e884af25b0edf9bd1700e012f45b683bc2df0", "0x1d6a598851b1ecbb9d3ac470d95ecbd588a3b32303a4cd8a7680ef5df2b95f5d", "0x0161720dcea14aad7e0710a67151921bb9d5c40bac136674f862c1c43899d954", "0x23385cd49db575f73550759f679df48cbd1ed1d69932700179df6fd61870e497", "0x1339217149da74d50b25a43cc8027420e272fc136725702f81da8835d0b9f410", "0x2651659ad69b37a47aec09be71481bce3cab23dc04c316118d407005501b0c0a", "0x02873755e5d79969854cccaa36cd8466aaa2e0594e3ba37b8f51bb3a6c9b87d0", "0x0bf86eca4c048d59ff3ffd610c81a7f99875ce0ff1e193415fbc2bcc4355418e", "0x127237aa090a414f2676bc5b26776a420d7da6ef914a89dfb2ea434b6db42c54", "0x0aaf012593fc014cab8879be8b63e24ea829b780fe9cd91b68892705102dae09", "0x2349511bcf3e14b5acbc973e40063d20c1a42fbe9e5dee99964dfd50869d0286", "0x0a13877e82fd54bf79457e703a3c5780eab1970a9b374df6988129c32e2efb81", "0x2f13444c0246613e4a8f06c54b773a553b6ef94af65d3437c04e3f6856ee6e7e", "0x149f9f85afa120aaa5db38e1394f536cc1530ffb639e292afb3136fb051171e4", "0x09af1ec78d4eaa552f14fa6e7ed41842a411c8bd2b49c9721dcd6de80e1649b9", "0x1598306c66b69a223a169259386217b9c543bb63b226c2837c835070fa6ee724", "0x052d00ac603ae26edfd7d8945afee2021a7f8cd3719982f463be765d26be97ca", "0x2d0b5bfcddbe9aeb4286aca9d10f9a783176bf8b9dde55008e232b9e8f45b541", "0x22e76d617bc69278c3976145fbec8a11ded70e6bb9b14739d59d7745fbe80133", "0x10e0725e62e660dc5a675e2da60c8f1ce756c162a10b53cda098bb147dafc138", "0x152e5879db732ef026d2748d6b17c21005a23125ecc01ace4b2ad46744b6918f", "0x2c0564cd2043a507901b5054db2e6eda28c94536013ce66ea5767ae453c09d51", "0x0a61fdb8748245fbbf026fe3cd6a42b873819c83905c42a5d7a01b3ce30a6233", "0x0d86b389e663dafebc5eeb72014ee4ffd205841fbbe43dcb55a0701b42c21e70", "0x2b0ea06ea29b5ebf5946ff05dfa56da1db9f91187ae6789a51283286b7242b5b", "0x2c9d3d65591a9ed07618ddf4f10770596a3fcf25ddf472126c8cb0b3f8975675", "0x05eaea9663cd319d7b6390fd37a5b916d0adcbdea0ef60de5bea3db63e973374", "0x1ceb088dc8e476eee2220df5e89c9943d28f9af36adb2dbad1741f19d064109c", "0x1f88c713fa7f9eae2ba80f2acbee56aac81a2454add66b1e70bee1e533bde95f", "0x05fc10c9b3aba423786210a189a8cbf0639448d239088926ab96346cc543f75d", "0x097f99277a3d8fd2d954de6c2d58e33f65208a53bc36d1383c2d17797b49b520", "0x295508a069661a782227ba2a74c212d4728fb8e8695f1b4826f87408ac4d087a", "0x0760bd5d3082701fd9e7d17d530a457d41a7be55ce6b608ae2363c3c45db4576", "0x0f6c413f51067fb324da04b213fa890fb953332e863df3b06fbfe3d5de732673", "0x1b0a842b23f5f0059a02f26579d95260931b64385be42555370270cb462eb55e", "0x0898e5f4d62bb5913fe5fd2e3b75440887d1156f415aee18cd67fc9d728134e2", "0x10f8852656055f6352276424a54ec899fc6e6d87a4299ed0ccb90011cacb1198", "0x15b12eadb1003ae6382b3d338854a5002c15c03d9bb02842e03fbb75da769cc1", "0x0058d7f1ccddf26fdfa6ee0afd3409ec103b91f4992518300ac2a7bbf82583fa", "0x24acf431e67a9d7f1bed441756b03a777a99fa7280b11def1061cdeb2878bb8b", "0x1a8e72e3b76468c434bba4f191e90170a642ce7ebbd289087d187c305f13a4cf", "0x155a981f161c8c3c756fe204ff2a25ce0f5346957d69fadc6855c6107e02a8d4", "0x1c747b94dba58c3970414851318a6fdf4c86a5f65e4d91e8d4772f567b49a883", "0x259f9119fafcff3c0a98d828daa5d1ac21288c6ebc8e16f4e8a85dfcff442f95", "0x1c5cd1b340400e37a37de09bb20753d4979322e23fdac9c7aff9f8209eea135d", "0x28972ec819ac03e65b0b00c52ebeac03b5ef78281fe543bb3f4e762e7904c6f6", "0x277e2dda293014c5c76662826dd3d76cc7c662d28b2905bbb1ef3a3f5081dcaa", "0x076e05aee9f8c749d1a98b3402f4a2c87be2840659a5182e15ca87f31809c84e", "0x26b2291c31dcdcc2eb55f004c1eab496490d025f12265be835f783a9613adf14", "0x1ecac53aeeb7e2ca436a200daaf1e975be8ac687a8102be23a7f291d9244841f", "0x11766003bdff5ecf352014501776d0a2eee1f7a8898409b21abf35a7092f4610", "0x0becad60e8eab107933f92495ec6e5070b26149eae6bb1005197556225239f94", "0x08cfbc5e1f5efff8fb1736bf118cfdf0fbd81cbe87ea61931dcf0cc70b1c488a", "0x15f63076b20a19f545ea7f9d386c63efae619defd90cfd8347e3e7eeda6b2d6a", "0x0a989c86ca97f9467240d9239a51aeba8c7772a4b68b37f97f4fba26958bbe1a", "0x0b6667027c41530cfc1cf7c6b60bf74fd15a1186ffc0b77f0976d5e1d4501a95", "0x0a87dd205830beedd3f8bf92235ce278e2c8529eb9f1a44530ce1b2626c49c01", "0x24a833d8f5db7cf49e889fe23c518510a895801f7f287538538ba3b0828f8101", "0x2a0116295e2074c23e1bd817842586d115cfa7103dd98245e6d364ca9d5642c5", "0x182724024bd1b487a7a886604e4312f25df11bb2963ea152649cedb6ffcf43d8", "0x2ec4fd171e0927dc9331540e1f6639e1541eb4e0cb74c66cded95ba05e718b8c", "0x2bec29f75e13ae7002213bbd81ba9848501d613894596e9fa35d734ffe9ad50d", "0x0ca8fe863fb236c10ae74ec094a89ff974b5d9cc498546f76c0bf1a510a8f984", "0x157e6adc39e984ff60e904ffd85d4b06c0f7c95d8b224eabb0e1090c080a3204", "0x1337e6b950018ae96f46214425210907e7578aeaa0f62fe3afb9877ee3101782", "0x267f0ac325930461def6afc4f54b6d09e163e84c00a41407938d2d263fd649bb", "0x1c049001366a3521dbfdfce92c324ad021d035767911574fbd4b4e9000ae9a4e", "0x167db26d1f93d91141c48b1a7ecf78ab3f714481594f3eb1dab4a4b78329706f", "0x159fa23e2aa81b787d70facf416079b68de6b8d7c0e234421fc450c2f1917256", "0x29adaf20cf59c0820209a749c61a36b84eb168287f7ac640a37df4a569c3defa", "0x03c390694ba7ab4800b93121bb53a36d654dcea8ff9bda64c95770fa545dad59", "0x091f94292f6b5252572bb419ec455d5435eab1473eebd72d8b20ae3fde0146c2", "0x29d64d0356b6cd07cabc18eb5de28728c246663c60133dd989e89af97f5dc212", "0x304897aa5036b3a80774e409994f5d1e71a7836f577839d3b92d938590888697", "0x125e0dd8f249486f133b8bcb9179c5525929cac3ab09bbaefd97a751bcb87e83", "0x2fef69cb9e21aa57adc0749d32310ebbc3921d75f8b5c79978a5e83d66888e6e", "0x1e3af408be8cfe4bbe03849a711fcad85b4f27977733524f2bd35b7166438687", "0x04e655df6114648220f3a2a056805a636307b809779e9397953dbfd8b9477b54", "0x2a43229e666093be6184e292b4a87d605cd3860037fa2aef07486d4f856dca8c", "0x156f9aec7359e5427d5f97a165cab447d27089dce49f1401e96c37e159490cd1", "0x212458241e29a83d0d11c64fdb0d2c5e7036f441e5394a625f52c1100f8daea5", "0x1dd909f5a32a657a89eaf948a11f8eea874eeccf49632b310314d77ed72c6257", "0x19d8a81f4867c40cd292344df8d2dd64b07fead4054107414a45bb504bbe60e0", "0x1f285a438fc7ca62edbdbfa5f9ae627fd1a6b68d4bbbd7ab867c34db73c628d2", "0x06edd2c97cb8ef5db711360743458dde6d45de0fb41c646a72afe0e02033a9dd", "0x2f3771f984d334c7298973e9b2cfaa1ad5989cf379bc41f78b964073955b978f", "0x2abbc43b9224188495cd9ec8479f39d763b8d560df4e9dea1cd7b1618fcec9be", "0x25178f08389153aa236e1da3c3bba5e408d52ba913c3718128a596fc40755a54", "0x1b28045d36ce94ca72ad5539c54d6a9a872e66fe6206a251a61df5afd50e3e93", "0x11c1664633f12fd93a35d8553fb8e1ebf3ebab73614642da48f742483c0d8148", "0x19307c6980c6adb7fe1d4539c10d6157310af45ceaa4618c0d4a67f71a4a8c31", "0x14fae46d00733e5f7e8ebfb360853311f021e2a252705453cac23dfcd72b72ef", "0x0e3d1455e479d3b99bcb1f8b662a43c885a9911b238e08fc4fa6bd1090369492", "0x0f3e285e855de079c2f3c562b5074d095b57268b0ab1aa07c4f7650254087d7f", "0x24ad5850b4f923abd687dbc4afe75ba26039f7d4b33cc43bb55f600be5fd2ebd", "0x0a22143eb18217e19455e023bd571d1e757ccc89850504f580e433cb40afdda7", "0x0b968c0b278f32e9ee1b4adff37aba3d15d5943a77ac7783353397b72c70d533", "0x276990e5dc0db030b8d88a5828a4b343177dcd554fce8a36692f74ff38f64c68", "0x1f180aceaa766f24b92552242448a01326580a9c2dbe2ae3ffbb530f23ba1717", "0x2dddf4a14757b28de03cfe210be338cfe3b63f8a02d7fb0155ac9c6e3e2b6bd0", "0x1481841108e80996b079e3e977578443ce0ea8899d558dd92c5cf20279795ddc", "0x2a3a6a173401ca83d33b0997eaa2805bf7869cc7deba404f395ee14e06daa3e2", "0x11d7372db5b796363296c6b99040d883ad66f54862b4965f5da0ee0227bbc456", "0x033e757e99e3f1ca826c9a648a73de374a11c2838024cf736dd31c5b5f7c0825", "0x0e1bae5e746ded510eaa1145574a8468c3a7e2691a7b324a9b9efb36a9cdd4ad", "0x21818b1fbab0cba1ef20245ed99451ca1dcca899222c147b431553016a09dc41", "0x1a2604c6579eb3b1e803427249ecf1742a9bd72a6ad9ac3845191f8c536f7d91", "0x2f41b5d5d349e955e15f50ba0cc3d3e854e9065f8d62461332ccd746bcb57865", "0x0394fff2c025027635cf4a7cb7588a6ef587ed994314e9f813b7ab99f8d4c32a", "0x0a9d0ebdd8cdc392ba446d6dcd5c9380dff2975f275e30f636dc9641b2a2362a", "0x255498cbe7c9e89580548f0d92255fe9a1775569c380abd18d22004807b68874", "0x29dfb1a35fe5c7f25490b6e2e303d711887051c092a8e642c07dc130ad3901b2", "0x25a5995a98ef0f5402b25b2031698447ff89a9b630094d71aaedf8b5fc4ccdfd", "0x038ff605feedf7a740e890862fd593fb712aa19b4721d0d97b0a85ea77f2b621", "0x1aa20d730f53b035813f1504a853ec87f89bb56b05fb7b34f21deb1aad4c18c1", "0x1124f2b33e05c415a7d9881d948b9e15f5891c816a0495e8e62e89089a29673f", "0x051d3aef244ed3af1880d68658b4fa452aa3f8ab79eb4d1de2a1b827fb5ea359", "0x18c3911d3e25dbd901a7377327c5622522a29f56fcb2d395c4c9ac1e05409d3a", "0x09e0a4773ed5abf26e474c8050e9578c5398abfc42d2ae66a72c3957622de157", "0x2de436c8a217f32be5d1451bfbff7e3f6b3ad46a2da58f8439908d285c9afe55", "0x269ad28cb1fac223861da664acdf330c1732e75ce9d1a80071d8f623e668758f", "0x18d5c9f0a8c3c1c62a31a12d945ac562e7f28e951145d700751b59f5c4e046dd", "0x1eec169ea79a149b6a4c5b3ace894f421779dc9e9bb366e8ecdef2eb3c53fd39", "0x0982ce518d3d2e3749dabe6b57758fef9eb663a996dbbd91aec0ed84eaa75ede", "0x272007ee9d7ec7efb6c80f25a2110f94d20ac436f7c50c1e2b7f6bdcc76909f3", "0x1072d3d540d1b00dfc923dcae102f2b6ce363e5054b3dfe2bece4f96cd15d647", "0x28bb8d7194d4123767738d6b4d73a05a94c8e93c7e08f808c3a4bdf564420120", "0x04baa18db3db501d39e42c49f1cce30dd5619e1ebd14266857e38a753c63dde6", "0x130c77637bdf1a336d9b4c83104ed1e7b81808142a0bf1b2771b530eed99f03f", "0x02c0ce56da12cff29effbc3dc9b05bd07d7ad42764ff28350c7c48ce48ad4af9", "0x23eac7695fea23aa2f2ec9e1ea7b62caf5e71ed61066009bf93a6ef3f74056a4", "0x1c79be403821f680faf8289807244a6b3c04d0716134d089add44dbb97da7172", "0x05a48abc281f771ec36dca6268f591ebbade05b23fb81e7961c8cdff5d5c8255", "0x022aefc1e9a4d06cc764e9498634bda97bf11eedd5850100a6dbc858619d26bc", "0x100fb400e2aaeca68ccbdd4cb0528dd3b8da8207d6bce2d41b4aecc1f0720581", "0x04f0b1d5fbf7c9467e826c385424b91faff7e5f6b59e37651dc4bca500327cc5", "0x06e33a10b9bafa04f20f3e596c0c1d986836b7c16a56ca48669d5a0514270160", "0x081bf056335b1c44c461c4d6fc1f9e032a18b9d2f7f2400724db06385bdf0774", "0x06ca03a97a5618ac671d4d2c18501e5e8588bd793b2c3b54dc154d1f40bf6271", "0x114bdbd88798dad58dcbdb9a1fbdc123ed1b56490a015b7c2943eb5aad9ed1dd", "0x21bd28fd49cb1151be1afac1cbed0b705b76058784ab92fcb3a2258291780489", "0x25516e358045290d7bcce1b4636ca33095142d4b01f22ef7d94e28cf81e9e29d", "0x21dee602b25e5a67889ef243ac9c891b73ebc717c7d8161995d74bf4e5bec07d", "0x205992101ef7c5c3493aebf5fb8eb7acd01319524ddb56fb75dc159a013e9c88", "0x0667cf69b46dcfae72f7fe6b5d81e6d1191ef029280803eec032f5ffaeb12019", "0x2b7a9027fa05243ffbaa486daacaef850c4d033b84b3641db98fde01315e5be6", "0x2c7aed13aa9064e06c4dd9299479fd2fbf56f73edfde4a117cb8db54dc76e134", "0x19f76d0c1f5b1efc61c645180c5441b569a90ad7110f51271046c642f78ee4a6", "0x04749d2cc3d3c5612d7586ef1214de38f848d8b3d9afa266e153eda3920e72c2", "0x2858e042dbd512d9ec147fcd5cc0ff21570bb5e8da3b20f7f69acbd28785610d", "0x17a5cf2508f786d73497fbb01f1a02dd8beded89a2a3c2170ba1f3b2eb31c964", "0x08c7b3263cfdabea784d21a2d888b7b10d6c95a282a10169c85f22a22bb78e66", "0x1604f8490be24e6adbc37db5d23f82bd706546d4e78c08e39c1580b7c04d46fe", "0x04d2e4db13adad49bbf930ad243167c77297abe1bd73b5d148529efd75ebee00", "0x249361888bdec58dac53f9c01752c5f6ed7bd97fc27b3fd41e0cb90b9b2937c6", "0x001ff257f8b90fc3cc3f483b9623ca26519e4e04ae6dd38ef24275258a7f1494", "0x27e9c91e30b6b5e3c3097ea19fe5341727a2bd8dcbaff38d057313169e3fbec1", "0x022154015dff9dfa94f7a8339f4ff118a8f8176dfab2c88468b2cac7e3914cfd", "0x03a08472944a4c84ee7fe76ac61ba12ad1b5ecea7d14d4dedc8b2f7a878e2afa", "0x227066b89350a8b139e5bf8b14660caba369b0828b4caba58600f80cace84ab7", "0x188541fa12da77e21d041035190e0af32728193188f77229d79a08cde35e11fa", "0x25dd5c1efd162352f25ab776985b0fffc05deb7094bb6d2879d925cba328cfbf", "0x129f292e9cfc7cdb1b2ae2c7c30c3bb491349cef4f7d65812d66095ae9ea2aa6", "0x206a809eda7d396d034e89813719a58caae380eb9f221f445b67cd5a7514dd44", "0x2e7f566a18c5c428b55b4b7d4bdaec63f721b59c4a307a7a740458dcd9d05d9a", "0x1c0df0b100e4e728a9e7aa34f6b0db0da6b8fc99c3d377f1560aa156b7f2626a", "0x0b875a366710c0691872b26d9a98a498e929acc2e677868c4ccff663395cfb72", "0x214168e91d3b6a94d48476b1b424f16240bfc8fff6742494cc897103ba7d2459", "0x01bab48ade466bf636813634624daf73b6c5d6614340542895795c49716351e9", "0x0c8425e1b2470ca424397cfa66665fb861a3af4ed66db9045fbb6a7f761479d6", "0x0870e13994fe31f94b82cb4923e820a13c37d711d56dcc718f4b15a03d627d72", "0x14ebbcfca7be17a5efc356904a319f4969b4d4136f1026f57400cd7db424d778", "0x22dd5ea69a5036fd0d4f63153af386feb23bcbd02112d0b7574a6315b4dd5fd1", "0x1e72a099e89eb37443e42de1ff7def1549480852600cf4552fb17466abd89ec5", "0x018fe65ff0f8901603ceaea4a7462fbceb80df62602a9c132264c5aa49de0cfb", "0x1b649fe60a17792252a77ec365ef832fd3722505ee40b08999c728d5c6db2a62", "0x18a42f27632071b87526d95dcb7de26362aa28abea426c73cf679450bca959ea", "0x22ab7ea700db2b287b301d010124c1d2af58f76434b8bc47c59aa88620add840", "0x26dada935deef8551a9bdd474985592e2a6e9ea3522c07afc4bf39577211011e", "0x0c6f417f88a5fe08839f2e8b9007e2360e1d618e1b46a4979cba59d29b719644", "0x24788ff3b08c4d0fb0b51b9b4358fc0cbd31ca31ba05515855a33a282e2de1e0", "0x1db3fcae24ab59721eff9aca5d5d41ee9d7831a79a45ad3ed385b1322a7b2785", "0x1f45fd57e811d4e574516575d86501ce6be9246f5891ddef62b7ccf835bfdca1", "0x11acec0b13d058dc6c7239eba9034aa33702da17de75d6306f282a1b2bd16892", "0x21acdb05d55ae1f4aad873ec5adb6b6078170063a70cd2e6319ea0cef833cf29", "0x110d9b94d49799b659e142699e767d9564ce45179b522648fa8a83b45f8d76d3", "0x18db2b58b40741f2e007f70118e3a1a1bc2150e04fa34e421db5068de19e3f24", "0x014768c6934126d0ebfbdef341b57ed229076d70348eecdad8647b1d0df7191e", "0x1704d2d2e1876a075b167a65f6cc26d8837f7e2d3f7628aa26d3f7696962c237", "0x2cb8147670f73e2ff79ad1912c835d3d3f2b2381f60eb37444a6c0c173b537e7", "0x0908b9e220885b417b58db1da0ca974c2d657b50ae1c3c5e114112a925a7159d", "0x0f0d85b4586161eb7e1353fbeb7ab3e31b5b62e720379efe3f6549079ac3e60e", "0x2103faf663c3549c9bd073de214585c1aedbd5023e4a5ae61996f5e22b0a4a65", "0x127ca0c64d361063a6c7da37c6c3c2080181b6dea5fb63469156f2fa486e7ffa", "0x0c3e9dd099f9ca600ede039ada789f28795ef7fc650e845402fc15f99d48c00b", "0x0ea05b5d4d88b9b5fe35406f17ca1bb4a855e0a6ee7d60b31e36a2a21f411fce", "0x0963c4be071c32fd06a52124c0d87aefe595c1db2b2e6c2c9cef53456bba30b4", "0x0aff89c1e81410468fa51e7776f23a077f27446bd98cc72189f641b6456eccea", "0x15e753027d63337a330c260000082ea07548a724dcafa255e67b7745574624a2", "0x1f7acb7ff46a7c623381155c6829374bb77587abd1f9fa6b879df3240954ad75", "0x0c62a3de0bb681107c4dc6d9e623d0562cb6784f2403693fdd64622203b16864", "0x16ce582016cf2e1838db97dcbece873f49f8c60722d756c551af3ad3b1a933bc", "0x29cd5e2fd2b684e47c078fd56f852b1ddbb07ebcf995be991e9c2259539fa032", "0x12e8ff93cd5c3d7e0455d9eb0e7e9ff940575c41c35d1e5e441e530ea888a908", "0x0f3c400867219d40e6abf2ef22a90901811ec95c61906c730cbe777761ce12f8", "0x2a61f96bc53c2328ddc85e45096c9532c012f4713b8b8c8b1fe1227f8fd760c0", "0x1ca94ab706e569a4fc1bd36c9b63457d5d7235b356be56bdfaef24f99378b467", "0x2bd4a2387e6ec124155de47009789e1b945ada3adac5e35107398bd569524090", "0x00454150ba34548a851b191fb1a9f3587464de17acfdb0ddeb715a2e64373174", "0x1f22b39bedd115a950f7d784c7031ca0ec3d1a6a67375d7b6ede480c5ca145ff", "0x079a66156cfb99cc17c6d39fc9c2219bb89247b6caf93658d59c6fd0a1d1bb06", "0x17ee6df0822371834c222f954f03b016b8d5ad4db1be66f3f946d5d028e65176", "0x24cde14169b4a758c3a126ab3f8f18077fbdfee0f03fa7bccf999919dd417804", "0x20ad08d3558c9efe03c8895ad4dc88bf8ab5ed4867e1acde6533ea2f86d9fa7e", "0x1d0e87e604d01091898d6e85d2ab9af9bae03ab511a34cd9a620f088fdf8f1e0", "0x0310a319952f3f6e25015abcce49fa8110ba383c048413c899ac4d202c36b804", "0x1570b11e64614fd49047279c454078eaa9cfb883a9434a064f763421b26b2709", "0x07a6850ab997ba45837a422c1c0466e6cdaf76fac2199f13f63986b2a19cf2d7", "0x02c25344043642c634a4c011d981aaa7e5f179ce9ea4e921e8d52d0e57169ce2", "0x09f74e8a85c293ee8a2e71f6d23495bcd9de56c2e0034169034eee85596f5a7a", "0x079336363220c753590ab21e164aba518966a7480c4b2890f45272368ab2a97c", "0x1ff046afacd14fba346ce72edf23e540d10842ad7ee3c733467779518a9a70d9", "0x11d64cc17c095e49c45eb1ca2bad482a820326003d49c8cf9e9c02ecb7acb4b7", "0x2ed20c0b8e33f57ded5581cf937a4055f680b7d72d65c554c014568087d5772d", "0x259cbd244ea8c9840becd72df29e96fd89b6c39c7be72b16be9f0e43b73eef6e", "0x1e7d2f21917295fc375854225e63ad503e27e8d6c9225db35c2ba375cf4f8fc6", "0x257e31a7b6add90c617b93325bad37127f0732dfac4d0ad93331fa7999212a5a", "0x1dad54fad4273e93971deff7dc3fe74abef1cf6c302a64403fc7683966975019", "0x296a02967a5513e1827e29c77285be64682ab142d13c6d2b7eb58c0920dfd0d8", "0x3012ff61f630a0352b741e63d628ddbed474ae6993acdc0f9e314e8eca590f9d", "0x0fcb8fa2167ebb6b4f422131a8ed841306b3a0840f258d68edb477e8e1ebfa2a", "0x0135767e5d3112e0777607c1c5b91b1148ba641dcea07e1c2355c260285ba1cc", "0x091943098fd0c94aafeabf4dbc494b6385e39969c06c0a6854de0c7e688c4d77", "0x13010607d24e7a178c43d9bd68212157776321d95438d572a3b6ef77141e11b8", "0x16799d69231b9802789adf9d22468442767461b49d594e9a950dd8d5ca49e7d3", "0x1eb07b70401fe93b81df97a1f4599947a6a812e34498bf2abbeb1d256a28edc7", "0x005cdd9a797bcf1def23e8ca120b900a7626b357ef869644f28afe0c053f3eef", "0x24b20d885cd9a6318269aaea97b2469c2b60f7ea371c6a9c223eeedaecba49e4", "0x2986b0ba3a3e232129e3c444e9482584fd83d6d6a7d9bf43120a4c56ee5db03b", "0x1a188537b78ce9f663d64b5755da53cf88ecaee852442767fc16025ff7a66780", "0x08619134749841915bf5f92cc2045ebfb124506b9b25255be814a3b28fbe118d", "0x0135cf6c3cd0c694581fc2e477d6538a7b233f89d226373622781b029340f0c6", "0x04f9a5254dff765ca0403efaa2acd9096b7f59fbc20039138660b892c808068a", "0x29bcdd6c672f0a1870708d37e85130225c5fc826e9e62146313fbe1ee2c74d1f", "0x0c1d777f8eed911d4cc0e50c3f430ce9a1d5d7176800bedc36f92b7e4a685fe0", "0x1ffe8a9ffbc76d46c2ea2abc0e1fb3831f18c81144bce602811de39623d4a493", "0x216cd3e66ee82b1da658549f4df13ec3f38ce9341673c49859ff0e831827a7e1", "0x06b806883bf69388b148afd73b4880ff63bc57e089ef256e4a56befe78abdbb3", "0x1868f65214ce859946a2a86eb0925a650cc4d47a95b988a3bd98a5406faaec8b", "0x201b2cb3fb0002584beff69faa8a28968ce73207f731336a3d56860bc8d33d3d", "0x0f1c998ffd657d5af5f3d1500f9821453743face03ae2ffd055bedf624b76699", "0x1d8d584fd393d2a8c5fa9fb2840012a4e5cfd1fca97f83bf6cca4688b3931f4f", "0x1d4c5ec792d0f9e121c17ff5754eff980a2477f142fbb815901b6c597f5f5101", "0x058283d9a82cbfd8f01675373aa63d9279e9bb463c225ae7895a8c51a794bf15", "0x2797be48c99c19a141e57cee32b7845f553923b08474796cbe0eb9e79b05f8e1", "0x2b54896116cc45dfaa47204d5156075d1dec98cfca7447af4e93457ec1d9ec6f", "0x1b2fad2ed7baee3fb3d2197d6a9edca30ece42925f13481e0f780172119fb13d", "0x06b54e3fdd785e099f791c94fabfc62c3cf75963c21a75a60e65da896ea37dc8", "0x2f3c8963365a4058a8be7a91e6e451dcb1d7933aa8484a5aa7359683ccfa87e8", "0x2fd9929dc895930eb098661ed0d152f2868bfea13e8992d08a69253b9e9afc7d", "0x25d1ebe8e9ec0fc6d182b906d747498cb9fa55a298f8f9f6c9b4cc2eb326adc9", "0x0b6e6536ba3020bbe259f45ab1c38b2f5d36865b84ac8241720d28cdfbc34122", "0x23b8b4db22e8ff993e12d9b81757d1e7edc6c39dd4de47ef6caca147e9fad713", "0x1c232bf61cb7d3de8b761fda9304c24420b059fd01d42c74693192ad77634d69", "0x06d0184a21f4593daf868d9560e4647b5283892526f6a7f9c5ee2663c666d567", "0x1d96ecadc34f0ef9f5a9c10651d6ffe3fafa6d6c7107d8a92ede406c229def93", "0x25d6954f6b8e584c65d70a0d9fc5b575b5fe34e7ca66d8273928ed4b8fd19303", "0x011560d05817b7116aebc0b0e3cda650e68c0f528f62593af13587d683bf3e37", "0x0a47bc556a1bdf639aee0eafe6cf7e7b901679b1b14a47dbffa1b19afdf877ac", "0x287af493d2f91efd9e12f3bc7c7c4e0e04dfe89fa9e68242fc418daee7337bea", "0x114980324eef85f90c3877ae83a48005abbab0c3c0f7df46b3244d84019ba5ab", "0x2f2f074c9bc276d9fa172a81e954b616cafaca11090da4c330f3759c68eac2a5", "0x13d19a59728afdda4583a9e180ccb9b095f5b5729e866851982711903adcfe13", "0x260f038a5bf94790b22f2796e77d65d4b53140ab18c617af7da59bb1ebad8f46", "0x0270944854b771115be9dae3bae6007838e81311ff77e334755c37c2f8abccb1", "0x29fba9080e2201a4d09f179919d8f8e29b22b7aff11a3c3a1ba8bfd36880732e", "0x0735d5519e7f9cfafa9e943ff54f904badd3c07812a71155579d361803b0d300", "0x123d88ba78d5d633ad4f4e78ec2806d642ad8d24aa9ba8d6ea4393d38c5a794e", "0x2f2c3689a6ce7d1c36aa42906dd8b694be752a4d5643cc8635501a987e638daa", "0x0a9f37c901456b2a30e8d56d65afaf7cbe90b3a69b47112f6a909ee1c896c0bc", "0x0696d1a52cd965c61b8333cfef9f147da7cbdaed71be5fcc0a4eed3acffbd03d", "0x2df64206d9cb7e763d94c72e85da26e6147ca02236f670a3bb97d0705cdbf1ff", "0x0f924eeec090b123ae678a47aa3d4cbb2fbc33d2ea10affccbd55bd58021cc70", "0x13768e9d6ba854c557124e7ecf2e7b9a6a3bc1e25751c5db50b681b83f5e4e6b", "0x05257f1213538d118ae84b89e2adde7e4003e042836fda32a65aa63c96a702a7", "0x2eddb854c4de05814827157e9d7600e053c686346537776592c91a9c51efaefd", "0x0c5b286e46a70f81261a1799c036cff3a138dd31af847eea379bfdce8cffddcc", "0x28ceb1311ae3f2112c59eff2f1de36f027fe748e398e61e2dfb5f41605195b76", "0x02baa3c428d4f39e1dd51172840cecafc93869a5d4d2c451ef261b91d833eb18", "0x12fddfcba4edc48ffa0af927e5d29d678cad43b1e5889e496512423c51c75194", "0x1ffe4a425765acbb4dd8f671f11c3abed1e43cc8729c8d7258a787366e6935bd", "0x0518e1167639d7726de814e573f8d6e644de240190eb22da07ac2a6dd1a49fc5", "0x1088088ca3b2ec5ef3406d8b19498409253423a0cbaa579b78cfe22b8d2ffdd8", "0x0141132e639be390f54fb46daf1bc33a698da31b6e21241ac25ba91b4a7a2344", "0x2d30e4075796050c0f400440059b3b08141a3c096955c00720f37e3349b10037", "0x06c0f8d2050410d797974e3a22b48d7b4aa0f4c12db7c71a319adec4361941b3", "0x027714059b3ca2531e3a65e024d3bd46869e854b68884a6b16869109a965333a", "0x1143e960033b2837e35911b225966fb3559f869868a7587684cd7210ecace9d0", "0x24561022b33523412fb78512e39617226ec874021939d3d0e9b7a401794632b5", "0x225a3a239054ef061e664b56d65efd62ddbe5cfef9f55bd402a3278b94c9bc1f", "0x04be165a533d19b49a0151e7183868a5120a2e6422b500441050b41c486305b2", "0x17258571aa87c63d477d10e64d069fdf231a6e47d4a31ddda4d6e5f1933f93df", "0x2a9a6b89343fc416e297dbba6f6bc3d284db180cdde66ce94b0baea5ff716b9e", "0x14e059588f8f8af22297dd77bbb0112f57e56c3b7d3ea47471334d34e2181b6c", "0x08c09cf67bf4d0fd0c211298fe47ed233e6ab52ebcba1b524f66dad01366ef43", "0x1916ed4b8a5f979154a9199566a8b361cc1007551ad9db45515f8a6c0e1b2705", "0x11ac7a860d793f97870e952b32464cb5f501e215e6691aa5d4b79c1c4cfccf33", "0x2770c5a5b83ef407cb79fc9e556a310bd6aa3f081e6b45d98a7683f60c3227b6", "0x1d412d15cdfdf748f3a97dad82987660dd39a4ea932fcbc51a082233c156d69b", "0x303def2eaf1677b5c7b9cfb679829804d6734dabcd7ad3a774bbfb9a8337bc45", "0x241d6d50be49fb796fccd362aaf45b350bcfd74573d144c73e7ab42e3047011e", "0x114727a81cd91073352f7f803cf621820de779cd7c6c2b9ab87cb5b382737d44", "0x0d8184eeeeaff3b2fca1a4cdab39e4951e3a57327ddee51637dc6d24464842f9", "0x296998f1627009acc7913af056bc34280345ec6a9c27c73804ee142fe0b2b99d", "0x145b273c11c576c7578a4b02281d9b15153775884bb6e788405c4879c0edc2d2", "0x0973e6f51a9cf4fbeca74165562d7a656db8f642c4105a2841b1b93489b1e73a", "0x12e81b001e1e905f9dcea512b51ff63d55488d57cd25ff3add4025cf3a9f67f9", "0x272e7880a179f5771dbe70ae7d7d51ca28914120ea1dc3ab8429565cd6a7cbcc", "0x155b4d3a78b1d705f6ce624bf465d82325fef70167cd7784af872872b348a025", "0x09203e60c31daf6007a9ef20cb2e34eca9d1c9d93e99021e0a383598bfe77392", "0x11ad480fa72db3bc1695c9bd672d2e09a54e72ac9e8ca9f45ff8a1c73f0f75f2", "0x05fe4ee300c48b0cefd03b8707154264cd513c0c883b463944dfed3040c55dcd", "0x182a229d10429db9ff0a5258729e706fe9282c6b7ca60473ea234ca13a31bfe6", "0x1ef4d2b668a1e1ce444d213f1ad4d23de6ccbbf6cf5a93d31687e53e967f9dd4", "0x1cf2d3bf240e01691cc6fbbf23bf48d21eb9b889c6294cc18d1fb79c9b9a53e9", "0x00c110171a8f0642ac0edb07f83ae2c79d991a3438366f98c32c2d12f2f94a49", "0x0d82a68b0570ac8cb4b70fbf2a60bf17962ff2886284edfe5aab8ffd84314bfc", "0x0a31c585939669e5697c6b166767edac74e6359d364e1263134910927648ad38", "0x137c5b065b8d3a7161c63bbacd60dec9eb2e17c63dc696a5d157b648554b1c58", "0x090658991cce09af9bf77bf1fc0506346e5a03e3096921e8d436469fd75bb6fa", "0x09b309f6388a7f65393bbe50ebd6110854a91c674ea05189451cf6afd48fdba3", "0x0cd217f30eee2598caa7389d2efa182a4756fadecf67b83915aea4b0c36cebb5", "0x2b9a50d2973f4eccfe26616eeea8f7f2a9fc1f09e8d2853869194402179baa7c", "0x1d444efa271e105a83b3105d469ca1eaee6a27534b9a62cc210b19946f08e1ae", "0x16e21e081525d3dbc0f34577fd1436837c912d3924ed75557718992d14dfcf4c", "0x157b7cfd75560a0bead677843c52591d17554d8ef8a015be23e34adc390451d8", "0x1bc4666ac3f4cd1f5dd72bcfd1dccfd8c60fe3722a35f65682091586dd285284", "0x22b10f5c2194d9054221ec2a9cc6a1bfc1f4441871831d5f24d3da686d4d5e9e", "0x051e548469d19290a23fad84daedd2b5495591f22c3dc6bf467f1eaf12a09f50", "0x166e64fa7d0939c9127aa58b7aaf2bea61dfbb3138bcdf3dd9cc986e9ca4f0c3", "0x2e7f8d47107c0f31031de15f840ffc7b43b8f64815dd7c10357e852963f14c84", "0x15598a6b2c7ab91c1ba768585f11d64d4c9a3f609ace9039df753b4cf9016931", "0x083008079d5900cf73ac9f0501ceb27c3e92250eccb88d10d0e01c593202e8c7", "0x028e30096654da16fd90ad2c20080fadb0bbad109a3ed189d4238eafd2dfc3c4", "0x14eb993565894d0556189adc509b5945f1275f7078bec96997c3630b743e93dc", "0x203011c30db2185e3fef5336058ff6d9a5d05c557c3de1b627bb4aad651db9bb", "0x0637901ac6475b826f073e1386498979efba98d4b5daf92d2a9abb63b5aeaa74", "0x203cb3fdf3cc234a72ed4c8699327ab6cac0e8b7479b284c08c7097d1629ec07", "0x1a1a408f899c84145b135ca0a7a43f35eb3cb77cd512430c325ce44a11ddedda", "0x0900c26da8557e0760b971e35af5866c7cc494ac2fbf20d862130449ec41f9ba", "0x303a4550897edb795c6a63b60ea33cc5eef82fd0449b6a2119ab74d55e49c241", "0x1722e5a843482b59b079aecb995c43d6b8275e1413ec08a55f218b800fb3075b", "0x20a8aa1a0c2fb4cd10a82d702c2c30104f00de5ad99103a724deb52e9d801d61", "0x2f980d7eddab02c06b6fb20398e7a7acf6132af1a605d0cae0182294952f5236", "0x181489870649491f84912c75dffdd55cd0dc00b08724ea1fe43147e1996d8fb2", "0x1dd0b954ad2e65acc5ca46615391ae78b6dd2539576a9de4417555356f9794bd", "0x194f79cea624f2bca51d368706521a62dc473947209aa5c50083837c16eec6a5", "0x2ae9c244e4b0bce42b1b55053a4fc96ee7affda23267920a88e87f16229fd132", "0x1ae6a6a8c9bef477d15a21176aeb422be24e5d0f0cbd8c9cb37f4b9144510e38", "0x24e0e6a00b175e22407de66815bddd096b42dd73fb551eb810f84e01be304c0a", "0x2f16ab5671089f7de0bbd1e1478e45b9fa6284ff4444cefc8b43469187b83e5e", "0x19dcac9dcf078b6a68523d3bcc3412980e5519ce6db8d12b6dab3907bbd7e0ec", "0x20b0bb1f290136ae88bdbc15b3c864624b07ed3dff579055c1680b0a185f6b06", "0x08e893d8af978a0fba2a42f6bff7f2fe3a74d3765eadff49a82056d014dbe346", "0x0eac99d7af74de1ad1ffaa9b5f43eca35d6083495536c0acbe98cbaf2d7bec2a", "0x19e9e6d56923733923a15cd7f8a4350352ea308d6160473d5937e9c4b50b7cfe", "0x18e41764dbb5d20f85831a89fdc14094ed0343216f602661fa5a54dbebc049c7", "0x266dfc6e9d31040cfdd1088840fc0b65172976f58e0640ea6f5eadb28eabcaab", "0x09f1ac1f5d80d143d9cd087273a957f13c9ee26f5b76cf30d3fb73c392f91cf9", "0x1495384c593ec4da248a17aa457bdbe8cf95020159ff46eb973a6b558a6d46dd", "0x0a11a63e5191eba16f6ccb4e92bd6389c929ad153c53a130c933a41f46b6b4c8", "0x231a22a2e0f6ab20466445129d96a40feec1b299509949588c0f58a766d9b3f6", "0x003a3eb1110d75b9668d0d8a48da076e7dcd2ed0fcdeb9cc3538c11773047ba5", "0x28b52bf6dd8d0c5413ae7bda5f1e6b5d3e4548a4505d08e36f77b72629d97790", "0x1ba18831433cb15405ee724bb4281bba541299cfadd485c6b17f74fce436cf57", "0x1d295967084284a212b841ea2ebf7ff29ddcfae8dbeebd9df58b5f862e7fd808", "0x0e863567d788dac1dd5f3244564aed928c7923bab8962452bc7885724a93472e", "0x0c214a5053ea609e5608e9a6d54343a32cd02d324f6053e338b34dc0701ab5c8", "0x16ffb0d9b5f3fbd6bdf1d50383723cdd72f3530d3e7ded29883b900083c608fe", "0x20e05835550e6a362606f50251d8ac0706e2fbe57e46b4977e52e1adf3489e2e", "0x1891a8d1b078650521b08c416216caa086e0e98365aa1d5ba41d4ae076807ade", "0x01bd1319ea81a8f89e2da3f46fc7479c5efea1e4237bd5754f56f719b23c107f", "0x1c4efc3b2c0f2669cba549600ac023f7815a95d24f9476589f734ad7b94fa8ed", "0x2438e3bf4fc727a743f4c4409548240e6e852939f03e85e352c31ca386c432fc", "0x28a8d250a0a2aa2acf48d79e043e252eee15f1d1e6a84d58bec3dfaf37f0b855", "0x2a29e7d381d8d8083043970efb8aa561868393850a0f34a0a7ebcd3d7e36bdcc", "0x0f9e579ed04df85ea802b488588769c3c0e5376c42a968e8bd0b02dc23472493", "0x02a81dc03f49acba49709e9e780c56aaa9ddeb245fe6026d784c47cdd89a15be", "0x207116aee1e7b7022a90ac821435e9f7ecb94f9fb942f7b6ff7c6342a02417bc", "0x11b431f3210818658cbac818f63655dc6c31f00640c487031a7a6699b54a7242", "0x197a50af9dec2014518b3e2fc26013a44f706466d4596f06243f255ba3818325", "0x0a6fd02bcdbfcb0200dd89f9b86669bfe8627ce67454b2404d4966f1726f47ad", "0x05fac5cfd5e2f5690704f33b440e6f739fb4ff4445c5bd3a69789db652fae459", "0x27842cf8a4ebd7009ce2d7ec348ff783830acc87479ad4e401efd5e7339d25f6", "0x2278683aef662a07d427d0a36ee6b52ce9628e9914cc53bca5ba4ac2493663ab", "0x294cfee66c7b8de505e0c76e2225619066ea5ebe39af92dba7ab74b8780853a5", "0x00c6b60a8e2ba1b774f52c1f598d14cfcd9aebdc8d72d4c87db9c6eaeec4df37", "0x2f5611fd9b8a9cb052d3b6ef2b2ec32d48218862daa4e54d63219fccb9e0ac4e", "0x261bb66ac988ca3a7e2dff027944f8fcb3decb9d985b05bbcb0fc6062080caca", "0x0b5e36bdb5742eda03a1d1e3044465a751fa29be2804ee69b38c2f29438624d7", "0x1408760c6504e35db02d76d0b6a1755719c757419a494baa596e5ae0a4b31219", "0x2f898e5947f14b0655f04bce35dfe8b08aa41303f602747748353959b95d7dbb", "0x2d5fad29cbf4c420e6192ff7eaff97862de5523acd6a81ae61197e85e0f220bb", "0x24203764364f1ebcc8f52daf648af6b02de9e46293ef2f52b8956269f5a30458", "0x1a8627a7fa552c1cd073aa53fd7cc34fb7120513e2a756ff7335b6ab23d47e32", "0x19edcfd6befb3fb5dfec768b5c4aed2b27dd9311c4bd49edae8498386de5b3e6", "0x1eccece3733c2a81a006975b9e433e6931da70c649fef647f368a67682e1a5a8", "0x13a728b0bfb2b322c8af665a8478913f2f1693b39077eea89eb81de4125ae1e6", "0x1773b5b09655e9bddacb50af4f33f5e75c7eaa8f4bfa4680c4be11c71cc2abae", "0x1d91107ecdd5de37205bfe827e7800c8466f6572bf611a77d4d502242af5b230", "0x109e58922b02d172c8363f88c5b9225cc0122fb980e0d210b84d74a5abb01a5f", "0x00a0d1b2d14d861fb04c07e85f40ac8a4af481ca602bd224bacb442290ff74b2", "0x03ad94a5e38fbfb5bbedd2d3617e6fbcff4f5b0bf89329e01e8cb9538f91c26a", "0x235269a08752712471e2d8b204cecbf633f8a1b087b8d50d4386bfdee47fd0c7", "0x063d22c46f6125a208206f6991a7e553ecddeb4334f770f69715b9c31defee47", "0x244852bd0f883825948fba58c795389f82a0c6cabd905f6f6596d60b8a72e7d7", "0x20c9c3fad08a30d64daca24d77cc93e07fa9531a9458b64e7c36e2b8d5de7a55", "0x28f02c4b53c5fbb9b84f9be7f2d1151a3fea40829596152ec7a9591d7b77f53b", "0x063282e45c9b2fa5c6ac5fccb64f3a941204d8a7d0dbfb6e2f2063ba79dbc93f", "0x1322957803e814ff656281a896a1b454f83ee7591d04ae45c55894efda0d4679", "0x26f91c6326c5dba2e2332e65e25adcfa80ec44deddb1cebf62f5c3b90fce07ed", "0x1b006a8a282f5fa8fa8268174058fc457bb3e2270dbfabf1a77ab10ff193e1d7", "0x044b4701a897f684f973ef35f913c8714b23a0bc6892398d2999d5b897ddcf33", "0x290fa6dc0e09ec4d9c78594891374807f42e9aeddc710dae63c9e9a824f1cf32", "0x281b64631470b98572a677637e538166edecf6a4846ec4b66857aa8cea9d612d", "0x1bce47add587e607ed688687c0179da17c54ca73f9b4f6091f816eea1727536f", "0x15c8eed354694a3012b822620bc91f1d68c7bac0e6685f0a15c48ef58941a196", "0x186ea82f0981f8ca347f0a9eec056daba176a44465cbd85e7b8eb7bd0580ff85", "0x3014777dfb63a11a3d9b734e7a47a4d3b6ac4fe406e195f3ba32a015817fe8ac", "0x20ba24356eff7ae0b9ceff1562a4a41585aa9ca0d45915204e433f0728b15997", "0x2e6161643b1b31dc3829448622dfa6ac7cd79321ee432399877dc4edb25edb32", "0x024b512c632070bfce3efa8bd2f34bc100f0de647d0f5510269ff2c01c7f29ba", "0x0a9aeec22efd017571affa68427722a1fdea69288086f9c693ad2a42e773b59d", "0x15c908e364ab93c1611361ad84f06fa11c53c2311ffd1f4694d63b2b982c5772", "0x2562b5739170c5fa1e1cfde87d7a56c2795a1df9c0d6e500fa6b3759eca84986", "0x04135965e6fd02788d00f9ae2183f19e0936288807f48df45ad3ff1a70f69e3f", "0x1fb4eee3328ba9d3c79f1af71a38952c405f3de71458cf48856da83e06a96f8c", "0x18a5e35384d4e479459ad405c05532553c24fed90b8393f3a30b8c38bb2ab3ca", "0x0fff7f73e42a52ebbf30b6e73fd4d45c21133e4ce228f534ff6e3410b5b39f17", "0x159a3daa666c332a12c6c56e7b56e626d8eea9f2a36ea6aace95834ce6cc5314", "0x1424875221f68cbd4f0de4472ba76bde5e4c790a7aff782b4eb121419d61f567", "0x18b3209202c6757549296b01095c5cc390d7ae27b5231dd8414e699abb18613f", "0x0ebaec9cab92b182f65ab68cfab4cf7e1a80a36714bcae30798f61187a6a9300", "0x115552feff175b6e3289516c75c721e15922ceee83425938783434d12dfaf147", "0x22d004875985eeb33417b4ffbccc689588b00f5fb99c76cf605a0a2428a82185", "0x0f396a65933c65ad9b540ace1416bc4787aa4b6ca3f7f2366a4ecd95ef12ce3b", "0x00edd7d28e36173f0c3b28207ddc0b55fa12e4f54da25e7619871ca8d8439d42", "0x0d7d9009c3d6797090e6e1059933e21362d2cf037e251fbfc2b6e18611875baa", "0x2e368c153fa35a3d9ca68c21a7ca58a90ba28ab252a18efce5a2d59951d7e480", "0x0cd6774ae72e071a0beedbeae7a449ec52362f76e5b0e0a4419eed187a31bfea", "0x13c25853d9680d2e8dc8c684ef48b202e7a227592f76010a20d593ed672029ee", "0x17a717d1e3f5854fb59b7f09e6f8d513e32ddb8946467f7080beb8ca10fba076", "0x08691117ebf4e67180021fbd6df623ca48c067e9e890e1739a9672a2eba49ec1", "0x19cad12c44534134c3feba2082a29dafeb550920f13f376ccfb659e835ce8ab1", "0x0b7c75d010ff98ec7b5ad1e3a17a1e092c353c544f8e7f707f5e816519fd6fcb", "0x2055156145c4411db547bef92efbfd4b8a1bb5fe2e13193e0d9c07f39e5875c7", "0x164afaeb4166726964fe5a079a1b332517980c47a33a04ce22f56c33d03411f8", "0x2936c50982fbdb0f56cce6d4f575a31665fa813d72252464c2776a70ecbc2c6e", "0x04de9f4b9d4424cde860ad5534daa8397b1b83835d83f00372fac4e376e6e907", "0x0c6553007546816e86c7d90552a6ec216f9a34987be622be17ae4eef454d5a5e", "0x1a7041d055f98dbe2d87333de8a3d0b4f6348f4eb2968aec9cbc7dc3342587e9", "0x1467cef176cb717eeada2b84230336a70ea45e0f4af5c55a44aeae23ca563a48", "0x250aadc3ae989f3e82f4ab1af04ea5ad3d92a98151d06046b6354f98b046110d", "0x0553972aee593ebfaa45c932bcb153e62fa638167b46555f9a8a74a361f78afd", "0x04e5656b267f8ce0b1a315f9493873eea35c1193f2febdbfecdde494b6945838", "0x19401e900ace225941f6c581824e338ff98d33f2f0b43f3b74dfbc0951eca86b", "0x087253b2116e8fcb45f8eca1b3cefd921105e9cefb33e3cc0bf7da006383b80b", "0x135bd80682f771572bf574f3f714f34105afb21e87d72c40a2f46ecd8518ca77", "0x11c234977200db6c688fc254053ad3016390a025d0ca0975d1337bc077db38cf", "0x16a5b75b970e48a5ec3eedd2dfb08d2b6c95b732dadff1e1c81e81a3dc9b24b8", "0x027edd6afb362a9da2f60335207d7296d0359d339d418602a8c27069d167d23c", "0x0c7a718e63c1faf872af76187c5c3f8ffc855d4095f5c55dbaa00533515b238c", "0x184d77c3d6d7236db32d9a3e48c95fd448a5a0c1fd3e5ad15faff8baf1039019", "0x2031859dbe2a3689a9975b41196fdf2eff1a587a9247361e78b7b029763d63e4", "0x305690c19d76dba5dffaecece28218096a32980cde7a9f4205b1989fea80dc6d", "0x2de2fb494197d9c1f1451641efc2473b85300d05c0d27e7ed1816de14c94a9ba", "0x257e7ecb38903e44f1a558b49fd0022c3bdd932598472c8a12602b7a020e4c35", "0x032507176faa049c0dcc74a8ffc7b327ac29743679f21ff553170afdd2f04bfc", "0x26720296b4837059257a06bdc3b09d26928102cde57e23e91d1540cfefc4fe9c", "0x1af78e5e918963050a415db24ab45cdfd81539caf74fbef4b800473a6235a0eb", "0x2fc7b7164ff4096593f45cc674765db55d536cd4e86711085fc05bb2a7cffe0d", "0x1a4ab0f4515b49bd3aa4adb03fffb4514d9aec224f6768315bbb2365fe99dccd", "0x1de216e2fada4c24d7fc78f587496c24a8eeb7aa83fcb9cc737919d9eb3d85ed", "0x1aa330dc4e25a8d0c910bfc87a7ad051e48c82e62586179b18c2ce956c8b335a", "0x03d5fb1caad9fb50491a73974c8dcb282e868a605494dd7a1ff9b2df16b0cd6f", "0x045e130424d8e0d943c1188f9521a6f799334f57dbe62cb05ee469438e35b4ba", "0x1fafb6e25f7e91a4f20039c29e947f863c090fa29dc5664d9f8a69261327e4b5", "0x287a56018cd08f5d6293e1652db8cbf40249cdc759a84dd7cacf4979cf4df559", "0x23b3508c33e9cd373874da82d6c15c250aac99d33de516f0351d7c421545057a", "0x1b3745b04ec0f843b9fd872d6dee97c8ccfe952a3617716231198d8bd837f44e", "0x2dd389f08b6fe3ad079bc9d1daed7b1698011d74a913502bc7c7a7e1d739fdee", "0x0a8cddb9be00c6e178f3ec831482b8d7dbd7e91b5c8f1da27f1386068e58fb14", "0x2e89a90cc4ade3e2150cad862b6cbc4ad40b8fe6779a8e61efc4827f5e43aa55", "0x2703815217d57fb62633da64e4777229bbb663fcca7628ea35101a5a6ef991c9", "0x2d1d570be0820e8d90f6eec8bba76821e90ef209d705604d6e43832dc8760295", "0x02d9053b8863ba6cd46acffa0891c0720bd9b78fa1662bc0f842a1e05de62400", "0x17f4b26ff311b1b4d54e74ffa45ad283565b677ef40e2e4e19a635d638d8d344", "0x2e68020ca82963085aefcd925073a6427050e04906e7930c133f1889d123026e", "0x2574c30da10c274e658dea82f3d5afb58da1a834cd25b7ffa5c59665300b1eb9", "0x15c361a25585226a86655101e0f0f3136c7b777521ac2409e56e666ca449763d", "0x0b54e1c8bfe294a08328395dc6cd3a353108221161cd70fbdf118c3954cab9c9", "0x1805115f1d5b60191ec5a8733ccc5b1b5b4a32d81c70f23982df2a2599528916", "0x2934d73dbfda4666b331a0cc2f38f7e83ed8093cf29d111ef74a7a8d7072c5e8", "0x00488ec3a6563536696134d8a0a51a872cfc4aedc458c44eb6a7235af9263c95", "0x1319d9b4fb3bd01426ffcb26f256b4f8634e0f18f9597dac37a0f5f9a00cbb47", "0x0ab5e82e345e304b1a8a0f657fdf3fe03efb006b2e53fc8e776506796c33581c", "0x03fd68ff74722b09cac4d58b377e0818671d9ff52a211e449ab162c3d0cf875b", "0x1e7c552e5a8f3605609c3667bc1f8153099f46ec8edff78bddcff7e42372d009", "0x069952e9cb26d8ddd8ef84484f4fff8495601489ddf9cfbc86731ca15bc2b42b", "0x069de4322f390fb4b3c4116596f9a8f51b00f2ecc9ed53b8ce87037a5d8cb36c", "0x122e535351d03790b9a1411ebcd5958a16baf61b01c106f5f158461dba427258", "0x22ff22f011f8c226ece797d1e36b1201449338fbd523fc46ba52fa48b3227b64", "0x1161d30490f1a507df1a75be86a5df94d448a224111f3c313ac3fd273165388c", "0x2ae2fa2fc3962f22ff6bbd4376b6477b2ace3fa963586637d700ae936d92be09", "0x2a9dc09bbf2c43f2dc75ab6f9bfed365703a43b9c358101f7ebcca2082653b20", "0x2f402e60aed9c5fe85b9face12c2a770483ace81132fcdc9fbbc7eff4874c30b", "0x14f352e9dca46d65efe8bec37b89a573f65f0aa8e0c753bcd10d24fd045fd0f5", "0x13c70c3bf42ce34c36893390500b82fb1486a30d3921b4ecb1fa47c085f20fd9", "0x118619bb14a53a21a1ecef9113b10e7c6b7a36d3b38f7e6ce5abaa97fe96bf52", "0x236a45b272320cea6a74280f2a954e3b157174b892d5f3b2ac4b6e5c4dbaf38c", "0x20fd78a9f662d3be07c07b99e4d4cb804974b3fae1ade638d8800e83490b31a1", "0x04992af8b903034facca4002586466136a675222093ac348a7784c8bfbcdd9a0", "0x2354b2ec8c7e8e6d1a93f7307342c7b66dd6cc9313e5db3d06c380feb249193c", "0x1ac8c9558885dfa7d7df490e11b102854df3de5b14c5fbfff2f7aa3f31fd2e28", "0x06367597ab7a2e533d99a4447726388c35981b997632e555afdb491746d83d2b", "0x1436363c86ce4a176a882bb26c4b75f5ad8da469935a7fb3be81827d0b5ed494", "0x251e61d00ab4ef232c33d55a73388eeddd65e3133bc4fb3edc709797e9529b18", "0x273656870c7b8b89d38a63a9485663adff3c46ac7d43e61606e26f5191cce0b9", "0x2ec2b54c9aa440e0fa017bc29135eb124aea0970864b8f1d794dfb16f8b8cb16", "0x134c654f5a38eccb1070a5a78831bc005ba6ac7d7a3b76e555580eb1233f949d", "0x29bc8e34b1a10f97997502440979b118c5cf2af2abd97241db406947505080f2", "0x0cf3112832c45c48c1dcb5ed866a51365b5bb7949c0cfd9aadf67d125d4f3ab2", "0x078dce521d3bbaaae5c79c768ffdccd8b04e111d8b46c1f2ffa6d2e602ef31fe", "0x162418eba2b1930a1a9a5b9fe0ade663448188e25b28ac81410ff08c22c70f57", "0x0bd3b4988cad29012c9dfddc9d2d75812634ee0a07456435f1a0f73c02ea08cc", "0x11e33b5988d6b2e5672d58c5921f7b1cd7290635675b9d3e0cd07e81acb2f58b", "0x072bf81a1308cf51759f27217c968746b32324bc9d429270c10e1671a6f3a759", "0x055853a33d1150e0e106160fe1d7fc65ba18fae5cbe59e8fb6bc8cc7bd663216", "0x2083fc1ad350d82f1d43ddd5c7fa475268c2927e0f02e6be71e5090f82137169", "0x26ca79a855958e45e1a89bb4546f838b67d98dc4c8c92bec26a0efd674ca6211", "0x09c669aa0e831572be5a542e8498090ef693900bb4d79a588aadd5cdcbe62696", "0x0261cb90ab796a6235a92da9adebbc39dcabcd01874af5d63d90d66037ba3b57", "0x07c14d288cefc862399a1156e7fa72defcfbc0466e0768abce1e35366450404a", "0x2ddcd6dacdcbbfaef37cb2d4c5060f0ef36f1110807fd81c43089cd45a26da1d", "0x162d3c3fce8f30204c522782c0cae66f911e432c8b4476166b35b5f530d3e8c8", "0x090fbafe1f865f43fe3a21609b7d8459fe348d60a4c471dc62a0afc555cc2648", "0x1dbe8e50c293846305c51baa3473e29dace57e6e1af48fbb23d81556eab5733b", "0x19ffef9bd58ca547ac02f4b953cb941def36fd834c1f5ec5a59418b2d22df911", "0x0e29b047951b6805c19b7a21ac7d24129ca8f8e2b385731b2194c1905f21e401", "0x198d3baaca379db6105675052a55a31c1fd44a8773a9d7c789bce06e07719d32", "0x0ee8deaf28778a46bf818104276bbdd9bb48926ce699bd185c649a8b4a7ec16c", "0x0303d98318c186c8579d1803984fde3284744ab161f14bc457ba045f3c1329af", "0x265d7fa88c0af3c2ddfac0db3d464c31df095cda96dc391473f833acf4f64807", "0x0edac8d8183fb0ea31af3b383ef9f921a3c293e8bdbf95598f950a202a677cb9", "0x29fa89d16190d1634704cc096f030dc8cc7c5c9f86d13d95976b6f178ffd2154", "0x234c3e31f412fc1fb7c9a5b70ebe31f33b5987c73555fc0e4ee7e75280d84264", "0x2e053dc186786e4471d0ac6f5e19b33f638dc8f6439077e2cf368d14d4fbae61", "0x1d616ac50587ff0c730b1a099a8daa6e05c32dbb5dc36649d9ec0c1feef2b533", "0x037771eacdc853125cb0bc917610c0c3d3b065560600b4aef883bd173adc47a0", "0x031c46216616ae3241851e82decd045f40a89607c578c6248098b30c546e1e76", "0x00482d1d2987d7bfc6d256af3072b41696038a557c9867a8ad267027ec3a5bee", "0x2115d7cd1cf9a84f43fb6426aebb8976578ff3e5646f89f240a48acd16f0fe1b", "0x26da8474f5bfdb9c88e0d72f32227af2c5f4b6340c8ffc96b0423b1172c7f79d", "0x0636db5afdd335e31958a70e694e17245df7fc8d148d1cbe19ff880e7dc0af6f", "0x07096b395701facb3492ac24564c468026e587deab49ef63c528f418f7e471fc", "0x148bc6df9f364b928d68180aa6a2667a29adff966cef3e340c3680803333bc31", "0x24dcfecbe203abc67313c8324c6339a22a9a1f72fe944591c8fe003ff2a19620", "0x20db93b902460ab611256f28dfed3e7003b3d3fba36d7bef993f381f3f2230d8", "0x044e39201aa990c4e32c94409c1b1410fcfe511f2f5abc94216b0d9eeaa47a1d", "0x2aaf90c30ce60e19085a54153f4675921b8e65e712bb4b0a040d4c11ea6653bd", "0x23fa0908d7d89f3673ea140ed664f7d1eeca765fb236ca8a78ef2bad304a9cf6", "0x1f19c141089be7fd73fd0bcbc3e672f924e9d97fe2eda429fe25f5f1f8c1d477", "0x2fa5b884aa9746b07e87209d1023582478603a994f1ffec3c1d662fe09632dfe", "0x272bd4357d44e2e2c152f694efbbc238125f0f534fc7a8ce7803a7e77a43b6ff", "0x1270fa5808c0ca1433423b90060c34ade01f3a9c81b76d4d2b3cf7158338639d", "0x1b47f9d3f2eb0fcd707a1d29c7f0fc40481fb6bd2e192571358ad06e42995218", "0x1661bc3ed40445c9b8f5a6b74ca52c81e3072117a6b9ddeae562f6f51bf9b8b6", "0x0038c8f5bba73df7d9aad4f06775a656a8eb780c0b8783fca440631d87d486e0", "0x03797c94554c71421be0ea2108bd5dc2d6172f9c0b51e818cdf0c998e7658b5f", "0x26f801cbead2c26bc2ee66c9c561d6648f9dcfba02d573316998070d434920a1", "0x1bd9eb0781aedb96c9799f709a0caba80db0cfc155c437d27ded8641de18e61a", "0x1485c83f748186c1b8e237eaeee6f23e093c2509838436c084c6ef0b88303feb", "0x195ed64dd0a8134694858f96fa14afb40218dac40a3304762325b8efe03a9485", "0x2ee31061ca7160cfcff414af67dabc5ad156a9de263256b791270a6acf9f0969", "0x15d0f0fb824860bdae5f0189bb09ce4b3bc002a7f86e93bf85678d5c9bd517b2", "0x0bfb2fdc19db2d9d7eaf8f2549ac9aeb8e9dcd83c91e67a047d0fa7fd36f385c", "0x179cd6248b5c0af277b392c623b744f865a8b1fe851df27c5fc2a47a0aa1fa0f", "0x19f1469f9c81707666f6db900e8d90123b715e74ac0224adc357ccdea8737fa2", "0x21339a2203afcc5f2cb1fd56d2ee9179637ce45abd2dfdc9a7c561cd7fafb68b", "0x0e65726da6be88d5f916154d202ad3dbe3fff5d65ebdc29c7c97ea82d9987e47", "0x02564e8b0fbf65f1436a9e716a5ec7e079eed2d6db71b7d94a2f2434e0068682", "0x2a236647dce4e45c60809cf6d1603baa4362953ef852b8f785ee5e959011ea49", "0x0174acce9e73a9ad5ecaaedfdce776d4d1c6b7761fb1599ccf97032a59c5f3f1", "0x10cf2a80803b6802cf2a63a37e127b556b70d65bbb61657f6821ca45a06f240f", "0x16167f9d1b3ab094f67d0cbbf40a315fe39b45e4540768f3fa35dd6d55baf7fc", "0x137b1b07cb60ff07b21aa151724f9bc6a50e4a17a68f2aea512fc1e93968c897", "0x00d590eb7aaf8e30dced18ca317ffbd048a9b0fc80d37c54a8bdb7724d8dd645", "0x2d0a63690237ad3469abd472e450c11fe51ee1440d3bb309b2295cb954efd3dc", "0x22d55e04ba0d855f42039d18a1dc14dd16305ae516c689d5141a9ce5720b8f7e", "0x01cc71169f322b9595897b864438208b66a71902b73f9518826158d7145dda58", "0x21f949a16acb35194d9e53fdfc5ac01f3491775170254c2cb4b91772f46636db", "0x14cf5351c14c087a59cf5fa5303c5752c33d446b5cff317e4570df7d685aaaf2", "0x10f13bf1727ad7e9069fd6701506f958fdf59fd2d08b0fc5048c9486b43eb64c", "0x0632085e771f74df8fcf5ebd07f95373f832cb41ec980897da8a860c05e9b0c4", "0x16fd673aa4b499823fb173d9efece6e6b604ae03bd5a8c677d7aebfbd73bf592", "0x110da915aca9c87a2c4614b1ef6d6f03d8227d6c3e2d63bda028de1a580a438a", "0x1e6f125f3f81a4545935e520f5ebdaf6f99a0c03b485f582fe23a53ac66c1b8d", "0x12c069a83b55b665aa90952fbfa8347ec157c11539f49640d4bd2358da589b37", "0x2b784e2f52c3b9522dd48baf6c3fe282e2682ecc50fb16755ff8a265ef6b882e", "0x1494861baead0058801d47ef56842723c6b96d04d382e47c45473eedebabe484", "0x09dc71751daa5a14501bb2c3cb8b22953f3a3c3c88cbb77b1931181741dc7095", "0x21d3e12c5de6525d5dab5a15000888e8ce36f40be3b49f03b24cffa70c739311", "0x1b0e70929f5772f72eae56c8a272d3195689ec4688d96570b46e19fbb66872c8", "0x140fe4a3946bdeaff52c0cd3eff628dc40e30af8fa8534c67a6d07c958f33df1", "0x0c7349dd6d791d4871433b501fc3c593352fd6995dba4fa687f501ec8986f0dd", "0x04b0a35cf626c40f82a1f07b916076c0d3598b4414f73c9f6c97442024441a3e", "0x1db02b68964ee9cd52a2936cc783cc12f88d98b60e858cb36366519fa012b388", "0x10e2e956993e23f93c073c7ca4db0bfc7ae8e558f676b89b1ee66086203c0596", "0x1f45de365f1d93cf840280890e369ef6e4c5a98b9a7f8339ecfdf604d5e6f82e", "0x1cbb85bda895dc172232f7d59845c6fc171016b82c91d91f433261fed4ea9c7f", "0x03d3f3bb86ef161295f9134bfe58441dd72b6461b5fbe2d5787902e3e5ab1de7", "0x0fff02814d47b34516dd84ed17a200c44ad72f4080f8057da77060d11471e9ee", "0x2e9416d3161e4f7b023ba61c8f6635617855e308d6233b4e85e941f7a5e6c9f8", "0x05c70ee3eeb80db84501c1544c24161ffd5513bca5cf2b5c740011e3793d8ce7", "0x0666d733d249dbde4fed105b2ea2d6d4b991983e2b4f58ad54910923d0965dc3", "0x27f945bb22dc180a99a596449e83b32dbd10e78bf4367531ec11e4da936f39f6", "0x12e27af14b7ece9b8bcf7bc1c9241d0d85f9fa47c83153836e199eba8961544f", "0x0a8d6c9fd80c799bee076177a1f9d7beba446ab13b7c79956f07d994677946fc", "0x08a0d3646c476269077062dc3c447553d61a4648f306d20e56fae32d109886f0", "0x073faad575449ac35cdfc514717251bf168ececf0329752db7403c5463ecd84f", "0x22ee22f436078de048d593f4afbabf56f4a3fd4e07e8a6645fc68541f0e5fdf0", "0x01b50235ad3b1a6f6ac75de3a9f75f4f39866e6012439c9c0179ab032c4266a5", "0x2ecf4f3c84f75ea7b10ec11a6b2596166ce9b5a28a526f80cd02d665226a3feb", "0x27ec7f3ec5624cd3319ab85f7df1380283a59b36ebf18ac38bed751ab1a04bc7", "0x0e576250e1560c77cab672af14ebf856402468d2e9b0ac03f3cf29709e13d931", "0x2251f276fde77c998d42b5dad05aa25fe98a908200b440bcb7babecbb77e7ff1", "0x028dccf77c467c7818192d4787e3848bb057c49be099f60291a2f1e48de1834c", "0x1b2dbe9236f5a27ed5c9e3b70e099432d324f380f39158e119069f95921133bd", "0x0869920b8f5026cc43cff18be390f74c35586cd2b6943b29ef7b17beed277832", "0x16f4fcb1833619bee667206a2c91cbd91055b10783059b0be52e1b656d67600c", "0x2a50cd6e6942fca74acd134045c28838838723fdf651da02bf3b3d7741390824", "0x2dae4ce829a70182dbdc41a8eda89651110b2c99c60565ae336df2bd2afbdb6d", "0x2dbfd9447d4214f9aacb9f5d2924d545d07310230c1469afa03b283b8c7ed93a", "0x10e7bad952c8a632ade1d077490bf80b125c1a05ae4ef7912e69f152d6406de2", "0x28d4ab3097fe8d0377f4a2678261166b5bb24c51f04d768082eceeb3c6b1fb43", "0x0772b1c14cb95aa6b39de1d4c24ecb7f08d26343b14ad85821ba29bf5983b263", "0x1856fa356fe94847f57602f5fd41da9d4ca404f858e29e7237568a8f1f52ca05", "0x2457b8229dbdb49c207e5a1208b102b0f86c9f2a76b4a4a23c0d423304bfe9d4", "0x045fbfe6b2c8759a8234e16f0f4c37f53312596fa90b2b7bd27f0b55dc5aef77", "0x17f4e29758239596e70478aaa8b63ff126a74055ac5b80c775c0f924d80f2c63", "0x146cda97d41fea38bc63c955144a65223d4f5652c51bee160dadbbc681252717", "0x15cccb291e3b75673baa8d2c4846ee56da33ddb497661760c4bf19d52503ec2e", "0x0db560c5e93ecd131b7b26a4b777c28234c9d15588cc5e5f2004880f5ed76d98", "0x277091f4d68c4dbc1b8b93570cc249973e892f48db3c356a965816a23b286841", "0x230c0878b8e670672f23598b7717cef1b722a448d9d14e04b81ef722e72bb505", "0x1d7aae3cd8dd3f91e27cab6f15ba2974fdbf72782825f99405a50c13a004446a", "0x2c87e4b81173ce8fd99c9bdf2f0c4bd39e3245d84cbd89d79d8e9fa7de963589", "0x2b3137b3a764d5f3604232cc17dd2e8ab96d46a7df9e68419b4e7c18ebfd5a8e", "0x1d92d102f4f430d0e18948b9701b544e5413d0b5bb1e056ee2672165bf52459d", "0x0bff74ca04e6568b8feb6a03494311339d7490a75d073368242784ea71f0520f", "0x104fb3aa7fc80f7cd356a96401b415aab91c4077426fb088f2aa972822f9786f", "0x21d5c5327f9c0ac66eb7da87ba7a63a24e47d8e03eb49817ab9f1070d864f603", "0x2f29beb28120d9bdc4e147946cf7cc260bbbbe5ea6421d7d3bad99af9f3b16e4", "0x1661d9d3ab98e7204b2355e05768d6cf4367f30f1446d8cb57576c71d8f83cb3", "0x2b406f2b9f13585e0e5e44db5210add697cbd3f0b523249a21ed63494097bcf3", "0x09d507b50072650b0ffc5c36a63a35968063747bd70a655c9f0e07b58ae4a881", "0x17e38db767cff7dfafc813e9b6773e75d9f1257e8bfec1ea9e8329e80a87a7d1", "0x21b5c11292bac2662798e6098d0ad0f29f8e6d826adf5ee133c21504ce0ab2c8", "0x035e47386120af666c32d7c4fc87052b30ef18cfc2b061937e935b0903134fdc", "0x04f981d3a984ca2d85f9581d7a74f859b61c3e0136d6c450d17768ca1987ca96", "0x0c2a23457f590b126af6a4c54d1ada810121f4cb4975d8956d844cffe0a5ba5c", "0x1b5ca14cd976dbd10e76b12b7bfbc28a54ac8afdb669639dd4c5f69f91e8a9d3", "0x183f68d1a9dd706109a8936faad813a89cf3d8473ccdc77b3ce29333b7aa7aa9", "0x06a5f95d98b5573df52a7cf20b0e3336680db5eb7833194e82a92ebcc6ab03e8", "0x21403b255d1256c0c736ceec52f224c6b763f8b6d7230b295b4a14e9081ef6b8", "0x2f0d6e5992b021e6c4806e078494d985335a44bd043c27ec8fb96210c733a6c2", "0x2766137fedd6013d86d9c93d3d8e05f9f7434aa2db80d444371ffeca8d5461b1", "0x07292a1dc8afc94852dde4bb513ea938096efe1ccc0b60f53baf031e64ce7aeb", "0x0f64f4a028e3419e451380c4fdbdce5b03ff40359207f5bb119c2953433d52d3", "0x1c2b3c6072f344c7aecbdb388daa18463eab5cb5943d2c57afefab51824b37ea", "0x12cdca57b94c8aa6c214703d5c456dfc88159401e7f66d1481b00f36dd8386da", "0x23f505ce933fa0a7486664fb00e5ca54b685208dfb4999dd346e4f26a697b807", "0x1a84bb82ded6255c6ede37585e4e28fe787d20844df3094fd03c82c6f2cc0b97", "0x10a6655befac54448cd2e0e7e52a56c178d3fe670b11c58b16109fb759f4efd2", "0x1a26556d515195ac28f883768f3ea67904ec23f742ce544fba2f854313bbe14f", "0x23a8eef087916f1ed3df07f7a60d9ce2c2a196d4e9c4231d0e9bc16cd0e3885f", "0x109e59cbba700e22ee2fa0b85105e52833c7c70bc6d1e918813aa2421a188e3f", "0x1639528dab1dd1f0e9945b63b79246d3e872c0b1bf637a3b680d98689d997759", "0x2313e8d331cf2e342e132d2a75ece0e712afad8b0bb32185d91b02493c876796", "0x03e96a03762ad8273fb05818ab28cfad626ab2c3b01465f8c973b4275f2585f6", "0x0e318637b7f15366c44526d3ae3c0d33bda12c294a4876988c28d09a7f7608b7", "0x12a1f1dc357dea2da4cd6a6325cd2542289736117d947b3bf02d32045085354f", "0x117374b586f4692b1682f8d026e9ec7332a43f7b0929bbd51543e21b3303de68", "0x2bafd7bfc204d9e55b8a53b5641e476ee5fc5113d631736b7bfaa349e618dc24", "0x08d075c84ba48cf35979ba012c379abd58827f1bb562155b19bca5a09ed0be24", "0x2b0785443a2d5deee66eeea2b3f8ab317dd37a2358d185dbebadd5a336676243", "0x0af228650aa58e291b19b511225c1f0dc11c5c982d9b9ae57a3e0ead52667acf", "0x0b4e7e3454f2b9217698632fd31d95a50126394453c89b6945250f8d36ece0a3", "0x0e5f276c143fee910138e17115becf458758ce9bb812d986c7a89b297581ac79", "0x241341f84a8e31629592e3c2a5a33f5a8f853f610df38842b80967f54eb3d30a", "0x20606300d8b0643f6c0cb4b4afdb6d3503efedb23d693b1c3705cbe46c27fc62", "0x0bac99db56310e7df296760866502bef6fecd4c90c17ee5dc13a704d17159622", "0x2171b3c348a2df153f26768e206114b0c4968c3c99e8fb9e7d5d069606398f83", "0x05fe9945cea71eb802226fe6ca38357eb73e86a76fab2f66d88976c822419fc0", "0x043abc2f359716a41d6c5661950fa31ad11ced0eff1ade02d43af23dde903bed", "0x2a1d4d9bd164d4b3dbccc77591b690fc7fa7b07e09fa5b2709887062e44a93c3", "0x2f14b4a9eff419296a645716b4022cb6fc3a8f3c97cf077fa60140cdc43bd4a5", "0x0865168248c7b18aa9b38c76774d180949daea2d647fce0f839df5d749d8548b", "0x26123a0ea393450f6fea67f7c11acd63848efd02d07380e364cccae9a6548d4e", "0x22c637ff2907aba15ccfd3f77be12ed68fc32f8be96698ed7673e881b712d43a", "0x117fdef07c59ef9c9a770756027104730ee9e6b4398745393804a176268b8a22", "0x070153c96b148cc400f9553965366f632ac923fa2dddf69d3b6bbe503ce96296", "0x1e84c7981ee7a8fd3f7f2050c364e921fb310a075a3ae817c00a77f873bc9011", "0x0661ff0cde6e581660f5fc3a181b00353bd0baca8016d6f75fca269508ab8d41", "0x15beda5d1eb94bee696ef86d0283ddfe69387fbf0c0ed75f851eb55c9c97202a", "0x1442078783c42616f54d9327f5d43d659713e2c3960eda452dcb89ec3e503359", "0x0260670536ce7e64cd31c97b23d5b96c494f93fb3b1c0a9d1ab7de4dddae8796", "0x203890235f209fd4c8b66e308a8702e964c52c2f0218ebabe1db114e6a710817", "0x00de457d3fc9a6188d5e936679da8606a114ce54513fd11dea8497d55dd0844d", "0x0825f2c42df2ca6927ef679536bdd0d813af3070a5916b259eace7f21438ee4c", "0x2fd5b16f89dfebeb30841632b9890f6a5681caa6622d5cc4fe9d3ec8c7a54306", "0x102fdc4167bfb4a2ae4ed738864e5b5c1f3bfbb46f5c0ca926a791bfbe991c93", "0x0fdbaee0a9aa49649be987495cf7392f4857a04aad29ff25649e0123a513cd8c", "0x0959f84709aa0b385b7d892592d1b6e177bd8a8398ffc6bf07a39b7c0c48a30a", "0x298668206446e92e47d41144e2f4c5d00eefc03da20a0a2a303e5750ccc6efb9", "0x1a798081d88ab9e0bdac032702b4486087383d5ff75c0d68d1f8b9b98e9452f4", "0x23e94711594e7e4c671df90f260ecf63770a76352cdf5f471ddc31e8e0064a24", "0x2dede69a440649fe17322b8bccf4c1ce84b7e051bb82e99b81407ebedbac7028", "0x034762b44e47bbafd5ae3d7f8173d2aa0c1da17291370bc2f84659b4c80f483b", "0x1ea442b0545ba6243d92ea9759a23d73285dd99873e8c3657e6a006a3ce7cc25", "0x2f53038432ee14c75222813f3380f02ea496d77cb9bdcdad3d3c85ecf9e93a7f", "0x19d7dff298825937fb7c4c17d23d53119ae96ed3e397b1df7180fd304461b50b", "0x1e71ffe6e516b57b4822f537f03642b23201e42e5b0cc2239733067ad89023c2", "0x1dc46d43c2a715d565df9e9485f3dfe928bd53f8795c8b03a1862773a7cf67cf", "0x2f5469db95cb8cd752a683e4d2870809c1abeb2f84160ff21648151f7b3f0188", "0x2739dcc2e48fb6db002a2f0d724f52cd1700374816e592104575ed422fa2c6c8", "0x2fc5655adacfbf8103fc58c8cb5e10dd30e933ecfba2263b087a61f3868a4a4f", "0x10ff844496fd5a92965630f5a5d51f67e5b6e36a64b2b51c28bf4c7cab403abd", "0x09b32ad8c1e10c31e9264eeceefd619e8129d9c305303e8ed4dc0cdb522a6ef3", "0x29db150d367a5323c352474bb55f235720943dfd6cf968c34b73fac9fbd77822", "0x205e44b540bd357aa8311f36c792e9dd500a3a49de4e367eb885bbf68862b56b", "0x1d6b67db7f8b7200a82ffbb2bd26b18dbd96a53bd83c5b4264edb905d843feed", "0x253677541389370bd4233f8067a78a69d6e9e596f59e282697837cc1415d989f", "0x190842923eb80f2b220cf15e3f8245e4a3786ef2584fe60bc3e45ca34ea43802", "0x0f25ded631f016f91448fe7aa2d0d13dd40f99722c508085e3148774891e7563", "0x1163738098b1c787b6ecda0692f277db4daf7872effe8a9ec5230d8d988b7bb4", "0x11600f0ed3eb711dc6d3d9a0d96f4ba3ca2399bf9249786ef73900c9b34e11b4", "0x1c8dbf5547d551e31a77a502b1e0589341a2fb95daed81c5028fef4e8cc16acf", "0x2e4a5c1a55787bdc046bee70f4989f8f935de58efa4890d813855631dabc9484", "0x1d6035c010bbac3bcc45493acef7cdf406e2e876eeb32a8851f6209c385a78c2", "0x1d6b6fb9c2f187b1ec8373a18d077d3563dc1e4829c73dbc656340ae0c61b2ca", "0x28480ca625ee02475417fbf4fc651359b034df55b56dc62eceb9a79bdbcedb96", "0x0c004ed9c509fd77f0f9841f39f4fe11ad199277daf0c4359f002bc78d974f14", "0x219b95798d9b2ed2d230732cbaf4ca57b7d04074319d71a739fca9b4c083bdde", "0x144f1472c3c7a639ddae611b2eb5be22ee6df25a859a05292ca8307f8618c3f3", "0x2a688177e96545cb91f9cfbb44a7a14b24376781097e9561314cceec16c78b7b", "0x24c898e032f33d7e0748a544160206258c97865be5489896c9790acce9251e19", "0x10abe1e0df0aab96d5d73704068b921ecc1dcff78d605a13727ce9dd8b0eaee8", "0x2e80ae39eca1770dca35a77a48a991b6dedbf54924618756df064d4b33f2b658", "0x15e39e8f8a4c7f890d0cc707e28a696ad69df5b48fa37b74049b50791a22c272", "0x2d5e7a36fe68b184552bbc452beb476a96c7a85fd2196aa9572208a2c02a5632", "0x1439f040b4c907c5082d330ab439de47b4b99f1179ba46ac20112506a82bc14a", "0x2ec996b247a0a8c1682d1d0900f049d70ed0b01e169e75ec27d769a160e06c43", "0x0124171096fcb5aaa5d1e793c53867134ff1a49c6a90f2521601c4e07bc3495c", "0x253ea269e4499bcb0a140b90cf71cdf924843d35eb286dc03059647f7611a1f5", "0x083c4fab3c20577223fac6f35f8ed59bfe36a4702da514914829bc1ad979217b", "0x2284f546077f31542f71656a454d08bd85e080db4eccc44490f88dd89d191c41", "0x2cfe51e414d5d94c3e2a46358c6b1fb5ead77ac14cf7a6f53b460a7058a8393c", "0x1a85fece3b27ab5241e2a72032ed6e7122414bbee90fb40721011aeb30e944f7", "0x10829aa85b64078a84d4b8b2173e0cacc3cf1f5e3b8f1e1488c1b416bbdcb8e6", "0x0475de7d88dde94421892d8c48683402431ccac412efcd56fed01bcdda39c5d4", "0x02e8264478fa612941193367da01857f791b377e2083b3613a5b243cf38e65f9", "0x13496a43dd1cf974965170a2d81bb480d7161d58b5170f5f134ebe721029ef0b", "0x259a81e924ed46c5441edc5a5a75e6c207f73c343e6850d7aef9839bf9869832", "0x02d2ded3e58eb843eb39a3344829143f506dcf9e74ade3b97f2f0dc5d977914e", "0x065fe7a3cefd7dc775bd96d31e758619ddc371df362370eac98599764bccbc71", "0x09ce956b584caea51c5b57a33d13773b71ff03c31fae9bc149a97e281554cf81", "0x1c135b8055f27736b4c89ca09ccb72a37294e06194bacc54deaea9449ac17c58"], + ["0x11e27da7b7ef964948a332974d07cceea778bc33aedbcd09de222fa22ad0b101", "0x1f60381b83b44a8fe65a0f4142faaafc5fbf55f79133c5740c53f036a3065b65", "0x0fc1e1ac8ad3524ebdbfa45dcc51576548234d0292adfe1cd70a706a1b6dadd8", "0x0a40798ead3a12b78bcd8f10bb15cb0c426bbd2282a81dcdc070084ce78b8d76", "0x2dc09d3357051155987ea95594436b6cbf393b0135f51e2f675ea5f462f4a9c5", "0x104b9241d534264532eda181de1a154dd175ee150f349033e46ddc54181da088", "0x127a6208d98f6cd387b802fa44cab2037b3b91f0622f17084f1b8d8ac9d12698", "0x2d075ceebab54341dc02fb1f50d938ce1dfdcde659955a930ec18f8625f86d4d", "0x044fd5c2101a20be2ad923bebe15a477f40c6039a3dd0d7443fe72758042010c", "0x2b302c8511fbd3702b815564c5399acb8a8f2a8eb77f96c7f0849628e09f9bc8", "0x07cbe339db90599455d1eded1e8a870bd302c92a79b1d0f4ee87222cce99e22b", "0x1326749312c6e8bd4ef24c97c809f78ae548394c94c3df2f28ffa8105debe211", "0x054021406b8d1f8c7080e7c245304e4b7a797cd236dad92d929b223f269780e0", "0x05c0e033b589f8ddb23a9d559eaeecf98691a8d018f1279bf406d08f2787cc42", "0x2508a8cdd450f969b61c749d566c9459a16ead4330e35d5415b12eca38584bb1", "0x264dccc02e574ca7e736da25072bd8fbe9909621fd4f4169b2bae8d368ff12d2", "0x2a938c2540d63615763ec3ba10c1a26001b9f4bf1418d1092a6b02dda5195db3", "0x254f370b85f58a7e4ab27a6203f3a161c1b070faa3185baf2852a75a865a400c", "0x04801896f1268e5abf83712c7414c8953d6223e51c44cb2dcab0b29c14952ac8", "0x1f7188e4d4f7549437f48fdab22e874e71d0a1f18c30106e3dd2721f99da561f", "0x2b9273701ae02d7b231ce443af1d80bf21d65aea616353336059f755edeb68a0", "0x1597224cb8e905ced829620aacdcfac76e509a0f7bc186fb7060196db93742c6", "0x1d8c5a65288346907cfd57a752372196841e6323e96b39da7fd17a82c5e12716", "0x1b75dce950731f508251b86a7e1a5139920d2bec18798d439f581570c1dc6630", "0x2773a01869bf9ad359d5ad8209b337119ff8deddfac6e4ed2c8fd0158ee8f2ab", "0x1a5d47883f24462610cbe7ad0e9b1b8ae5930bd3b9d4c1ee01984f6226515b7c", "0x19827732059461e2073cd90a09ad54149b1ca5909b96281a47b2d9c398506cfd", "0x297c8bf54b03a6f7ff272465fb881c918551bbe984751f3e9f2b30ea37b1a4f6", "0x01f3da36b1ff5283b078b69f5f3a7d4bab15a3087c5ae8a6dc307eba7722e40e", "0x167ced6e39dd3bd6d655eddd2abe6c68ff247d86f9a6a6bcbd41c98d37b4f132", "0x085d19b0e16f0ac29f32da541445e8a8a6db9a7bf45e741f9f113e7526b8208f", "0x04f365f710e9acd5c1653cc6fd8e93cae2a0d363f1697f3ef829f7435525ea4d", "0x128d4f03d03d7097d3a22cdaef6b11f329caf0facbc1a67ba91ff493be9ca715", "0x280210dd41268b133c9fae770b799affd3e66805c6167415aca36eaa02db1021", "0x204ee7c7d4ea06f7ca65faad631e703e0e3dbb59c45b51dcee73b0ca64d45cc2", "0x3042aff09c1765b4fd7365a6dca0f1172666fdc0e549822b03f7388eac33d786", "0x23b78077e751602be7779045861cce3ad318670bb82f33c2939f66d41554c7fc", "0x0f351e14bd3a41ad7703cf9a906bad791a627996b935121e6cdc3bf71292cec7", "0x0e67b0135f71d48596749f9fa8585c3789441022d45b5b4611a507bd401d0ee4", "0x06e84634966d462bbd68c14ce6ee1662769e43314e0eb85e3d5909f518da9df3", "0x1761112f15f357cf96422bb46796f57c2c7d6da40169b8f5794841e8561fc02b", "0x24387ac57313799c7756999bfac495b8fe377a7385526c8acafe14e5afe039c7", "0x1f3c817cbf94302a06e3526fea7b3218a287a31299f0dd162b66d358cdcf2370", "0x0b13cf25c272dae339f1a6f30d43d40f74bc0b938ed73bf16a95ecc3c4996fc9", "0x2c731e62db4cc41c56cd465c4a5e8d5719cb50ae7737044fe4ea859665997f02", "0x0961bfea8f9f2a708f3adfc127fdb17ebeb4a5632a8264f17a494c0f0601156b", "0x1eefb99fe9dac9a91963f112dd357ed51f599b9254e5be2c75fd01a58ef7139a", "0x02ff9863fa2a6cae3de116b1d6aa56a8afbd93c70417b8a0593855a1ff574123", "0x29655fc030f0a0f6dd2b00caba527938fd0fdf41de89b42eaa16ee598fd031f1", "0x2d9fe744f2beadb989869fc205e9487697f56721beb1ca230b59b82eab27b050", "0x04b4c3f4f1c21d6f389848280e6e006c0552451cedbf5ab96defbf0c2cb9ef92", "0x13a8f3f3d0e87d53b9e959662a069638fbdf077024564bc2a5676f0247e8428e", "0x1875c2e8f43d9660e1a556388fd81741eda7e486cf6243c2fe1752f919859b7f", "0x0db7a917f7efc1d2167724af4ea32b1f6a6cc23c1db5abfad9020dbaf5ba5371", "0x01c56db7a81fc78b94b267dce45a4dba48a4288b99eabd50b1adcf132dd4a7c3", "0x1c9cb5a5d0274d9dc31ca07743d1d7b4d416801d964039851f05678e4be82853", "0x02f786dbf83bdbec66ab656694d5348988b8252b4f5a3f4a452a075f60dfe92a", "0x18b9789a7a68183ad384ecf038429f75814593c0fea1fd25f1001c3bec4488c4", "0x28eb1c34f770ab912b55482a946bdaaa29df2b4c947c29ceb7c8a19e38881d61", "0x26e9c9daab62a9f1d6a4c694bb0c6fec274787a8322343c03f95dfe65ee78e81", "0x0111977858879145675ba7f1d70f301294feddb0a802cfa944a75907a4c2ed15", "0x164f34b7c356b9fda1a7d8415fabb683bac61ee70c23573fa72a9d756ba52cf3", "0x163219ca5322b3774e75b1e6f75657e0bbeb76a9e323b7c788a7dd6638b2b3a5", "0x0441594f59c65d1a8576b8fbbab4058dc39002a1bc4357084194ce632b9611b2", "0x04cb005b4d43931c9c4abc50b639a8e6e20b3ca5afb60b06140cb24b7e4a691e", "0x25eb50203caac17c399c83c674cfceb4e73f227228647f9d220e95d3434a04d2", "0x0a605f7fe9e36bb7504523525169c6689cd6d2fd076d7dc11277ee1069316776", "0x0ab2fe209b9dfc7c9007248cb7ca36b4c14d991ab3b8d04a163eb0e836a46c58", "0x0e1459cb5c0add6f90f949965603320b313454e6747af5f399566f5d23461326", "0x045ae1dc4a86d1ec80dc442edce9682a616d26e76013675abb04cca45fce07aa", "0x1834f47c13698cbb916059cbcc88975fe15dd0e9c3319865e08147e4d397a970", "0x2039a1c7335a7e4c7a694b5c5b4e1b44f620960d88933ed5237422ed53189f5c", "0x2a10316f1e66acf32e2adcdc292a350a00d8d5e87ec5dbb66949e3f03350bb3f", "0x1360b91415459da5840edf14826aea05281f973dc18133cee5cbe2761176824a", "0x1505e255267d336a081db6f08a897bf2ba40dacd4ec1d61a990cfaa40f6a5f6b", "0x0350e3020ea30d1e779d9813a0b650977adb1842691e8a364c12b8e458f77d33", "0x0eebbd4c2b0c9b32b82d96d64b0d221a8dbd06413b607ba69f4b9d42cc12cafb", "0x15b2d4b361df49e3444a2404f7003ee043147cac3d1428711f1226b374d87f8c", "0x29c8338c5cfe98df7fd49f9316b4950814dde9d66535ef624e892c35d380b18e", "0x1d7a2627f55aece0cc81b775580ccde95fd10f112f8ea71a7f8dce7e9ac798e6", "0x0cd634c27ab406058abda156af456572de2f5492005587aee69c7e5d345d75ed", "0x1303fd48e2656565e7a16ca8e8523131493035a9721d354fc44d7bc59b727adc", "0x052f5a4386ea22f5ff06ffea6179e58617bc908a3dc6b1e7462819c9c9e906ab", "0x077e3bc5ed1c34ba3702fc0a42c45ba5c714a6b0c10ba2b4d8c2a7aa75959293", "0x08d88160882fc8afca6044904e7a984f85c99efcfe147bacb0b7f1046f953d65", "0x1ce3b22dff95f834c7e5b6326029c6bcb4d5ae4b19ef69c40419d1aad796a189", "0x0d4fd994dbcc15262df5f3c0c9adfec2683e3effbf506e5309dbd8c2b988ab8e", "0x2ba6be5cd79aff7462511ef5a38a4f8c78c74fd049e6b8657cd044e82abd94b3", "0x09767a2d9dfa39e67c95400400da96a192da6fe5c0f02cdf1b9c39dc8e96864a", "0x010521c723f47dc5fefc35bfe0ce7e33d2e045b2a018e1093662ec84f104c05e", "0x144f09b80346ccfbc0865fa64d220d6dbb7b3e8bbf0363e62fd8ccb457bde1ed", "0x1fc0b9932f74b4db56d09315cc6a8e86205276ca3e3b124963dae83db5ed6baa", "0x0776d2d972a004c04a8be7b5f2fcebb02e1a3b1b787036e3514bb8f972c8361e", "0x221d6e560e54eb27665128f37e1c312528be49af3aeecc9d7c56755f076758d6", "0x164189cdfd9833b71c1f8372e999ba27bbd20de62f965ad406d8aee67b88e1fc", "0x1e3e736ecf9745b4abf71a4d863d8b6d03523eaf82d9274526393e103b08a3cb", "0x1ff3d30b3286b988f501ec920b1622d2a0ba2cfa9dfc589c53f639d379c10051", "0x0a50d9824fcc95a9d22bc08a592b1a6d396cd361940abc3f873a725230083a7e", "0x2db50a1e16be63bb63d42de51689d990d2e4721b93a07edfba28f208965740ed", "0x1282594ff20212e8a581a228fb4405f2ee7d34445566fc9dea011d89b202bb92", "0x0ade27c077951cd335ff789b7b4d63ff5d0bceaecc46dccefe0680c0ec6ef09b", "0x27374adf1b38ac62d078fa4e713692be324ca24f2ee43e24eb62adce2f3e67e3", "0x2eff75fa36e8716c9b6ac0acb78da92970cf7aca6a0ec3b37d86e97538242e11", "0x1a28225582a1edd464784b11ec7eff190fae33a61a783b845327642e82fae68e", "0x0e1113e81de1bcf204e51a8cc3f200047f3d8d85704c44f5f5ac6ee862c9f439", "0x210575d20f3c2816b807074e72a672a50738ed0c4fa09b6f966223903a479f5c", "0x21e897f749c84ac2faffa9e264ac61b983f03bf9f337bdba4dc48c5971a14351", "0x1a5687dcbbac62972aed85c50e70cbeb50193d831c0790ee7bbcde7d9738a66a", "0x04105499d5cfeaf115fe0a40d742844e806b107296b306c4d556d2f244e49577", "0x1af9497a7280e1414956e80f4f072e2f26b50a06876967cdd57aece720c6be48", "0x2a0e2d3eec6259b7ce7e0eb1667e8ed0c16cdbfa2247b8bc7e308ee32e2c6031", "0x2d7c986d3d3d3be8c70105e48492160ef85389f1e31dbc8814b0cd3e84ac5ed1", "0x251d1231e763979238b7df4a8c0f5019271de5e4389e84c09e5a596d4e1e22bb", "0x263b8dc03ac7d253f5cb7b8bd922a290675babed6364ae12cfa1fab8c56c37ec", "0x07c59c31f979dba930b94c897ce7016c9ddfc527a696786b7e5e1c1938a2c28f", "0x009f47f021fa65de6b54e751dd5a4bf917bd7574e071c7bb31bf1a4e63af2150", "0x1c160043dcff2330ce441d49f2804832969f2731383e524c8e7a9813f741ddee", "0x0c5b6896687f066b9cb23f21b32c269092cd6c711dbe66bfde09858735cb837c", "0x23acbd7f928bbe5b72a7ec442e6684c8f0d50cf823f02804c7850933b9b70cf0", "0x0e8ae8a1d1141dc07829413847ca857105e5189a65df9ac40ead4cafc21d7ddf", "0x2eca0989f9ab916d07ab296a0224fda36a0bc7a5abd571f3368054da7795e302", "0x2c76ceb7d040b4e58fe06b7b0fe83ea88b7b4cf376296771ec15d12237cd8f24", "0x0c53afd1b381167d73d14ab7db8ea41b9335cec4194b105aab7e0060ee1e3044", "0x0c36629562a7dc67e58cc15bfdce2392b3a1673602e970f174cd6c6b14555322", "0x052d66b614253ade8f74000275db8525f88cb7a71b14df9d8aa4ecf26f4c9bd1", "0x0de6ba1409046058d8320fd0ebf9fc5275f837ee5dec27963db414509f608f9c", "0x109ae0524afc2b1187e88c2fa3a16f6388568b7f8bdbc4b399fc00a257bc1b4a", "0x0b13e5f2c901b454ca49bec29ffcb5da3e13fe237ce86ededc17da40b9045053", "0x0c9a986af2ad58483b553e95c68bbb3b45829ef6e4e7a4ab85f1728209ec059b", "0x0093a4e1fc46b86a210890e741a14ffe41249eb0b0008264ea6dc319a0735cca", "0x01bea7e52a3aca2937549923dfb7e35fcdf8f5c81227637b3015ed1ba712657a", "0x11e88dc0b5900bd29542fbc23832e749bc9aab6347f0bf97cd3a36c6308fd596", "0x138741f5ecbf395997f21f212e76366491f0f58ec195200f1033855ceba4302d", "0x2447012a946927a4240b4713db8d27e130e419df4fbb4d68a1e0f1b95dd366d1", "0x0276193a782f6de5b903945371e5341b9e5dcace04b9768e67be9830a2f674d9", "0x0df9bd68c4fc32c8c064f6c47d517b13888677c985d3ef1f1c49fb880ded7bca", "0x29091c18613963c6cba4f4c0def50fce1cab647a8901957ee2a55305c2b0f8c1", "0x0b78f8ecc6577966fed47ee607e25f21b41fd67a5416de3641283f2fe825c959", "0x2e8f059c9b78f62411b017f87e900fd70c8036be1769c5344eea4159c62b6b3a", "0x03e34c2876a83413029cb7018f657b52ac287ba351f2521738ad7d309d1b6732", "0x13a1f660a87557cecf01b505c1a47fcdd6b52c5f05a1ec4262db308ce86f6b2c", "0x010e9a5996f8e3390b6b786102cad914520a8e93e7ed551b48f3245687f14d35", "0x0bdbee9846a8d67cd9d54f0433279044d85076041b07c3e224b38d208ff48c4d", "0x2381dfdd9bc337d5d6fb861e16ca28d117d586d16d5eeeb7419a661c782c1f8a", "0x0b856bd8fdd6ebb7f0f1ded0ef19204691e1c3781f8a9c4f58511f1fa484fcc6", "0x16ec15959be8357513caa8a3fef0b2fc10b1696b81519b0a2cfc18c913178b70", "0x1943d70c0ec13c9142659121156a773f4146d548cdfd42e40a215b1659486e31", "0x29e5268ac796d26efbc2cb4f98e2c2a01effacb1501b8582ccaf1e311af2edb2", "0x0fd72d28e75be53d626937f75af22f744ea1b7dcffff94c866f3da8a8978e4fe", "0x19ce9f98a369869ec45bfecb1f112a5f7062fcd6c75dafce902ac70ccc0ce370", "0x08a4d149a8a27a2170bc9ce670438eea64d211d3a97c702c1b01dbd3bd5e91ff", "0x19150be38fa5e5fe4de7ebf98d59fc9af1abaa13f5a068cb716002f3a6983910", "0x23c45261101440def1c0c23ee7aaf5d8b15ee7bf31ff7374ab808374d8daf697", "0x204a9542c690fe338feab653e9a46aacebaf2df53e4e905e896414cb5a0cb126", "0x128efd4c6254cd03c21b21913ce52665facd0e9c46f465c51a458124723adf10", "0x305becd1cba07fb742c9528e4b9276d871b1815afaaf6218cb0e758aae5ece7f", "0x0bb14b69696ffb4a46fb91301af32682fee9a391a5372ad19f3a4e320bfac6a0", "0x2f981d8eec9950e39c6fed8079fe44a2f256e7e686a60cb754bf183fc3aede0a", "0x2e38c6f6a7489a54ed982c483a2a7951eb3d0b28e48ddf8b57d2969f78369337", "0x1bd7086eb7150c0dce1beba39a67cbade72b8b72e1c1bb6f0ddb51c13ee583cd", "0x1c8b437f2be3e61671e6b62fb698e8af1872031196a43ffe76d1527b2315b461", "0x2b91c7a78289a7c43e1635e8eecd50ba4c9669431f10243a65ccae6031566fc1", "0x0bdf989e7dddd8d9451c4561ca77ba707b738f9cdbff5d15c110ee7471370f83", "0x0ad1a3217e86645a6cff1a4d86ca1f19afe85a45e74912d616a4d2b430bbd479", "0x256ff8d3f524e4ea685780448f2f8c55b5925342f08f944ac78d4acead07aa08", "0x209d7ab297f5a31258207d3ceda7b2e121683d20ae561c6d460c11ebfb1b6b01", "0x09afce8ac2c2cf3aff6002441b98ea52fc86d3ec411216e3d669b55ce5b8bf52", "0x29f82b1ec02e68c25099f0104815897e33ed9c26dcff3b2c89e6a3471222c934", "0x03cdf7f8fb015f6861322f7adc221ada280021197bdb71f800ceef89ed021dd2", "0x27eb263dbf7ceac824d85f2a75380469227033dd02153365636df044d8cb0b61", "0x1628cf084280bc149a9e3ccbfc5bd08722101ae4a043d33b2f98ae76a9d55984", "0x2b168bfb1e6c4ced6a44fdd5618617dcb8e9c4dad7b04c4a8955209f1b61ab93", "0x057de07094dca307236a6a8ccb3f1720778549057aeb7a7daf8a463ba18c85ff", "0x0fb079650d5ee3f78603c60e8b545313be5e7f7d6c1a6103fd79f100ac8ca101", "0x18d976ed9d44fb7437320b91d3295c8e336e7b402659149b2cabaeb272fb06bd", "0x1edfbbef180142c47c4c7f3ad1e2cc81bd020abfccb432ee327caa22e93ff45f", "0x2510fbda0c1b8256290a2ad3b4519c815f0397bb8c85505af672aeb7da1f925a", "0x14783ce9bd49860f364d0e46defa666d36138dc406255b9200904fc060cf0424", "0x100e00477369c0c6778fe65369744816331bfe377db33e66f63ace31e3b56857", "0x1aea93b51726a8d70439ddfb7e2f8774bde996b72f9cb00cc3d7f2ee2e0c45c3", "0x0b14c0df6b2222d977213161401229763a551b889694dfd30e80df7e6f76cb49", "0x0a643ba72531a192b1ef9c8274ba8eab73fb1a64c3951b672729c60eecac354d", "0x0c36a12c83a445a6979b13a16b87a12bcc635ced8c8421ef9a8cb2839f396b02", "0x25cb792acf147080d3a3c2e87f729c5ebec1c43898e222fd0e50a951897d5d39", "0x1e1064f65448355486dbfa2c2c83579fef6431deac35046fb277b5885b09bf99", "0x26440ee4fc4c477d379980c1834a3b2f3b261d7ed7b913e2950676ed20f87854", "0x300acf3e9a901b9c681b43a6ea7b482cbfc4495dd5125247d4c9b2ab843aafc0", "0x0d27833da8adcc215d9a530696c52693b004de152c6471945ca7a1701c3849cb", "0x1c4e8f6024bb796333f853462a295e0cc16a6098572ef58d159a528cf886aae6", "0x0db38e1071218ef0ee5d77ac780dceaadf1cf79dc9f24d2f3c9d58412b1a5939", "0x0f8a423d040aef0eddd6efc469f4dd9ddd7fe591a4aee3ae3906da7a77f8bc22", "0x09da570d55e2f64c94e3b2e7a2e255f059dd362f796a69142966756fad8590c1", "0x0d7cd5c265cfb5b01a59e4448c67c7addbc2c09b25f078b23c520d78af40057e", "0x2c9c47bc4c332aac15ac68bdb464ae193a745c1351c7d1230b261fa40b95df69", "0x1ab135f3c81fc395a7b94e0b9115359101ec75e76adfa14529759393a1789c8a", "0x30521d4082f58b8f3a12b7c8e41d1fd968284acf12143d85907ec782d3dfaf9c", "0x1b90102210279a42b7f8f26c7bd068dd82b76cd3fa2f330145698a11f5ed996d", "0x2e9ac434179029826cdbc624b3208030d4f0b265e4a8e1c70b89513103398096", "0x2784c3d71d125586185496e3fc7c369996e700ad9783b23f41fb483cdf8eee37", "0x025305428921f6e34da2ab05c3b762268ed1b1bc3f06acdd1dd5e32691e62ba8", "0x1d3006e6c5725e17b5828b5b5a23716f9a6d0a4c867fed2cc2543dc0ac99daa9", "0x168767323e5097bb2fe6682bf6ac8bb5b8f9af071ff2602564739988a3a6f0bc", "0x0a5d80b200e7ee00500f5268dc319e00b797d0ad358989a15d8af551421e1bd7", "0x25dbb5423ee2a7d7861f9982f522b0c3aae6dcfd0e90508cb6550f724d7b8282", "0x25e1b972aa7576ff000acf7ee101175d1d1ef18264415d4fc9f4c5c3362ab026", "0x27a9c670e696ec5287b8b606a5c231ae0fe3cdb764e2ef99ad255231b98500ff", "0x260d6606a1db4854bb358fa415ce13ce114316d871a7a2b90d112ca2eb7bdf05", "0x2397a374f84a29a5ad3798bbce567eb631730c745a7d389e654208eececb28f9", "0x11ee1c616304dccf020f88f6a48fa4072126e64e2796ffba89dd93b3a91f1f2e", "0x055ae011520b4ec5b5a77d3b5f377a252ee98781a8c2944d2bf0ae1867ef9215", "0x17007f74a2fe2b85581af879d136d587cbe18e9a9c3ba1ac01c50cfa2fb8ed4b", "0x214ac964b34b210e03297fecfc88f4d06a85fcf0f15e380f948b15fa1304ec1a", "0x1c2146ea153de11fa480b444285fdd1cda53cc2728a796c375c47c2e2d574042", "0x0ca0af024d983aea8ff6340dee9ec828dd798762c18f06bda92259b3c158076b", "0x012f82ce9da76870a65735548988e6e0af180c6d4b5d98c5ae1ab86c055ca6e8", "0x255f614a333b1375e92526e39d3763fa78f13e535f7eca2a2a7b97ca0d44cf6c", "0x0d0354ad322f5e1dffa7aaeec44429ffc89e4df6081c049b7ed3d3de082e7b92", "0x039f496e8bf76be9faff69cf331a848e9280eda0326d5a191311b5dafc27eba0", "0x1b0b0e8dd862523da0903ccbd518edc5a129517fa698941fdb0925ff03cf5794", "0x221b67c9b923277387b91fd41c7654d37ceb937ee692fbec3afe6eaacf2eb6b0", "0x125249ba3c9ac4c59c1dcdaa6de29ab9ad1480f8b3f020e468608f65bec51157", "0x0264e9390b7b2787c4ae35d9e35360d7807e3414b4077b533b85381811d1e730", "0x1a8dfa17839af5cdac40ac89c5ff2347e70c17706e32688cf7b18e09d19b752d", "0x02ddb274e22f13d1e9c186eb710c2b3cf7bb0378ce46226c1bca058f802e1da5", "0x1ed91d70a1e0e229d8566bbcaaf63b0aaa3236dc72dc772ffb5264c340f945ce", "0x258d9714748ca3bad62b1fc9bedccae02f8861640906580d683f21131c5205ba", "0x28094fb0c9ce3fa37073de7a1261bf0f3e70f6338fd598edaef57849297af20b", "0x01b268245960a242d8d60f4830928fd10b2bd9b27d8a731dfdf69475603e4779", "0x1ccdc2c48249496818618873ace0bbf4ab3a3f2f6497f939be73330ad18bdd6a", "0x10d7b6fd7c71bab6887f51ec5639a447682d7fd6ba710e8fb14f81ed72c71f6b", "0x14a136a1e4827d707dacc928f8bd5234cc327c8a3e4ba6000c6db5ee3b125757", "0x2991208842feb5c9b11c6180db57f479c3289c9bbf2b6d5e639b14d77cc25858", "0x0864276f06cf50500d51cc2d6eedca092f1efd1e35717c91b5181c66eab3485e", "0x01da1115c035901d42d512b03bc2962d2f3de504caec08f18437c90363a5cd18", "0x0ce4c61522cf118b66edd2dddf683b407fdd1d00213f2debf9963b5a8a297613", "0x22822be14736c770dd111018ad3a4818979da22eb522bb3ee4b3ebf4f94c0138", "0x02488c2ef3cecdf980e826af298af3b81ced49000d09ef6cceee194c13f3a44f", "0x22b3bd43bd130c0e2e989fd0633e352805ea72c21441ddb14fa2a4d7ff5b5ebd", "0x0ffea11d900b5c13cd8e4632e92d28e55f4b02b9ae182eb262d9fc054c592acf", "0x14acdc065935230efe80adbb43ba56e4815cc53e1ebbfd39004294d9e376721e", "0x15fc1e7cb819924b6faea51fc1adec10cd1e3adac0d0a32460a0d4a95a03c6a1", "0x0547d1912834376f0035790ee7f36ab73c9c8f41e1c4fbcd7739b4c767622c51", "0x135f9f4c16f97545b9cdb5ceba5acb9a4e52ae255e2a69e22b31145737898099", "0x08ce4af40d7de598c564f0c38c6620eddc9fed826c4060aa6c28f0edb3345e83", "0x21d6a6d971259296ed9b72872104b340cedb9119c4774b5b08ab4bad29c161e7", "0x2abc622ac35f50241f3652aa962d4b045c8ce1b4d3a77c51a5cae9995c6eeeb4", "0x2545b28d54fdcebe42f8a4562de1061eb216272889536260d5f32decdbc4c82d", "0x2854260e63dc45d22afd22d8c9fd8c22e1da68f4173a4028bb885bf7fbb4ade2", "0x095d54e568987ae7c379dce46d678537a26d61558a370609f491cfe778e8fb9c", "0x2ac03c440c8ae0f753a4f633e704bb41f8c751cc463b91976dc63157057cf8d2", "0x0ce597700fa4ef07ccefd26ea346c30618eb42bf9a4b7d791a957736798970be", "0x02c13a4027f4153b3680a29b7268e1eaf78ddeef9f8d1ac0866595cd9503b836", "0x21a643839be351a4f38fbbb173b5b0eb5ecac4f78b77f6830da680ef5aba11c2", "0x053b07c71cd864b2113abd0705fdf242cf3ca016b2ce545cd1877ab44ba35cca", "0x1889c70502e3edfb3f20c8b32fbedaad51fc6ad1caa14755c7edde52e1d4ba39", "0x16866b664aa3f628ce9e1a79887af71ff1bf20d4df6e707d51e05fec7b8edf61", "0x0ab47c201ad315c7220412e1c304b812546d4a3d84d0ff71c7a57018e7dc7834", "0x0577bfc93b1ab50ec622257ceedb3d2f4a5486002f7581c9ff3cd22f3a5ddb65", "0x07900aa352bf959e718e5284a4485f241a74a0bb7f730166c297e448732d6ccb", "0x2635df956b7df3f7de298ce9e18d310907e65c1c96502c693d1be9554bab45f9", "0x2e7115f1d6bb75fd5adfc872613922aa172fad9a29483b4872e5fd21c8374306", "0x28e330b6e413acf334dbeaf1969d566977dca676b4618ac27a530b6c859e5728", "0x27e821c205286813e130ad991acbe2c71de552ceb2cc34ee727666f936b0e82e", "0x08222684d80154930f962ddf78b2c56568a59e5d9da21ae8f063adacc9c2c38b", "0x0ffb7cc3c05ed4a3084dbd743112c05f254fcf9b593abdb82e25dfc5b4db8fda", "0x0d6e11d9b51ef8fa12b034fd87068fdc22f0a4a3f793dc6c9662eb9eb915d279", "0x2c5d6dde18d28b08d919f3981e5f27a99f2c10d9af52677d244ccf6480c6960c", "0x10582dfc5f5399c4c952550128efee21169a4727ed9e1c140b9a22db6ecbc0f9", "0x1c58fda68ba74bd534d519006cae71804c2e6074aba61d95f7d8ac84a3def0bf", "0x271044c8d54e1a643dc46ddb909ff4078e9534e8d23a8c2a1916c9c5c2b1d8cc", "0x186c5e24015fb0b6a140d7f5ecec132b14b85966768ce1b39c20365cd3f5d335", "0x1ef5281243bd23e1a1d3f0eaa8653e2a642556af81664859c816c5f69b1365ad", "0x0e9af53215e2364935a0272589b5c3b0c80af154cfa6cf64969885d37cfa68b3", "0x0c0a5c9bf118a07540485a024f1cf7c7cf0688827f6c1d6d93f6315c62a02337", "0x02752ea3cdf410169a2b9f7d940b9301f855cb888ff55dca8d5fa0f14ccfb4c6", "0x1f484d4e14af3b11cd257eb79fc52785fdcd8ff152dc56dc9f822475289e3d66", "0x18a42e21ac35ebf3034a6b7e836af6ba99686bc07b1ee828fd18ce264f98af14", "0x17bc4fcfe167ed740800167e4d386431ef1bdf24c6128a964c027aaf87922fa8", "0x2fc3b7b410acae015c637749d9fe90d89402b6b50c9d844775316c204bb4a3bc", "0x23050b3666768fa91186ced8876f0c35998af3ee48ffb141b841a792151e8e18", "0x091bb332b35d6e464789951159003f6882fc864a87bf52899711e84d7a696e7b", "0x2ee7bf6ceadb5749612d3f3237b181d839b32c66b51c3e0e518d6196e3fb1ad9", "0x0e5037b387cddecb84346cb5c04ba1c9a7600253c75f28d14c938916803ca018", "0x1556d870d39bb506dbb69cdf14cc083080b8d81b1450048090cadd910ec7397e", "0x21994dd012c107a165f93ad7e28bcab73468645266ce123640cfaa8330db37eb", "0x2da94256d843094dd9bdbc75b6c88634cdaa76e6d2bb2c7a4b9c23260e28144e", "0x0be0a92edc48db09808d50a03956b3e847dda5481fae1dfd077d7821d9b537b1", "0x1d332c7d075cc815dd316307189d93e14f0bb9e201638579cef3fa74568b662e", "0x15a8d58dd7b443b1e047e330b99eb9007b48e5c1a48a65f04c2ba40e136ba98c", "0x15f0ba262ebc5d722d3cfe67bb7d2fc20375faf5cee78716a321ea37907c7942", "0x2cfb417b5ebbb0015efa9458687cd92cac12b9d78c640336eae91934fb36f1ea", "0x0d331b322888532737741c8cb532728decddd7e7c3c5459d830a8ff4395b9dca", "0x188a4855919f14b790002d9bbacc7fc011980e3f5197e53c509b9b04d7023d5e", "0x08cee96a66c1ed7e3f978607c188fb906123d343f4bbf02d00920a66d243ea9f", "0x20b61c43e264decca5db37abfb717521e78ecf25d029bf4ba611426f1a82d558", "0x1b70bea273a40aaa74ced8369d5611aad3452804196ee87a3870450c22c1cd02", "0x24c234bd6c73e17254efab015050a01b7ac6dc82a3354d6e136a94f75a1a7796", "0x2a21a5594707eef1b1070ca39d553ec74f8fce88f64f5f494e3ca2b807a77047", "0x09cdcfd503958b901b3c6dbc1681386b7fd0e338313e3bde4ee4cc6907175f35", "0x037213fd6b9adf8b983606125320f73ec38b1e33deff6a0e719ea82fb5d15563", "0x2be5b55d83cc6fb32ec758e83ec576f521dcdb1da1374cc2ae0224725d6d5d85", "0x1f9b9850a392f6da10fd0088fd06054e43d5e204bae3ab38509dbfa188589300", "0x0968a47a748db23b73e1a1039b2ab2533ba91a12ed80e30afe4754c03ca1caa3", "0x1a624785eae483bd8ef9d81afed0c8612bfe450a124e267dd83957abf6a3dd15", "0x25ac240c7126a642eeb1298bc19876d969d9cb5ed0952cd446eb548962bf1586", "0x27151bced14b6f53383bf4553bc9282c17dbbb8cb47c1e847ea89be43ec167f5", "0x01ece2bec2de7891272f8f2f11fca0c00caae162e3fdb06e0548a1fd905fdf49", "0x27e856df227cff7d93cf1d0c05a10d1849345e99d6956a6659ea11d7d7374c43", "0x1ba8591af1c58a45df09034774a836e315884127d62ba02b4e99157b62b8c467", "0x2f11fa9402c5853bd308181c6596dce77c95a431928d16b85340980da12e532f", "0x19dccdf36783961a18c8e432618fabdd0892cc17cbf38ebfce63a2bf846232ed", "0x1350eca5a8cbc2c53b6a9df1a39ac7d72f0183bff9fbfd01757f08768dd52d6d", "0x230585af7582b6a4dc662070eb37eb1c3578564f80a86702d5a046fe7b251272", "0x052a71b5daed70d11e7bb9ab1a6130cfbe019383dc14f99fe2b53108ef831183", "0x07851ddc73a2c6f97b8a08a05bd1de3dc88e04910bea0d837164f2c574c3d337", "0x069995287feef5bba996cbc5a831ba001095e26b3e6b5e35f9765fefdf460e8f", "0x0a69204150bdc7bc73297aa4bf156b07fa581ba2def6924e2868c7dae84c74ab", "0x20fd9fbd1536a33deacdf27678b70436cb81705e267cdc3bcd6926ad26285114", "0x2eb1a2eaf15db5d578a921d8e77da62f9e62282bbb029f0cb241b6021364eb40", "0x051f55bc0974ccb75e69b79fd695fd54e210ad37034836b401f2f233979d5de5", "0x0ea1386d77c0f896d00ada2bf96303b17f1b4318a7dd5d959f3c8ab1c25dc3b9", "0x11e2fce0eb7e64e488e0a639a5f1dd20f1db91a1cdbc79f47111e0e0148b4c2f", "0x22633874fb5ae4774d1f02a955a7475f8e929ab6749a17cbcb0e12663eb9de8b", "0x1ee2613b8ed5faea8c3bb5f38f8e7427528e52b36a5cd114c8d8465bedd6213f", "0x1b3ef2535d759add05abf42ddde283129274a71318834b561b07e0b9895acb23", "0x24a084eac600612e07a30c5f1651b9843fbefe25e65077f1bbd4ed75e478bc35", "0x049c2e0e7e177a16668e8d6a2831d20bf52c915586b52be3a535c386e2e23fb0", "0x0769d2b56d0d48053a2dbad1ddd11f7262f80f04bc7a8f61dd2c4a93615b609c", "0x1aa20a25e4526401305fb2432c897ce83c4e4daf9d4b6fc5609df0dd8d0c8279", "0x20214d534469f0969a8f57b36f6d6bb2125e2ea61b2126143cfc66f7377632ae", "0x02c25b9f5db0feefc72ea94da35fc305c712e1162b921c9594b8c9b3b9095345", "0x11d06d5cd8414889b209f08264e1f638b56befd0a7ad4d1cb91a87986426f3a2", "0x01118c6633adbbfa1f08b73dc28148ef5008128e94946e47df78e52b53a81813", "0x10cbd0a971243c100cfc3447d5987790b60420664da96477b29ed58159d3c0bb", "0x2d7defa56218b1d02e64b31e0d84fb39d4068e7fef2f8e47c173401d5a01be7c", "0x035bfa1a3f16472ad0964a6603d44cb70a930f4538ab235d5cb1d90e75a8a935", "0x0a172329742ade46e7f37612e637f8a0262620ccd838892f3fcbce0f6340fff1", "0x2c58c487ea60769242d19dd8230a0e10a9b600a055416858160cab8996bd747d", "0x10753b36168ef4814cbce8a92176fe0d0429294a7bbf562599e90138972345d7", "0x05cab98dfb3270bc9f27c6151315ddb0af0b292642297fd763487949675ab3c3", "0x244babd314036a353068b387e78f064b6c3c21a1e4379c64034852528b8cc286", "0x189d6ea1975420c15108f928975eea4f635afe80fb1543ff6518c5dd989b4ef4", "0x2834b06e2f31e1c2e013b589c306629d588c9677ea3b4729da29e5b931727e11", "0x2ea65573cad7061d208bee93d6f72e79dfb7a9b0c58d1c3c43b295b7edbc050b", "0x2a8afaf324dca28c3319c642c939fee380fbb0992bd00c0d507bb244e79f3b64", "0x2700ca9644562122c6ec1339a9ebd06170fd8350ecd893f4c4b54ca714e8cca5", "0x088d20ba63d5235d169351e5ae5382a65d0a0e4542466625c496484e527caffd", "0x1e3b2b692746db2e3221d31c2c9d2af6cbae59cdea2df8c9d61d09cab543651c", "0x0320140e2c3634e2bbc6eabd67e3150593409e17c8a8ba14d6ba10b48f57be7b", "0x25fcceae7afc449cf6fa958d7d01bb57c0cad966b89de9db049e4d99aa35c63c", "0x2d08ac7c3d1ef44252da3c40aaa7dc955760672fbbdabcac988f85dd7f61659e", "0x07723b7f34c31a1d58c5d67e8f0082a117f77b403f42383783ded75501288e21", "0x08f93f11a62858823b57ebe7bb4f2c7fdf0a99ad9ae526bc7565f7fcbed531dc", "0x2505c08966f418cbb7cbf186072cda3478ba030cc08a31d4dc8353f14f5fe9ce", "0x22730c77baceee5fa6c5607ecbebac0fbcca0a5faa48ab37d4f49e603f33c1e0", "0x2866da8f65cef794177ed99ca0e5e28c45e33f059a6fd8db8bbdd83f37b93ba7", "0x2cbbd169f4a32d679b818634b4018a00a213aab1df758cc0e5ed696914d2794b", "0x152d67da16d24a00a82991886c6e1841bb58f19c064618531f66feee723badfc", "0x064ebd9f00d3aa92502f6ddf8fee96e7a247af07493edff59a6473cf2b877b5b", "0x17bf7430be0ed0a5924ec6889b870e3a5ae1d005432e965597264457be3a920a", "0x02d8cd6c4dabfab46a079273c4b789b7921b68909a69dedfb64974cd1228f26a", "0x0616e7fc01785aef16700dd740860e1445464ec05242217c1d7795fcfafed0be", "0x18d309277b33ca481301e0ca3d42a88033ea83fe6b9abe2c2e7d93061a31f3c9", "0x07524811ca357fc32cf3c5582cad662b040dcc15f0afa3e04550687031984655", "0x1ec065e0ec95640ef74fd337db8c6e0fd7a1414162d1db45bbe523b373941339", "0x2471756386b3496c2180e68c6ac6bd0842f8cf2024d6e519a37112e9c2b0115d", "0x15b16796e573ee84ab8676dac041a3d2b088bce5b17ef437b3dcc5965302bc70", "0x218e6f091731868afd5aca4beaf96fcfac98acaaa66d5738014f0139c02ffa42", "0x109fba9e59cf55203fe971dcf32608a57e45aad64a7c8dca57db4811dc17c808", "0x125a6c051a7816c5166bacb3647bf54f12ec2945ca6a51bc9df19051cef9b19e", "0x1b2e6621d9458cd5dcdc30e3eff2ffd34677b2dd8af74f4d742049e157d5ee1a", "0x0ee6a1864ab85f0cc60a19372b13b8d1671821a681cddf68dfd82a0e9acc72ca", "0x2c5ea8b8d22cf4ce55d4a3811ea4ace1daf2127a92c77bb3bca51e636c5dd5a3", "0x04769ebd949f424f925e09d2f1163a6602f26785f701a0f6e46eef91a79b2d81", "0x14ca5631f7309cdd27c353606e8ebbd48b911a239d86b45c5589bd5a9d5664f9", "0x17085e091ccb55cb01d45c2feba1c8c18ca380cf17615edd10d3fdb91040ecc5", "0x2b58062e06097f47843198458a974bc7ba88aaf01bbbfab7235cd990c3ec82ab", "0x05f19742b6b9cbf14b622e55b5bf45bc72639533c18c98b2dd811c4dd677ee49", "0x2af4cba34b3365d68f5b0775bdcecc6ec1f42972af48d64820eff166e68c4589", "0x304ef965cfc0cc4cdea00e9a2b8487dd791652baf6d9810a5efdae392c334ea2", "0x0c6b70050e17d95eaae67e03b820be7bcf05e0e99c40c7ede3a4d69434c2ce4f", "0x152051567b1ed7d6f4d2864eaf1d3b052ec28037ce709adfcfec0dce364fae76", "0x196a7e50cb517e21769d1fdbeaa92abbc040c76404d7144554a4a88b27bd5a56", "0x1dba4d6d2eba84339bb2a7a32f9cc9787264acf687504ae4c69a8b1a296b9a0a", "0x114fb35839ddb57c3a833d40316eeb28e32221d34ff86ab96507ad755c4d375b", "0x152086d1247da80503965412bca5b020f0918e05fae4f40293c5c1356b015832", "0x248f8659574c27b349b97c3403dd5f08fcaafc9f606a59693b89d743ae952fef", "0x212124ced78bb0cd0b708d1f0dda3a8e4f5b42cb3246e7a64ecef935e5fbce2d", "0x09d68a717d8417864da716b3dc29a6aa6e2dfc0b661cc9526b66026a7c9e8b52", "0x1009d9033011387d7b59d758418ca3c0742dd6af7eca2e5e6889ac3651b32a01", "0x1dced90604d29cc66f5810108713c09579fafab7b3175b12f7540f1a03de6851", "0x12d425da9511657071f3700e73d3a357c1db3368aff5148d40d3b315c3cf4d50", "0x027bdc068f23f8f9287c8be55469809925dfe5226108913794b4782b07ff59b8", "0x07d909196d6cbd2091e7b66d1550e3772b360afa4f9646af879002bd20e674bb", "0x2c5408234e473efa7269604e73d12733713a47b552726332dfc58877bafb84f4", "0x0991a9a7548e3c5c4f09473aac60815c6e04cbc7138bfc02d43346f46a5bcd21", "0x0e6c6e47926d2386b0db74b20f6778c507bf92c3fe5ebc26327ef1bc5a9bd57e", "0x01db7d7f599538333bfdc1b9376b38e8cdba27e8c49bd819e08d28e132fff211", "0x14e0d2bbb5969c1e0f86805100c284d8f6f6c1c101e8e7239a38e3c7a006267c", "0x26ba784e04d92ef59d57a171138b2f2bbbf99cebb2d5bac21cd86c8af5106755", "0x07de069ebcd67dd5880d098549ad3e1cbbe74f219b8c53f8bd49166a9725f72c", "0x3028949b0dd33e015aa6b460691d837d8fb9b9d5e70877bd83df0300b4a0d843", "0x0b5f2ccb84db3c03ee4842f663479d9b0a8cb08d3f1d7ed41069fe30120038f3", "0x0f56a30dc396d6c1b178f692530945d187d69c0828141922f2923dfa4d93f821", "0x16a873c3f3cd80fd6a45e7826eca59151c03e4ea8c1777b20b4fbb42d7118f98", "0x227479dd4a5e86e44de806dfff98d05ee2c5148f5b42a5acd07747ac71c7b474", "0x247f177204c1391a4bb0241cf0d084ed79f81fb4049498c003ba1b225514994d", "0x1a7a0d3e02ddfd68639b98edcca6409b511a4c508aac4a3ee26decf3ab74118e", "0x06109074715f90196189de280af6d0c820c8e3862abd69a5d050932f442235f5", "0x112ef9d464e2ed0c3f34862cd955d29628c3116fe54520e76309b77ca91bc2fe", "0x052afd3488a875bc44e73c54eae6ac05cad2d7e19b480f50c2858b8ec5a4dbac", "0x07fea8911b7c2841f4f7bea4f3b7be7cb5710a624297be767b313447fb2a1f9d", "0x253b88bbf4610d15934d7e98f4a1303662f9cf547bb61fa5f1035b11837312e7", "0x10ef8f2a1e54a3e08d4b642a5b584207885166843709469691d3383502834a88", "0x2de738c01f72522b6982c758e01540c6d792040f3ea15285c7864e3bf92c8e35", "0x1869a05c2435f4ede2ca33fad840b07857efde65f8509325e06a06f89b3093f5", "0x044a3c589cff1b0095a3bba218c63c451998d5436243ba1e93f726dae82593eb", "0x0edf15cc47ab50a92e54014b5643168988e253adae6f0551e239d265d10f1fcd", "0x1dde71a388e1a9cb075afd6b6a13354701e041fc3415b5d6b613541d4103f409", "0x13101734082cb23f9bd2657ecbc31debdebc886dcb5a15bbd8b120c8a945f82b", "0x25a3a7c128ac6ffddffec4d7a17cd3044ad0ab308b974260f083c39ff72937d5", "0x0c5a938393016ffa071e3b9f2fe3c58ca3083967a294e62ed8be565724661b4b", "0x1b63a0bee07072dfb3a33c63fd00d2da4e682adadc666db1205326008cba6e17", "0x26f99a34fc19ea7dffe9c6ab96719b2cef9d38d41a209ebe74b51b2f8b0f60c8", "0x1f1884b1cf3fe36cc0e0aae88ac6686375ce66ad770087b66b2d1c401e4983bf", "0x0d7f0e2206d6a092c502ca25b440455da98e69d7fd5e4e205c5177a8a4df812a", "0x184da09fd45fdba360861f125fb5390f5a476252fe71889582cd7b73da98050a", "0x1840781562955cc1a9035f8b1ba651c833b0719fe283333c249c8b263bb01573", "0x02d077d027f39896d9d8b1a619ea6063290da1477d06d6a244b48023b6f3cdc8", "0x2cba8f305b009310a36116769a2a17ff2230b4915e156c43c2b5d9c977813660", "0x1e1c46b068f4807d6832a968be9f79bcaa990b6493844ad724f8a8b37bb7921a", "0x21ad357404bb8cd9db5355e5cc479dc1aa1e48fc6c76f62f5d1ae768a0e1a419", "0x00e19ce8b72c6453c73a3538e919f48d4eee11f6609b60cf430e14b74ceac5fe", "0x0f89d945566a286b7bc63b937036d40fe58fff3b13a6fd1ea7676eb66194d06c", "0x15e6a57cbb53220803c4e91e066b483a318bab0be2119a8643ed1cecba61137d", "0x1c45c8841fd5d4e675a46c9911545c14e9e468ef83e1e7c6675e91703f0e2327", "0x10ea93f02575126c231458b20f4b77480a0f10f53cf4c5b6f1dbbbbfe8d88a01", "0x01bbb7784b1f4971b8b74b714d17266e3a45008805ac742477142767ad0c5ff1", "0x138941fb4f666acf374fcf0190a41cc86f9429386ad7ca204fdc2ca224c3405a", "0x2c8991fb3b6295cd67162631ec3491ef54fba71727c22957740552c825943423", "0x0de66b24c1d4e2e56781bc629c1b3989d78dfad628716a843a32c5db418c7501", "0x0e8b37c16fb6281255cb27790ac523f5ff5c15be286b1e82d973b4e0104bb2a5", "0x0fb41067dfd9ee6e840b88280597d436a0cbd61502e06898cf8b5fed9289c85e", "0x0119c19df693f80a7a7b0e64479a9a77ef4b8eb70d6bee07fbc33ef7acf857db", "0x2826c0eb3ae0b75c96cfc181797f6133d8434b812058bd1887e71aacbf095795", "0x1d138c8733414f701ebcd319a6858178037aab082b804e2143322a87b6477c76", "0x22e32c8a1a9e200d7e31d69e4277c3e679494b1d970e0c79217587e4955d7c07", "0x2d52b65582b83b5d13f288d67ace22c5c51f8a4f075b8e6d7660a660ad5cf6e7", "0x2e2e7048c0a0db8910e0827eadd124a35947cb26064a22e793b4d4ab6ab9021c", "0x234f9d96cf483333c13f5224a40dd495370dacb7b6799e3f9361e2ab893041c2", "0x0bb3e00222cd3d72f5499a2749dd7e36c8e2d55e255fe81d758a107070ba481c", "0x199ae52b7547a3da5f54bd2b9ca9dc0f21d11594eb52a07907759b82eee76612", "0x01a3d8048dad09581c18d1ab2e10666d3eccd0769689d612199c26550f3a181b", "0x1666ba94ac2cb3a58c5cc86eec751353a14391b0e06fbe263851396decc0fd1b", "0x15c3034cd79cae75c00b7976817c5969598916ed56344727b811872af4042e8d", "0x086ac6932de61a9ce418b612502851e06d5d70f4dc3b1e1ed8ea2c6df75b8789", "0x0f43a70c864e7a81e0576bb27764656141ab43b19925a1b4d3a1768bc722b72d", "0x1db3a2b7c6b538ad07068d97508df5ffb34a09ea1f98ed30399af2983fa145f4", "0x1b15391ca85237ee8ea48570d759416f1826aab34ea87d3a3cc3547d17e7dfd9", "0x0263aaa9f9e83c255e67f9a09901feed268df56151e79df345426341e0f38f33", "0x2da84ec38f7707d5d71faeeaede793d990f04e8cdd016cbbf3bd65c129138213", "0x13ae9ded4812d1f4d28d379642ba7b79bb2d3eb81dcd223e8910c55e8f77be9e", "0x25b181c72550002c2b1304937efdc34a0d45e709511929cea060359fb523bf6a", "0x2d141f87778ebaf647f2da27abbe0504d46442838f3ae21aae9074583f6b64ba", "0x05cfb5698f68cf5130c14bfd4c87741a0b65e2c197f594831ca414ff53ef5505", "0x0fba377e6949b3908154085c8457a2980cc5ea3472ec30e0996cc8dd9da31d9e", "0x2ea5bc22fd3e4ee8585ac883e574501215972b203e21d3cac33b4852d9b507b5", "0x0db2fe84aa7d137472e72b0ffbc7e76a76f9224fac1d1b3da6ee35a5c724f8db", "0x11c804a419c47dc73db1ab2682979afdb042c12ce349a00dfeda1c72f0a4db23", "0x1423df99c89efe43c3e80af699fefabb861fe0d8974624dfc1927d2776daf241", "0x2e07c1f81bba9f8e1bd8915787ca74c04607e83c308f4da253140de0e3cb4ee0", "0x1b945ccb17bc27e10a23926ca5537b49b28b63312b3278cd16db144ab27fa3ca", "0x0ae9821243e03b7ea9373b032275d32dd4cbabc93781f36d532b7cc9db7a575d", "0x18f2e62f9e91c3e399358234fa6a0c907c3f3541fc0ce8ef1b5ad135d41c4c02", "0x17d7aee292dba3de1943cf8334254f9754b17ad7a5a2c57230eef7e06c4049fd", "0x0ff75f8ff73a55d486beefd9f5d8bf6f6f9d31b10a0903b24f4a3bf2118f9836", "0x2f8219f3c7c148dcb2f38c697bffd3100e34b0ec8dcf6d7436de37e9dfc65a4e", "0x16ec1ee6a74f79ddd9d142216659d99b9123f7d789019ecb5cf3a043f7d820e6", "0x0fe5612d8e5fe5ff4e224078cbf3907f25078d2604dbf20a6aeaf18b0216b57e", "0x080219777df47cea0bc385242c5263eae06b2a7eaaca605b7ddd32fe0b0cfc8d", "0x08e90c05a9091040815ec08eb142106a1b2c94eeed5132c637cf9c0c40403e77", "0x279d2ce8346731fdee7a49903b7e6ef1362c59970e31aaf01aac51dec7f9f026", "0x117e0047acd22b61fbf81e99cc13e2b9f1d8db8fb38378592d44372779bdf165", "0x02bc7053dc85295a51d0f8d051189da22f32f222487ec9ec39d5a17652d9411f", "0x0790684b4d26b9a83225cf72e60c026432ca5378678eb8c744ddbb6e645fc010", "0x08cea9f02523e9dcb87709812e1f78683f373a33895774491c1d6072e3ab079d", "0x1a28f5548ebe2c210f3610ce30bff1cd5f0233fe045f0da2d2a7061f63ad35f3", "0x1551491aa0e035787242f5bf43519ad561b6601029c56fc863c63474cbc6713d", "0x2705e73556fd298b38cfe6b3d042e4e5f4b457e90e7e8b16a3c9b54b49c644f6", "0x19edb84862a4a113e372e01c3835b7167bd58d6edcb038078de507dc89472728", "0x0938b1c265302b7e4148906fe0e90f9ade375510950d475224a0915dbd2a3429", "0x0435d661e18d8bb28bba1a4648b73af64441623162e5b636ba1dfb7a7e887c08", "0x2ce71ce2431662911ea33f99ddd42227b1477573b261f9d38957f9c86286b2cc", "0x17c75da1521bd3f44b2ed39799b747fb4fd28038a87a50a6efd9bf39060f1df4", "0x2fa18e89595e69993eaa57f71aba15a8bb83e9a86c5daf770794567ff4ff187a", "0x0a97b5f7307b9b6b4614dbdd9ca06eed80fa8ec636008628740f04673cccd983", "0x2fb02323a8db7ba7e3bea78652a3dd50fd90705cb65f2f99115ce510d1ee90da", "0x010984915fbcbcb2c7d051c06a00200823c6431435ff387788b87834b46a645f", "0x25faefb54ae7e8ac9b3516ed44536847045f98350fe8020edb24fd028cb95e74", "0x163e9a85805166386406aec43091656df8a354104960ac7097c85d2107dcff77", "0x2e01e39fdd209edd00393dbc792737828f81d0a25706436c45868a40c23fe53d", "0x1ee6ca0156eebed43a7f02726338c9259484634883e64cb6c34ff4b459dcfa61", "0x25effb4b84c2c0906ebb6571af7a151325c6ad696ac0ab5a7e7a34366a923f44", "0x090185086d0cfbdf941af09f6e85e6c9199da41c0b294c049e2143e2d1bf94c4", "0x196921a374020f2f7cf6bf76b7fd8dbaae06ceded49ff948268d3728d0baccbd", "0x2e30a88a9c1a48deb66bb1fe9232d73aecd2d81976822b2ed437aa9c11080577", "0x18fc95efb840dd52f4de54cd023b0b552d57f549acdc4f86c1635685225343cd", "0x0bd2326b0caaea6d5141b3be470e865dae99d86dbe6bd7861a22ef6e2d95c08b", "0x04de1aa3fb9807b22fe3c503dcb0a58325340ea0b5a50702e62767018655a8c3", "0x279d21657b39b694181d5081827940f6e6e1271a084c55f42dfc737a187eb989", "0x2594a94215dcc6c73d64510bac3b30414abce18cdbfeb509afe6d70d3dc97a8b", "0x095142e3ce6e5fbdba9885833c614bbf459895b6cea10edfbadddb276ddd2920", "0x04f7c712281ecc56dbf8bbf95fc1af4690f419b84130342647be3ad1b6773261", "0x150c295bb04a6280a5cfaf70de3e998f8a42448b7a8ee56d1fcea8c515fce483", "0x040b073aea01b55948462b3c96965e070681ba42d92705beaba7ea9ce5983783", "0x285854aae042c3ea616da7b02a6b2ef30975aaa2a90aeb8713f189c4caa36c9e", "0x0ab00bbee202a51e42ec8fb9b5cb61f9165ceb652b6956c1205e8dd53bea3b04", "0x01152e1913091cde5f38a6bdf0a4eb0ebb501954b721f3859a0aa262cde13f80", "0x2df4a938e9488825979442d85dda528501171bd09b780d43d1b2e2532e8a4d15", "0x1d10433e676c08dc3ad49d71ac027dc4b2bc6f21a2fb3d37d7e9e95819279a77", "0x087e2ac12cd1267a049093f730c2a461aff6a429c231e5ffedb62cc52676df26", "0x0f3769737a44340e6fc9fedbb6b760856826f7c3a6ca8b993fb004118718ac38", "0x29f6d54a21cc0209800ee613b44585252e7c35d3c0a4f00cf18a8220f36cf76f", "0x00106dfd6a05f7c55004c6d0792728985e392d63c6d22e183b76c13cd4ee465e", "0x3024b6653dfd68a1ab85ed24f30bfb88690c50b9960daed59b460331f8e36e3e", "0x2f179ae3fa16736110c2911a504837d71c7cf5d27a4c83dc447a7ea54e9a89ff", "0x057740fb88ed21c6f4ad03ad49ab3386680d3d0fb5decc4dfe65e2c187b397bd", "0x157f8573cc1f9773b3852c965bb00bc1189bc83355c7d831f1c881006d3d2286", "0x21dae9de84c896fb3e060fe467c7dd0b7471e76e961a3b30d37644d20e8f449c", "0x2d76eba37f90108bb9dced3f9da1acad5a29d2a354edd54230afa9b76e4703c8", "0x2041ea40d491d2f1062862372715383db89750828052255b1e071f99ba360196", "0x25b939e2c40c6e075a42cb8968bbf928e3d6a8af8da4cc79c9bfc72d6821c673", "0x2ca8f0a159782d2ab2ff4ecd6edfb287ef6e5a1f20d50cf7a75a8b07605ce461", "0x08e18252ecd58de85a74fcf2a5dfd866d780e8b3f592153b7e7c04707d2f1ffb", "0x0e742fa26b8408adabaa17ca7dca2bfc14f40e3aba46a2d6e85d3e3ba0c5767e", "0x28743cad3d872842ad23dae6978295d26179d81275e52dc30a7af80a3b3fda7f", "0x2b78a47772df0f8005e508cc47a3c2a37059fde340d3886c2eafe79aeafbe868", "0x16994b815229f66f90e88f89e047b4ecd3f91a57dd9ee5e9a56294c2f350af7b", "0x0e0f16cd75041288520edb1897af5ab11b85a545f4d642ffb157f5772129430f", "0x1b01e8e91d773dbd4ac756122f8e79aa9f017da3e15d48656d07e98f9a73ef04", "0x0d1f2525b6adf5013e9d76170afe6f51176a4497c1588c8be575c04e567d332d", "0x0ad15029458859dcffe10f316fdcc134527eab1f97c0a6b0994e2d16e3f45210", "0x2eef79034f8cc2ee04f0f188115c01e22b41d429feb2a66bc239361eea4af45c", "0x25e42a21e65e99f63f05b36cfc485e97e72de3aa38a8573d343f95ce50c62dad", "0x06c62c056404aa31061978613c9ba2a052ef8531eedd3263bcc34c4f166f7c8e", "0x17a698b583a769145e307795122804023f82be37618acdc120d41eedee9d4cfd", "0x0e1cbcc11d65e21409282179563ab3e273859363b0bee9cff0681ce5a11f520c", "0x220b8ec07c64919136db6bffcbacd9bcbc2a560bfe98b02ca9d2a1c1620dd0ad", "0x1f7195b3bf189a997c2d4d7f8d107d91c2ad5352b63d111cf142505c2ea35645", "0x0946e22a5fe1252cea749730aa63636b7f99680f6299a80249c399c38b566709", "0x24785875bdec9ee2dc76560daf9dc2b016472189b7b2a7d7dd99e86329313b5d", "0x24d6da0aff8453f029531e9a90cab696c4329fd05d5bc33ce3e949d2d35105ba", "0x195e3e21079ca38093bddbb11591cdbadaccecee91d44a9c797380fd2b701512", "0x1bff6b43a453e16b2b130323317ccf68c0116cc4e69908fc4feaadebc010209e", "0x073f9d5f52694d81ef62884fba9a31432e8c590087630266a86b89f3c0e9c78a", "0x2be3fe4dab84c18cce436f93d492a73d3335c21a6fb6f3c325c70f27ab0717e9", "0x280f758350e2ce22acc0220828c374113c0a04547216dec766b2669ed6874db5", "0x06a4b8aaa363261c2ba63fc31e73c4704152908250ebad77bd7902e381d5f251", "0x06118135c6b1997f96d30a6196877ee0a103713b91004027410a76dc5bdfdd5e", "0x1a89b2b10aba25ad34445917055b958f121305f7b31489f50eef474494c31c07", "0x2e34c3a24b90fa5afcb3b92b40591c3803921db4bb1475fd94984127afe1f4c0", "0x29f4cd64b7c9daa88c1e0cbe36c0b53840b9241af6be3fa3528cbd8495d89b76", "0x113034f899c9af84654ee734cf5907134128528f8ca2fc627261ade006dc5da4", "0x0dd5e41e4d002d17fd303a182c7ce4da1c12c29e5245a94e678960f79a03c221", "0x09495239a4fed063a3c2928a42413f02cf9ae08868146f80054e6d5ff531cb67", "0x15486ff36b7325528afe532981984b6c06a63a0b6e25b1fb271f63b8ca6e8d82", "0x2d8aae1d082a60db6b3b1aa0b244929ce37c13927e8d61fb0e918f01a14e4835", "0x0094ebb5501dae50b3d868311700fb837a5c69e9bd0900903601616f693545e0", "0x1fdaffacadac41b6154b16c9aa2c8859c42fd8da9083d2ac07cccb26e690c7e2", "0x0b7584cee1c78e903017e3a2e83e815830db9118a5b4779b594d764aa5b241c9", "0x1412e854da8a4c9e0a11d27ff0c4609bd728f2e0d566a56cc2936f370c40c875", "0x03d34dbc2e6f77a1d12aedfa5e11de27cc991c49edfb396ee74e269ef5da2981", "0x2aedd5795046dbc6c913783882d4a45463950d108a7e6910532ba1a1f4d317c3", "0x0a5dce1ec5c7d1991d275f91ed2fea3793edc4afa7d3b171d6ca2d5ec880e283", "0x158e7fc9d1596cf04bac80a49f4a93445b37178a9e5a76be24d6c708cd38959e", "0x08d73061d983610d3093e05e80f0494cec6e6a9752f85e7f604b4e65e6fa595e", "0x2eb16d92356a9ce2c7372015b5f16ab18974df29cf53f17e1f641d5360d7f209", "0x2e9bfb1c072ffa1f1448bcf3cb189e3c8d0454857a93f2db4c1f08f66506d6d4", "0x04da3ae9ccf23c44250ee9f32095b2d3758c3223aab85cd4e21791287baa4d08", "0x164495749ccd7eae205ca14f4882b6d5a9f84d70a2eb1265e7e3619322726e5d", "0x1c81b3933e302e2a23052a1ede80c8edc7a0830fc90d4f967c13e8fa199dba98", "0x0de77902a2da45cf6727a6e8790b4b387d26bbe3d3a10f8f1af7d71be82acebb", "0x0fbc8f1f39fa56f501d218cc4283d9f4f7c5758bf121ae97978a0546b275a224", "0x1b158898ddeaf57075ac5a033d069543ffd9226ec1fc9f5fe8cd17428e9f9c25", "0x10a9ba7d8fc36249b71ce38282c550047c0723d4324859b8f33c07233157f7d0", "0x1e62b7c53f510e60c1ccb7826515c00d62eb21aee00b0a12bbed33f3f0a41013", "0x21e2a30973e601469bd38f69e6bfe5fc6b1f2c546a298dbe4b759eec183997e8", "0x1f4256c012bdb73cc6324b6059b196f6607c81eebe0cefce37fbae343a0db862", "0x283815406e80c945ab6a80b4b7903592e3325feffff20d60df1eecc01c310936", "0x0cb4ce0de05ffede6708a7bb1424540d7811962447dea07bbd6b3e24ffcff3f9", "0x23f9dadf82c522df3d0b41e31a7f6ba53230df9046b8a338d3b37127cbad9683", "0x211306e19fb65ae10286d8b629d4cc7bf2145ab76ce513d4afcb5d058a5cd059", "0x26f18bb09eefa70257d9406c53b1703ed3202ee7ee291ff66b080757c8bcabc1", "0x2d69b46423fe79aa1ca07dc9a2406f2424577e3bfafff58ea504c104ec4f7dc7", "0x07465ba33026ed23dccf76d5215c11ffc8c750a30b5d9d39cb2ad3196d2c7e32", "0x0e4146dee78ceba688773810e5327946ae20f047ac4fab2cc45a390b4d46d64b", "0x1624e960b1dc56e5876ea8b2e2115cdb5f60a6889863457fffaeeac02066dd85", "0x1fd0e3ae2786ca41e655bf8e0247a719ebfdf38df0ef7f012ee5a5f9358d7ac4", "0x2052c36e6b89e1840e6d174c96649a3d2e7b50f2558cbf862a05c36b177696a1", "0x12c7be80bf7ff89d69d62f5c25d1cb829f598187578d2fd1158a47f3dc9b187d", "0x1e71226367cf0e67f9ee1e5bb9bcec098a0224003bc724f044ada63f0dc88482", "0x1b1aefde27d4009da9ca9dd14d8d9c546a7c84e6747a8b1fe2a561d62d4732f9", "0x28fb6fbe80d161b9d19d64c68bfd2467db0399459e4e008699bba3b0901f5b4f", "0x27034c9a18b55f5259805f96d8a1d9b7716fb1c87571f71f137b02314914ce19", "0x2e6ade49ee96d2b99cec94c7ab90989cafd911d9d74f6b969130dc9f6102c8ae", "0x1efaca3d5ae87a5f68d4f3114902e480a9416d69332914e0c3ccfaa25e819665", "0x1dbfa12bb1e7b0cf39195ab98b2f4fe7b0b523c43f61778b2ad38e17b660b8e0", "0x1d21adc595bb3462aa395e9dacc67153a5ac4e2a81c8ba83fe337e64d9981dca", "0x183a031f65283a2c57aa61b93f71f8ea2aa7ea9881b0a4c8a7eb62a99c62a4e0", "0x05505d703f7fffd323dc5679872d9bbfde81a58ce5a2c4fa004a1fb57005b3f6", "0x2fa94b93636e509a5fbbd374f111a54974eae4dfa857bc927d463fd02c665b2d", "0x2f1824efee6b90c7288dbcc4174d2eeb29168ad468c9f3433d183d38fdbb60d8", "0x2f8b0043c7ab7df1252a365a6536b5ee4586d79bf4edd4ce4d4ea1236a77d294", "0x2a066fa811754a4c8df61a3eeee92a7a80420f92541d0dcb06eada3127f4b346", "0x2dd483975bf2124fa85dca41749188c4f74da8127ecefbe78dd972b7e9d9e144", "0x03875224d3d0b40a164746fa30f7835ed6dcbce9d23dc4a3c41e65e0a70f7a8c", "0x29848fee626508de066e7046d93ce678c736cbfe64839b0fe774772c6514c1c6", "0x28a7d8aeabfc1efaa515c8550248e34412a27e7fa6cbd78d20b0067c12567a3b", "0x19507b15686e20fe2b1f98c9a1e495b36ffc24dc149ad29f233961e6415f92b7", "0x0a61b968f505e0704be2f676b267ea44908d929ff8639bdc4144945b0075cb95", "0x10975a7f7060b302abc4d5cd2e8d2b5d330d42b31bd5c8a478d7a76859059f5a", "0x23d1ef3b42d0c153d621634f43b24232bf75c90f73c5bc30b85fbe18b4c89a2c", "0x15b66bd3ea7986c7d2964117894f3c43fe02b8256d2c9c185dcb7f8c63b7aa74", "0x09e46a8cefa89c5ca6a5b961fbd945f07255af54c53f732d32619442b8fdf8e4", "0x0e72db48726c3049121cbfbd1c083459c0a633cd69538cb633b879e4af6c6bd9", "0x16f05309db91b39d38acfc1debd39a91cc444330c3ed445812142016a64d7846", "0x06fffdeeb381cbf39795f83c9d69c8b3accb2d87fd6ce4270f5a6606dd0cdfc5", "0x1a252b1f347d8d894af61bb2f75c65cf5fca1a2211de1f905cf39fa6d384e77d", "0x231561bb687a5aa8aaf7e1c595bf155ad2d93e0922dab327fb9c1f27877210ed", "0x00f8d4030eac93ec6da79f6304cda6b04be32f036e80b42addaa351e7007913d", "0x2f49ddf565cb5324e9d3dd48bb57022ccb7b479be123e003de3f2cca6cdc80d2", "0x1dfee8987696c32de30440637725865531f9d7c3d76fee9811656a435bf0684e", "0x058217bdeb3065546892cceae218f7fdf3a43c2383ceef12387fc29d4dc74380", "0x05f842392a9a07d4c7d70f1ca1f72b9e3b5cf5633e199ebf54ba2423560d4f55", "0x188b0807b79105dcbd5c36ecc676c2fee603aea072b7712f2ebb69b9d1752e4b", "0x1103f6ea09cae621ec6f695e07929a36037c52efcbb493f10af13cdb0055548e", "0x1a40f8ba3192f0c929248b4aed619c81a22f8a0bf03745d15372be437b0fc08c", "0x008823b7625f84a5f5c9a8891cbf3dc7a3477da215200ba420e51821645f9d2f", "0x052a494af3ecdef5031d87994f264905d25fc6c6267b6f7de4435bc6161f3f32", "0x0fc8cd19ee31da018d0c6c59856e6ba369a5429231113dff4c8e53d50f1577be", "0x0bece88708ff447f261035600d99b11389aa0725b446c9e8d54a02e8ff2de3c0", "0x2bc2fc2f7c93245f1f5ed0ab6c4cdfb771544f8dfeca02250d9ca1bf6dc2ef92", "0x22b16f8325f2a2c69907af42680101e4f86de80d901bb6970310dfa1bf805fd6", "0x2782823d5188cf5d414c280cfd8dec816ae7ff36c0fdacd870ae6449f25a6cb6", "0x12da3c90acc4189b45b06a1f741598dfb2d9c24f459120debece5c5fe23db5bf", "0x2d81a5f9fa4173f58f754643481d08089726bac7bb7078f4111b55106b5adf0b", "0x286dbc990140046e1e2637885d4d2904875f0afa51219ab2b758fc32cb600c6f", "0x20e7a3674a066766d04226362e73219b54ca6a4258260375e8397f8fc115197d", "0x2289f3227f4ceebae0c1dc514de4c642f15314eae937b39a3c3c12476913fcdf", "0x213251e30a761990f27fa1970426f9d44a093dd04524016706a1180753aa4616", "0x091655612a93f5be3cd31db248c7b627a2df2aafa1ef69f7f27659c13f3019ee", "0x1af60faf34b05755f1941195b02e6463bb42df76c12b10f14f8b162506b8d5e9", "0x21b41d0effd2b0440c0d3b70123b7731903bfb46db3c7a23acff016eaf107fd8", "0x16a0876c96d45b59dde82c8f1e1022c5cad31638c4e38cece5b7a56c408d84b4", "0x185329f9e4aa85d49d42a62ab4f641d62c5fdede17015a7d79f3164b690f6407", "0x123f208db0c4ef54956335d16ae7152534d2d8ba793d601f15524969639ea3e1", "0x1aa5654278de22380da76be7885381c1784c80ef4f4bb032acd13b09739c263a", "0x0955b8a1677a5b6310ad8e0492e82d1044a14c78ca87d1e30e0d7f3316ea6ce8", "0x0c7fefd4edd4ba7d92756b5173928904d18f9b6fe995a575f0e6a6e88f7c0e58", "0x116d188997eec6a1e2af2aec8a5db1ebc5cfa588fbe5490f08ded1503ecafb06", "0x258d2eed2c2de759f0b394b6a3ccd2d96e28b10018f3e7f45393ac8ffe947ea6", "0x229de8c2965aeac1aa7edb78fbfb5d7fb12e7fd7ffe6b9b3afb5e888349a6c44", "0x0b1fb0feafe98d6cf6372170d4c595adda71702c0e9d41c6ca1a03d7518f83ab", "0x285a05be9b2dfd8af2d0f28f2e32f5cce6b153d880d8acf6906780ca636c4cbb", "0x1d8240e9902394edee2b76099db03d74dff9185434f3a4e4fe8575969ce4f295", "0x2160be8233ce1b0b331989349ec4bd9b12486448510831e6414678b312d57f93", "0x2929b839d44bd2b3fc5bf2cc815ee7910db996cd5b5dff426c8f18a5adab52fe", "0x07d0d43c3f633701e5f0dead5516e94b91f97725e46982d199de03345920ec08", "0x0b99c27daff90cc053b37132622fddc5fd52bcebac1270b1cce378a7f02393ef", "0x2e952dfcc924c08102cca7e9565eedfece78965083b853ac1f4128c7f3d78691", "0x2190b77f963391066d6d26f3d74620ec35e501376b5299cd3f7e9c23b55cca5f", "0x05be919c52d2f1dc0d0b0d161f7ba7195510208aaebb5dceb0815f2a91168652", "0x0b4e4b3ca8aa834622cbfffb76e6f30f9df997dcbf93df22a7becc8ff9a0672f", "0x1620522a88c3b531c45d51e5363f94f9333582e5f6ee1c3cb76408d116144fd4", "0x0f442ea26883f8e188715f5841a690cb2b38e479d8ad7074e893ef19e3c7390a", "0x1a855bfbe80a7886ad81ddf0e7bedd80c1e0e4d1bb03130e03035d53b59ba710", "0x06a93868612233e3d6098de0b8126649036cc14b1ce3c7b19149a17caa20b66d", "0x0671424962e923da926612e9c0661665c4a67c524267c45a83dee528130d4c44", "0x0b119799f6ee67e2775cd4a71a8c5d455b82426e00ae6cecea32b5f4483b6d45", "0x26d468d55dc31cd5ea1416dca0f7ea5190642b77cafa7741f1233213796c165b", "0x276fcfe17ef821818010494be0aed24abc1a41eaca531c7f5d2f7129eae80325", "0x238d40c836db7215bea1455cc92b6d73f5100568d71a6d1e81abefc18c21e93b", "0x064c4fd1c50ef587dfc7dcaccd4ab7ad5c7cdb0230cc8e0e34d76ce399fb49b9", "0x03718669f16fe30adc38474a75406af29431ecb57f3db1ba7b66997b07b2a425", "0x19f104f90bbc03762d621a274a325c49f5073fc50c47db885e9456662421098f", "0x2486c93effa24890bea4ef9ae6cb9b8f65fd7591bd84d535b760229c0ce27ba7", "0x29ef7d3ea32d9632269fb022937c78a91d7bcaa063a818c5924b7b92d01ecbf5", "0x26d91e7cce1d8deeabc8d7c549cbb1beff0c152cb8819e8684cf20504a0252f7", "0x0248d08993b5ebb254ec885af2a38d3e415c4ad154eb53616b9b09c3934ad167", "0x20ae46ea2b701d379bca7431dcd231d5a0538a7df6d25dfde9ccd7dd02518db0", "0x0a484d6f4b86578d49193e5c0248680b9614950d8e391f527df0f478ec51db0c", "0x06717f5b869d2656c2b35c01e28c56972b04bf97eca77613e5b8ca92bcf84f3e", "0x03783c713038e54892dd2a76fccf0119a329d633ac533e811e511817c4c4a350", "0x0f13bbfec1c7fa9b9412355719d79deb7376afde0da0e70e2cb31f752e4f9d34", "0x251adccce5317c9893770f1694a37887cfeb26f1faacf9bfff6caec93a6182a0", "0x0f825a06fc69017ca9e572c732e7aa8595be6f6caaa1fdc983b9af1284f63dbf", "0x0a3cf2fb30ad2c7358975d96ffb895de8fdcd61f74ebb24d3f1cd6d251eba933", "0x0251b2e061b12c56019ec04c54d7446c13bbd7df46d1fd9123d6f91b9bf77a42", "0x2951702dfa126f50ba6d0463be4ca34e12ec8de2818075fb043ca471bcc2d379", "0x182c9f08809a2953e6465ccd361b57ca28a529bb951a355643b7089eab715698", "0x0dea1f640e09dcd69fb450088cdb061df4630db6292f1d6085c11d5ae6b6f850", "0x157410ebe0e8a0c81ec70253bc16022ddabcce7070c509e78aa1bb6f49e17c6d", "0x117b09b34738397c6163ef647d60969d6f797cfe1f4b4a55b59490aa6ff558ab", "0x15737e5a5b31340f4aec578a73d86e4da61cbd4d1a54bb5fb9fac3678a762fe7", "0x196b0672513f279f5db200d1264c03c1ec5f0be000255a3d256edc3eb713f115", "0x0bbdce038ba792300cdb18e689d2e0678a095e69e10a3a56bb6f2b18c076f698", "0x08e4fb5e144e2d867c55ccb2cc02c666060be0ebc3f6faa98b40974a53dcdac6", "0x254cc53ae8aedc8323b546a40516f9ad27a2ac1afef9dae8bda7d56a2d6baa68", "0x1a2c40f1984dd2338de7281020ad784dfd936ca376a8bf3491ca61cb00287204", "0x0b02a14f5ed5fbe30f98b6bbee9ba25f3794994280c633b7dc03a3a9bf532100", "0x15228b44db9915e56aef3fd0e965f2bd0581663dcdc77e5b6a9869480744160e", "0x24ef8fa23231f34c98b1e19c0e2b2d2532ea1048f0a45c3ec605cca741766317", "0x25cd05a9267e21e2d0b57f22fc07ca332738a6e94fde2ec72f766b7bdd4566ac", "0x0ceea6b6d86dde8d6313f7d6e5199ed23a6636984c8bae0113adad98acf71272", "0x2263c0701b49306df1d77f6f1a14726d2b6ef465bde4b950492ea402f9014657", "0x2fb656f4df02841248f98a4630369337e443d1816e16a3c1f084c38f005ee10e", "0x0e6f9efeb418fa0b4016757e12e6414760bcd4598e641d894aa245c6f3a96619", "0x02496c73995124ae0044151bb698f5765f8272f388d7b512ea9436e2cdbb8314", "0x0df3c49bc65b7087becb1940994f1cdcebb16f4f21121a3f662679e361bd695f", "0x02343f6b80186e6caea2ad4df26c37628aaff7131761a180f7ae28b9fbb4b312", "0x276b8652e6133ec164810dafbaa40ce8fc3a30f78266d8e7c61b2fb0be8546e7", "0x2bf09a235c89febe7e56f002df7b004214bf00da1194018467909ead95ea85fd", "0x1ef9064c20f83e8c7581b609ac572bdcf4b6e1fb368cabc0dbff08ad95b73e73", "0x210b418e297eee3da4e80b3c937e1906f5b0f55dac023e27646bc1dcb8cf8e83", "0x2ca9e6ee5998c2ad06753624075de0771a7d019e89a6d6f76aff5993665beebd", "0x174ae2a5db32dca4d56226575f1e5c4fb0ffea7ee7764b1f51ddc7f5256c86a0", "0x1862319cee8de3ee4d638995f693f324546a5235d22952cdef52040d8bbd9025", "0x1221906c99798cdeb66c50f140b8b579e032128cce09179bb263390ecaf9cd49", "0x084dd25a4d141a723b29c69cde8e0bbb53d031926fb0d14d09137e3f8a122f1f", "0x29341ad04e73a6e69d3ac654d4450a386ed2c7947b01769ed324d6e331381411", "0x1aab0dc965161f77eef8d0fb4e72e46bfdf6e3d718eac4e5cea176339993dc08", "0x1852c126862b742ffe3e568fe27ace0b675fd5df36155a66099985c700d26984", "0x026eabee5c1a5c1b0fbe224177ac7a16e8f0d7b48c4efb62eed96a931202f0c4", "0x268b607a75498aa86a1eb65db5fa72a54b41c3e8ed9ca5a707d76113bcdaa492", "0x10a5051f064fedc0bfc0ec7b6be56addf94d1077ddbf456a180f3a9bd5029beb", "0x2c27938ce4e1e0f98d5e53359bceca5a9c22066cb3dd0f765471dd85ff641214", "0x060390a2034599638ed0dbc2903cecdf490f1c20d605f62b7f95bafbd367a3ff", "0x2109e7dc4aaf6cb2a13ff62bc3cbd0ebcd3ebdf022638f5e480d010beffec7cb", "0x0106959e10ce6819bdaf48cd5c19432d35ac8a167282b44cb0a6703eebe3ed2c", "0x276acf8bce26b9321591bc588392605b50df7f766be90c8317a19ee93c8dcb40", "0x2625cb1be09ff63c5e0340798d10b774c04321d22340e5ee8d2cc4aea3dc924b", "0x175223b56bbc74a46feb991a4fc55f02fad1ac9bafc75c76ca3db3a69ddcff22", "0x22cd6e17bd1426b13e742213606f1558d5619bae25fec69be0df6c31ea6b9970", "0x033307917f2f058ae6295611e36036aabdb91a0fb9f3a4bad3e6afdf283b1836", "0x0c74e27d536a6274a8ab91df7afb9d4ebf944c68157c4135a81993632ba4114b", "0x11b2212a08cb877ccb3b4a5639ce7825ef74875fb213f0761369ca5d87a9a809", "0x2c8c8d42080e2e9615d4c8dc0f20c3c3005dceb1697d9623ebceeb638ba6eef8", "0x0d61124d06cd75baa08d463b9a3a3a1cd1fa3bf6ca508399111e206dc19f7be5", "0x18a8cce9e7aa6df3d5eb35406b0cd46b87e4b08f8fdc991e91fb5924a07340c0", "0x01453226c75742b840fb71f151e3e5346648b9a07fc10aac31485d7c0f071a80", "0x0eb05f52067935d0b5517addb97ad9134f66b921c80fbe68548e0c08cfb8e60d", "0x17883a0fafa37d03fbe3da640fdcdf02fea822bcf612d7e82e0217d38db4020a", "0x07516cbb3f67dbbc050bd2ec21b18bb9d0ea9971770595a85c4863633b0e19c7", "0x1f86ef9471443b26a59da67e1c2a223e457baeeaff2ae9f0090c550c30bfe2d3", "0x0b84ec6355cbfb43ab69709d4fed906685f02613d9b48612f38cde33c69e9f03", "0x1ac016b40d30d26723c5bdb4e9d2fc71a1b9ef8065cd08ccef66ca98ce789730", "0x10b2fa89de4545606176a004568cea6c3381be9612e83815467cc4bfaeb585f1", "0x00bf5674a5ea1ce6fd4cb75ce7f26710e510639b34354e53ca2e6631b404d5e8", "0x2fe1439993bd33783ba21c5ec1f28dab97147a3e8664866dd04668e04c0137b8", "0x2f403be7d38ca7336768a3a9c7f656692853628f4378a74a52df4896fdcc4034", "0x0e1c171baa0ba3e825d242d1d70454b833c3e23fe89e7e223d48decd8817db94", "0x172fc861c822a0459d27e0783fc603409f835913f73b71d51ff31a62f6e4fb87", "0x1bb9e2454a33c3c08cbe31dd75b33d9d6642cd9b0a978c0251f5b91f0823523c", "0x29293f8422d4f96e3dc694f4d99846ccd6cd5b4a78662625efc72034308d4c3a", "0x29b378f2446a9a31f37d475c830690532994edb64baa43794e13f1d9c6949d13", "0x018a82c74bad8aac7b761794760e090acf55a8f95556f2aacfc20fd98c19616e", "0x2c1fc04ded87e37d9f1c639ced48dd8c9e46618cf49218637db54755921b1644", "0x29ea0e1e015e5caeb3ff1ce6d2772502e7778bcfa3dc0377cad7d5efe674b2be", "0x2a1753c6a4c7c43716ce3371f140a65903d228d5939dea928ec37968610f3349", "0x02d94aa3bb5498d0d77ef1efc5950519b1029350d4746394aa68e8526c09e1df", "0x08f269084ee637620a11780eabd8e8f96c2b04b8db6027ee88a7be850485dbf0", "0x03abf553fb5a4b9d5093d3b5f898a111a4261c2419f3e055060dfb45d82e7db2", "0x1b9d84d189c5a22bc9be2926623361fc6be7c714d079536427fc7a70bfbcbbb0", "0x23afc200414f23e7496b4046294db690a60bcf5cb72c41a61ec7351365c885c1", "0x26a5ce6ea63bfd9e6e1a37318938d4dda0dcd5fe9d6c2acf1abdd27ce1453799", "0x227fc0412f71fbe4902252237859f0b8a694990316918ad670c3454ef255f9ce", "0x0c6b448a7deae48afbfcf34cb758d847568f75d7249dea4da09a90f96c672bec", "0x218c92e39e62dfc119c4cb2ded9512dc217a9907a9a8b0edb96a275169f8e9d9", "0x106bf92a017c308f0f726df3d0515aa6feec1c18020c380333cf76c25016bba5", "0x1f283fea17244f043b7c35ea1e71931649cf7000692546ac543a65b18ca3adaa", "0x1fc5f58e5a06e1c70ebf3fd2a2c8dffe7bdf2c2c179b817fc1f41d1a26ee7dae", "0x22d0d77f0ae4cd9396cfcd8a27a246303cec70fedd54beef6dd86c91938fd560", "0x1ce511212d8688537a5e039957276e9935b3e8d5bd47045c6d5835108eec5f0d", "0x1c83ca5df6ac477ae74236c49f9309ddf52a4290f9c7c1d3092c113012d1c3f6", "0x2e72da0e1d1d1cacc95f8a913d87a10688af0ad11294b350cee6d128a97442ee", "0x0455ee8e7552be76b8e7c2597d97871d6102b49eb2cf1ddb6f681b7e05b0d0fc", "0x107863daf4cac318dd06ab14f132159794902e3b8da171b8848d3eda04e6c449", "0x0132abaf80e33ac48982da9d5d2fe91191f17f1910fbdc06731717b6bc63a9d8", "0x134e4567b290ed94c47b163fa304ac8d14f00f9e26375f6299a846770f4aac21", "0x0e6c1008a6d6cf304a1dd9e6194a360c1e9aa6d765a2e5328a1be2b5235164fb", "0x2f8dbc0f86cd3308a3d598a9343d638a3c2f56e9736e91f0f77d508bfd3828a2", "0x1eeda9a9c6d8a03c3cd9efd1bea7e46840d6c70d7fa82e085bae67347e5da7d1", "0x1e2bdca3589d22bc09315622837feb89557205a87714cd8011fb26dba1ae0fc4", "0x1feb959112175ba6f2abd9d6051f3aff32a9c4da459fc5f3baa166b7e01204a5", "0x1b6a4bf2fb32031b9837654b1fba8aca04b6472a91d05f96320bb5bdd3add66f", "0x0bc2076260db797f04ef2fa60c6cf5d014d897d3202be009fc5d8ea60dc18cbc", "0x039a5ff324caa9dcd65b8c44bdd1d423b6c02e4050ad8ae931ade6dbb2273cc5", "0x1e50c1f7a5bd8a96614ea267e0c22039cb4708670638b16e4c4e6b4ba088ff35", "0x24315140db1e03d34a9e890d85fb3786861adf648212141be6f031edd51b8c0a", "0x012cb6f35a18d9485c72a073c4f9037dd664d98d011e892bfa06df8bea2bb5dd", "0x149a528e7303119ce066de9da4177803d774e3f1b2c6dabe9edffb3951481615", "0x00990738ffecc6f8dc0e6b5269bd1dde74c6f6afd47779a119d8c963d5b65d33", "0x15b319e4f51ac8931ede6542ff983cb2ed3bf30772e681bade4cbd64659fc741", "0x1553343f95b1ff226a6d8532af3e489d305a08e8d5c532787d351a5c30b426f0", "0x124d40c154d4454d10e254fce373986e8a2ca1b43dd221b55a8fb8d19c5a2314", "0x08632672fa4236aca43f4dfea0508cb6d3895dbfef58c5f80f65ea0f48c17a03", "0x18ed4202e081efeb7107021aecb706f76f7466e5e36101fd92674c690bda36a9", "0x22b62d63e4daa7c6674dc97f43d7ec63fa9cfe047ead601eba36fd375d840091", "0x1f76ba188448c2dc50cfe2ab65caa6462866c5e31bca72d12cd7dc1be7ec16d5", "0x259b4968f9e4c3288590bb521b2bef5f3bb1b30a728acd45627eba45d73260dd", "0x1a1af2418b1ecd4ebad24c5a54adccd009072a2b7edbac04a0803870fcdf21d1", "0x13c488efb576d98b2f58c265a0d76d450c74c0105d225a6b111808cfcf13e8f7", "0x2e0278933d94b8434c52a364e5aa39d4c02e268295819bb0a4c999b15fe36beb", "0x26fc6a0f560e5781202e95e5866e679ea3aa4a76cd8bd4fe67550bb4e6c1db59", "0x2d7ce0354e6a457ed5d3621afb91732d02e5c99248786be8ba0c51da68fe9488", "0x2de1db6dab7e00b81838596cce66e8bb0aa26989a69386ce5061560f2693cfd7", "0x2e306809073d4a00babe836e6fe48eea8e4fa13b9932c928641fabad4944f587", "0x21b9bc5ba7bde0787a20a8aa9ef9a17d56ae2afc1d7bd7a2ada77506d16b66f7", "0x037e12238029fbbd0ef48a32577480a4d9f663ae39a0e3b6c6ad0f8c3914c711", "0x062340efa1a3061910fec854ff5fa9037ddd749d9ffbd5a6280e9498bb7b9e9c", "0x28e2ec6752d07e64574e4e92409b417686f725127f1564d1646c4ff44beb9dec", "0x1081db39ef41961aac8cfdafb8c4785a847ca3348a9b6eaf5a95e0ff4f3c4541", "0x0ac03c48add6876ea8b8475ce16d306f80aea6229d08b3c986662fbbb7a22370", "0x09941366c57343c57df860782d53fe8adc2a75da2d0f174364a055aa7ea07d8e", "0x0dc938da60ab9182c7121c8aa04c1d955c1f729b7ea6bbd8c37ba58b74bb4dce", "0x07426bd12d4769e174840d4a3a64b40541e85ed86dd21ff5d71be7d7eba930eb", "0x2ca34511539337cf05471caa3ac6604ef0705b3d2e4874db17877f6a3a2d666b", "0x23db1c118022fca90dfc9a2abf1186aac09c22372b5a6814835458d33c1833a9", "0x282b59962607ed3c33a9f9a36899a24920768e679c43b319c781acc020c68558", "0x1cec719a4e8fdb8383d544623cfb2ecf5c087ade03a12cc202060ddf23baa05e", "0x279d1490e81ceeb73bcce66e0a6dd98443b711ab1317a31ea2c17718c534ea41", "0x168da84ebb303fa935e70e85321b10b67607392561e6ffba3364f888d2a715a5", "0x164c7be1367b220daa33b5f8f637e9200c43c9223fd71c41fb9830287caf3502", "0x1c09e997ba2bd1625852c50e1d6abebb6ec6c61b20d1cc91b015084942162bcf", "0x2ec385a2ef59f594167112b1491d5877520634bb30d00dc682d089ee458336c5", "0x0cfa9efe4507963806d38e2464287368238b2f90e13ae6e520ec5f1e5da1ae83", "0x22f8fee0b3132a953bb0f4d4acc621b5a534403d922f9bf5a22e512cc0c103b9", "0x14473dd3650a7bf140743b43c5832193823e2506c60db669d71c63fc7cbb42be", "0x16f91395a42f68a912148920e5b9c30b536e84f15ca7b509e115e33a08df45c6", "0x0d9f494ee675c250cbdff49cbd786036d899117513b160c0271c8ba6faf30da4", "0x0bf36d4c6fff4101d84dd07cf6d0a9c9e5ab346d5f14c9185af3db3e13d697fa", "0x23452880a7cb59d393e5980266f1e752c686b57a87f041f75ef1318932577905", "0x305f2a14df1590baa4d62da4c168423625e3e721f20c0c21a0fb45ceca2f57f6", "0x1947f0175a8a9f3be490f60388486781533ac0bff5b8730a08b435f8a3407acd", "0x2de417a960b566abcf86d9abf49ad41144c3b6110deb4f47ea362257345e748b", "0x13b887c77592f15dae0d20fa25330e19201d5572df244b98dc2b03bc0683bea3", "0x097b35dd0b26e46805e16fd0490ce0560916e49ef1ebca21dabb4abf2c445370", "0x237a037ad96a360aed5937d3cce38ed91e58917b143f17233bc2d75456dd4151", "0x18cdc0365a8dfabcfb0494270af4822c29a6d9124e8c190a9c0b4826774adb46", "0x163428bf966085965901613a1cded9f28d62a74d001e6684bc3f6a47a8b3bf6b", "0x1dae0d15fa1822a5e59b940d81b3af27a5bd3f7dd508167ea6065b6d49c332df", "0x02add9c74cf22d1e4927fac6754b5cbcc172d4adc75ac1fec05ff8fca0d977dd", "0x1edb562e5b4376324a0b647b90690fe3364078dc212de0ad36f5fb26d14f67df", "0x301dda97e290a7a01ec100e59b59d78fe4021973af1d9e7d101231ed8fe9a1f7", "0x170a115e7fb0e76a4edb05ac080dd24ddb5c27c0c94b3b36ef5e6ec54eb98da1", "0x2976381557759f24da99faee2d6c5059bee939a66fb321b9fb2a609e4d47e9f4", "0x0858c7c6f9fec77cc7b6c2a5df2dd6312140713f97cc7c8503b4d7c6c81effa6", "0x12557c612c0f7718ec112701d8057a1dc301ccc30b2c8475a46bcad3514d39a6", "0x1ab063ffdffa216a5bce2900f37d819f2d75e6f00c67ce024ba3f832de64dcb6", "0x28493d04672068c6a6e94f79cb1af1d4152b823546363589499c0a141bd2a580", "0x023ef9e5d4688380ddf2c16c0d08a831237ee58775797c67d95c6e0d8d8af345", "0x1093325100722f8836caf30bee53c0ef14eb18410bf915570b327ffd9464a5c1", "0x1705479cf3bdbbaf78d4f103d38eb47413c9335478003810893f35259dde8d55", "0x00896c2b79cfdda5eb7f6f9ede3ab477ceee2b38b068174f15a3b37bb8b348e6", "0x149f13bc3e4e2b0515b378a2747dfba90f7d5c7731e59e9f36bde3f04eb50cb2", "0x2e14222448be50c068ecfebf70944b593540c7295ca0e47f2bb7f63199b8712e", "0x1e22c0396024ba3f6db181ac92b229a5187187033b138fb27a1cf7f6d87050d3", "0x2c5a1e453406fcda5d58614353f0a29842fb54af88ec4b73f7778563e05e07c6", "0x2d08dae6f1fb7e0250a660e71b1cd31853c227b188d87559216af1c465d8abee", "0x215533a77776226664118a8081d87e212a1250766139ea38c769f93ca2b4d7b3", "0x1cbbbb26f991a721c7bdf835ec9d1ee0c074092fcdbf0079e4df3ac287292edd", "0x08f57bdc3c7c95681f005500427ad5399259f69104c22206aec2f99122924e8e", "0x1b45938c7b84f0176f33520321500d1297cf97aa6699664fdb8ccd75ed39912e", "0x2aeb209044868ca84487b7916e6b4033ee6cbef726e269d0e916ac2cfd3fbade", "0x27635bd2ae7e0cacaff0b836596607a792403dba10ac3706c9e11977403a3eb2", "0x22e593b7a67935027938149bf16fce07fe9e726055fc0cdd07e7eaa17fe57301", "0x1795962bb5100236a183de49169d6b83a427edebd23711b89694da83cbd087c7", "0x0077fc8d7cd9adbc283c25321bf37598cdf28827ed35707cf4887fce4707c437", "0x0ae5b494d166f6a32442d1d0bd59b65ecb7ad8f6571b77486a45ecd827dd1280", "0x2924229b6d648184fe63719ada7041e69272cdfe895455d77f01634a8b892c87", "0x051e840903ddabdbf22103674933685142981c0852a6ca6af0c8d15b068716d5", "0x0fc508b7e620bb6c47a85971bfcbe28df62619c5309685d0a0a6adf3c8bf2f84", "0x19f7621bbd659b27d189bb32010b95fc2bd877392e2b56afb558ac5fc0f0f22c", "0x303e98ee35bfcad292680a7956e0b932f7c572c0a131adec5006d8f298b721bb", "0x1a78253e57f825b0cbc742d87923b27c51f4a531d1235a8a901d997e31b2ea07", "0x15e220939ba64b3a3ab29debf3b0884a4c4385a74d845e20e3449e7fa2f39320", "0x160486b6e621dfa0e90123a4e43fd69221ec1b0ec73d196476b504bccd290b94", "0x2beeb42404db8ab5e279624bacdb614b21b5ae386f2c2a34a798feca76311006", "0x24b407500416ffb0459b1db9740670bdb8be8adbb4fd5af8fe9c4b5ec021f0e1", "0x07f5fdae988285c49bcffff23fc1123baeb103bffc97df6839a0c3506b7c042b", "0x2ce9b5a08decce4b853e67d28af6eb4c755c7bee8190d7806af042759a399503", "0x1daadc911c3ec3b8e5f42cb123017f1fbf16e4aa2e32de94b018128845bfd022", "0x1ff80b169617b7ee5aaefbee67aa64bd64dd14ed8edae148f99a16e3f2205651", "0x2aff68cd38d188b8ab85c008f300c50882498b5068d3cd3b82b5ae023bfc6ee9", "0x114d0b3f54f14de45cc4db5a1feb1c4750ea0247d8f24e8f6f472d92eb7086df", "0x12b607578c2d349b69e0f756850dcc21258f85ae8d8caa8a3a021cf8d02abb9c", "0x14c692ebcd07fcef55092bbe950589f47dfec7ec4f3a42944b0442690795a054", "0x2229dbdfb92ae7eb8344eb56d746d07067637d75ffa439edb3d75a8b08199f20", "0x16f4648ac47c197fc572f58351e4b00773ad9a2bcad04ac0f873a556b6ecf6be", "0x12d90d55c8d3ec184dd04f5c6aeb639bea70a7e3d013fcb17437eba662122ff6", "0x04e2c49756b8b5ac26af9d939411caf87f15626ec4436deebc7dc0749045216f", "0x21917d723a33db266b07f81948955c45dd507857e9e5981831d35c56dbd0bb36", "0x0d13b46aa1b41168f81b4d236512268c23e7bfc4108948b5e9f3a5f5ee0c2661", "0x17bd731275d602d17ca1b8ec47cb12df1a4bcbb9e3b02a26f86a08b2eef1fb70", "0x0240ee601a6823ec698a4bc774e6dafc2f3d1cec2c5c89f5bd13629bdc692745", "0x2663ff9d0eaa6e910593d11022d3c77b877a3bed8d007f6fc207a8ad75bf252c", "0x02c45b53fa72d7a0d7a244ab3ab0b41fc40e9cc38cbbe294e8c84a72c7c3fbe7", "0x10bb8a7531ab05d22872880f96834d23a31937623df3fd2953885abddd1222b7", "0x2222950c8a1ccc1c2122a353d1482744d42e61254dd653bd25ae69d2ba79b031", "0x2c3d3eb720537d2dde7bfb8ef6265d26c9d6d918e37f2e97030fbd6b04457db4", "0x0539a696e15198169314296de56dc874312e19e5b3518ef5d50a72cf98a30895", "0x25e2a5fe1f155a2eeeaf50d01664f96f7d6772b108ac5c4cbfa5ef5a1fcd5ad1", "0x2f5d3e87df6904abd454efca9cc30f154164220c9e3fef27e1812e0870b90fc5", "0x0dee20e4731c0e7542e4e543e8be6c2ede71d6eaa821596e4fc9e68e89dc300e", "0x061442c13b9d1fb339615cd8afc0bc9e11be741cbfcbd2b3a92194034e9d2e54", "0x23a56185e12d6230a0ebaf7cd4a01cd18410d3d2ca991f79af5716fe22993123", "0x03344b7b9adb15a3b7c3d64fe1eec35342202ee3c4a36db2d49e81e5174235bc", "0x284b751ed61d484ba2b5940a1a1ee1ec536d392b113d06db4995b08ab661e675", "0x1701ad26a42de77f4d58a4c8191f9d4730309c5f4bcd0c6dc3a0aab396340820", "0x27cadda519a8370108d7aa6e9102f6b29e8fa2386cc0296593f2f63449ff3d4b", "0x2626d61cb110bb03b32712d59f0e3b1b2f5b9059eb994807b267e4ad261ed696", "0x1cf3330897c54f25f15f5e8b8da57bed0865f3fa841ec48441a9f0457915138e", "0x01b5bcce9d699e55a490d3d86e8c92c83a7256a7feb9fd8af6c84d68e148f64e", "0x2a175105d15ba3fecf5bcb2746b3c81fc8ca468d1d4aa999fbbaa8d8112026ef", "0x20a2382295eca0a61c888cef81115ae0637d7ec792d30eca6a0f298a77f9b26b", "0x051549bb9adbce26e4b218b29ca79e221cb691c9ab5b2786239ef8126bad2e51", "0x081ca5349e64d60bca080bfc534c8b30b18bea4309cf02f44c71185fe688e079", "0x285a400d61a5cbd6ca7baa7c3c9aca5503b17fd702e00420bce7332382c0b82d", "0x04e1bf8c955bc3c8708262e3ff148bea268adb662ac2459479e6af2e73440b21", "0x0bbe19ac4f5c67e9eec32c9e6b7dd7bc8059c91f501b2f26a92b30bc268b0b4b", "0x2724ac58e1ea4df19e6644b8e7b7665d9248d34ffbbf4c4ca8934c608d2e8f6a", "0x0446788d95426afea830d1a6ca8d2d085bfb4330cb2514dffd60a9ab70fff709", "0x0e1ecf26c286c86abd910c2b37ac40bfc0e65cb2914269a6a6aaec5cdff5758f", "0x29a267dc9f3d12d601a849148a2449103f25713083b1611c386d7d0c05ea4ba3", "0x1dc34a60e783b5daf42125586ea2a5b49dc2cbeb9d2b90ba881c34ceb99d2d3b", "0x2b9fce58534bf4a486c3220f0ff9026f578ca9c435d8321024d10eec82be4e5b", "0x2fd9c97f01054fe61ca5e07e3681c1dd9a9d1f8ba630dd24ca5a344c3d666d19", "0x004e6a7146c2ac015037f0a82c1bc746bfb469cec9fee37f1b708239f433e647", "0x0f5beba2020afde73013b7efe0c1384762db8612dae058d0f849c7383c07943c", "0x1c5e1e6ef1be1aaf4b6e0d32d590dc5b249e1b1bbcf7d05d3e60c63e0a18667e", "0x095675c6e1e8f6daa8dd42060883a7e9795f1bf881095e98497d33fd5c8cfa79", "0x060093cc9e1f54f7bba74af718e19a10f033198c22d21f3ee80271258099dccc", "0x2c44a35ca8e24a9f5093ce1cb92c8d0a49c5337cc3601c44e4f12e044ace0dc1", "0x03e89623477c5f1365bba16ecb1a8a5a70e3d5c83d50f30715a4074343e68f68", "0x1925fd586e678334d1618a7563499f6b4d001cbf3afb202328435f2d49cf734a", "0x1a187d62deb639b820168e8b725a76c96e556a6e90304a1aca7f1971057719bb", "0x17238dde447d9bc6cab663957ff54c74b47d53bad425dc3bc11482ad4484aa0e", "0x2d7a0593a56bd337e7eae8a984181a77465891cb699d069efbbce87113570291", "0x278387c4eeee6ace12f06531a312b777895ecb43495bf90a740b5ff258a733af", "0x181ae209709983bd903f41b57eeea056849f4a86d3d79e12892a45250e01f478", "0x2867934ebe66c335663b038c9622b41cb6bf88402c049e91801d416d73441a68", "0x01651870d1a0d7d05a218d811e464fc4767e798061515e43be016c6672b4db55", "0x0f17095f8a2b21edd50126d275134f29cfb911a7846d5cf2da795be0c1a70024", "0x0f29ea40097b34f39d01cd889e6319731da77302171713e2990e838edcb51ce8", "0x034503418f27ccfbdc0ee2529112d5768087367386315b530a2d9a052b608901", "0x2da658aeea1db7b2066cc982a3a4a62fc22eea96a956b8c8d4f6b9f169bf34f6", "0x099891e8f2205b9edb734fb0bc6c8e14d4cf2eb7850a5496ffb44dacfbee6877", "0x22b28527a9e27d65b7d9d425f4b2f4d57bcdc390089d3ab210cf46373565b251", "0x24ac41c21e032f1205f48938a1ba892716ae8d4c7230864b86f3b75576d249fa", "0x0efde17c56189b5dc8dd3fc9d4796eefc7dd52347c0dd3ad06538c2cbccd8601", "0x01f321a1be55e4b41c5d5a9985d450f6c23a2db580cde1fd17df1ea16f393998", "0x1284635e8aa17e34bab161fc58a3e85ec269123593797a44622f6bc5b14a028a", "0x18403a5edf30cb8680f7eb86264aa0efc6422ea6f34efe55f9783bb6bccaaf5c", "0x29ad7c5e7c5ee93c961d4b670c2998047174bbfa7edcfe28b2b4d19f3c95d995", "0x2685b8dec7109c008c4eb559aef8b289648738087770d65a8a4f61d933309ce1", "0x06d1a1bca7522d697a93b448ac11d95972e2737c9f6da9789408ef4a701c03e0", "0x159f8629446b261b17f2bba98679cd215ff18a8e22a0addadcaa084ca728be2c", "0x2100c1605b40e1644c527571d1f2a268d17a89c1b0274fde3c1856768e134361", "0x14cd583763c5aaa5965a6cd810d3aa708ea1b01e865ad84926b6dd8a0c297f3a", "0x2f9afdf2575f844497ccf724cdc060155b29e2f452c95006bfe54d4402068272", "0x0b6ce3f06fc23b61e6949086a27891cb2132730d5d976c4d036c7e5aa960ecd2", "0x2096a4ace19cc7c0d94c97584f8bd1e1aa0f38a05ba444b158c0a4f33def65fa", "0x1742909d20f9f17efb5c6ce8b23f6b85f7db0e01111ad80e910da7387926bec3", "0x133c486c3be9d399176c89777872f6f65cc4bfa41a00b11a2b07db79541a4d9d", "0x060b5bc9b94f45495d6e3fad5ef7c20c1d304c3d0b5dbfe930c8ae22233fc358", "0x16c0f928676951faebb1a97f70dd86bb2439c4fadeb26028d69f33107949dcac", "0x0457f42dbda7cb38de3369bad13b68321762477158c3d9b2edc65731d2b0c43e", "0x05bc53f4bf388b5f477d5bf8c5de1e7f38ef0f94c775d737dfbcfe40a7fcca47", "0x20d057e30e2563d7dbc5d2641226c6f6000bcb549e7dcdb9b7df819ffd10bcdb", "0x16f0574e7c13b41c5ececc36f9590719c31f29435a736c33ad9ac1afb9287583", "0x1b9629d5678b18eca5f9c5244adbc287bf1b1a89468e549d1765835db5fdce7e", "0x27d80f156488fd903d07d2c64460dd644d47db5973d0c736d914e3fa60fdbb1e", "0x21197bb3fd8b66d8735019cdd7911cfceaba63b49dcd07910e48c993fe79d950", "0x28f5f49728da96532a66a2d377eb299de91cc1d78701d44a0a5a5cc67ddebf9e", "0x165bbce0d62d6841124276f53cb28883ac5e7ecc12d12514e2feb2e19b7913f5", "0x14937807a2d9d72d2234699c5f3b12f1b72e282b216fae910db56f68cada4bf7", "0x07142fc4901f0e214ec4c74f1685c35b0485516b7b827d75ea1b801e78f0445d", "0x2714d6a77ac0ac766c4da2cf468c59fcc7be39c93129b9d927c2abd6843bba53", "0x1d3110379d97c5ca70da7b048a8bc859587af977b5fbb83eaf0f951b1db2cc69", "0x122f9b480060c35e6b1b0bb0212291b0adbe2719c660eab107abd5e632e2b96e", "0x02815f76f3eeca94b8f2c42982cf182c937af5efbc802621c4ad9087603e5b5b", "0x228acef677466bbce8160bd59c938c5d3400c24a10d1a3cf145519ce1397904b", "0x2f6f0800c73e0b58c4e31639c1d98e57aa1d7b38f24198ddab4d3bdad8b1b1d2", "0x12dcb00b96e9729e3e440eeab56d23b49592c8d306826ee18efc8f7fb11fcd3d", "0x14c934fddb9e93c1b539ff3c72692317d0c365fd7a727f2b0d40e0442ee6cd82", "0x1f5b48fbb10cea0ef59ad9b12483ed7be5c601513b0ccce1cda3a80c45a80c62", "0x0768ab8aa5cd040e5ee5de5261110d22bbbd30c0b5d9ca3d2b075ab0b0de8f38", "0x2b84fe02c304f24fadc1edc0691f5bffb0501f7be8a381d099a67a9b7a870347", "0x1827d1191b15dcf51a200bd968f5ca9cd1f96c3fd79edd645406ca0cad18251c", "0x016950a06b92b5485ef759d0a43945c48231b0ffde5b2281ef87eca0180bfadd", "0x211297da4d70cf7d43f3ccd70a88c15224cf043f6faea68a74d6fe282a831607", "0x0a181217d1315fc3fecf5e801814b4060a742f8186893db95f39ff21721e4d85", "0x286058ed6304f12c9d7b6053e6d2279d34a0c187f029810854c809486d834444", "0x2cd0a562132678f5f840cda24da4d3060639841f53c603b1a7ad459f81ddf9a9", "0x21ce26e8e7c83045d9e79428cd905ad489dfbe75cac1fe58540867c86ef30135", "0x014addc67a9e923ff890ed279b6a29656b1145ee2a213e3c067578c17758c517", "0x0afab4df7911d1154f9b5b9f9d44d08c2ce948d0e92a06e3a466c1293618db80", "0x0756ddc46866ba28ae20299eac58c3d58d07c0c68f84fed9cbe306a0b9a00228", "0x15ea177d8bc1f254c3d290e72d8ebe6f9e5f672ec4fa5bb53bfeafbd30c41227", "0x12d41992accc7258671e1ea6167ebb3dc99fe6275c38f12fb7fcc994e3263025", "0x0570a07021e7f0c979ae47d42f9e3e371249eb2a583b7060822d834e689cf8ee", "0x21b6e9c4d6dc7798292e4900ac89f5ba6dddc3d27bbb50c45f7ef63f63e6d70a", "0x0bd7383dae8fd3f1af1696a4973bac5a34a01c54adc73f1aeffd5f31f01fc1f3", "0x11a866fd59e5ba1d90c39c5a4a415ec8303611f3450d52f0487aa7acc82dee9d", "0x2e330e0fb2955d8473ad9e1ba6233fdaf44fdd2fa188d4a4aed15c82979b33d0", "0x2ec61414765244f6b467c5f24e442c939c04c3811b99def64d52b1a4f17d9dab", "0x137a770838d8523704e776827dc372e55a90f20ba2dd51320c0ac783b023967b", "0x1d6ae5237bba6b6e32a89f30200200af5dcaf294019868e4e152b332765e0c86", "0x1f9037f9189a53ad5773c913e88ae7910fd020299ac394ee2e4d703b62fa69de", "0x2c6012259c33281c77d02c61bf2b4b3db3b33146557747746c9db1eabbb7cf7d", "0x1217df830ec5644575209a75abdc35fa606b271775f46edb7b7742b573d289eb", "0x1d39b721d48d3be9d3d5155c58c545485e71d003f19a9fc0c663fff57f8fcbd3", "0x144ef6b529a19c55c07e41d2859d3df72b0f756026d79f32eeb1dae57227c237", "0x2d266907d986d7e07303e2eb45b6620d01644cb8c381ea3d1738d7674728efd4", "0x1b31b63b9c97363652e64ce04b844efc6a63b122f164fd3d2f87d49d4fb0fe66", "0x1a8c452a31afdc62a25380d738c6cf4e5841c5620dab19410228094537ecf537", "0x0d9d810fc7da5931c7a4907976b7b77fb68ce7fa860435910ca346aaa8b2aca6", "0x15e7308841e82cb44ad00ba4aef9a4241004f8adf496819032375a10fecdc8a5", "0x2e17f718ae9f7897e72b481f0c779a84c41bfacedb13e09530a7d16fe355f765", "0x127e7ffc6ff8ba194c9422ed54f61b63e58c7ae6729280d1b6e1e881d4d02fa3", "0x0c730999ebdac150b6d5e7fa69d47f090863fab10d1949911a00156d328593f2", "0x111418254b9d16ef8d649c5a2fc4136ac5762191ef61f1ef46d35ef199f92a27", "0x00d0e3232f7be8a95699b9bd11508fe495e026daabb9efc935ee7c4b754bc846", "0x25130e977ec4f6beb4ae4dbf64f196f48d60f80bf80c8d5f228118383790c927", "0x0cbd22ca70300072163ec1b61ac95a45e959f6a6843d1f7a8fef6b5b290db4ca", "0x0c4e5c71b46e2663bc89392eb5775c7769c080551d2228d8103e545548b5812c", "0x0763b55731d105220bdbbed3e0f3d8dc921b4aba2d5bf2d5995317a39d43a3d1", "0x2e578b9c3527502c2cf248f9d25e724b252b1fea5d30b96840b142b066acf145", "0x2d7262bd89e73f64f7850e56ab934537f62cafaf511614bc8869875e33a69381", "0x233e5ef397661c73433fac490b72a375f31c6f6774dd69330033873c59a8db85", "0x2047881d542bbf974b9e9e9201453c82b5744730ee78d2fc226bf73dc724bfb8", "0x1392e09d8e3d6943778f5023ac577ed58573640dfa8cfb2261dee56f020cae02", "0x113ce5641e8c08401edbf8e40a58f7f198486c943d988b571265da3b80098b29", "0x06fe34aee96332c0dbaa756704f0acca6fd488b7a1a424bc50759ad66df3ecf6", "0x210eeda90df0688f37ee7f4db012fa7051daafd3d4e62a8a75aad73ca0c45808", "0x28f55311ca526e39e26e38e2065861f3cec1e628de46f4356441c8ecdb716178", "0x0fb3a80a4b528a8955142e642194ac4a64f5b345c86e0ccf70250016052d9532", "0x1f678a57a75775bbb3ca95f5dec0761bb71ab147df107fa75f43aaf930aea3a5", "0x073ee51a98aea4e9ce5ddef9961b599770e580dee5cb29161bf81c0aa74ba6c3", "0x1236c1a9259acec50a04f193506918990da1bcc9f23bafc774803adea417e9b6", "0x169ab9a5835557f518a17756db5575e9a8273112f54b1f63479d261aad5d780a", "0x223dc979f2833569c24130f59936a05daaa49b610c7af1df373c81ad41876f07", "0x2a7e07c42b264f8847508f7767fad20b7e85338a7cc7b8db9cf0615a614b2a7c", "0x2d374c9ec1482f4d7b0cf45b5f6ae5b09f9b4c5e0d3e428646822ffc583320b2", "0x17722a6c97af3611c31e2e9c8a7c1be2cf1b1e67920cc61925228bb6b1719fcc", "0x1bec21bd2b79bf0aab824d2c73439bf306979950789c762d3f246ef172665c6c", "0x1e4f5c4c15166b2b0d0f2e1243ce5e4d7df0e4086f1b6c13c24760c23b3d2b94", "0x1b266d6a03fe6a667e5bbbaed2407aca042fc65ff587a37459242e347da908ab", "0x0f82ebb4a3a2d9c061231d072974da7867464d45a092c369337d6f7f38f19d4f", "0x035f0f510df053ad98d957cd63f2c511acb8d63f8ee734d9b9cd9d3cda717c55", "0x239e2246410f90abaadc256d0ad649458d8a2f3a98b680bdc8648328706e59d0", "0x230a64e0e39531bab69e8378bec5ecd45dd04f7b91a264d4b852b17050a2fe7d", "0x201d93592e63dd8ed97eda0c1ef8f54ae33556e80ba51ec6c7d4ef5376da2669", "0x1bfe78c50d0b855aa69885e63537eecb984c18e2c9ffdf6f76a0d38cd8aa24a0", "0x3029708c7f3b5bafc5c0ddcd865d174e1b9ec7126ad730c124274c5627b8bfbe", "0x15a0692e27780cc154dcfb7bcca7d8c69d613ed71ac739e88ccad5311d419393", "0x158580885b4521fab1f59255bc74ac46dcbc6f67e4c5bbe3c0407f6e79f99663", "0x22e542709e136b18fda8d1c59e5df8a9efcf226296ce6b99f0c5a4c6d8c5bf53", "0x000984d184c20909b189b56d89e1fe31074b711b106813e31a430f9234845fc8", "0x260bb2c2f561af7b4bba3c23af14460e63fef91913779d6ab8780093af2e76c8", "0x0026e2ea372b49821ae56bbe19786ebf21c4326c188c47b70f47b2d120765cae", "0x0b6c4d9d36fac30339d96876a3040224baf38b59f96fd0aa02aea30ae1a2f4d5", "0x2cf5fc3d75ef42b5b3743bfabc21490bab9a8bd9d38286f8d6ec65b3c13753f3", "0x0846aa6aa21f18c74000f044143fa266ff1e7be7bdf600be16ce4fdc40ff1e62", "0x002f8d0ec8cf06bdb3e4c638733894d5d0a95204d648fbceada053acd9d3ba40", "0x1ce8ff9b74b79c4cea0bcdd58063f744db9630f3bf5963f1cbdd959f61126f87", "0x017d79111e385452e615c442c6ef083333a8a9e08628bbe1e84f4dee795dc1cd", "0x27d064dfb09c51348c9692abe74e7db7d899b06d63af1036ab74953c08b3c55c", "0x146874a68df33461692546b88bc079d85961ea462f0c4817e5121d74e2bf2f53", "0x052b6352c27d080dcf5d1e50b8770c1bf6cfde559b24e7dfdd17d373e9a94852", "0x1e7438946d79cd191bef0f79ab4f9604669367572252eb82cb0f3b19d4691159", "0x04709da1736faef43d616d59fe1010c92e91e1410e5dd9ac376efc7386702426", "0x28381d4a02a8a55fb06bb696c5e7ec20b36362f885b753b1ddc517db813f62fc", "0x160ecf90b4e27a49d3f40b2cbe9f0a6ad7fba8256b9a52fb4cbfff1507a47113", "0x030e521d91a1e1f8836f39b27733745fdf96d0867bbfd6ccaabcc94735a4704b", "0x2b66af33183aa4e53cfb665216f86b458fd3e909d9a3b03758bad9e44657c43a", "0x1e8516b0a2276dcba92d8b88d6fd8f9b04d61ab367a21058ca5bc8a752aabb53", "0x2b2172b73311ff4eebdf6b89af516d2ae0b8ab75b8adf8044eb7e20d511826b8", "0x064c2e0636845a3b22912c8baa94c39e14e7df6bb6d52cb8914521bab14371e6", "0x1bd4f8967e443e8efe5a18601bfed7d2bd47b34c60dff0ac964d6a4eb059b417", "0x04efc234a1736354be10620eadb0fafbf030092e0f16f539eda958274d543430", "0x2f42fc1f05d90dbce413777f74a353c57e8e6632d30e28aaebde88b878df46db", "0x0a3fdc6b2d46b0047731f5994f193b35fd23e6d4d4906d0622be96f29d9b5369", "0x0a9a381a6f2be5b71450314f356fcceeff031aa46a27c92ceced2cebb547d960", "0x2bf2a0d3ac00be9e5bc060a39053d85f4515d3ecc6ee6d9925c557eb3ffa487a", "0x149cea4acc9d345af9baa0b0aa9dbb3a275341487b4809a972d4ca49fd02cfa0", "0x2ead343a42b0ea570e1b35af19c93b0c25f50f1503cf4a637dbb9bcb58a0bf21", "0x1c12759c6c33c9cbf6ad891adb1cc2ef432de342518651f8b1577394d7527edf", "0x1619230feafc8101f6bc79b2c7204eb8a8b083a38c0d4bae74b31fcd353d879b", "0x2bdc4bb87fececa61ace09b0abe8b6dd75cfaf7ba591f02eeb5635808ecdb46e", "0x1d833c7135d27610e6972fdf005780ae41f0f98e36b6251978b6bf95d7df6a3d", "0x1ff7a459526e796396fcca196dd04f81ba3401fec67b6b6d83422e987782009d", "0x2440fbb4876cf36a771ae13594f31b06f3ba1748ccb06f3a16a97f94d8d66b28", "0x10e5d84b11ab864879fed067da2804f75c9a75273911cded8bb551cff3ebb3e6", "0x2e56c1830fe663703064d0f77480bc78b4f1d17939629fea2e9e39284f3f6262", "0x0a099027ca6f5c10087a2f4b38caddb366b98cc4dd0ea74f08819e75029f46f5", "0x1a97468d8d9b841a57dec26dd4f17af8602de695fc539d284ee78ff852949904", "0x0394a6458349a524f4995c77b6b7f9ce6455a2162f1374383187a751a908358d", "0x1216cf8f079a098852635296432f576a48c6dcdefaac70bd63c0f86d79de9591", "0x21c53a9ee1d8f71099fd185abe9772623343b8ba65e3f969ab665cc58c0a6003", "0x0d00e1ec990ebd5225c709906332ec218459d452a34560c000a4141fe92a1275", "0x079036df6b30a36b4f6a52cc876b33ec8cc13beed3e49d996bc31130e9942fd9", "0x07316c90d57097c21407e647c1290a42d5766d43a8f324733420cabdacc16580", "0x2caa85f3b8132001bb0fcf4114d84dba8d6ac61c96a21f3195d74803857085b3", "0x1a5b32a122696df0430fce233abfe21fcd11dd0731f969f95f2e9243fdd98df5", "0x1d46a76334170cf0b58ba0cdd75b31f83b3ad2bc79f7c8c930a5eacb0ba02e1a", "0x0d99bf048437a3cc71ea6998f890a532ab3a12024e230e8536d8a8bef084e956", "0x1afc2f4c8ba126e304c61726fec22341f447302a246b922e339cd87bf2def560", "0x1c9f11e8631cd4664da9bcf45bdec1d92ba81407e71321c727b14c4c53ff491c", "0x199268e3ac14b60c2a29efe18ea87ec108721eb881f6a49e9d6ba1a1dd94d3e0", "0x22c335d47bf6718031e83de42d47ab805bdce03e3eacb2ee8a5dd88caf5d5657", "0x1160bf99f0f4ec07b8ef2d15be5a3a8d1cfa192e406bbef5ed8dd5fb75db41b9", "0x2254cd32fd4087b71387dac3554cfc9de00194f7472fa41de674d8ca01cbf08c", "0x1919751c378a82506fe30958a36bd6e75ec673bf25d693d98033602e73d647e5", "0x27916b3e4a0c89922381ac94cdf88b3a4e82a539fcf5c899a5120a63cb4f768e", "0x268d3ff9e18dc9c373616a6a5a1b81c93ec208dc043414557310c749b77985c8", "0x21286d51d350476f7b3a2ae3ec046c13d5c911173de41ac1dc9e59bbba669f2c", "0x20fbf8d6843bac844b6cb6324f7054344125db54d5600a06fc9b720f2229941d", "0x1a2fb57443a3a3d7030aab81b256c8b9a84da724036a003d435ebcaccc774f44", "0x21b13b9a4cb8e9712bbce32f178f59074a35a8cf0771061ca0764b6b190fa139", "0x2c7a11815a420038f71fd201baa6412ac292a63dd9f7d3090ba15573bba3c5d6", "0x18c9638094626db7e58bffd717b1287c8ace706823253bf6f91ca06a37f7fb35", "0x136fb4abc4e094fb4b5bff23de0d41bb4764481de793f828bf3d9f9df1aa1cc7", "0x03ec0f79bf7730bda188a011089b92d26afaa5bad67724d8e1932572c65796a8", "0x0629f306d8b1a0682c7794c32da95adaea0be483fe4f631c2b9dc250541257d0", "0x1f0854ee6861491721684270879df687a12c28a0a7935c0bac0972ea398410d6", "0x058928f7c7b8503a2585ac439ae4eda9310d87f95042402ffafe98ef48ea713c", "0x2fe5a4fac888cf8dfa9acfcee249f788e86c043441cd3623fb972ee519ace172", "0x29e954045cccab9612ff8402ad222c21dd5cd3b34d4156541d5024dc885b8d98", "0x251a3962ba0f3e9f8de881d104643c9c39272092312a2a771f11791e63957b20", "0x0eb04f89599cba100ee5bbc4704ec638d102c6701083c6afee8d26cdc64b101d", "0x2d2057ebb4878c47313300f8a161c6d6b3008c263e738ed1b77f6e2d2368b082", "0x0f537c7681eaad752061f5946a10f248f8afe02efaa724d97e763cc8c0971556", "0x1e40b9aa000d70d6ee680f23d34ba07ea043561b79e8b6c306fa7878232f1cfb", "0x1aa38f4a119fa9c3e3ff99d0ae54aa6cb1180c41d7585ef4e033678fac84b2f7", "0x05661c023cc8ffadc425af8edbc5a45a5daf64967bab03b91c6f2383a61949a9", "0x023c4d9d809b0d3afc1c27cb6b1dec663e9625fd44f1f1389cd1b29e2db150e0", "0x09fac0eb9231850de7965393a8bfd15ddcbbf26596278dc789b3e40703db42b6", "0x040b84ab00737103ed5ac312f5d44e27d4749cd191051bf8a6231bb4780e354d", "0x2e2eb4b8354572c267ce846c9eb223e3819628b26456d7244899e57d70dff93b", "0x198728ec996ad0953cf87bfeb8810be5c588ac10b738ccad7b1f8bad50c97e35", "0x2f8a8ee41d90aac2a91c1cc70772ed6f98340052516b3a54bd8df388870c5b24"], + ["0x2fb583762b37592c6c5a95eb1d06694b6c6f9dc4f1ad4862dd8f5e67cb7a3f5c", "0x12e9f46cd8231bb03d4028bf7a11d7c0e331dc05c088e6dc3d1d001da58b85a5", "0x1275cd70326f52f816a7c53fe62e323efe61a5b8d3747f6dec5837a825873afc", "0x06e7d165b57b0299d23e750a75ea2e12c9c7a16954c40a4d10904a61e8773541", "0x2f67f23a93ef1e215a4add2ecb41bef4b9d85ef9135065d992800e34fa98108b", "0x169eb9952e2a8623ef38de57e15e242df388019489e01b7c84fa839d864dcd1a", "0x0f4cd404b4024ca13a513ba3156d4de9cb3aa240c683b3e0eb7253bc98c8b5f6", "0x1c486bfae3ab032ff519e8dca6dc41ea060b0ef9083127bd7c2c4e089fd45aca", "0x102e745864251ce940c67b1e2f4bc4d27fd3851571ce6813baac665e8cc0c79d", "0x1e6a6d620433d22293044ffe36a5f2a729c129cce3eeb0bdafdcd0d52bc3bab5", "0x08f3abf97ad8d01cfd8651ff2d576e3d68ecc47aad82b4188d92138bae603b6d", "0x283da3f1cf8477d9821ee60378b1c39c72428511a1b9d6683c0302938c248ce6", "0x2d99cd8d88e49e0babc84cbd58adbc143a75a26ba16f96466a2e41629734437d", "0x171edd6a7456a4c25fef8aa6d8b748ead869369f72a4e502861fd037dda8f779", "0x2fab64694369e3a2bd573c0cc383695c02a381e785792a3fabd6e1ca8df2d3a1", "0x0c6155944f64f7694fc8ecd2a2b9a2370568c3c898db9531dc18c72474f9afe7", "0x1ee0e5cfae030622249210cdcda71437f28f0b1730653c0915efbfc08607c3c7", "0x2741e1a7bc6ba2cb162858c4e8454dba0d0e12dcd956d127bed071739ba5ef86", "0x301194a663309ab8d80a434822a6f6552585e888d498581845f54be634ebc93a", "0x188ad25347ec25e6a8a1b5991b3e96df81f55cbe2c52ba48741c04efd471f296", "0x2d1a0a032554c50b22699496dec487b01401f25282f587e1b575fc98c9fbd648", "0x2c47fe6533bd34a760084e8d4c488c4ca2b3bd11c22493179ac81a99f8a44a9d", "0x2fdb414eb8069b5573db5c11ede045a6009f267a8d908dbd7d90d6a0f028f28e", "0x009cebf9eb6d06fb278fe736d6ba09f93e0df2a040dfdda5fe7d9ad0fb94bf62", "0x01d55a3800a64ee82703ab1591d18adb00259d168276e1b0fad4718cbfe05966", "0x0a2f6b059255eded6daee4743c08fa84dc3c51bae3179040056b3a8df38982ad", "0x17cf49c0568384e937f81b41c62c476dbbab87bbd6f4d9228b04429299cc81b5", "0x2b28f60b3ee128401dadd3d94dc96f001b9432f70ea1b3b3219d80d369921aa2", "0x25f0cfd33257de2cc32415e65ebfec4246d90a181e8145f9387def3c4c5e0d8c", "0x117c3c2b702ecc0d12cdf264fc26fb8b4ec60ab3752d20f1d2d7c440cd461273", "0x0ac8603ee819274a7bac613b6d26420bca69a1d147072de90aa39d4af80376ce", "0x12c3b1dc37d665123fa74a2e68ee329a42f75db42d2b1c055a71c16f04d4455b", "0x107b0f5506fdc2e774668e4192b959410a4a8e0c9e82d05c5cbba8be93d73f37", "0x1bdb9f5e2cf7aef69b26f0bec8bbd500ba3a56addcb25505c877c662a810899b", "0x008224a746a8f72cba619582bd7204b8e21d3ced7370bb7fc77ee51241c1cf72", "0x0d2fb5c8797a28a15bd27665dc510ff7afbae95abd32d7886d223d1ae86ec2f5", "0x21397b45c024f6cceebbb9d1b0e43644f6ca76d2de9eb0505c862f05d7330586", "0x0e207305e6d3028b5c459df6090396fe3eedbae0cf8884e15fa5b4fd9c5eeb4d", "0x1cda646c94c324f84dccc02f77a716daa86e7677c57047caa0026724c12789de", "0x03392d1c129eecf880dfbdd7d30b4a8d35c5736d71e6e1879fae2362211a7aef", "0x2a46775585cc9e5bcea482164e668818ec54fd76d9d2c7d933be090f7a6878b7", "0x0756d791c7b670dfbd18ebbafec56fc148365f1df99518b634a491a2203c9e3a", "0x1682d281fdddf6f34b42a4bad0b260d597e8238878c1d7a02180a699db4faa7f", "0x0ba069dec00122629c2eebbe6f9842040a40d8a12327bc084ef34fd142cba2cb", "0x25d190a3c1e234d174ec14da8db903a8df0a76e91217f9193dc891f1965d1ab3", "0x2206270cd7f6cb0f4692560ae2de0eff1fad9f86100053a3ea52db32f6de92de", "0x13135b4171ad752f3906f7a0227406d8c50dcae587b5a671c63eaec0b42efd89", "0x0ff9a3343287ff5db495f642d32a71f193ce25650ee9a3f0b3cd70ccdf11f4cf", "0x2c5fbf86b2df75c9f14ee20b314fe4b3d7fd3519593ad8c73ace69cff6406a94", "0x1ad6dfaab2cbdb350af0f2bba83c21438a078f09d6f50a765096469075307c81", "0x26def3ab54ffe04d216d72bdf3e34345c21f29c715dbc964a70d1565224a62fd", "0x1ad802b37c96c6ad360a316cb0883a15c3d6e951f3f81b29f2da517a93297c30", "0x16963177b53b5162bf2f9829514ca1ac60196b428a7770a80be012a42eb984e3", "0x03206529b723d804ab582c4463e1d39ec579f6415e0c3c100c4ddfcb87a1b6eb", "0x1b7080e5b36b8a6782307882edd6ba9c43714a319544360725f10cbe4036d56a", "0x1f501df667ce40f2023272b32ec123854fdeca8cfa8d21fa5f8f91f4b3c6e151", "0x29dcfd2048ac0b5eb2db20316a6cb805490cfaaa7f7c52cfe325d0ee3f3c8132", "0x2b5c0a4f3ac49471deff47662cf40c2053e1ab9bd8c90259fd39958819f1cc26", "0x2bd152e7a7045ab64a942d6af902cc2995ceca3d5fa5298f10bde467d20eb383", "0x1924180fc608c30d71ca6bc196f6b6b65915d82abb6aaa66df4154088dbef2b6", "0x08e7a84a3ec9fea2c569690436e1b89f8e9787427cc2eaf895f86bef37a6a6bc", "0x1bb936cd8a92e3acb1d40861ae7ab5d7b0b0e4d1548e136e2751e261632cd5d6", "0x2f6fdb04a6ddba0da03ef70a36c8912ce407b81e963f4c4ec4a05e1c1afdbbaa", "0x033dd37517c4e06557a334bc4c272abc198853e381599a5f0b0f248d5e94d79a", "0x257bd936aa56d71b0d64ba98006d38ba85fd07e2c556443c1101deb930d62754", "0x1c1899724669efe1b1d9b17d5626fa7ea52d62b8bc93a52fa69eb4a5a0d669ab", "0x136e4007bd769d059096dce1b8d16e8d5ebd9262d646383b80ccecc3f6708e2d", "0x1cdefb056618b5286265f7d1cd85cdad945dc9c6d203b97756700a68a7e305e8", "0x13bef640af3bd68eddb99e6532e05fa787171ab21061f2d51282505558b0f778", "0x222c43b44c581faf924430fe5b1674e15e5f62b174e936299e8fa41aee000c17", "0x0cb7489149d78784b55deef16853e3faf1298e78da5c3d199e4f6256eec3bc94", "0x1988cf8b0982b7ebb3c5df1be4aa097ca59311816ac1c52df87f604779e5d81a", "0x2a86243d5537e0e1bb946ba87afc04141a4f4683b73a8a642f430113b5834d79", "0x0810e4767c0f83b08eee45c743a28f6aa0f6c478179dc923a730c00a777c080e", "0x111051b6f6e645b111ee16f8d7277c5736544257b993df519a1ec2c56bcdcfd0", "0x138e637186a1aea10cd1929f478be75eae3ba9088375a5f1032eb90389fbd16e", "0x1c48e87c3a5f6585c7feb9009f959127513965869f67312b5dc4ae1091d97b13", "0x1bc91e3923739d8557a49df73d6b18eacd3f1d843d2f9a19d5a544d2cf61bb1d", "0x1f55cb86d44e8975bc1483e56fdb8da7c4ae53e1ec31b84bb2da027005d4527d", "0x27df4280dc0fe9e40b3c69f81ee35b9d10c3a77ee1aa568cb99de3c25a33c445", "0x2f5c9f8726064d9ef2ae70b9c8b9bd8c67bd0b4e01e33da14eeb08c9e84900b1", "0x18039fc9add69e1c38faa320bb6a1bf0fdef44feb0935882df019920c87af82d", "0x0327903788c3245da6ab00b1dd054ef0a8909c746381d36be32c63540f6aedd8", "0x1f9e9d1ae90c18f18b33386e190283cd795b00a5e700d9b450bf30597bfde322", "0x1335f2a251d97c1f4fe98c9df2f5e0b49a9915b63ae6ac860715a450ce045c69", "0x216fde3c47d44db12ca9b3890b746551e14de61d61eadaa82872b8b02d08c0fd", "0x20aea5ea277d5c1799bf056503d16e9c18067cce523655520500a4509558d6dd", "0x2c9873fee4f36a764e4633cae58d5975790e8878d02f6687fd5aecf0fea45c72", "0x0c59d06a98278118aa314c0a2e1ff138782a1016592643141fc11eac458efa06", "0x20ed28a0e5dd6d3528f6ddb4729fad421ad078802f2835228b38c04acdb5cb3d", "0x242a84ca0128647dbb3ef3da25cb387d422f571171db50845d58ea6beab90dde", "0x29ac14a0b12b581d8b76b71e2197adff56879090d84e5c39952f91f2bf8c397b", "0x037dcddb2530ed5cda99b3890c9e7ea0b091a00f50687bda0b6233da0bb9b422", "0x25a8987fb6f4c18aa01d2e5429697d61eec4830a301a60c3562b61ae3290ca92", "0x1c9bf71f113b61c7bf719d99bb5aebf0cabe8712b304f1e1ef2d17a098c79acf", "0x04a0c9f59af433f472f1de92cc39d604d4ce8369e91c4df9feb6d76706d10e21", "0x0d300e35270adc9e45f4315f3c3d9d939ae9e6ddd105ed4f7ed3805d29fb0d7c", "0x03b3d5fe98cd3d41d656038d84f3f63d5036ce839ab10cac86d931bc6f49c71f", "0x0d4ff1e8e5f471c0cb60c4b64e25d46058a64ba30d9fd526b6df528f36a5c585", "0x0e69833375985f6c99f32cf9047ed72319a78d1cc452574b160ae501f9106b70", "0x218a2da1a71bf2d9495435c13826e81bc4fbc52f7e9e76801d76efa6d1506d5e", "0x220b7c5c7df259d28ef5c87818d37b1aedd331c5ed64e2be36963baa6f0e2ede", "0x05e6ff3bb2c3c3d36fee30974381c7e9e4257cfcb175226975f80c7826601d7d", "0x06ea2130475038482d43b40d701f2e5719f8b5291e32e70e7ecb67c84952c15d", "0x0e8ea3e32a39cd2f0524160913424ef01a99b490ecfb7eac844e9bf858b9b014", "0x294e5cb86e4debaee0d50db9d21828d54d2996a6d2c9c184172c6e58fab66f16", "0x1b76a6dc618f7023b2e9201816b56e04600a1f6007704757a20de7a453137ee6", "0x158b87e1fb4ee03a0cf364d7737fea5b505c8f265d85e53cd8b6ed21b8f7e0cc", "0x0d6845f8ffa83ae905c90b939bc0217b96a114eae191142b7b39cccf6a05f918", "0x01e70b87aa5eec31fcfca56f01de6f0e16abd68e94016a6862f1fd84ac753eb9", "0x15afd08d9cd8f119f6b84c1bcf1bd8321bfc269f7ca4ba312f78c18cee06332a", "0x0e8a18af50888c0e678a18db035e95f3e514d12add25b3129fcb0a1175bf20d6", "0x05a423b76a066ffd86bface24a69eea019d742ac25673cfbce2d6c8d8fa959f9", "0x1cd6633fc781769de49bb060222f70e764c0a599cfa63dca546cc770a8c96e01", "0x0bdec688fb651a41a8454bab72bceb7b4b9a4e64e15a7759af96c3910f1af1ed", "0x16fe2f67cb81df40a13aee06cbca391aa9f363c8b6113970da577f00ecb68632", "0x0d9e30316cdadf4ee7861bbf058f9864ba41949a97d80f572f4f321c5c81c266", "0x2b7250de2b670143d2795767be62b401b33ca87317d51774332efdc0d561e2ec", "0x21191107cd97ce6d82d8f24580d3f312384ff8f7c372a6a6f84bea4619432126", "0x2d3d14d019903bbebb3844951f492ae64034eff311f6fad2e7ee224df122abf8", "0x0b1761537abfe52313d2984794e0f0cb5a67fab6c7de6064a9b23a9c1682e48f", "0x2648c021ea22340d9c15bf3b4de1019ca5bb2b154f528acbec879ba3060c5e71", "0x210383b9295acfb0afe0a2779904ff68510979cb8308cd4be1ba74d50f8ebd2e", "0x2366beb9fb0aefb2b27919a936a90e5178b6c920a7cdaeb2c24dafdf8eec4f62", "0x0ac0babbfeb05aca0bafc86a137345008a4785828aecae6e75726e52b19473f5", "0x14f4e3f929fa309ff76b77022f98355881d3a4619826f8f46f3f3307b7ed7cbf", "0x26c17a705c1fb16fc93b49912a3b026239aa37147116548af22c50b17c63d2f3", "0x1c041b56052757aa8b251c9cf93ac84f163b5029446b6b9d5f73738c71569c1b", "0x1db847af55f4dee4b04b07d8c756ded04b10c38423abda88cf955686e19b4d98", "0x14a9f6b5276ca64c71eb85421324ea22da9e59418c3f3d168a2e25614aabb250", "0x19e965d8014faa21520a879fa7062f8cd83e83d23d34eb96f6155cb698fcc5ae", "0x272983b47b987c94aa704a01c88698c287f66cd6a35b0c53b0ae248257328491", "0x179082445f7e90050f2751613a18be7c615443a5aabd9ee30dd5ae1aed141d0f", "0x2a45d991765d6810e7c6de95b751077ff3acd1a9e2ed841d4e351641b531af77", "0x0ce80600ae777b7577dcb0c38e3017ddbbcbce86bedaa78f3ee80fe8f8ed9c46", "0x1836efd329ede999eda029ac76933e51d379c2ec9f81106091d4dd81184b4a90", "0x23c2f9f5c32b9fc9d8a0f06a1fb94342f8e0f72871532ae622e69cd26983cbd6", "0x229a60de9ea7b9a31af0537a15fc0cc8f4e1874b05b029a17aa6069badc70709", "0x27c1cacd84763504bb9da995fb9c11dfe1de4f9b4de0070c62458dc06e6f718c", "0x226925e3b28e9d3583306111412c7fb3125a6229d56499d4ad4ce275fb945a6d", "0x2d4c3ef6b8649fd521c317d440f0de2170c7dc0ce2acfe5547c96265237229a0", "0x2e163352d3c6c204a4f39c6347ed2a1546da1c162c17b37fe5122dbe0ca38d81", "0x1d50944ab52614ecf794a99ec9d9364ac97acb173f01a5793d55f9adbea4c3a0", "0x2b4bd70b5f1f434f70f1f952d02b031723f769ae18207781b37efa7d860b6a33", "0x01da84194beae599eabcdd0d9ca29cee05c8d70118af22d79496664ba63d953d", "0x0b1469c1486ad837a64a4889c24acd60c7975f59a70181bebde9950fc04b94da", "0x191e2dcf4dba410ac50f7e9aa497a5c783bffbdcc2db8471cbcf70b56e501040", "0x01668607fdf864d54f4bc62a7a64bcc84e7c9928a5bf8215fdfbf22877673317", "0x2f9967228d705426d5012c764e1754e1f43e1cb9dbde29a8da4ba862ae464916", "0x0174c15148cd64c6a9c7e25bf7e92c0eed93ba9d9d20dc9d99127b9837f842ae", "0x0feae0bccd9061f01578a7a003394df020d098b1b5d4d994e9c7b01d5c2a6e3e", "0x0ecd1468fba5b3142d6b6a3698bd27eb2961f2232da5614891eae6fb2f501f83", "0x23b8bb2b66cce71b0805586c9d01f82c1f7acd6608ba14377052ab5228b9d2a8", "0x296c2942c041735a80687e79b03159ea0bcc9c8288bf61e932b16d9a77418703", "0x0dfe7f9c9417c892a1aa425e36eabd1a8307bf14178cc1bff30de270804ac6b4", "0x0f9c80c1ed9dbfa5264ec0ca7f2907b45582aa1aadc8f2244eb826f36302075e", "0x13c76a9e0ef6a2afe12453d52c5ade079c945de6700ade999d2654f00e0e1db0", "0x08d14936c51c9d5bfa8934ea69752560e7f72d33c6db682c6eeaa8d37afe72b3", "0x2bbfd29e71032bd6df3626cae78d5d7d950b8251aa9ad387baff0cecc55ae78a", "0x20add9dae28c0b6c56acf8dd8fbf8b82aee8b9e464704243077185468c6c7a25", "0x1fec96baa86d874146fecb495308b927cbc63ef0acf2481252cfee977d77a051", "0x107f942cd1f7db02a84ff410913b07ca14067c08e3cee6883c829f8383db56af", "0x20446a5488024632c1ca5a03f3e0d9927db7911b48d0ada345cf442d574f708d", "0x16c45c6ee2e09bd860204a12550cfedf1c15cf5ae79210ff56c3a067be982232", "0x095afac9e9c0e7bf3a3757afe1a59b1cd2c8a9dd0a4016a768de4e394c5aff4a", "0x1789b8d50c4f470a2040a8c97540530eb4a4ba188e058c5cf98eeff2986363cb", "0x1ae4a093f1ff056d43eb1f176efac59e64dbb0b30a17bf9cebe739ced02d7eea", "0x2078664852923af8ee05ac393bb1b71771aee237ac4bc13feef5eddb824b5212", "0x045c263bfd2c80cf563fd1dd093919e61702c4180667ced47109f22293d6f635", "0x05bd68adfe9229ea5f91b9b9b7c648930278ff9cd4235a74ddaa2989b8ed1b68", "0x2ba6147bf61fac6fe9f89f5d03424bbd3dd25abd1ba8099498cdde87a83508a6", "0x06c29c1a964316e5ff468201ecda5c5eab28e5cb0cbec1f83fbf55f911dbf6e6", "0x0b3a42e10c5b32a4db4ae5742917bd2a2b6484d58d069988d40f4b2c5d923511", "0x1ef05c441e5c449dcde2b0104cc0cf09338c87fc1ef249e47219be01f8900d4c", "0x1346b974d355923f8812b1b81cd69ceac02ba2ed4207e078b1bcdd65b99c1c4b", "0x0641be843dc5babada2893a000856038b0c480c73bb1222242f5c182b0366566", "0x0e0ab9754fa55418576339c74a518da23da4512ef44d918f3ce7adc03877c0e8", "0x0524eda9a8cf74c8aed40f27e804a118f479da36331029d8e35fa3067a8a2e60", "0x2d9cc26968b956d282d882ad26062692ad57541ae207ce90a36eb408ffcc1c2e", "0x208be81442f0eea20014d7c50cfe3f8497c3eef59d23ac75676d86e6df672177", "0x0a103c791829e5f91e9143aaaf373c130be8bfc3579f3608b2eef23dda272775", "0x24c250eb5eb7b2d00c290f548f258b4206da050fcfec439320698146a687b4d1", "0x04af611dc756228bc87c791eabc9412b4dc539e482b11360dde2e8b15c5ceb26", "0x2edda4c0c8cdb6ac1f766af30f296c30bad29a7fa345c492c5fd461c83a74ad4", "0x24a57cc97ac713d122d20a0f45af32a192d57ee2df010a2abf932d3fedc531a0", "0x2b7869256ef8449ef1632686c2e4eebf6c7dc01925e171b6a3053c00c7fd938c", "0x1fc2cadc1d42598fa8af9a087df97d11564f96124486f9d36274a5290771637f", "0x1721830740eab5d3e824ca501d9dbb279c33cca46d957cf4dffd86c4643852f7", "0x065bacc3845e9e1db1666679ba9198965a9604f9d0e17a509d3435461bddaacb", "0x14b469025cbe3ae69548004a75ab8cca73e668f3fdbe5b0412149da212b86295", "0x1691556195caee6db9f3e92a740b8e3df97ba65b9401d64071720fc3f5b93d11", "0x2043760c0846ef1a8307b889640c3495bcd17b855fad23866cdc940a9e9bf202", "0x254c39a9337dae077e34effcb2bf6149dab1ff4c47077f565a1164cc16065df2", "0x16fff81b84dcb6ee8195fc9a2b43183ef2c93eba69ed01fd66215afd4118bc7b", "0x1dd3fdf493e57791e270cf1e45932a03871ae749d8b071b210c113c746ced3e8", "0x19f34c30d29e2b2e71d0e7b58975b52e5895100a642e52509f73499470664e6e", "0x0e53378ab524fde35bafbf5b073f60337d37cc7bb024e4d770b478cab71efded", "0x02657a42fb7fe70f69fbdd34cf77e2cc1d9be5dab5c3df54468402e9823b730c", "0x270797e181131ae454fbe035b74c818574db4b0b14617145614bfcd17d866f5d", "0x1fe850c6eeabe8cc324105f8780d7802b35263639cc09d7c27e2c3d339fec530", "0x113b0fd84f896b1726ed7e324f037d49bcfc61107341ba50e6ce467bd4fb0393", "0x0455301c9c3a9576864e5349b9dbaa24bb5a73194929e2022f9f9462dc60fc58", "0x1e78afe9e73f4fac3c0603f1a9944fac953e8649a63ab9ca386e14f76cc9803d", "0x2a2df8062cd4e4019ebfad326af75f075ad9910112c9e56dcf5c1402af2eb5a7", "0x23199d2e3d213c593ea050c5b5ad9f69f1b0cb0a3bc785927509481d9365a79b", "0x1112f3f5206cad6ea06f81e7e93f6da2605d12111f7d82dadab721a862820454", "0x2a7850975343dd2d9736a41fad96173abdf8ec955a5dbf0fef598a3427b06cd7", "0x0e8f0ccb5547386fb377f8eb03ce31a2fd99637c8288acc824bb3c7e11976247", "0x2dffa0cb7982a215faa3ae587f3d0a8fdb38bd67fe497d6ec6a9af385a7de5fd", "0x038104d875861c16f8696630fff0f564ab6367eebb54aec00444abf7ca01097d", "0x2e1c146050524fcd059e554496c7365dca249831f8f3ce19154a3a4f25c0a15e", "0x1f1b007113b257163a2338f7dcd31019898bc9de8cd433c6f4d2a0d61b4a895b", "0x0245d414c0213d2b34191838ece52483b9b823ad5fc60b0d1b5faa19dc499428", "0x27b89b2aeb20498cfc4ea10b7057b853cd060d9f43abda0b62ec0acb50efb0b4", "0x1c77ccc651789deb5aac8d3c633ae0d61021f924fd15ea3f64b2190692f0b84a", "0x1344ab9603108364a71cd08f29138f17b813a2e507c5a371265094c3ff091733", "0x096f47da409be2b87d72a5b4dffe768e464b9f343148561cc8f7f65996473338", "0x2a963a2d7dbf1b6648324ca5ca201005707c68f190338602106ff7a1c8180074", "0x0a24a1fbf8e9ea5e0ed9b2f6f45190baf98eb130f23e3a59b98800474cce6d7d", "0x1efc39326593db3571d1f81f6e239efbbb625848e204043a3eae361b784da8cb", "0x02878f199437f80ceb6115a4cc69ad4306cb90caf7d33a57ee2c772fcb0e7c43", "0x14e714116af02eac68ca2f2d7fdc5602d14b0e3156bf689dd8af02225f67d6a5", "0x1cc4f895a494442a4c6bd0b9be44ea8d5c164ea0aebdce116bf6e22ea9c9dff7", "0x1f72d9f57cce69a7a953a9d1ead68e0fee628478d59b37fccf1e710729f9f2b5", "0x1504122452ed1fd0021c274b2f90e860d621c530397d4999625732841c24175c", "0x0f84c2185df257426cc7160be00166fabf2793f17b4dcf955537842cc39ebec6", "0x26211875cfeb1f08402906b6e10083eabf34188c0f1c9e6ee6666fc7499161b3", "0x1fdaf9a5b7dcb487eb434eae3a3a1b632045c4f36727a1600da5c67d7162bec6", "0x1a82c7c40e0b33bc3be8f836c4b58c1167b9dd3b89a64a40f250fba5e7992603", "0x26a830d5593275fd09838a337dceba9d73b6b0bcde5794f3795a2c7d9a005beb", "0x1ca1b51031b54d6c209c60095eba463cf27afc1d87db60b8527336586bf5ac37", "0x02ed0b2c0fc04e99dd373f11a3fce52800291722a4f60f69de44b0be369b4301", "0x138bf926c9f7d99f3b356786eca06d03696c34a2b3e7045ccf4d35036ba8f5e3", "0x14c9004d3aa47932ecc43b64f48012296eec6175998b27d4ae9e67ac37e252dd", "0x2e8fce1dabe0cdf3fc5eebfad8fa7adc6f8afda97e429172d9b753dde4b98fd5", "0x086d86c3c731fe45726bafc5176b5843fd04dd64f58080677db1ac99fd279c34", "0x07c522aa9582313c107a3629403f5469f777e86b83ea72d506087187a8e72bd3", "0x0f8ae11d8f6f426faf8516e350013be77f4892512580ed34e760da1c298b68e9", "0x0ba5aa0e6b3dc7c67804fdb84bc1bbcc1f844e9046a6624a910173cda4154bcd", "0x125a057c109e46c86d4a079d3aa4396af8b3e01365556a1b54f39d8ede66fd21", "0x28ca6c1010270adc4961aa8335ce83696b24bedb4bb473dfc15e82d305b95d75", "0x1d636937861daa12215f031dd31ef5ddb5d298fe8a687f1541c113dc6a6f982e", "0x2e755335e4022d7bac084dcce1498520f80ae93da97d2f65715027dc8f06f0dd", "0x071f2713b1a7933a0a20f507b9120564af7e399becb3c364dc4d4ff00e82c84b", "0x2ffd5da8280e32999e19a1717e10c89afce0c6f81f5d3289e3d5fce62ce0f328", "0x1dd14fe6365e941517ddb8fb308e3a93f54003ab4bf5f2acc7a7bc28b5133d77", "0x27101129fc7fce62280ca2c588ec157d96e5aee5c2b0dbf2049ed24b2c1305d7", "0x21919fe253784f0db396d4f9e4c77352386b9b72489043754ba8a2b1f4ac126a", "0x07027958a8f531877d1cebacf828dd8b017a125c9d287595373a5a39e58cf8d4", "0x0f4c12b76814adc1cddb3af4d1ce6900934ed214203cff4daa3c327f9ece5456", "0x08d988683eaf49158a7c9ae87146068f6e1cf75455a9d82231645f7290d10b36", "0x0272e74426d074d9658fd9526b8616907d5673aef4ee33678507f82bceef5868", "0x1a4709dfae34cf5ddf7006d7c290bb58c74297c8c4818fdf5f3950b54c924525", "0x22002b8b417575047a0ed5d359143aeda19e8810c53499ea4b57de86d441adac", "0x24574868ec8a4a702ea0cfa55bde2ea3bfb22821f6d88a66183527b1c7f8f0e9", "0x10d966de7e680887412eefd87d811dc46b0240886d6854934338d21121819798", "0x2ee7c7e3e8a979087deded02e7255ec067b1c4647cc714b96e1a28258d706966", "0x07029f067945ed1f6946894d66e2a8f17513b7caebd40c9adcaf39eceefeba86", "0x238f96dce22c10c9aca9a1982ee6eea87b7cebfae5a387782b49a62fea5aabfc", "0x0b46866c52482fd492baa3395e0a2c90470b402e538b3d8d0c50722e5621dd1d", "0x0d766df2a110efe25a3d9c00709cf5309a71c3eda799419fc3cbb0f69cce2ae6", "0x070143b740c54c7108f5f6183ce84371f770750dda04ba765ef83bda3fb2d5ee", "0x1700b579f15e50c2ad18cf77dddd549da000a6c8390de97e7ed0d8e68dd77d5c", "0x0966a4c76701d09676a086e95d90becfa07bb8034642244cf6aef00a540d2348", "0x0dbefe8bef0af25598f5412f84e00a3dd4e87de653075ba0c5da7ed783970bf4", "0x166d86374c39d7660096c87278e27024ca839197e65cd2f341e7a588c5387fa0", "0x251583bded154eb2396251754588712d0e1b78c29cfd44b45f29a9fd52ceaec4", "0x104fa2f361cf696082c5fced47e78a75f39363142e877b3d82c55c686e52627a", "0x2e937bf849309765a350ed8791a96d859a2037229bb6a652bc6aded264c7c5b9", "0x2b1d9ff7fb70883508c56021f57e3f9ea1dbac6ca74116b17ee926c1ec3190ab", "0x05f6384c19be9a2806e892c810917c10224188bf43f041a4e9633f370fabcd9e", "0x2ecd3211e05ef27a50e8cebc42ff0b183cfe21dfab238ea9ef76229b3f109303", "0x134cc424a26df27d06dfecdce2641a01bd102e7ff1a079a2f7e02cb5c04d0fbe", "0x06491bf6df0385099926b322197f0366b2757d7dd62ee3c2a04f9b4c9534051c", "0x195fc25a0f0e518936af73aebdfd96d9b38a4353504b0ff8c1418986552920cc", "0x21d9052cce28cf6e4e94073f863ce8edf12f02ec3286237f9d223b6239666286", "0x0baa8f730ca31f03feecfac34a96c3ac7af148079107bd1d17241917917321bf", "0x25581389210f6dfc774d3716e19784984d93837f46e519dc753d36eb2ac7ed3b", "0x24e00e2fcb19f6424d723a02dee50396b779a246da53a1a240f1bd889a8970a6", "0x083d4854b30ee0679d2db410b207e0e3a675788631c5a356cc87732960134c7a", "0x00af54416d73433ca2ed2f161359272770b6e3009381d71298f8223deacfaf11", "0x0d86112e0b5ca938fa7edbeca9ec16e9e9eb4589c77706ff386b4f121fff102f", "0x222eeb0b16a9b7ed31088917ebe1cd3de2a51f15e1e39229a08bf734fb2cf54f", "0x26ab188797afc73322cb02f8e79578e0e296f991bb2bcfebb635d1212116f43a", "0x0189a33095624a9fe843ee367eb23224db90c8d79614941f43009202bf3f7692", "0x0cb116f05c5b188d660a15100e4e53213f9c91a2c7cc48497468ee009204155d", "0x0677167ba65ce31ced812c57211602111fc3a26bbe9226918a7819c94281196b", "0x2038709e7cfcc3a1fd50ec84476c90870748ebb30f6431bd136fde99cfde252f", "0x11304b471f078464bc2004c224dc05a4c4ec5db0a0d15f324130e12793a7aee9", "0x25d8e2ab7f87aad379da3e3eb7f5d35f297eb80c430c765adec7f637c4f592ec", "0x0252705f54d55bf29b30237f8d12aad2b21b4a5d3a7aaae982f7cde3da630867", "0x1db9ede78af0ebf26dc188f6fa75663eec8f65b6c9a5ed38fbb3421dec7d7e44", "0x28915bdfab7235384a0052ed73839f3b6600a7ad6328222a5b5cf6e833a23778", "0x0a48fd9b0e00279f51f240b4729c1360740f003e804a09579e28c033c47d5b25", "0x004aa895e8c124ea62643e1d47b28162c404aa390fd45c32f9ca00c080fec007", "0x2f6ff2c3db97147ad04594d1858994b416f98aa1243bfb9deea65c109df2771c", "0x24f4f4faf7ce4f405a99b997acbe94f4f75646fe7d669779737e6aea7a59318b", "0x2c6de883618f61bf7f3f7d8d27a607d6a7c4477491b4a505955312a1ead3bc10", "0x084e6d4e3821e133fb91ddf17c52a3c3e056dc5211d99c507a5f8eb010f2051e", "0x182695778ac2503bd5ab232f7a06bf670a950fab0f52691e66d85d678f7ec4b0", "0x160333461efaa2ab9af0c831084d54e7669d8a39c5cdb67b2dcf41d3c4fc5e05", "0x2cd141426aef83b60baf24a91964fa03a4a15a956db96b9ff8b1802cf7886907", "0x1efcf46de40d031f8433503f35b57e7e05e7333292fc4e87e8cf690167176023", "0x13566534c621d806ed162efe86de13e99f5ba0b87b7662bbc7b558abd47fb72d", "0x13dd0f3e7ad7091840f0fa46df2804297a60a00afb5cb4cade62ef93010b907d", "0x063074d64729807274b9582f5459fa5f13a570aa0c8c1cdf970e0a676cfc6bed", "0x2cf0b9463240189f91b0d0081f1fdf117013e3bbf66b2ec20768b6196ca78a40", "0x2414bc086989d9c5a4b4389231672e10670faa0fa46393ed3acb8f7592d53cfd", "0x035c375210c40378de763a3a1ca80b6f59ee72e60bccdcab9987567607a7a661", "0x24649b22485d4164a5849e6fe09e491800bb975c4c18dbe076ec4c8430944105", "0x28ff30154191e734bbf8835086d026958770f58c05adf2ab87451b0f5b6a5b90", "0x1333e068eec2449ec9f3ec2509033a95eee7d93b3e21bacbf131f353021eaecf", "0x1aaf01fef0368da6ec25d420df62bf7fc238eeb68f9c01efe080abd921969992", "0x1a8158e9d6efffb3f770430136749c13ac3b57b0ac67b7e790b87e4c9533164d", "0x267a4bce46448d250fbc476240bdf28082bb7b3fd4fdf6b4959d202ca5c22cc0", "0x19092ce179c682ce654858f33d7db753b9a6864268eeac3e01b9c7499d669382", "0x2cbc84334505141c85446a368bdce6f43c4c73002b9c7fa2755bafd3c913cde5", "0x0f2290d7acdc26ef20e0ebf6c790b226ec27618780d69b34235db806c2cf7fad", "0x08997d8fe98a3b07b245abb1a2ff924e69c94ec512dd8717d26d913976f7009a", "0x281257a6930442a04b62b72ed85e06c26510ef3572b9d76a5a47d39cc8ecfd19", "0x1bed3ef59d524fd38eb28351acd8928fe6837cee442cd4128e17e4ceabf5c5e1", "0x2450c4222f921391c2d880d0549a66879b1f036e6196b0ed04b6f65d7501ae88", "0x13cbc816452f1a7859c5a15a87dea7c7074b06f50623b8d535ad31f380862014", "0x2a447dab60e9a356de04e09237b0a5e823997072c557c28398dc34349ce6b103", "0x0403afb29d58bd7a9985c47f8fc5e230619c306bc3b9e5001e5641781e2a2767", "0x01f1b34d74c7ba4b249e9ed1a403edebaedb7cdd68997d769702c61675cf9fed", "0x0e5e3c54edadf35d98492c46975dbc8e2ff08c13858abe8fcde5ff740182b642", "0x0d63ba660037b09ad891f2a73ee687cd93fe26acd102f90ad5ac7fce6e3cc24e", "0x0afb72ecf8fd02e169980cd8f4d692ceeeced7f54406a649da0b542138177506", "0x0a18d18293b53b043057c48caee752f777ebcbbed6cac878ae6dd7f823daf887", "0x0341875860149b8023899da549912f6ca633d0cd64308178b5af305831025c9b", "0x1e74f47f430e1d9fe4edafcf6484293d475dbbd32e4db7afb109344d6b217ca1", "0x1393ce303c52c2d727cb4004446b8e2ad22c18f3c6baaf7f0b9807b4dcab60ed", "0x2996a98688b3896b12bf84463004b1e6cfd41febfa82a76c39829c00a5909563", "0x1101278844bb1ed1532a88c945eea3f1771c0b7177d9e90a89fc14e15735c0f2", "0x0ff944e58495c3facf9e8bce3ea7e63b45e0094453d6de3a476f34f0bcb7f076", "0x09685892b1647936a2d06ec2904235a2a473236fbae0007813832b3b28747a11", "0x2df959566a7f74f07a6d8db0ee48cce33d83d76d83cdfb72f8e601cbda8a619f", "0x1371c30df84f6fa17717dcabf21240b1f62b6a0f7ad88ea974b74424576bdb2d", "0x063df78a5d2ae65937d865fb6653358f110a1620b462221fc53722e3e5914bf6", "0x06943c3b3b93a51f75b9ef027e7e489c4031ff92dfc9e6cc8c144765ed455963", "0x258a6301e1d4ed86f430c121b8a7a02ac41a45310d6eccfb1e25c50e144d552a", "0x16946c160509bda0e6a28b310d1e3d465496f50f331eba12a3d335e80d02ceff", "0x228a377dc063ee95ea9383203e09cdc44ee8ad4ce4a3bd6accfaeeebcdb3afe4", "0x29d562c833355a13246eafed9cb816b700e432688f9d0161eb345f93c86d1c30", "0x06bc32e8519fba6364af48c63d468794e43eaf044a122f5df7506db732811574", "0x05b5f5ee4e1de0165485ed2e889de65244597ce9795bd1302995d6448b7099cc", "0x228e0f6ae75902b8c6f351e3afe911852fb72594dac6d84bb2501f6c1fb62b7b", "0x1adee1a357f9bd07b9aa5d5de6c1cf13ab85e3c637572c4405180255a6b262cb", "0x0fe8e230f7a653e70d7e66b68cdde3b091c90bbe3392ed70c657cc18529c48d0", "0x17f2e3b7e2a5e959cac4b2e2abd5b204ed1d1da788ecb601e209e9135b42776e", "0x0e5ebb8d9ab7b2ecfd74f5c7d852fb72eea1d29438e5849d60c3be110dccd77f", "0x1176ff60b09a930fc378bfa5bfae137d7e914b2c2e5d41718bbe5987ea4204a6", "0x1c289e2a8f4efc5bf0272bf45012e7c53b2ea259353ca5fac13452570f0ec30a", "0x0897085ca8062df434a4f9526f65def6b90df42244485a72e23b62dbc3ad4b2f", "0x08702d77c6eb4854ab9a0dc200a9496022381e1fc33606f8a276cae0a0086edf", "0x2d557de044b0ba9934b4e84c14c2790b77dfd73c60964fac43c12834ae160236", "0x1b7c71b547295485251a601e795a5be291ec9310d09af4cbf6c6f1d9d97f0759", "0x0c2ffa9d08d01f7863acf32741e6f40f5a614d5b5bc9680d4450bcc3ddcfe7e0", "0x16b4df7609480dc496c9c80c205cb130dc75a36bc86ed397537fb8621bb55aab", "0x278870285022a8e62c007ea1a80dfb983108933916474d70597eb223db38d120", "0x12d086f24270995532f5e9a5fe0f454211df6e0d70a4f5648dec1532bced0822", "0x14051b5b246c70615818e460072a6335353ed0baafee7ca27dd1ed323a1a460b", "0x12b64f3fb3491740234c4b2a9c22b0d3615e6409374dbd51c68480ffed83c578", "0x1dba77c37155cfc3a40e60a3cab22a65ed3d0b3b9e14a088da0f78235f378c46", "0x2d3cdee7c20e981df78414afbc11ac0ba5538b05d8b3ee64e93ddf79d16af761", "0x1e72ec6459044a8545cf04fc975cea4396932411985f63f69cf5abfd079ea339", "0x033de42aadf342bf63b8dfa88f1834316ec0a1a2031fe6b990b8939ead902367", "0x01033afa420fc311df873cfa662b1aa74c3293b32fafb6dd8b50957b40e4538c", "0x03246089fc735a2a10eff81988dddf6bf6cb36ca4c94e5f811d34a138af7695f", "0x184378877dc29eac96d70f2c3c23d03b15bb5cc33ef46aa4d7d8bc7436e2e133", "0x24a45709cbcffb8665e006e6da138718b961a11e5f833afc14de37273a14fab2", "0x15edf9c56babcccfb597723c4e2ecc4e9f27a6622c161e90f6aa189ccc28c479", "0x24a5b373a41b6284b58dffc853e57c1e94dd8018bf6155dcf79f539ad38f0588", "0x212667816adfb3eaae237f4bc5003837247ff166cf8cba1fdd43244f34aa540f", "0x1ef893f637158368e9a96b7893b13693d1a08dac4f4523108b0a99cd60d627e7", "0x025d14d1d9d039aac2acd4d2dda3f73a808846aed7159817289db8ff01a512c2", "0x09d18709d5cd1e66a30a5af2a40202a06e2c4b6456fbe28c5509fcf8f5010097", "0x10e49e4515ab23f11ba99b0a8eb2b9c0c00ffd31e297cc0ebff4b70a19084a03", "0x120d8f3de534d39e74a6866a095aa3038cd5a8a6da2c8c3af11c6a57878fbd27", "0x1086a1c670c0b38a4615e2b5c9da452435b28cb618a755cb8e4d6cc4a185e0d8", "0x143da4f1e56c2995390de6d5c203a81a0f8534ae6fe1b548bc06ed66eeb71b82", "0x03f67f0c682e74186fa8a43185ad1058986d7829037c9bc4efd13303df2565b9", "0x2ccc820115f173d6df190637f860f7559838d62da484768aa9147e38718fe4f5", "0x16c78c003db17ade4964026d9c805f98f6bcc18f5ab084bf6db478324b4cbbf1", "0x2ced73fefc2ccaf65b289e9dbc565eb7118f94a1e55b431c176659a4e20300bb", "0x080355d267446e657f4fa48445d6bbeb92bd0722224b62354102faf995c8cf0e", "0x1d7b035e2e3447110b569a0a285fcc75848e9edb05f260790b1842827caa69c8", "0x0def7d6932196574dfaa3bb93e455eb3073af3c6f5b23510af304e44af9d45eb", "0x1d7bee97b83a508aafabcfc215e94be6c319c91a06a446efeea5d2eb6433d01f", "0x297df20f1168df352ac2f6f2eba37c01f2e1dce8c6c9ab6fdf4bd4f73a8aa61b", "0x2704da6a1722356355503d2c68fe1b4cc81c7ec8ec79e60293c6ebe2cd0fbbe6", "0x2ee1c93621569042fcb5787986b162c7713c3f46ba980f84c35605f39c6bd09c", "0x143dadb2702943f0c1ab5f4dbc544741271b5feacc410778391bbd31df27d57a", "0x092b4880d629751c880c52a583e7c897b96f8e4017d03615240b58b099710347", "0x2dfbb9e30dfdd6a6109ff6096fa7880bbdca630af585a98dddc26c3c0ba06b1f", "0x183f5efabcd0bb3b5bcdc307a3000408ffa227d7ea09d1e46728b8a41dc10b1b", "0x188ec11b8e4279fe5d6885cae68b47b0e2f3b1b1491823d56d45b7ee0b819bef", "0x03b932f42f057452cf7e63be1d791df135b1203a05a1ee87181b79569dd9caf9", "0x0f004e411866bf3827ee877ff26b9030e8234af91cec1abf4b1e63ec376cb4fb", "0x07b29a2bf26c3253559ac91866e18bd24231873c628c6c54085020e9d94e4e06", "0x0dd493324477dab3fb82ebf9bb5ecb261b16053ffde0780c7a103f5224ed0d9b", "0x15a2481d9a02f0f660f26f731800672d4f01386a88b39a481300524ff7d6d77f", "0x020fca8de9b1ec1b1306069459134385ec736ce3d47fcfe31c9036de466599d5", "0x13f13006cc21c4413d126b903430c7d0f91843fcc8ca9d6f29e088d53e6d56d0", "0x1562270321f351d19ff030cdb1061906ecaf1d545a842611dfd2f62b517fadcc", "0x2a1bac0d137627714a64d25cff803b56397eb7c49f916f212c325e36e099a21b", "0x0a626b8413c43716fb39475aade5a5fa6032be65870a14c7536db969accd9f4f", "0x01d8614a7501b8508b972bb3a9865d7ebe10da1f7ef9a4b7caae2e8dbeafde38", "0x2c4cd54213bc9c118584922573edd0979687ffe60194ee617a89971095ff1712", "0x273b67e44bbe0f36e03fe1bb7d026d3ae18d74280ea660f7eb6adebf13624370", "0x2345edc3a494fd086270df8ec3337021bbfedb313e666ed13358d808d7fb96be", "0x14e3240d400b2f37c462731eab1abfa3121fff4452adf8b8f1ea2d7dfefe5b96", "0x26fed100c2fe18afd4558db5690f1f5c1ae4848e45f7984b975a127b2c3e43fc", "0x094f0c0432e3dd61dd59f78f3cae7b2ceacc7ea52e1e429618132d2993561b3f", "0x01b69528d1cb065ea1bb8cb4ffcd6f727a43c184998a8c52289713e52f1a4f1a", "0x27f41e553f9d587a847aceda9bc374ada23fd5a31068640ce8851f2ac9416b9d", "0x1e78dc5799e31ae0047ec4338ccf8b53635cebfeec7de05098ac9a49f51b4e11", "0x1408db23a0195163f57ff57339bc69577b96aa7c9f5b2347cffee7c6cacd3895", "0x0a45ed2874baa1e55853ca869d88ece0b18f92752a6a622992f2c40a80fa1bda", "0x008c69e11628ef5f25cf5aa9a86c58192293eda7b8038b0fcdbe9ec43a387b38", "0x04418bddd1b637b566e983af7174840f3116feee63ecf811ba3c183208b73457", "0x215cda6478735eb143ffb90674fcf75ba4d60f81f2e13ba3a148ae32f72d4b44", "0x035577a54e516696334944d355f8f5f19cdc0006a3d8f19cbf52a315fca92657", "0x14007e08f2050a67267adc8999afabf2df408c524b62d66242e07bca846b734f", "0x1d34dc16f79b6e30ed5a661cd37c19178e1b9b5ef6814104b0f01b3042fbc1f1", "0x210287383f8ea9d022330583037c97c78bc6559b06da998d3486c784518e28f4", "0x24f14e85290d69d501a2347570720ffb805edfa3c42574f10c173631dc15a933", "0x301162024bb27bbcbe7606f50fe7ff61f9ef6fec6c70faf2485d11859f59249a", "0x0112ec7cf1ab77ba88df0bf2b9c9adcd5bbd3904798557b1fb17c9f09aebc0ad", "0x00405e5888854684398caa0a447f1077f2294d23c4fe188bd1d9024b5c786c9e", "0x2648137d6f48e92e1bccacacbe308447399f63583708346e2ebf987f397c8f19", "0x2828ed7039303cd2ab1ac07e24e2ca8df13562f1974b2c9f2b3fae742eadc23a", "0x015e6dc583e4e1f4626d8699910170faa3235d54d4fdac2480010cbc4383736f", "0x0e0d901f126136db8ae40803538a6e638a67be495a8b0da6523dd152be24514e", "0x15f1d6b88717f376031f4c9db9389922c83275af3e65bd06f1639457d8aea6d2", "0x2d4a2d4bef42094512da25f1fc445197da4116cbf1a5f19deda71329b3fd3cc2", "0x2b75516b90c831875a52efec663b3ac244300a4aea3390cbb79cab04a41c9c37", "0x22dfe7ba1a8b83b4ff9e598e4f853568e49212eec0beb566cbd83a580c913510", "0x17356d230f9da4d245e95d31939c5468fd6b4fe1d43a5e6a23c325beb7818e85", "0x00771aa5a01cb551d674ecc77a4566d30413f3c6f3f98883f2297bb2af901700", "0x2038c2bdc57d92fd22826fc76e6d08c2b9f0dfc5284fff92067ca7711869f1f7", "0x1bbb2d783129d5647dcd868d4068b4cb291755342f4d189667cab73f58913c54", "0x0cfa3cd62a22569bd9f83dac75982f5d9ae73f6d11e945db4f1691e47d690cdd", "0x20b8bcafb219c0e8cc74c564c365e7f1aadcebe9d1de307a7d8bfebd9a59448a", "0x133f8f49324ce55abe13c52065b9fd5525d19ae1fd95c968400efc2d32a3e559", "0x1e393e2816d184bb6fd0624f0fa7d0be2c767ce0cda87aa2235863564b6f0ec5", "0x0ea9f996da777929697fd9c0b7078128e70ace44e0f9c5bd2b408096ba6acab2", "0x1f998239bb13599db25c562143e127d87f7f7a94d32177ac46cceb87cb9902bb", "0x2731954ff3fa93fe61134965d3f2dba0bfaccfc91ea76ca59638d2fa9c4a7a0a", "0x18d07a9939fafa512e2db3f523d1cad5de5ee6138dc2d68c8ca06d5abb4ae655", "0x21c5122f00f0db5fd84ce1d7c2370e019fa8269fe7631560f30a4c791f228e0f", "0x0f94cbde49d7bb747f1b7a83bdbc3fbbacc95c68355767beed02d68f444504cb", "0x07786585577d81638c8df6c6fbe94fd632f7ad7e35ceffbe367e9ca3ca33c165", "0x13899fa1b41f12f9ba9d85b72ba310e028736f5200293bc15df542c1f3fdf3a2", "0x1a3e2b4a3410b810d0d8d8e91bc0abbc5843c90e1f196902924901e4a423dcc1", "0x24693cd5298886503438be685277e580caa0c61090ce7de0e7d40e49d12b9190", "0x1cb88707d385048828ee4a4ff4651d26b0c6ce4403801b70e65d0364285bd25f", "0x2d5d8e36c872f5ba089905e748b00c1738ad5103e56334250db8c34f89f4cb58", "0x1df48fd041b0e7762fff784087064fdbbbaf29242a35bdc6a24c764f1201e39d", "0x21aea18d65264f486c986b3dcde7abcbc0ce1f82418b6fe9dc420ef728f9a5ae", "0x295a978d6b1143de34ded6f81e2af50bbaf9e93a3c4f98f07b69a912978218da", "0x04f0f0b54e2f9add517c53f11de865a6ce34df352d0c8b7b0ea8fca0521a3b5f", "0x0c4daa6bd8a280695ceb773c23ea936eae30b9aecb7d29732f3d005e8f6be875", "0x0275b5f950e56bed013209e34c98959fad51b2bdebacfb151e2993c8691e1f19", "0x142e622b8eb094d15647fd69116f59a527d8984710ab8437379206bc95bab064", "0x09acc90fba52574235b7ebe94b3afb107a68bb7ed6d60b21714219fc170d55b0", "0x26512b4e53591f187109b2b4f36f4131fc0bcd1cc606b6853aa20526b9591dde", "0x304cb4d258b30a6798cf5e3fc86e491809ca72e944066160a27ec60c6687faed", "0x09f24d8469717a2bbdb34740942cb66804ed67d932b768c87bb6b4ecf354eccf", "0x302a604d14a5cea49d0411d6d669797578de3ededd4bee595109a509f2005f78", "0x17057a92fd82f27763b98c0137a3daa6aebc82d1ee84dc286521c4b33ad16acd", "0x17c98c3e6b14e5c38bfd3d1918e7b32d85d4324f16e43448992ff12bd0063a79", "0x2d85baa692bbe01ee8ecfab8e20b80b8c012c96d69f694baeefc253bb98e49e7", "0x22a713aed1607d36caaeb46fff411e64c1bb3160db3f3431facc07969dab4d4e", "0x2f7ae4d4acfc8497fda4ac0d082cad38196f265c86089235093e1aac53c67e8a", "0x1afd52944628c9eef6a4d5cf21a9dcf6fa49b1da1fbd9c97697aa50dcd6cf712", "0x198e874eb31875b5796c3081424da73a92708ecd74e80eded5c8ac492a8011fd", "0x014ea1b78ec6247114d4615ce0d11e280c33b0a1fbac636f55f043a5ebf04ca7", "0x23b4797b3bffb21db4277e4eb13979e6774acf0452deab3d057ed6c0eb5f1712", "0x27c85c1c147076cd777f41b99d2e55530d4d43b341121187d010637cbb66ae86", "0x1f846837097639fad43c0f406a4029a3ab6d809c1a27c61e48b15c1b71365f1d", "0x26b338bfdf150311357f806449ee81b2fd29e3f2f43badfc7848948dd7781af1", "0x2ccc6e79733745f9b759c1eb5fa3671dc3d99065e8413d653eb24837a9bdc544", "0x1b7fba6bd285b5ee75e195de2bbb189e822ded19a2867c5323c7f6c575c198da", "0x184a5c858586996f08ac5cf5b5f67367d91cfcd71b35eba37787e44e7cfc61b1", "0x2391576ba9118db12874e5169e93c729f8aaef71d2dedc81d283dd953d59e0ac", "0x06fd613bef646afa4f1d57f7128518f83350e5efc0e41f8148d2ebbbd9194058", "0x1ecf14479487ad8f8e5e4677f73dbe81f3ce377ec7bed9fbf0c0a0f16b912718", "0x06fe9870f03a8f83498e73ecf2e214532b8b114a14cf3b342d7623e9d5192b67", "0x04b8da7397a519153f0756f72c9b62670ed5e983c02a4109131e7275d7f2d1b3", "0x2b1c40fcbdf7d9db85f818aad7fb333b7249db791d1f65f43f529a77e3118998", "0x278fb21e4cad110091702e5c8cdc84425bca088286772f1817308f3109787057", "0x177ef03c343328defd5228df7d4e44d4cd23956dfb134448a485b196572925b4", "0x0d201654bfcdd40cba52e51bd419c0f95c12101fc1063ebb8d81554c71c16153", "0x03b21c4a37026ac5d962119572d8bbabb453343f75c0d55c740aad13968d6e09", "0x072a52164e3175f63504fbe7a0e02509d050e5552490e23d7c9c8242fa870ce5", "0x030d0c184b743e3401114b1f395b12fb6a962191c77c5bdfef165977cdfacbe8", "0x24ba3bf7b9134803ab3dc87fd9e9c27f129764f91c34eb53b557ef3fea87a39a", "0x13e05d5c4e1dbad46885dff27afbf021f7e1bbd432d0a9f1a3dffcf3300a7a48", "0x113a2fe6e9019e83e0e898410c35326c10cdd01429acbb1fab5faa9cf474de2d", "0x078aebc8ff29a02e89514e9a5beb5690b75e598d2af2f9016bbfbdac02f47d17", "0x2ddd3bdf04d7d1449c12e60030b971b44c6577ab560f9efe8e867282ef1163e9", "0x220faf36a017fefd9df4282a946513585a4f6cfa5bc5f9766861fbfa43ca18ac", "0x0eb6a2ea9f6827065fe666ff3d1318280923a634f91efa9e43a223060257881e", "0x0be9458e9cfd6cc6489d7f20d1738f3e519b5c22ad15352cb444105ef4b89a8a", "0x1925d24635bfac09431b17383636f69f224baed3577628de33d1a282cd18efda", "0x0a4098894729d44bb96a4b265cf98090039eff6cf8b170ce3dd6f8e42566dd97", "0x19c9d480ef38aa13105b574a419520aa7d092a68ed6e76171065803da50482bd", "0x1c0a6c07cbc0d6ab894864dfce9df406b04bb0c3f7d7d4f00b3403551411c07b", "0x1d40bd40cdae647cff38b49289ad2cccffc669bd94a6aa724fa2fe232d4e6b02", "0x28ef2d4bb34fb4ff673169aa1cdfcbfd7a869974957ff7ec7bef4c731dbdb666", "0x1b2d5d6b171b0148947d55f61b069828285670f4b843d29aa7f4493bcc5a8923", "0x0ea0a67e504a55e07fc868ed85f3cb24431835409db5e6653cc31fc307d29ebf", "0x14a99bbcb8fff06772149dfbed0103dee78b5622afc0d99ccb2bcde06732c042", "0x28f711676e8ae8c2443c3f82a8b765edc17cfc6ed254b7d2338f922b6843a8e6", "0x145eefa014a02d9cef3bdb305206dfb1dcd4e4b8bb91513eadd1374c38e94195", "0x2379d29d5e9c69d6fba8ca261656c9d0370235a378f77cca2850cfb3d5fc2170", "0x2d12ce4fb01ed5ee6c444c59583cd1a26d8e745443a6721ab48739d7b2685e1d", "0x2dada5fcace74d74dbebe88dafd754b859989b09240b43a46e03dc6fba6c8f45", "0x2e23386575e2f0f1f97e4fb08438a13728dfd5030d398192ffaaa1fc6da5d159", "0x270d58901f888a0d3331391d74b72d35fe749849add6419cd747d6cd67db2d52", "0x29e48b157cb407f9ce069d0f80a4537cd9e87179d9eecab350c78d6990a4e0e6", "0x1d15d50631be723e2ce8bf8b559d975af370557abee33b6514ced1bc7dbfbf70", "0x19a954aa55569697082d97017cb66cc676d03bed6542a58a2237e7483ae8e3d2", "0x1146d8cd42e6e1e47b51d5d80660d7e17ab43467a2a5b5c8c0d271bf92837151", "0x0281a3bc2877b82e9a9796befbe8db3536aaff12bbcebd91de6887432f37bb44", "0x271904d6f98de7de1c70275d3e362c3985b2e7ebc073ae59058ac2b4e71394eb", "0x1b07f0f881d60b7ceddfe4dff878fc7162c92d8c237b5241017fc0a2aef43881", "0x2bcd2701a63735e73b0257b73d63ac7cd7792cf96ed0a0fa3ce3bf6220835aeb", "0x131f25e8aa9663cff8fcdc4f325434fe144056fadabb01d4effc020148f07566", "0x1e03c62451cbbfb82a6a4c851368b9a9cf79366be4c7937ef16e890bca6cd6c6", "0x2a8d3017f2b21a818d3c8c932566bd1baaaa7c45600baa0990aa67a49309cb32", "0x0174c20e110d106eb038cd9318d46691a685d777b71d8852d45602462ec5e3a4", "0x2639df073fa32789d0e9afab0f34422488eae06fd75ef55995e369e1b15dbddf", "0x0c170d68f133125763ba7714624b007475fb6787a1b17043926963dad16afd1d", "0x2fb299340483a1739b0108e631ac6e8917367253a76b9e7993b1aad9f694ec29", "0x2588cfe421a60702216fa0bd567cb266af1042923bc6cb57ed68bb90488f35f3", "0x22c8fd4638564b9de90ca35e661965ea6f01f37ff615ef308046fe136ee5f01a", "0x017cef09c980a80c4e53d7284b5b2a10dd1cd0ab41260d33cc19dfada88e5447", "0x1d9f0a3022c4764f9e5e6404397bbf44be049e5185cac48bc729ac948ab01331", "0x1bbf6b14ad3e7666bd58c7e9750f7bb9f6d6f70c4c2abe91e20fc51cc5ec28c5", "0x14c8d23e7b15787024794dc33c58dab8c117b51b4588f5ec5cd8c59f9cc30dcb", "0x1b91fc8e62a79e98f545cda2608f29a4169641a3f715ead78bf494822555f565", "0x0ae904147620bcf04a4b4a9679b2713fdd8cd50296d42ca318548e32b81e3b38", "0x166f3e332577ce10c873891b5cc742e7c34bb4d62b5773316688e510f4d82b8b", "0x0141e088bfc6e007a2d82cf717954720cb29b97b30c8c8125d5f9b46c2e26621", "0x118e0ee4202d127a0577a6eea29bb614d99c1034fe0e2e7465e91e97c837aa29", "0x2970b8f31d9b9afb3d3b912d90594a847ba0483dda4b0934df1278ba14bc2ec8", "0x2f4a5eaa4b7aff3fcd06c9d68fa2e32e4b4e629aeb93eccb552c9f96fbda3ddd", "0x0291d6cc7e8e5152902f5b05c13002bba95cb54657ef393e92bcc23b9bbf7ffc", "0x2e221aaf4070c2c0d735b5b0a52099c6594d38936914c9393d8ecd2327088c42", "0x103d669fc46b07aaf6cc4489e85724181503000817f8c1fb5d471b2b36179f22", "0x10dbe373ed70674013a939b46a07ee4f8c191e3fb639f8d0a781d1ffba82fe90", "0x116229ba1cf580ff86ed006b9207036e69cc0f1b55d4088ab34e01a3f25fa531", "0x179bb393b9bee8ef918a2ba2239ff1e6bd63d6d48cad4ab6f2d319f2999be4f0", "0x257a8dd0150b1254b585122987e3bfcdde7f914d374d2bec0595c46afbc0997a", "0x1015f7f8871dbab0d121570b0ba6417980a2d11b292fb2a37ac74c8a6e198dfc", "0x160acf3dc98d9d1ffb15eaec2287d5cc743ef3d16fb8bd40946a24633d23825f", "0x063c73552b19fe6f68e9df9438a581827ece6c31520117c2353c67cf0714d5b1", "0x03e8c80daf887938cd355ec710a9e32f44c47520aaba5dcff9c62c4bc0412a82", "0x1ac3f781cd9676c41ea21fd2b7cd3f38cc795eb6ba45a525b291c66b8ce7ba68", "0x189d712149326d71b0327f9b7102ca0f93043fdbcf400c18e3bf70106493354a", "0x25a912761f8d8bddfcfbc099bc994a355176c54a1831f8eea5572c476592c1ca", "0x1158c9758fdbbd6551fd2ccd615dbbe0bede969a6cd0f28040e93b5239eda2e6", "0x28e7b56cd29b16133e66383a20edaa6a779b6afb82772344cd2c25979a9a5eee", "0x02c3597feaf103aef0cf0da96c7817bfe5713828c613e326c975ca1309927700", "0x1c4cb6031554a2f40fcd1b71223a97975dde9f4f5c26ca08678870a139ed93c9", "0x2ec728fe7b69cc421f18d96bf7a826ca1b04261f24a98fe9c1e8a0a41b64b58a", "0x079e331f65c8a82b875922c8449bbdea3a111a68179e5d2dffff605e1ca47dca", "0x026cd813f24807033d7c0244c9f0790fb80da30e5e3c1e45d7c7032f2aaa1831", "0x05bd11c2b64de1a736f93ac8ff7e0c166f8c570a6f068dedaf72227e85c11451", "0x25e16ec5be688e137b2cccee835428dab939351b3227e8bebfae85f3a1f9c270", "0x0b38073981b0af418fe69ea55eda1be5d289b2f0de3bdde47ee6483f033b16cf", "0x1b40be531edfae81a33e40638fe85f88067919a14dd1de793e8eb1520db3a2bf", "0x1b3437d0f405ab27c185656999c538a67654438f28562b3a00eac395e7133835", "0x25abe96ddc21b2c17b6bfb3a8a90a2ac051b3871c87fb9e35383cf6d7223888a", "0x25e3fc93bcdffeb428bdf8c12491963e4aca18475844b67fc5676c73fd0eb358", "0x03af96b4b972c3371b076821359cfaaeaf9638a072c4f93e08ab119e6c7429a7", "0x232a48732df2599b09f1f1631d68129303ff6d40098f8b2600983e5534435c11", "0x0cdd518a91b38feda4681d3bc992182ee111e0440e9860cdc71cdb36ae80c1e8", "0x1b821898c43b4f3ae2007e994ea83a84d3fa63e7595db2f41312cdfad1cf2499", "0x1386203ae413c1942a336b2fa08038f4e92e5952e523bbdf7cf3378113ef0cfe", "0x0425657e57a9410eba03665cf1ce8eff3e0de9469b032d468ba15d9208fc20b5", "0x27884ade4cb4eec0c91c8177e0971bd5a9b844af188d28ac1980ccb425fe6986", "0x0ec81730de0878942af4b3827b8bd9ac4cbb1f3ab7ae97cd1bb135b0b7c78f4c", "0x0a93f1c9629ec9071e268148c6503ce1800f4cc3c5389c36e9ede3eebabb7025", "0x07e9c58dd7c4767fca5ccbcd7bdd8a4f4bea7858542b298743660654001ec52f", "0x0975e07614ccfe3cf39fd0208e97cad49c65a30af3590b24df1016e6a7ad9b39", "0x0283f302c98975a418a232d3263d80dd74300113d851de6d7b5ef3c7f9299450", "0x2b99993f81272c00553c71827e9e24b3270549e703515a6704393b3894a7d378", "0x03cce63cef0bcee4b9d5c753a190c249127a628b4eff5d557f2ec05b5d033c9d", "0x2bf4ce1340a1e717fd8df525d46439375eb3642228ada9dbaca5804e6998507a", "0x1ae9453dcb8890ce578b221d846612a3396ab24ac8057ed48209efdbf31165cd", "0x2764d3e37c82c76382c2c47f4a93dd8e73fdc7cadbec68bd3b03b4dd75c09871", "0x150f9419a3b6d46dafe052942e15ed496e5b162648b7ddd3cf55bf1e52f7636f", "0x0876dc242c8d2aa183d184cbbc4340d5a9a3a474ea84a99046999d95c7884bcf", "0x21ae86ad0b69ae69e4b9be0ceae01667895a9d9381a1c0de6d3864d228e8ec55", "0x0ba0ae75f3c762e9efa11794c8121d2b7bc6ebee38f105fec003595992419580", "0x10a16abfd6b38360d4f3257f3c51c9fb94ec5f845dd83e0c4ac4f7798f2d9077", "0x09dcd9b007d04507c0bc772c0ebf964d496e697461753bd1bb81bbc39583de3c", "0x0b1bb2a1096618ee3bae22563f63fcf7e85a817f6345501426c271a2cf1975e4", "0x044c7652068fbb0991aed6944540321bd6b09a1f0d6e91a54b8af4dba18471cb", "0x214ea955c4b2a5107d885a37734de5c9afcef744c4815593f970bbdac51db55f", "0x1684d36dcd86408b68230ca9f98e784957bfb7552a9253eaee876820bee310aa", "0x01666ceb9d9cfa4cbed159ae6ac945516b093ce589c59dfd5abeff6c6c2ee06b", "0x2151a99ef7bc07707ef7e223864c9e8c50836302f299aad05de35ad74c409daf", "0x2f56e15326295bd701a40314e42ccfd5ca4e0814fa54d312e7717e488da05955", "0x116ae009a6c4bb4c28c016716364fb7e7be3b21723755e1607b1a262b91a16ae", "0x2fdbe71f53d54e5b3bcb850ce61743d675be601d74430d9eb8073f6814205189", "0x011a91f3be424b955b2241d753e3d6d5b0c48ff9c68ba868f8a611232ba442f5", "0x1c7c9cf7751255070ebdd0e3db7f97e5d95564d33d2b3293caffa0434e6d788f", "0x1eb979221c31f6978d43e7568a7cee7709d68b86e56d77ec89587dfaa78261b5", "0x263b48e46edff89f2de5dcd258850d200543ee5dde31459b6fb5241a6bcefd76", "0x0785b9559c5da0bd57a80150c229bb2d75f51094c8e1a11bfea538e217d2ecf5", "0x23cf1ad5ac576585eccf97091be57cf0ea3bbb2d3af9174f8042582424321d9a", "0x27d4db4bdb30ea4e07550d9e077ba8a9d5caa1d418c1a76a12dc71ec55881180", "0x115f6242fd5412b1208cd4023d8cf87fb62d33a8292b231caf8d825701ab681a", "0x089bbc83094f64e293c91ae79a8b7e009d0f679c67dc19c62597b04e1415c424", "0x1d4a1b3e7a6d26a8c81d7e9f4bf08af0bf1370dcd0d2101469ed87d469d246ae", "0x2868583e9bdeb10538362d7fed8997e9ceb4b43ab8db5b0a4b2f140943ae52a8", "0x0b79459ea80e71539e8079cfb3eaae03ce6d0e3c856557c3f71fc983095b434f", "0x119119d4ed16eb8d4766c638d0c34acc159a2b8e24e38928c3ba875890ea1985", "0x0bfdbe4b4377205377f69c3cd5e93ecd2a9cb3b4ae2c1541d8e74b64e965a7cd", "0x0d41174cd6b5c4c0d34b2f4d841f3f9da4f100e20cf6140864efe6eee54c08a1", "0x21c5915b86d2211067d19fe9a318234043b80b53312749898b537783cbe4e1c7", "0x1038a4a9cfa20caba2d23ef064e7419792e83a31f0cabde4eeab2e49972fd78e", "0x017cc0079f9863177147858c89d3d7f31adaebfbe4c9e074ecabd20b7d2243a4", "0x294ff7e5e36f7690d60fad36b804e35659e82117ecd44deeeb79e58bb8c874d8", "0x1f03f5d810dfa62edd32521abd1d283c2416a28fcaa244d36788eeeb195a9041", "0x002113e2715ea893d00d101bb30e6e1702157d10faffe85095427dc9d9caeec5", "0x2e92c29b7a243a299d92e78195f30a996a3f534d5791a32a0be28bb7e8960c7e", "0x00bb300ac74564449f872674dfd9e17a185432f1f463317cdf9d499c87cf8595", "0x250e835ccda0e466dbd59a541e1d03c4fbed637ac6b715c82c32af588e1bb020", "0x06b776c5024ab6374c84f5528ca7930439da012d412f9369ee36db33fc435826", "0x21df8b318a44cc5f9d54bbefc97a91b787912bdd5cdca95f47eb9cc89abcd1e2", "0x1e4e1eaf5d1729d55230bafb1743de4732a18d66a9692849701f9a25e74ca9b9", "0x268ceb3749719379b14ea062c63b359449e70ad5816df014cbd102ac647f2228", "0x0e252b231c1f0ef18c8d6afbd879eaa7f9e61dea73247ca3af62b3c1e8794fbf", "0x0799c14eec20438a0e53b69882c90c6d9239b7367be50f64ce92d9974c2bdaff", "0x0fc050000c821a4cf4ee6bf4d91ba46d2cac2305118ebc194684a2dcb7d7383e", "0x261a8cec31c1289f2358c73530ed7e01c2eef88cbad4010ec09d036e57d2a9c4", "0x0fe536c9c7dda5070a37fd31135f77a67f9f3a986b1c23deb83e85793cf3cf89", "0x19ffddaefdb50032b58e08b4f377b1c0eb37f06375ff78e7ab7b605781dde8d7", "0x2e204413c53445351004316110f539849ae7971f877fb0841b19ee753ee2083d", "0x2aad98682dfe08ad2c9b15f4455a201d4a963ac7dbb189a42d2b3e1c3e03111a", "0x2c89f855544594b08ca43a7c32c31c0d90aeaf300132c8b4a4cc66843a181ae9", "0x17aa1f236e0e89d6c821337ec90bd7a78b32eb9bafdd9e83ff8c7b1b9784828b", "0x290feaaeff298d887d5a5baa47fe2e84070eb78d2079d791acb9067a979ac1a0", "0x26103b8738968671897412fb4246da86eac69235c4a1a71aa7a928034915f67d", "0x028a70fcea0f277978120db4bd478a6b09d54eaa8a97d369dac79716989b43c7", "0x2499d1e4544c6db94e9ded9ba93fd92162686e412099de5baf123211b4138ca0", "0x0a1aaa6aaa97e0c7228ffae517b59392211af38efa670aa06207ad7f05bf0af7", "0x25b6189ccf6ab3a759641ae79385f3e7de0e375a61c260d84d91b330f83616da", "0x1746b0b982fefd9d90e7ce72cdb5f92ce0c6990eb43a27cd53efa1bce881eb60", "0x289e95d858d2babe2526517d850587c3609a9f4ad32a646de51e866bba0b42be", "0x3048411ae21ced1b31d43d3496c92e66a26d53a24f250e17f328c358d97c220c", "0x037ec711790b5b9819ed2f20da092a6befa9bc44cbe6c1c21f33d3efb17688fb", "0x2d4029de72bf01e5937bfa34ff4d5ebbeacb010ea816d9fcd6e7af91d9a6714a", "0x0466fd8b23836d8e45a1751a1d0d28db003cd20545a88e41318c571c38fd3b12", "0x032edf5df6d833b5490840e0140247218d6254c3697d0070fdcfbf6f1168e841", "0x24098e733e307a6ee49e38ffd010589a51c1df21282d82788f5bd0cf8928d1e1", "0x2d5e2fa5e630042a0731ec84f4a548420dd5674b614b3de83e5ca707ecb32706", "0x0e77210dc9f28f0aa0b9330bda698258e429ada3e10f084f5066aadc86d7de01", "0x02ebdaa0993f6a702e710f8fc47392d7a0e5186294ba78ccbde291351087b4fb", "0x05667655c2f54b241385b86fcfe274d1f245699cd6aa60b6fe515102e6ed9c0e", "0x0cf97aeba824e4585cc9e73c62f0334b8ed4cce1276b939501fc2fbf6b2cf2dd", "0x1b0d81d58b85a80d5fd10b4c399e0ba9603e0d60c7a63c89c8339dfacb3dd88c", "0x165261806d574e0612d935eff3064754aef0f9fc86984b1e31da996961b565ee", "0x2543c122ea7e08406b7c5a89f385579c585ce647d98ec4400b6db8ecbe6dafc8", "0x18aac1e93332c0695691852880b308f069d8749f94c92372c1367bced171ee01", "0x1bf63cffb45ae6f08358df0152ace17058bb3a63b0b1f2567e69d42b44048bab", "0x20283d0443c843dfa2cccb285119fb4a12094c90ce6ada0f6def11ec6caa6b96", "0x1d954fdd63b3ee13a6ca13dffe9832aa9d9e5f2e1ecd3e407272d87c281250b2", "0x031b80ef30eb0f639c33fd4e7d5b778d607ce624ab7c0bbcd9b2921b6dd0b164", "0x1bae6f23461f682a6389c607670ca2c975b768ba4922543dfe0c78dcde3ed854", "0x0c15d34b4ef0d6dd324f1fa8ef058bf24b57419c1e49396aecc6b2945562780f", "0x0c95d91f46eb587506c57bbc2ccf87a0fc5348ac0dad375eb409aa64cf92da96", "0x2d1da15ca522aa1868740b9e801a008ddb7884657ae89507fb99457326786ddb", "0x0572ccd7fc6fe06be9bf2bfa8b4891a37e728805c609f1e282a0214480e62894", "0x2016ba766dc14ebeb269c939f988c0b0e5d7a16f2649e38877f2ff8a525a88a6", "0x1d570b5ff85730e9ad8c3261b6ae8574999221574fda8a97f19bad50dc2ec724", "0x143223d027cb22f42b20a25860333657c243a05e16f8a0fb07784a3f8b3f83b2", "0x0f67ed530f31504bfe3b87325682a5e9b916d75caa7b5b3d5e222c7f86417dcf", "0x10138516469478294fef0508151ea8164f146c8e377e90637c4630d0b45de53c", "0x286dcbdb9c85e5d6c68066b69720b550f46158374b88e76ba48091661b591e19", "0x189017ad0ec6599655fa5f5c041b189d4a5055a83914e5eb1565209d44366f1d", "0x123bce9fd40c7f1962d00668560cc3192428bc2296c92fd13a42d75b41b441a4", "0x1f9aa5e25387985073ca220da7df2a6cef8b60a089e4afd93e14eeb3d5dcb5e6", "0x103f38ddb6e1a669aa42ea1c7b9ab05761f1804a15fe22f26bd34367654326a0", "0x12389e0109377aad426be4716375841c2fd4ab598b60b6b2b4e7a2ef8a48ae7a", "0x204ef0a4fe68dbf212371431265460d3ad63691245c56ccd4f6990b989537d9a", "0x1425c7e1f5f5a42708633437672f8ccff1c17bf74dbefa1e99cd040cd193fb91", "0x1d1b25d3cabff58428e2696ecea9975a9484302d17fa12cf33d8416b4fe1d299", "0x23908186767f07f13d0adad116284f2f179144750b0f1ffdce62eb4797ec20e6", "0x0d754473d7c8757e822a89718cb7d7c5acd1125ca5e0d12718486552a3741974", "0x2d59de71c65b8678dd79d9ecd3915197d161b253913299238ef8d3d28cc12d67", "0x2b2f638dce6c5dc04bfcbfb40d6d547e52730cdfbca74f0c0bbe5fe25e0a6e44", "0x20831f33188daadf77c482c1f3aebbfccb9bc2755940684441276f800693c758", "0x1bdea03a87112ac5f71d27b0690eb578be20a7eab02ccf7be94a9b504306bfef", "0x07f190626c5ce403670abb23f739112ffb91dc234819180d83de234de743a31d", "0x21d03a8acc5002c7565dfd84fe3001d9d7025929c71749de25382bf9383c70ce", "0x037f8e1f9f310b909085ced938b600d4dd06a147d5183992d9792ac4458f7936", "0x02680cb420ea4ae49c2286e497ad3cbb55360875a2b69e17e1fd096ebac531c5", "0x13a3a06d1fb827ff1406192162eb23b3e27e94cfda6aa05a86ab5e325e5df358", "0x07060927b3c64111746648d6a8433ff8f373a4534841e5cbffe5bc41b9e688f0", "0x1d4143526045c6c418ca7edfbf9850fd260d231b52b2097fd22411041cbeef8e", "0x04f6db2530b719a376c6e7d489cd7fbc652e7d2d09064e3e9444978c9be197a3", "0x0542efc3df5bcef699f0fa7be5c71cd32d253f20488bf70d734241e434dbf09d", "0x2769424bb96a6c21c64a506107d4885fe53603c09ffbb01860658330ab1b57fc", "0x123bcdb0cf6e7afb47b866827db72332e93c571506e073c498ad1a92befaeaf0", "0x15a1d25ab64db0353b33ad1009a867276097d5a60b4b18dd02bfe855a4952b21", "0x0b9cb6fd7e6ffaec8246acd41e43e0712fd76d5cae56a94076cd816354db31be", "0x1f38c1ffe5470c8367677c8c65b3f83194cd9c7d2e8080a1c31513a2c23912c7", "0x0f32237d2d6ed00b1ca954df37c30c988f89415eed829133f5a73634d05f0c60", "0x1905f76e825e1671f867fb5858f25e53a45f8f306a9a1b6dee7033647fc8ad15", "0x091c7d54e02067adc0794494efd0ad906e8c338a524c37f825f9003ac312d02c", "0x2dba5a21943598041f90860c8e92223d7511c74beb4648caaae4b8de3870f3f8", "0x293a350bc3c789dbf7c2e5a015480678a755ebcd68e1cb29e41d1d2942c579d4", "0x049d0199b6c0f2b3122d7d74b31aea8fcb701a24f40ba5fe698de631d22f6248", "0x2b9325291ca148c86eabc2eb32cae477dde830f028f548b5b5c6e143fb8ab68e", "0x096a6ee98c5686bf3d586a0e54961b0a3afd6d52da377122e85a355009f4a560", "0x13fcc77ccb4a091ea452a3f4a10fcaddbaa7ab18eb3f88508bd128ad2ea5a818", "0x09199f06156eda7c8103343b344bab11f43551bb9507bccd47a292af3d4fba68", "0x2fc417c576e3fa9b6b38a82e0328422c2d2dab90879e42fea73033a7562166b0", "0x27a81a0c9e5d0c98fcfe679afde0caedce2c5fd66742492e80dce95fcac79ff1", "0x0467bf8d537dbe823d6a7d64ca2c7a2417a2d7758fc1a89ff93304fdeb4d079a", "0x071d82bca92aefe7636f10c9ce16f7e5b41314128ae5907e1884baa183442469", "0x1473e4434eee30b2e7db34daeefb0df47d1f5e939aca25394aa11a686ebcecb0", "0x2303403014edd8333b87d5cc4cb08ffa29ee752f6a367c5c9918f8e3b80acd49", "0x213f2f341749dcc702fbeb8eb916ae6575445cd9d4e5fd5bf047aba7ec25dc82", "0x064369bea4c676d37efe3a65dbd4316e0e1b6b51ac48bf9c01b52c15b24e8a19", "0x26189341509951e63ae3b022397098e5fa9353625280131b31dac3a1c1837967", "0x28c51ab463012d8ba9f0b7f8eec91ccd7691ef0570217892d57494c6faa6abd3", "0x2a3e5a660753c0f733827620cf3d2351e4f171133f749eae0cab25ac5aa4f0cb", "0x0bf314d9d75e35486cf9f62f6539584d0f96fcfdfea1617b76a4640999f3d109", "0x2d96368456c5fe26d119a5742d014db9e86feb0e2315c2a37bfbf7e02ca01494", "0x1ed8f2f743e4af9edd62d9add634474d54113712e5e948f05b82d06e7b59913d", "0x008d5a047a23396ab6b1c02d108974b25ae135e4f0de6805627ca074f3c58a89", "0x047d8ab6c52350d654f86b8942f10d2c0021bfe9dffa1db254dcc5028aef7100", "0x1991c857b30f3ed8a58fe229da5c13fe07d75199998df10921068afed09a6a36", "0x022e4866b8af16ceb7fd45737ac352805b1c575456e1535a9e9d9f7a79e0a5b5", "0x0a0840cc3720e659f311daccfe6348f287ce1dd473912c34979a48e69b06aa54", "0x0e4ff910ee3920c587d0610db1fbe08bfdc2db5381926263b177698810dda57d", "0x155d27b044856920bbdb5667d361a536c3f8c5a5d8599e2a7955dffee77c266f", "0x0cdc005d55f575c61a43d8a28fdbbef3eec35e56a438ab99680c4d1efae64e7b", "0x231e87ba98a67f86d501651f5b74bd53cfe26b9ee09c07a9d8371b6bf7c42be6", "0x06b4d87805bfb75f9c37a61e10e5579122d369327c344d516e2ce6c89398b379", "0x16e66d16d3f570ad5da3dc1ecb3e18b38eb8d8e05b2e8e7884491a2e1b2e562c", "0x0c66a6340c9c20cf66de3d6eeb9d49e8a737c233343df8d847e5a718ed5118ab", "0x154a4b19575147b6672bb0a721ce40957fae3e336c82c7fca199ab30e7512274", "0x15e4b6a70cdabf2c4de98419da811d062ca8e9dfcbe39bc7542f66f7b60bf63f", "0x1161ad8fba20760a13bfd7b7ea1d38257edffa8c52be8f410087c916f504afbe", "0x27b83bc79d2ad4da4b5ef4982e91b81074985cf23311a658dbd0ed301e90fc5a", "0x1a4115730d7515e8ae8d0000e48f6cefcc893190566d94d39db15517f401d9dd", "0x1a9c2b3b97a4108828bd76bc41968d31402b4041aadc416d65c20996ee6ac6ae", "0x156aeb50e11c39af946c5312fb0e14db6e919490571e0ed6b555556c31f97d90", "0x14d25507db869e282d0759cdf16e81006faf9f10e663883030997ab894149e2a", "0x0336977ba5510fb3b812bf39fa1946594a78a99c00101ef101727c2e8e7cd687", "0x07f8bb771e58e5761017a9562c6b285b93d6b709aeda186d96616197579f1b68", "0x154c478a2566294d2f96d834323009af0dbef15da62def8171c309a05ed1dd6a", "0x1b938bf306de7f48325de59877abcbfe2eea089eab0903802c7bf3fb9532627d", "0x1aa446890cf65be6ce7f7d603bd42e03b7fec0d201668f760dd609d31b587e20", "0x17eb7ee41c38747374a7b1f145787ac75b8d542d33494d65f0ed00ca4ed17edd", "0x1d1b95e9e4dcf3df901aafe1bda2cc8237032fd36ed508c61c8b4109f820bb61", "0x099d7df97cab5226cc7e3a35ceaa635c22ab0110e93a62516f0370a2967429f0", "0x161e53b2f10ee9aaf22596c621480e1de2090503fcc55a8295c23d45baf68f94", "0x0b9bb53d660364ce1a5222bdcf2a80a161934e3e92de5057d668dcf49dea99f5", "0x1c8457a265c1756de7571b30290dcb48fa0beb2b7d1e44114262515854808326", "0x27f9c6fd0b90983010d60a37d80a58abb0f3500d6d16c9bb4d6a52ac91c4a491", "0x26880cfa04ecadedfda3a24a956734d4abc8ae2f92644369c8460df5f21647ab", "0x2f3b58e9bcbe37e95cdd9990aeb26482c55eb2a9409e28e56cae24dfceb8dde8", "0x1117104decc679a66af2e7588d971805b518ac219fac8078cd522ac8980c6980", "0x01c745418e4cdd80ea18a339ef590e58362b3823b1fed2d6a8ed942190771cfc", "0x0cad8a954ec6676b42e43c86902432a1e17e2cf4af5a3274bc1be6726e1dbe3d", "0x1b30bb989db0337d04320fccdc7d66f0bb15b4377fce1a75b4278bfaa61d5f57", "0x19a557a172005f84242d40c56be7c37955cf74da223557b0eaddeb5b55c6181f", "0x2a1f883c5eadb6964d4847479f52c8250b4ccca0fdb292238b9375dcc218f4c7", "0x162a0e44db8faa02dbe1aa52b1680710a8dca6091387695cb22c1ff844928341", "0x0ed9944bfe48542efa10c9f20b7dd4c6b15584e126bf2c01c8e04568bc8ae21e", "0x1d53c076c105da67f5cfd822fcc9c291dfa2923c4c6d275ddb45d926c9711c2f", "0x072ba0a2cdae57b583ba1d72f09c745e50f4e16adedd6488cad8b793e3d2adce", "0x26e72dc609c2901873d40a7e739f70af722aa439a0fe417d7568c38e38f47ce1", "0x1f3cab65aab5d0cc6458519a14d2b0dfddf4c005a63303d1738f56d4c41602bd", "0x1dfb345ab565970e95c89ba297b6355deb2f2302b66179e1dc548983aae02d76", "0x0b60e697535215bf10f1cb1208e0e699bd88598199c6d8d652e69b90ad80e6c0", "0x081593786e302650396b0a45ff8f62366310a1f53869d0557284481ac4bee258", "0x260276a46e6c624781f3a777a9b45b4835a751c6b016e584da35a3c309844351", "0x20120b4045167313784d0c2cb4ede07afe7fb0605518f6f50cec1b8a4b68ac73", "0x01fc1e2292678af8dc5dc1f2f1f573c3ac4e195c5a9857e40fae92309bc768a9", "0x14c0047ad00b7d736a8d817e561e582e901b4481e38316568b1be267e775b93b", "0x250b4e6ad1c7ef8ca6c251c27aff101d7be1fc25fbc484477cbbe4e90d456d2f", "0x11aefbc0c4a1db81e5b74581f81f7a83ce7bfeefceab74ab4b6ada0d8aca2acc", "0x100917e088672481c83ce9e3fcb3db32fb72a83332e5b27af55a48c73a6f9a89", "0x037b5eedbf4da97617f53b898370933367620388d38e16a0bda6a7759714bbcf", "0x0af98b1a856c51387767bc26146888b2806e66643b446fcc3f91859fb39cddb3", "0x00fdd008bcac697e8113e71c1c0e4904f5259f60aa43ed448796c0ed948fbad4", "0x1781e1fcf5046e26f19bdaf3416ea604454e254feb0a493905f566b51510b596", "0x0e80eef14d5ce06847a51b0e9e4541b3ab94cae7ca2a536da9a264c83918594c", "0x037dca03a6b5e150b50564128082e6980a67703fcb783e0e3e12033004fd76bb", "0x109c28dcb873b3272d40beb0a3fe8f4fdb1e7a2ec5a79b3c437c19dc4e561f67", "0x19493c0f5c372c7ad0c4f096bf4c206602ead23d19773f6766f135a71e017bea", "0x1b10be965cb7e46f154e3c08a36656c2e8954b5d507c949f7597b971c03de325", "0x2de26e700320ed4cc986550d9e4d6a1656115670f3411f5f503404445b4adb7f", "0x11d86ac71de74607859deaff3cf093f8076d28620a88621c09a7aab1209a91a6", "0x2c3c3cd13f231389681701241a54f58c9f6af1ebfd6cef4fa30e9fa2fa4e02a2", "0x078864be7a5f36c07fa9248e98181040fc5a911815984b8750f944bfa5365032", "0x0fd7187cb6096ae0e12e4e276419a03edc0d3246203362d583cd064a6c79fff0", "0x15e626596829d802f0adbf2476e9566e1c36348b0225eeae7e38bd0e3eb2dda6", "0x0d46ded5521d165c4fb07256a2f7f5e4819f6d88ade910b9ad3fa6c5d7dfab10", "0x0795397bde46b5a97a23f72a8b926a329f3cd2bb6200506e7e832abb6453b8a7", "0x13008e1519be302934f4200329db951b700e322db1a87dd5798c2b9e1259e9a1", "0x1a3f403f644737a46615e047a42acadedfb3d84fccb73999cab627fb6050123e", "0x0c921bc32a9fc9eac6065f5dc6346159ef9f6dced9649896b14edbf3aa8264f8", "0x0078f97a37d55f50fbd63b87d595dc665fd206ed6c887509ada7f1af0d1e6493", "0x1bc6393214162a52026d07fe770e530763c725b7539d9b219cc574943977c6d6", "0x121898c012ec88514f155880c36c1755c158939089f8a895b565401de07bc60d", "0x0f1bca466bb24ddcc60ce92b9aefe7bff427d1e57e56f654fbdcc362eb1e0d6b", "0x0af379ec4d8d65332218f5138dc128d41b1b35a33a5d0efc5dbb6c881444890d", "0x04f21086392ddbe22291af900709be87fe4e9d52b1dd659ec563bd848d42dd77", "0x035894f580c826c669d912a6966478ecfa19ab1bbe80e5a70c6a1867c02c8d95", "0x2ceb915d2e4787cdc8e948a4ea35ae04bb6a02c0720c51ecf9989a94b8979482", "0x0633d77da5ed88f9c127c459a30d5f8cc0bd85377a63c4e7541ff735271e66f7", "0x22f713759545175f343d00265c3ad9156ae99a35f3045a03446fcd88ff33168f", "0x13e3034537e2b8207a22d1753474f2c4bbfb103f2473ec508348ddc50d60297a", "0x12236867a7bde21abd297a77018eeafe4b840df67f784d1b6981d7e91d70424b", "0x15ad10d6809344fd76a38b99f45fc3d10e98f0b4d1af4eedf461c43e92a6c0e6", "0x05e7352d95dc1c7a20313a53e66e69525902a17e1ed43859453142fc49529b84", "0x29f6e26d8d6141e1955d9fb3226a74ac71f393b16aafab41e3c787e71fbfe196", "0x1ca3c0b4056dbab797c54688838a074cff8de6bd6a75c7b6081f113b1fe37380", "0x141d31bd71dc6bc8c4ad59582f59b963c05623de46199438ba7edbe4be2a4660", "0x1063538fa44657399e12597ad0c9220fd608178de399e5a98fe8abf3ac410c83", "0x0a1aef7064cc9aa31935dda57cdc4ee0f1104d4345bcf2e42ac48aca3fb9158d", "0x085280793128e1556cbbfb35c9aa97aa074c4a60d8169427dfda366e42686aac", "0x06a3c8dabb9a0040af5671cb1ddbf725b484c68360ef5116e9b7ec05fe0a6966", "0x09a5f6596e0891dcc5e27a3b98ccf537acc9a8bb74f8502209b436dc071bb4c9", "0x11620412943c57b902af3626ecff608f71e3f958c87cd0014a21f94c9ff355e9", "0x052144d7b94eae33de0d6cceb2e26c829b7f722ed2f9b6010606fc6f38b7cc63", "0x07ad1ca346d6f4cc17bfe58274c1b355659092c58295e4c0e78111a387aeab1e", "0x2963052dd36d3383f358c8024308dae2127213640c785f202a8d83251244d4be", "0x0489690a5d56372b457632d77ccc8b80aa24874737e9a05de269e11618ed69fe", "0x1c01fff06b37a517d39ec7afda66ee768fd39ec5689b1ecdebf31299c376cc66", "0x06b30c158318d9b5c81edee80522afaf72e880fa327ccb07f8d87ddb66f15edf", "0x16d571fc71e5e4a9630373d12b85a412268322cd94707eee0d678d2b6266e9ec", "0x067dd981da6052087bbe44ed357898be8c108fb7ed6a13481a650901300cd584", "0x01144f33bf1bdba903eb0b43449b24687bd995f0dbbcb654e38aeb94a6d93a1b", "0x1614036785ba16cc3e158bf70c214fc0584e433fd14009d576a6787970ec0bfd", "0x257755228300963581662fa0e767f42d5bc6fd642f040372c53d3a1fee9692df", "0x0de8628a2b51d70e30fffd251db4dc618df73081d01df1612182b2f3bc07ba1c", "0x2fb3c8b96fe17cc14327e848a61007ac7f0432d3b40f0802f764ce7c16866428", "0x1b68037617ea65f863d828f2bbe441228b9d76d9463d83d779e5eea0ddc92297", "0x2882c16547cb68f8806b77ad813ee36372353e9bd1c006fd1961020508774411", "0x0bbf09ef8393989d28a68d1e0bf9b49b9335d0c3611136494e128e5f7b64d8b5", "0x02c70af6d36c07f4e4b654b3f8ad98b2c91af09b7bfb74079977aa87f99b1394", "0x03e7edebd18cc3ff82b835ad08bc4c3371b7d55286f7c48c747d930127f62b5a", "0x2d024df041954ba23441dd927b30a1ed1028e92d4c351643296742a974139b6f", "0x298c0d1fc2f36e8fff334256bc5cd7e9e43b892ca176292b3a64d76227cc49a9", "0x18e6416958898ec89885353630496c2c5f572ec50dc2d04ef17869798f9aefea", "0x2d53a27c2c07fb96058b88c9789fc3f8e1d361a412bf164b2aa0e66e700b3678", "0x055277041cb7a122b1618b05ffb93f723416ea8eeb6813085dd54a99db3eb13d", "0x2643e6d5ded06a3b540a3a17e76cbced06eace4c7f8e95e99db09a1cf674fb25", "0x04c7d00cd7767e1c0a83375a7b11d43bc2fc2d9ad3ff6366890a261c53c310b2", "0x0f89d1e5310d06767b2f0b1266d56be653d83648878ea25d79c4ba05d7192e26", "0x2e6a9044a5f48fa9bb75ee3a7599da717dcc8996cec003d26de87e494ed4e97a", "0x2c99c1ff6a5a75729540c409b39faed9387759b5731f0401e86c9df9aad08cac", "0x13ead7267dc6cd6162931836b07745bf142ebf38fbb16c030a410055aaf41e6c", "0x17a87105c96c2026c777aa33a53292ee200cbb9f855d990949a36d55d576f7cd", "0x2ead3b6ddaf49661bd4bf3f6cd1f12127b8e26d7baf9366005861d08ababd4ce", "0x1947f8c0db2c58260479222a71b692e4eebf33cca2cff82f2ed62f90f51f17aa", "0x2bb8110d2109c6a1f2ec56bf72e05a161e94919bbb0d855d5bb351625a409e86", "0x017dd76cb0dba4956f8bfb5311a83222e60bf5df2e20316b336693d2871a745e", "0x1b6a1fda58c084a90932e269b8e56fb51cb7741de326280e035d9d89925a453c", "0x17d9551144697337ab2dc2942cb774bc424408dfc3fe1819b3bb30fcaf404b6a", "0x12ab68bb7ba2a36fa645f90fc7220d4f82e8384e231b09ce993938a349e0d5b5", "0x0da8dffc7bf3ca3d2adcbd362035aec9296bc74ea67d1e94a2f6f7df6a0d9219", "0x1496cb3ec7cda51d85f776d8613b0430e974d7c3a7a6a843e66fa2531da27578", "0x2e81957d2f73aab44a59030affc945b26172fce09b4d4351ae53ecdac82dd99e", "0x2fbe8d6ba5027296b98f0277b27e287e4c59e9b1f84624e0097db390fa65c090", "0x2804d45c96d2d8422c8c1ddad8c1115d92aec2b16930cd70079bd44cf41fd98d", "0x2b7ba8b64a1cb2fe67745be523ff46a4c8c0408092faa2333c45d18348211415", "0x0f506b1dbb1b5edf2b2d93bfbc297c117df212d6127cb29c6ee60a2f57b9e215", "0x2e9b52c7f050b2e79bd377d47bdc1d8246fadf3db799826364c4b7ee2133207e", "0x08151faf272100b459ea31b72c3abc2aa0ccd71adda2ec0196895c9b2f9a6c35", "0x077dd8a546141be08daca164600e35d10d4d4e9f536163d41c270c7afedb58e7", "0x3061e55590411e9f811476d6ee78bdafd88f4fc3d4be60b561eb79e0e17831e0", "0x0f5000c26e73824a45300d0420e81d8cff3e8580387e9310d4f46908cde9a92f", "0x091d831cf15ead47511b93af75c8305b55610b3116d07a164feeb6aeeb21f7a3", "0x1d3a3e735d4999103059079b59588db5fa076b94ea8c70ac7ea6cdba7f7a9553", "0x1e89d2b3e30ec664ee929c38842721c074450a0cbb42a4a929654b3756d0bbba", "0x1c4bbd5f72f3ba7d1484e517da5c0af72236341b6a8e991fe9e02a19cb24bf71", "0x2a7c81f7813b82e3b263fc5739cab23c5eb35d84c7d82123f08625db7b4fb963", "0x00d48e4062cf25ed607d179bc3d84e1f49d30e21f7838386ac3b203701ae9884", "0x17f43305942f3566265972ba5543d4a8845dac0c80e2cbcb56aab179d2854157", "0x08d87717d5eacf3e5bb3fb473776a5cc47d2ef805bda1e77059026c7c6629741", "0x19e6e275500bd0e80203aa20c0ff65f7985455cb0096088a5b9b8de314900a47", "0x096d0f3b6dfc5e9233dbaaacf69bc70a0aaaa1bf6c0e04e02dec3b5cf8889f86", "0x00b9a564349bae4ffcdb0453cb7230aec5a15f18eccdf1910c10dd7ad3aefb08", "0x237d449c1548db8987917574ce540b1ccd24eefd90e28107866a175c7c16af00", "0x12ed08f7b9d12bc30456bf424f2c05c6bc912990de7318e2257d98a413e47deb", "0x29611601abe18d26f5c198268af5f329b25f42b8f07a65849fdbdf90038408e0", "0x0e17287eeb77d085fe7a0b10fe16540368e4b1b457425bfca8638ed10f62b201", "0x29d15813db66650d5fb633cfe0fc56e242ac3d039d1de205b0a26178c46434e3", "0x07fe7f7be1fcb36aae15a33171e9d0d7f2e0e193e789e57bcb8f016e08116182", "0x1fa87be196f938da229ceac44ee343da8f2c3f956c8e50095d36b73123b7eb0d", "0x24ffdb52f4f443edfc06b8f31a9357253c6a157aa0ed35119437196c2308fd2d", "0x2d4bca77457123208fe4508ea4eb49c617032b6bc735fc5399b0c2fd6e0b6f77", "0x02311d7f0ce5763f04be120e804d7e894f789db9ebe2f85a62659a94a27d3bf7", "0x1b6bef8d51e9451f00d5faf09a78393ba83e58ed224a2e21c0039658bff79995", "0x0908d6045d96d1113c4fc30336df3011bcc56ba66eca87ec8d2075a176a76bde", "0x0d94f3ee8083301f8e3881008c66651c32f74324d41423ae0859ebc096f76b50", "0x01ea89e11b87e6fd00623489d6ddda9bf67efd74a703d3bdf58bc09f68a0112f", "0x0d07457dc3eecfc6ee77c7adaaca1f5a369e096def369e66519a88701baab786", "0x260461a3f76bb066094d76406587ab6377217fed528222da29be2cc7b90f1d2d", "0x1a229e393e2d30c7978250bfef3165f267643eb3c22dd9f1cb1ade57ec1bdc1d", "0x14ae23496945484e158822450bee1d59df28a552afc9dbdce748e36553d21786", "0x00a287200ab7d925a94553e693ad30d517961d7b5ba293d9d6ba67953438ba72", "0x178b818748633614e922de31583f27c417c365818953d40cd44f18042ee1d1d7", "0x0084ae8aeef5fb792c36cd573a0b12f0dd0c91d6d4476779e1d99b2925a05432", "0x28a6aa60d570f0999b772d7c83cf5583c9b23dff39f63388dda40f6ea4adcef2", "0x1afe2a4839132b0cae494f76f6fbb09fc97a2dcffc3cf455f644dfa1e89e019d", "0x1f5d00c0c3a24bc115798720b1f9ba6b52feaa44522ad1fec2c1ac9cc2cfa9ad", "0x280c20325d10c5c9f9526576d6019dc0248f1058a0afd5da5a0cc65a6debce93", "0x0aa34e03af3b028cb67d1f4dec7d789478a3cb73a27f01c75f84bd466ed9b32c", "0x2de51efeb36dd7f5bee9b67afe192ad7ef4abf63b4621247be883af708828074", "0x143cba615b06223f5562bd0a28a61a33cf8dda134c2b41954e1a566dd30bbf01", "0x14351a9d27d670b7aea2b999bb187d7ecb0529f9203aa036142e5277e6815f6e", "0x046922904294927e6b58028050139001843032f6967ad8a05a204425711e18ec", "0x2e056e1ce369ea903c473abf7988a24d82fe9fe0c87b7c9a605c656dacd3c5aa", "0x07245393912f85302ed7b5d3601fcbbfbaa6f35920145ef0c59ce88c1a6a9219", "0x2309fe6c306ef736f61dcaf65bf6d9b39d10d2e9fcf68ede37d511fa4bbdee11", "0x170e4332da217cb3562e25f5e200a19cf36f84c986296e71de1fb26125b6e78a", "0x1e3eacbc11e9c8190274d70bbd5dd0ac64a374595cb77dc08e33ee5e0d82c609", "0x0998326b8f93e6da7a460baf6cbfd1d29db3773070becab001c5b4af76cc24e9", "0x257d940ed0cd76647e2d3f62a38919b3c62326a494ac9e039f82a22ef1e68891", "0x0f4335d10bfc05a979f038de90daf70272bbdc2426e4988646650e164c5627b1", "0x1de2a72ae9d2a5632c3e6239e61de783b7b84c8bfbe97df965c739dca7609284", "0x12f44b0e8c694e7bbd5699e4fd0ca734a8c9cc3f59ba2eab4a329cf5cb229289", "0x0fe2692674fac2fe017fee7d922928dcbd3158ea209d7948a3d769a709d90d45", "0x1075abb0e5a208cee18841131ab4c87305f1441aafcb808cfff68477cc4fb2c4", "0x1a64cf8c020e712b334dc8164f247def9098553dcad7a440c349fe902439e93c", "0x296a51a4ab990c5934922b9f553e053293caf46316e058bc79ad13a37f7c82d3", "0x138ef5ca84980e11dc9b54ce02bd516621b65ea78ae0974c1db9a6720c00223c", "0x28a75cdad539dc300a2e9518bbfb47cfecce5da01cf1e90210782605181300b8", "0x26d2b92339d8d44b3687709aba95c380438360fdf88bfc7a011382bd2a7859e1", "0x1df11fbcb77f0ede506504bfb4088e3279a79fe6b84c3a51af512a5fa9e2ae36", "0x1c2478fa762abc607fb0a162a2473b9e4c983859e0ccf51dabde5fa7c8d67789", "0x2ddfe02cdeb5759332eae4e2b5edd5381205515653b7a766967b829cab80e18f", "0x067f9d082c4ae52e53eb02ac1080d31a93537ea24d74a510c89b7da79bc3158e", "0x010f56349169a98c01f7e8da62e515e55aebd4d44c4503783012f588a37c7280", "0x02b035879b1c570495436d250a2a45bd85510b8a6b951629a4a5bfefaa7117fc", "0x1059e4e3320b8c2d66a6b6b1511fa09e619c4b274201ee8741be77fc5b39a6b3", "0x07994b9136814469cb0a286067f632b349b5ae24dae78b056ce45d722752eb90", "0x269e470e88cbd936f4c35ec5f0042b9d6fc138f3dca5de3a83a99321c8c1e4a7", "0x129f3f097b2aa5746ffc84ae17aff9a892a6bc4bc965ab4bd1c65addefc160e0", "0x19f39b427cf94a65aa7bf76a405b43c0d0b4a824c8e60ddd645d66f0a91ebbc9", "0x1cb82f7ce4871b4ab04f77469d0100857e98d6d950dbe8ef64e35681cf888c32", "0x2fcea06bb3c4f9c9158418921b8c4ab1380d155a139894648aecee891241413b", "0x0c88d2ed1d6ffc58445502752247df534c2577b18fc83f8419fea33727e56f6e", "0x0a1da581a39db4e8dbe4f5f686327e7cafbce078ca7cdfe29ca5d3ae74ab1d26", "0x0d56f11d19300b214a6309769c23816d9109b415fe6b1fbb17de6fad7d7e12cb", "0x2e5745bd8e65df2e8c490465d8e9357e9afaf55aa182b8a46a4d8b47ca3e6be2", "0x1da803c3d0860644231a958b17d2c22ea4ada1347c5748f8ab68a402e77fe8ea", "0x146a6d1fc8428ca679fbe8c69616ff6798f59a827d47dafc15af34fe5182f08d", "0x12ea0731eff3e53c881aacc0ea77c163e30001ce74a0f5773779059f96360fb0", "0x21c455910996187ec677c08373e20c41a30a2d4c06ceaf21b91f0b14a13c9046", "0x189890c68e60d975ac6e44d343b29cda1dcba09e0a67e61e2cec8b2fb9f6d8c8", "0x2112df96cbf5b91e4f19269e8fc74f24ff3663ed5632a26c9c3b7252b502cfdb", "0x05c4b82abfb0c152923d56f0fff0411a3b5d11bf00539445ff183d6b3170fbcd", "0x27d88fe28f12c51e94af9b2b3f14099afce73a3736a9fe1cc89b11fd4b84447a", "0x17450b33b035a97eb613d289ecf775f4003044d861eb41963a5d78304ebbd905", "0x0ee988a9ebc8e608d631fe4324fd78fa77e00e402f5b4b0474723ee47ddc26fe", "0x14a89566dc2f0ff0b64dfaf5d8703dc9f74a0f9ee395961832c194e3257e0edf", "0x0ce667d93177e3dac9901ec3238fb0f403b7deb370bc069513428be70013464c", "0x016aac40ca45f818abfef9c158704a979b32a208b1557647c606de868582184c", "0x0745f2cebe4c7eb3a170b3aab5825d5c2bcba8c04d66de1007f587b2a1e535b5", "0x3061f188eb54dc71a19c698f1931ee261ec69297f79c420805ae0751496703d9", "0x1b71a417d12ce73a3b7a7025a14f8fb51a90fdec9af9b1dcd8067f5830fc17fe", "0x2abaad97be28bbf4339b5a4be2e24b57e8d9cc14775f5b717ae8cb227c8c581f", "0x15797c5a072cb00cdaa3a97cea969bcd53fb2984c23b7adb237b6065c650dc73", "0x29df7edacb34a24b1c52d8142c5338b98dc340c0cf27bcda968891e63b8a7a6b", "0x24023ac420b27f83814bd182a843f6ebe5739bb1b9c686f59ce8a1a9478d7044", "0x0bab405ed11caa543f9cd6d8863a65dd800dd08e8c9499e5d6a58474800339f5", "0x1270d139a0dd8a66bd9d360a9e0111cc440b39ad7b3ab4694b3ce507ba64a922", "0x04d722503a7341a690f338977b80ad66d0710aa65c6f27bd49823d7c12c7f8f0", "0x07a08300cf55c60191eb9e9eb63b40497980883796856aceb6147e390df57143", "0x1436ea3a03399a958710d4a76fa9140b32d5180d16dd837da335df7fbe18dc42", "0x03e5972a9ee5473d2bee70683a4054098d41faf8a44c03ea9d09cca460b186af", "0x212989d49540fc0bc6b1a2d150e3bd76a621ba2cdb4475ab1b72b0b6391d88a3", "0x0eb7f400b0e9a2a4635510a5379b4a03df8d56c54334fc8c713db96bfb3a5d99", "0x2338c348fd956af6e191909a22a99009acc53bfd8180926f591ca7f78f8f986a", "0x026afcc776011c8bec5e32f56f149a511d064df09cdb28f0965b701558e63838", "0x21da486ba0aa4577041578b2716221f15b5bb054ef276cd9a4383e646a3a23fc", "0x04accdbb6ca5032fa7396c256fdd8f52bf7412d11f318c2f8293aa1c9832b849", "0x2de8a8d4960c10ee9dfe8ab018fea3c87553992f59bcbae36cd42af4b455bc5b", "0x215ae1f57e2421bb33c2b4c2e854084cea0b12bcf61a53963057a9eaafa19a7f", "0x1a81df3c791bb08768948ae63fdbba1bd42efcb009ffb07aad880b31bb8aa68a", "0x141983471c97c0debdcd4f0f085145364900fba8429e1e5583a4e561ddad5bc9", "0x0176cb7a66c586ec1f480ceeedf332cd6cd5508d4b55a1a3286289a178864c1d", "0x03a27a1378e601187b81dfdd76e3ff8190d170d1ccd7f7cf333cb61f5e6a6afb", "0x17e1d8919b6ada78c9d1823afe824714fd0948406311b21a2b94d3a0d1c08a9d", "0x161d6423df64e1ab1e9db604809d3ac5fec7676d57d42ef3138d3f0d22116fa2", "0x2a5a183c02ec47c022b2f65642a493730eb86d977e599c0d57b1d57e21cbabb6", "0x2734cc336702645a5769e176b62627b0ad899e8d3ef24e84357214dea0675e1a", "0x19a0bc5a4ed65b51890c60994626f86d7cad3719879e00fd17b4db6f2ef09aab", "0x1db6087ea9f42685265847de13ddf18dc446b158f84bfa20a527d62ec9841398", "0x1d544bdf3c2f10b4aeeeb8543af54309705f7a275f093edc7690197ba3a5cba1", "0x2b1a876127921b75dbf4d7da75a6bedb7414bc5d55c998dbee49f47ce200f3b8", "0x276ab335062e36197fe442444f9d9450cb76e171c00c3ebfb7617bf0afbaeea8", "0x02fed58d5920b05bc742cb65a1d7e50dd8e6a1baedc27b6de3ad6a4fbbc259b5", "0x1f600a529dfad6ff62ef171974ad70e76f3733f0c98e0eb1b10c95f13676095a", "0x2ba35eaec2c38f4faaace52bbcc068d30b21149a6088d0467952542e9dd831db", "0x16630e42aaabc020163e87c1bf7463c1007dfdce3e1ce9c5c28fe64c1b7df093", "0x1585e3c692b27e7e342bfbb4bd4218e7ed01efe13c95daaaca62d2f5455f6506", "0x18d7cf9c098f734da2a04f93a309f774820e141f9aa92e8cfca42d8e22c61d9f", "0x0646a732a7d52e8abc0441ec9b04d2af6ff7eaa085a22c0cfd82ad0243b6e64d", "0x04ffa957845e1e01f2916f2243815f8e5e3c76361f3680e259218c0d28f39f14", "0x23d3c890fd6525b7814fd3c325dee2ffa11f67e14cb8bf3de22b29058276d1d0", "0x2000315723a56cbd67692146cf429cee40952ebc607b3100f21354be0605c2df", "0x0f092bdb3995305ebfe727512ebeec1ea48d29acc977cfd1169588326f50f999", "0x1b8059e616227b9a836099e9ee37329fb5a2417e3b5bafed731daaee12b9b1a6", "0x1d8e60b25f1fb1d0b97da0f17e094258aeaa40b142c97a863b245f787c75dae3", "0x1cd738d6519d3e822a6767a7dbfd23428e361e3725a95bf62d30723a414ed1dc", "0x232c85d492596d3243cd72089c50f3a691fd79fbd60b6cbbace1661a26c7a5e9", "0x0de60bdb58a4e7c7efbd95b55017d3201b746e78a9a6f4bebeb51c1d6ee4e64a", "0x02fc101a02306054035ef59b60e1e3efab2c3f65027f93da20756e8abef12057", "0x03f53ebacdef572b73bea99550064782d2919436a0f2b5d9223b2da974e3ca09", "0x0e27834cc8fbea3881ce43d9896e6079b8e8c9db4d77192daab89add326aeec8", "0x24d40616c713b9099f7c8f3aabbc731ef52e0e96693a746a387d8ce676d6f70e", "0x149d27d0cb014e5ce9c41a78a76a8ff7a37501def603b56bf0397edd176e0c68", "0x00bcc978ef69a805173a7bf1d1d56518813032502e4a1d772ad91a9a6a7e700c", "0x06964a0afbabc86a2f491e86270ead44f49f98622b88f4c44ff86830fcce1640", "0x19342122713b66231b0a7cba1993c5d904d4279e978735fa07ce6832da4d6e61", "0x26f535c20424267a91005fd224230a4aeebd3ac079a58a78a63520d58716f71e", "0x2bc43e9309052167648814454cbd77956f73aa69b201c94fb517845a8c7198b6", "0x0d9922a3643b4c9e175b57df597f10b70a46e9eda419564c33675b6afb7febf1", "0x11b438fb1df0a4557fe6b1405b6720ad4a1537fe1b42f884b841007f55c61aff", "0x1495deafa1bd1f27b7541138eae20773ba01d0d9ec10b771707955e78fdaea33", "0x26a73d4a105a86611a01bd22d90e0eb52dd0340ba7476f771190cfe587ab7d93", "0x16ddabce6e6ddd32a9f8a3a674851ed8976e0f53c1f7f6c6f5a28ccb00d97317", "0x0581eba655a038de496c785d31d65a919404bc25f0922a774bc399a67fe122f7", "0x065762a6974eb7ced80ff42b534bc545ed6cde0843d2583ee7022b9ce40fe6f9", "0x17bff1a70e36b684a2ed9dbd95530cbe9b38b87d76eaeb63359ffd250b78c5e2", "0x18e68289ed3521949172f06e8a59dd9b074dc3c9dbc8203d8fcf3818c70a1a9d", "0x02a8d8ee03d5f03a69c0b0d2b1f35792747b3429f00b6e011f4a141345e5724b", "0x0300243abed4b18e061fb1110abac6328ff55dc53162388f9dbc753749946b8f", "0x0f2ace21877125cf2e78abe96afb79fdb5d572a369f1da4f2dd7b5776f6652af", "0x26b7e92b9f4f8776b2b9af31ed850fc81dff18f70b165c8447275f6ea5c1ba87", "0x1878b3a4fae1d39825386fae5f199a1b3b5f8f50455ab5002517cbd2eb7b5fa7", "0x0062d0d89e967bb6fa4c987c0a83f65bcc795c0ea977b6dd63d625e06ffb0a55", "0x0a03b278b25ae2e7d31b31082a0d0cc57c8e7a432f24ce9fdbccd93475f3d135", "0x100da120ec2ae772921c7c04b83ed8ee7682d2077cf47740086c980e04e38f6b", "0x2342223b205a2b0279d9e5f0ce7f0f9bcd772839a34c52c57d0750be1e51385f", "0x2df7f4397bfc42dcac58480f57316877f9aa21ba908f70153dfa19b7e52f36ee", "0x23622584c86a8ab59fbaf2569481d964d1e15f8073bafa8c6e92fc2c0b187fb6", "0x06bf808cce651f581a1ab25261d66b74f604b70480af6054cc45f81da3290ac4", "0x0f53c972702cdee0f9fca0a70505cbaaf6c9605909dde03cfe4c337331fdfd72", "0x2988b1a79f8d22697c0d51b537a9b308f979792b1ca47cc408b8bd8ba6f6790e", "0x0c41be010c41896092f74093791d90c85c0404f92861f74ba1776de6da0f3e83", "0x2f88c192a822a2a0b2f12cb349e15ea2b3f3b1c83ea2bf5461abb010f80bf3ef", "0x03a443a4b0709ebd40891c593ed528cb9e9f65eecc40af1f231574b7c9738189", "0x28f8211ec19a4dc191f757371edfb788696efc2b0b592d65d8097f38e723f131", "0x0abbaa7ef23a5d98710e42a669bfa42305adfc1f8e49e05bb3abdc96c8ca73ec", "0x1f04fb54a09ee2df286b6c5e089560b8fa61e062bc90fb7298d5213491211ab0", "0x0679c1bbbfd7f4d0f2c2c18d82948d060f3563f28a1a632c99f2c64a461e8267", "0x2b44d70ebe9679bf7681b2e1a3249e29b5d800109367a7a48ffff53e969a13d4", "0x23f3f9e009138f0998b53f841093307a41ac380348ef662e348de2827ca499e3", "0x24811a70ceba527ea6c7faf5762f5813591c865170d2879a08bcad496b23201c", "0x01aa535811fbb13fe315f411cee03e20a4a3c48ec6dafa75fed0e12352c34bbb", "0x0ae3df3e4e59c999b16606ff38902c761634e2b49d63ea716929a61e8b57306b", "0x0ec1accaab8a76e43c4984f380d2fd4a1f8bbbf49a16b889467f7424cb06945e", "0x1b16efc5729c815659bcb1becfd1e1948656ffadff07978d138b54349f97b76f", "0x11fb1514ae1b038db9750815dab5d7ee929cfb80674acc541bd0679b11ff075d", "0x03e8a08bcf09eec1dc2ead9784a919810cec64993eb40cd49399c2ea31ef27fd", "0x232dc0617b6035c98f66ffc4a8945d1f878df5e3258e9b542178d6ba1b684e42", "0x12b2c5d51a142d7f8a0540228e2ff3cec778e91e4ff701deea235ec7142047f2", "0x09d6f2228acdb9d4a06577ac9f8f76f2c858ff531b957f89b822a8d28df70f0b", "0x26e61018fe4b3ef6d966954c74c63e1e1587784e276ec198232b65e3d1f3b6d1", "0x0bee9635b9ac510099b9c82dd622205c67f1361972265939c0c197f7c48a0e80", "0x2efc7456782b90263f57853eb2807e67a88cf15f2cc756b7f4a9570bcc38e379", "0x283fb2e8d6b18ec3f4115d0431753eb6facfe99f099ec679abd856917dc22f8e", "0x2889b870ee98688faee8863a5484afcb67874b33a9f0c1794b46a9263e181ab4", "0x05d7bdbf3df0f01fbaf9c1fbd87f0d8dc354875e451678476aea4b0ee0c016bc", "0x1b23124a367801d93b8fbfd222eb27d149ae2ee98c6b9dc30bb29ce3b501f7a7", "0x13f573baaed32aa63ef2ee51c9d25a996cc9cdb333bfbdd2b95e2a3a323b9f4d", "0x00fd86c6312ae538c580c6fbe67e07539643967f075c81cfc504d4a0b51d4d52", "0x11d07e190748d15d00447b4c653b055887677d1d0cb899a4a7090ea07aa0b393", "0x1b8fbeb3c715077b0a094d76e35702ffebc4740fecca3faee9608d460c1cdeaf", "0x0297423e21180784527bd90be63d021fbe8c4bdb8b204398ee1de6f3d41fcc39", "0x069fad4b2eaf9a9fd4891be5f4f128ef4cc11e4597cac7c55e3b2beded8c05a4", "0x1b351f30e204c212a5ea86b7de299b1df744d07c8ff7f7f4944514985160c49d", "0x03c814bb706f73f933bb03d3bff83fb5b793d838c2de00089d5d582183c954a0", "0x263c1482af92672f28e64ca3d4dc5374862e2e60b02c9e2fa95deca9d95b9fc8", "0x20d53632d8bd5242d9dc9ad8fabc48c6c60c6f71a235807b1b3bd0d42e187c02", "0x1312833846d4d021e6b854478da8d9d63f1e1fe36a08c6a95952ee4d1b82457e", "0x23abe598cbc971ff0b6625e441018e1ff84ea07ec5a37db3ad7ff2e18d1efdf4", "0x189b134a1aa72c806ba90d70580ee758d968c1a0acbc1d5fd3aa9881e742b784", "0x21739396f8193d4ec0154cbb302d7226e7563b803d9b6639a7ca065729d87a6d", "0x0d17bda5b0f2b08f2ca4760fbc8fec19c961c0eb8219565a2017c19b8feaddcf", "0x2294fd20b62a1854819540e5560302b45403148db6e9890bde0b0a883fe1909b", "0x2bcaa1216d5737475c013dbc3d8c54e36be0196dc71ea0981b01609369d204bc", "0x0ffc62d59cb8ef71f03d5b7cffbdf3f1e8a8b3906c8fd25b9ba85b756f774e52", "0x282b2996448809068c25fb3430dbb5bdb038e9c3810d554d7ab3ca1fb25b08e5", "0x231b7767a4cbb0088fcf156fff8c71cbdf02b27e31dfbcf7597af49fcc99d610", "0x0d52e9703d4fd0b424639d4b8173bc8ee730bc3db3c959dc1f1e36737babe865", "0x0e8d1205f76890e94beb4460955ae97b5bf295671cb1d09c581b80d0c9729755", "0x09b5e2bc828abefa93a501bf75c0a67686fd8a0cf106fdcfad65a8f20ba8b363", "0x08ee620bb73422c6b3c9506a973ed0f754f9d8106148fd626cd5a04d4386800e", "0x14deb68983af2bdb376b873303e07f4672d77798f8fa8a481a22c223eb357d19", "0x0dedb230d955cb9b02ba8a586010044e4c6eca8373192b5fffd1252927ce09b1", "0x16a6e90080ea1aa4e0d192aa13f701a781142373c0d9a985a4ca5a70e6ca20fa", "0x17cfe46ed6441eee1e9acfbfcf669efb386f270d142429b3d1c6a8f3d984cf93", "0x09d43cbd543486b31694bb1f856d876cf3f135b86aa0e2f45889966912280f31", "0x181457642e691657d5b2414b7a81beb58432ab1c9abb588c7e1b2da1f1e8aa96", "0x140504614839fd16f90f1a5a2a49f19c8b2e0a3a0ac67d1fa2a31ced43f3a27b", "0x120487061ca7d1fa340f11b2d6c7115eafb971569529424171bb1d3f10fb2afd", "0x1678ea1c9a9f63f1ff0d1eb65ff7c7d5c704b2a0dac3b15505fb45224ccce387", "0x298964c2828d52a1764b41b5fb460752ae1b8ab108fbc070bd1be15bb6faed73", "0x0ce97b6f2777c3a5eb86fec6a0ea65a823cb9bee65253157a0b9733ac6a44c01", "0x028e819231b5541e7b5243cff6f044b62e6ec5fb8adedd2b6abf879add5f8fd2", "0x1d04a29170773073c3680a0d73ba0759e80630bbb2798f4a6e77c003a145b6d7", "0x2ac32e5d907bc921779525bcb9ad4ae1a8c782ff0abeeded32787eb25275adda", "0x1f7600e736df837404f0c327205cfb931cea48bb1472ca0b45a974b6b5998b95", "0x2921dca5c0dc3bd317e0ca1557e2e72c6dfc4856fff4d705f78a7e1f55f5a3e9", "0x14f80bfc521f50b8d79457a4c2e9d7553f3f33c37649ee18a43a480ab2cd5bbf", "0x2dae059ac17079b15f6b6d0de647a6ce9af9cc9b5df5659f169be826e0ae745a", "0x27ad1fc6da5465b8b9013f0cce96db4af1dd0d18e2799b73cc5416365084a6d9", "0x13eab23fd02de014e3055b4ab42881509c6b625e04488e8ee938557c6688261f", "0x18cfb5ec775eb1683db7a7327945df44502e441a0082bbf760825fdc05054dc3", "0x26cbbfbc719cf0657d98a6fca78d2572adb2301938a1ec19bf734178c2208656", "0x0ccfe2f976ce2ba408e431ca319e95bfbeed592741e0bb33da63a03fc8402d3f", "0x17387cd668214f736af582dcbf86c00a80dcb77250be031c2e02071391d537d5", "0x2d9acf8eaa6d15e6da7ffab14e16353cf737f7e5585ef9e2e43acac6cc879742", "0x0393a4c1ee837afaeb10114ced12f96bb9084dd4a4c2750d700e876b6caefbf9", "0x0f0407a7118b6910dd909e894966b42440d616da403e0a07b3f86f4ba8011df8", "0x2f7735765e2789fd4d05c78350c35c6b84a69a74c7f69e0afa99342f1c6cdc39", "0x0dba9178d2ef6af1e01cdc2de7e85578418c26adbf376d063cb6b5b1181f41b4", "0x2144ffd569395c83073f882ecfca0d8c9428b32c9469db7760d3778649fe275d", "0x2984137c5e2012d8bd79b1d59087915b997a8aaf568df355bcf531f4014377a5", "0x0934f3b2191291cf3e631822087c19f835a28cc49b98742783224ce6cee8588f", "0x0e0ba5918aa4cbc38c47648a5b28d83c7ac2ff68a4127ece98836b5429ac3078", "0x049a3734a8e2a2ff2fa0a01e5a6c3ccfe37d09fed6c8f5dba7ef4c46b5d33b9c", "0x29fff8192128faebc6fa8432c1562bc01b7289b3fb5285e29d12a3556cc0ac49", "0x2201820de3cfa4aa21637bc742afaa39c3611951330598e61ad3dcd8190818e1", "0x094821527657e717dc177127a1b10531a2a9d18f9141a12e8c9f02d1f7ec1a1e", "0x10b58daa36c56ef2f2a4dde18698e272112fcc01e68769868e9ef1b5edbb4fc6", "0x29dad68ce58824ba5d89b7b3e7ec1fdd95c253a6b6ab2b6c418d53a57e3ee8f5", "0x1ef75d0df2fe249e6fcec6cf55699bbd616bbb1dbdb384d6aa21f5c6b5793a6f", "0x1754914267b0b09a948685fd7d60692da6c6bc990d3bd86c05d1409132920a37", "0x0f593c997ae0a9426b4fe3054b60635374a049bc55af8d13735a0a903919a66e", "0x0aa91854cab67a7a1e2982a8e515845a71913530ff5aee98c91eebf79e361825", "0x12f2e653a73a9077367b6abde35ea68cba141062ade7d3583b05da2c8f0baad8", "0x1692c37f96667fa62c619fe1a0e79abdf86d9bdd7241728228db6009ffdbf437", "0x04e833620b139d50e033dfed3b39394574f631371e31c2bb0e9c44ab8a168490", "0x14f13dfd3e5881a820ece1fe4844628b14daab9c0fbefe88acd1895c43576619", "0x0458b78330d7902b4e84f70c250bfa081c92ba1de2962e19cab628b18608d3d9", "0x2c52077e5bada6cef5397019391717264140b8a99b7d2fde520ec89d31192312", "0x01de2f57c28133226450019531ae86d160a0e72809f01593c1771e4ecca7a23c", "0x0a761fcd234c2bbd661bcd788f5b14a5ee4255190b81fd3153c003d68a3199a7", "0x0ebc974e17f713f3ea0d8b12e463fd5af0450149066d6e72322d8d0e1e1b6831", "0x1b96e0241b7221a93125215256ab608135b2214e2f04c127a3e451d7f8f7787e", "0x1df3623a81acd17b0eb45cee6638d1dd1e84966e38cdead88ca5f9f9096fbccf", "0x208f1193b74f48f50021d1c0cd977dbc6a55e2f68ef0ef0000cd21a38ce5bf08", "0x246352bb36eb512ff4f36fd8df72042f69cf67f1744521898a117b6efaec7895", "0x030e94ff4018a5a9725300f274a619de490177d1404dad9a8299ef29e0b04f1a", "0x1f52354035e44ac050ee86ca631c0e45eb5f75b44d6e7f01b0805e28066accca", "0x2659250e4f2ecc3d3cc5a1c74355aa01f2b4c3aeac607f7df372c15b85ecbe3e", "0x1be2311b78b5c1246fad8a8c346e83e6c0822df59557588b5511b4e821e2bf2c", "0x0509b5de4dff732da434372972b466d1154d194e10915b4347dfd0665a72bf9f", "0x03247680850a5862c08fbcb0fef6c739df1e88043c3a5e73531f682f93f8e975", "0x2d110540eff687a945010e040dc40497a3d1360b99073babd6911541d30be5f3", "0x07ba21b3ad4f133f69627b211c12f3244d1ab553ae6d6a1daa888d0040b07779", "0x20077db65156a8dfb7c3160a81d62e119b2a861118be3dd509cdcceffda88d10", "0x1cfea2b8984b62b28fbd6b8dbe134240e2bc10d6bbbd3c2f73a3088710b09973", "0x1549ba97fc538867506f349929a7d1b86213886e8d2abfb60fce0368798fd294", "0x246252ab7cf345e982717225f954e74e7303ce0c9b1b24b1dc06fe10fdcee4a2", "0x2b750d77da95774f2bee129b314d1c3dd5e302b666c2bea46cf886585d5ab6db", "0x236fd4947774395d7f9423527c5ba34cabd6f7a9501ccd33353234922e896e16", "0x18a4917affbb7751667f7629ec085af1a902e9b5471a02c89e05678d620bb0d0", "0x02ccfb77f9dd97d7e6a8ba9ede42364214c52a02c8a0a420ccd0768dfca171a1", "0x18db49b4f99f685906f772938980682572837a1370f023d0fa379fcf1c1ec854", "0x2040dc09e877cba004d4061b3701c6a92b03fca41c1dc6ebff525c76a1f9f7eb", "0x0bec5c4494c0b5ddbbdbcbc6fa88f438305525b4c08af59860055c1f8b73ecd9", "0x2879eec47e729739d1f79e83f7a71e631eccec2c83b43dadd6ee56841f83a1f3", "0x01a50c3a018059042e5ce95a789914e5c2800b4f4efe17336c5b2a216410018d", "0x1950b98c22b8f3cc855c167c7d9bbdfd4ea37aac98b12b1fb017257c3e7f293f", "0x13b7710d9218c0b169ee4a1276715274ce9a6468730d2de7731349ad1ae9df7c", "0x1ef80d90805ed282fa4f5e12843ed4abc8f22f5b59f04ee13349209a8bb581ee", "0x13abc482d41ef22b6e3d0db9276b75599044438af8940b5c8d58e7dfe80c44c5", "0x267d61670e53dd034e795bb20c20912163a58248709d5aba8a95c0dfaf50b02c", "0x24441cd1cd8145e42b471f82e4f7f9c28d45ac2c55e4e60d3e66d74e8b56391a", "0x0355fe883f75c1a4353c1c0daceef2d3a71a9a74c62053199e431b8fa81cb8d2", "0x0551b53fc92ae63c2b2ecbdf40ce937a2095fce0647482e64a0fdf515cf42ea8", "0x28b6aaa4aee256071d9988bff1bcc284ed68a7614622392e53465a6ea91258bc", "0x2df31d847dbffcb0444258e69876ed3b7463a49454be6ab6250a8446c6a01703", "0x1bd22453d36950ff1ba1b49bcc43f9c9d4ba388b780c43f4ad3216b9da8da126", "0x213abe279cb897fa749b6e98180a1c8225558acd88667bdfa14070baa65dc812", "0x04853a8eae790c34e5751893e34ba932024d9c549c7a7751d536be9cc9af6b94", "0x15242fbe31477d9de0c431d25d0c8e35d489dcd4c99fddf72c4f0ad4c492dd4f", "0x12f6323f31e14576328957a9f393451ddc868aa57692ca327bc5a169e93aba39", "0x1dda2035b7580e63bab28535dc392f24085d59d0bbfbb54991ba3ee9563a1899", "0x13251bb73a28dae6bd498501db9e6c58c4f9d458e8695596669b2ce90007629f", "0x0231ecedd2828136a0f76ddcddc58f9cb3a77ca05c4c0fb95ddb696040391328", "0x2002a71a926fce26a1e77ee49f68846c371b74ca7addd66da7ec5286bb7c54ab", "0x2cab6f0f98bf107f345e22dbef16b15ead94407098a933ad0591b3c4500238a5", "0x0401a74a17b514f0532e1b9b4aa4421addfec7269f934875b34d4f73cf9e876c", "0x27c78bfa3d246da84fcc765ca8b00ecdf6baca2c967796a8e8c8e1c501bf5b43", "0x18ed98acd2c8f140ad3d56627d9f0e8b41e84e30dd1c165e4043c1c43e32f663", "0x188d51f7de70e218853c44a40e505b38f45caca8c92d5090d474f2d01530db18", "0x1930b89b3303134f1f900880fd7c39c7ba00a96a972fc4f43b17e19e3f1f3d4a", "0x1fcc8426a4936736199ee6829c5f3bd947cf62dd0a92e7ad4af4cbafb490b0a8", "0x2d3847971e336844d626b6c39ed253d6994002bd07ec946b521e06e9993a2d48", "0x24217d683b98c9d630a704c3bc4550cbf70ea14dd4dd770aba45b41ff3ac0301", "0x28aef269e0a3dee65a1df434d1b2ad4dcaf8e840b1a1d067b353a2986d94d35a", "0x238b3d227a012ae13dfcb6f0b06511b9a1d7dddf0093299f0400a887a90e070e", "0x197d7a63493f21eb3e99111944cc130269461f7bd88d302f8b357bb7d686817d", "0x1bdcac988edb00a3505567ded6f9440a542df09e20aeb013c43972bbfb3ca7b6", "0x1169171163bdcc2c0c8bd9e56b1fca66e44bf61f9243343cdb1e131cc034b0b5", "0x0ab66abcb7869437b24facecee1c89b18ff8d2d024046bf978b844a1a5dd123b", "0x20b9a555a8b39f0cfbc6031a7ccde6c1185abcd06e3f6fa2c6685038b874dab2", "0x032e07028d1fef76b7ccb9dc54ff4f41da1031ffa8952c64a5437983e838cce8", "0x1573694373095bc3106e92b6b627ae4c7d0ff8e499cb2ea426d044eed818cf08", "0x01a602dfd352e43ecb2f69fcbd568b60a140ab52fa9f65b53af13123d511cb04", "0x1e2bf4fa574ea907efeb285f6766b4a17db35bcb6186c84a04602d438a6e3216", "0x2505c8d417739f21d2162110db6677017bdd46e9e105bd4a3d56147c37327a0c", "0x0e654549cd7da15a2808d06d8611796c000286fa77d02f6a0230debefc88c215", "0x06fba732c616c7828cec557ffecd6e3ae22aeb52c72a210e007fcdc5c3740079", "0x1658321ad9c3d0a3639efbb9e23aff309512599f0df251998bb3b03b7ca5692a", "0x2b33052c618387b8b667799bcb8566a6b6fc5e2ce3f9440d025fda9150d4a82b", "0x1410b1ae9db218e0ca654de70f05cecc7953ce710aefa4885f0863b8e03470c3", "0x1848e80ed144936e3122de3c706cfb707ea3fce31047e632c79638ab01dee1e9", "0x27a27ffd5e7cfa1dc5541dbc940085bd3dc590b21473d05384f8c463fb2ba936", "0x29b94126f5536a88c763d0301ae366abf2486bd300db3123762df3cb93d1d986", "0x2d5b96cdd02c61014a228fabada597a65e1c5757772248009802bba450b6049c", "0x0202c5350a6a37c6f159112efa516be970c2f88e16c01aa8462d62ee4e52043e", "0x2cac718d86bb68b80cfc3e17cb740609d425aa547aee14f9105b4da9490da8dd", "0x283e1a39e8ac0b1913943e8618a19c89c5c74b58d59299b11fd127f02cfc9891", "0x11a6bcf0ee6b0b9f6f62dc0c48168cadd576e8d86390f85c4744bd70e3c1e967", "0x126821771411186adb55ed7e59e584832bb8c3544ded7227e8d707a5b34d6137", "0x1301d280a12befc02f9a13f3a92501da7208279bc03d99e772da490e7ae069c9", "0x28e729cd9ca2716cf5e82b0c1547ff3c48958ccc49f806f9dfcd6f8d90b2e422", "0x10ff9267c3b191f2fb37450d4e015aa137b25f12294430e936e8d124a1f98d5d", "0x2c19b499d3dc4f8545d31cca6a58a6240cb2cd5ce0204239dfceddb2b77d1423", "0x2f92727812c862f5ab2543ae88bb5539fca6a97cd331fa4e5e02ef7231017ee2", "0x2b9bccea18d03f5de4dcb9a4f10ac80fb44be746fa5bf30724fe04c0d576814b", "0x1c85bb1761d97e4a576faf5c53b9bdb479a0fbc37818dda8b2abcb365e0a73f9", "0x07dae9e87df37a4014d11878b49e0571628a20ff3e6a102291d211b8fbb1ea8f", "0x2b9b3bdfe342987935c9d780df13f061f6ce9a4e6b470cc1bc7c7aaa53075332", "0x12adabe287498be9ddfab24ef799bc49be7d58f069cb49bf01c9c4b1505d0586", "0x2b206a11a92edb5474ae7ab65b8fe85d4503de3b6f4330767f938e7c67060fc6", "0x1f540c4837c4a4a75d8f830935c6d2e4d731f230dda7ba5052a50d572439c019", "0x054db8726050afda0e8a0c6b5eaf5f967d80fe0e4b85179c163f36970700d2a7", "0x2cea9ad4bafe136cce349fc6eaae2db05071118b4b82f2598a09cdc8db005af6", "0x252f699ea739d55642ef8a22b45b58eea8d55900f8ed7f391fb1f077d13f94f7", "0x1f061b04b5f927b2108c7b6be795c3c9314965107000b13bb63283f41925ad89", "0x08459eea73a94af361d3c656e75f97d27f6f1e42503fce8ecbbaf19a29186835", "0x1b3d700fe7f51953e2275604d391f136c1fda986a3d30201ed0fa140208ac812", "0x28e56028798196ed5eb0d88ed905d5b0c47e9d6110c75632a5a2ee8a86a4861d", "0x09bd90f2333c4c2cbd4bf7eddadd1fe7a91e5b98908afa559781d98a257944c8", "0x15bc1a6e6baad5f6b0c2ae3378a252b14299e0af66eccb6b266814278ed1278d", "0x19c52f0dccaa44199a7f4fc33bb47d41d6a081cf36317e7fe159e8fe6b1f0a89", "0x2547bb5ff20db5e0c592983e54fc962f0f65f478598b2cc5fecd72f169489a9a", "0x1ef0bca70036f3bf1d7d3f294c8b0a1057691172793c5be658b8d55f8e5337a5", "0x04198d58ecdcfaf0b9c2d6acedef52537d1043136b624a5a1f588a40cdeca52b", "0x2c5edf565ed2065d7d04fef7d4f7e1b1722a2d064c00549725e0715947c26f4b", "0x2bba33fbd4a8b19d6cc52859259379a3b46a9fa17cc5c4570956503ef34eb8b7", "0x2e98fad823aba9aa740aae084860f04081a58de39bbb101eefa119cd6a471fb0", "0x2d20c2cd090abd0533aa05e4b25ed9479e9ec4b21eb59c765637083b87a95921", "0x10967beee9da2505cdc53be5c9837672e8f3729c6a784b013979d8ab8a3c0a89", "0x121fb7ac685ef13f74ff829cd18af140bbed250db5896f0ffceba42d5d803a3f", "0x0142e085876884e6572c868998a0ea31776f38ab30e6c6ff74cbbef141dc906e", "0x23ca041ffe1231fcca12d630c8db597bd844191895714dd1623eafc2056c1bcb", "0x1a30767b5f4f01d00c2b01a44f01b5f136a5258f7a513d6f7d0627f778970d51", "0x1ba0ff653ae6bd81573fad7901533cc794806aa616f1a263c06fcdf07039d741", "0x094a5945a881842d8067ba77e9e699ccfc74ee8517620e6b090f5627bfd7293f", "0x21c84f232883c041a078e1cf608ec1f30a07b8859f6eb8eef7229fc6bca86f03", "0x10f83fe52b38a091bfad07decbf295e8610c63112873bb05b7ef08f7043f7bce", "0x037233401e03f5907192e47e733f792c15520c7f4975a82877db6dea638fd4db", "0x131743f65beda2de7e4bcfaa7a4bdca39d066f9c9d571529e62e7f5ce47512a2", "0x2c3e6fb700702366dd46d37f965a454869d6a3f1b8efd90cea90be0dc15deec1", "0x0bca2e8dd5719f2490699eac6bfc2b3e7c6591317c76ffb1516d126ce3ec162c", "0x09ead2ebea129a56023afa72ff1b77c6e867a72df81839fb76c2523f9452205a", "0x19a210d7be3606ebf9aecd9b0c8f3ab0bb04099584bce5a7ae2a35a0f808ce6a", "0x1b44df05ea46ec1231818008eccf838e627afb2ce4b7798aaa86f609c2423634", "0x0e4d978fa2ed0507dfa47dd154b51006d25578e18d6c9d83f8735e6a0cb7f1c4", "0x154e4d1a506fc0c10019f2f89d186f4af8a2d1b6ac3ada831ecb00f3a925ca6a", "0x23f27f2464c116f55a5b7482a1cf5e6c7bc99f12e28fbadc6fd4826072eb76e4", "0x2df196c92d5355817805c6cc3ca1029440e27db83b17fae40c35fe3518954753", "0x2b7a89ad1419e85f4d414f1a372feca6aabdd69f721f684f34fe829b2048c8d0", "0x22c29d74824817a0423ab1d70d5c9d5249b16a181034550669e7fa357d9dc33d", "0x2d44559bf653c112918fb033c8153bdce449b0f1e769e46bb91e5fac97ef7cf1", "0x21d70f181b322f74ab50c432ddf9736a1e3738c4e883625889434da50d884c8f", "0x2a437b970ff32645bd5303f9474b5743427333c6663d17f44d918e9f2ca005d4"] + ], + "M": [ + [ + ["0x066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5", "0x2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8"], + ["0x0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff9", "0x1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8"] + ], + [ + ["0x109b7f411ba0e4c9b2b70caf5c36a7b194be7c11ad24378bfedb68592ba8118b", "0x16ed41e13bb9c0c66ae119424fddbcbc9314dc9fdbdeea55d6c64543dc4903e0", "0x2b90bba00fca0589f617e7dcbfe82e0df706ab640ceb247b791a93b74e36736d"], + ["0x2969f27eed31a480b9c36c764379dbca2cc8fdd1415c3dded62940bcde0bd771", "0x2e2419f9ec02ec394c9871c832963dc1b89d743c8c7b964029b2311687b1fe23", "0x101071f0032379b697315876690f053d148d4e109f5fb065c8aacc55a0f89bfa"], + ["0x143021ec686a3f330d5f9e654638065ce6cd79e28c5b3753326244ee65a1b1a7", "0x176cc029695ad02582a70eff08a6fd99d057e12e58e7d7b6b16cdfabc8ee2911", "0x19a3fc0a56702bf417ba7fee3802593fa644470307043f7773279cd71d25d5e0"] + ], + [ + ["0x236d13393ef85cc48a351dd786dd7a1de5e39942296127fd87947223ae5108ad", "0x277686494f7644bbc4a9b194e10724eb967f1dc58718e59e3cedc821b2a7ae19", "0x023db68784e3f0cc0b85618826a9b3505129c16479973b0a84a4529e66b09c62", "0x1d359d245f286c12d50d663bae733f978af08cdbd63017c57b3a75646ff382c1"], + ["0x2a75a171563b807db525be259699ab28fe9bc7fb1f70943ff049bc970e841a0c", "0x083abff5e10051f078e2827d092e1ae808b4dd3e15ccc3706f38ce4157b6770e", "0x1a5ad71bbbecd8a97dc49cfdbae303ad24d5c4741eab8b7568a9ff8253a1eb6f", "0x0d745fd00dd167fb86772133640f02ce945004a7bc2c59e8790f725c5d84f0af"], + ["0x2070679e798782ef592a52ca9cef820d497ad2eecbaa7e42f366b3e521c4ed42", "0x2e18c8570d20bf5df800739a53da75d906ece318cd224ab6b3a2be979e2d7eab", "0x0fa86f0f27e4d3dd7f3367ce86f684f1f2e4386d3e5b9f38fa283c6aa723b608", "0x03f3e6fab791f16628168e4b14dbaeb657035ee3da6b2ca83f0c2491e0b403eb"], + ["0x2f545e578202c9732488540e41f783b68ff0613fd79375f8ba8b3d30958e7677", "0x23810bf82877fc19bff7eefeae3faf4bb8104c32ba4cd701596a15623d01476e", "0x014fcd5eb0be6d5beeafc4944034cf321c068ef930f10be2207ed58d2a34cdd6", "0x00c15fc3a1d5733dd835eae0823e377f8ba4a8b627627cc2bb661c25d20fb52a"] + ], + [ + ["0x251e7fdf99591080080b0af133b9e4369f22e57ace3cd7f64fc6fdbcf38d7da1", "0x25fb50b65acf4fb047cbd3b1c17d97c7fe26ea9ca238d6e348550486e91c7765", "0x293d617d7da72102355f39ebf62f91b06deb5325f367a4556ea1e31ed5767833", "0x104d0295ab00c85e960111ac25da474366599e575a9b7edf6145f14ba6d3c1c4", "0x0aaa35e2c84baf117dea3e336cd96a39792b3813954fe9bf3ed5b90f2f69c977"], + ["0x2a70b9f1d4bbccdbc03e17c1d1dcdb02052903dc6609ea6969f661b2eb74c839", "0x281154651c921e746315a9934f1b8a1bba9f92ad8ef4b979115b8e2e991ccd7a", "0x28c2be2f8264f95f0b53c732134efa338ccd8fdb9ee2b45fb86a894f7db36c37", "0x21888041e6febd546d427c890b1883bb9b626d8cb4dc18dcc4ec8fa75e530a13", "0x14ddb5fada0171db80195b9592d8cf2be810930e3ea4574a350d65e2cbff4941"], + ["0x2f69a7198e1fbcc7dea43265306a37ed55b91bff652ad69aa4fa8478970d401d", "0x001c1edd62645b73ad931ab80e37bbb267ba312b34140e716d6a3747594d3052", "0x15b98ce93e47bc64ce2f2c96c69663c439c40c603049466fa7f9a4b228bfc32b", "0x12c7e2adfa524e5958f65be2fbac809fcba8458b28e44d9265051de33163cf9c", "0x2efc2b90d688134849018222e7b8922eaf67ce79816ef468531ec2de53bbd167"], + ["0x0c3f050a6bf5af151981e55e3e1a29a13c3ffa4550bd2514f1afd6c5f721f830", "0x0dec54e6dbf75205fa75ba7992bd34f08b2efe2ecd424a73eda7784320a1a36e", "0x1c482a25a729f5df20225815034b196098364a11f4d988fb7cc75cf32d8136fa", "0x2625ce48a7b39a4252732624e4ab94360812ac2fc9a14a5fb8b607ae9fd8514a", "0x07f017a7ebd56dd086f7cd4fd710c509ed7ef8e300b9a8bb9fb9f28af710251f"], + ["0x2a20e3a4a0e57d92f97c9d6186c6c3ea7c5e55c20146259be2f78c2ccc2e3595", "0x1049f8210566b51faafb1e9a5d63c0ee701673aed820d9c4403b01feb727a549", "0x02ecac687ef5b4b568002bd9d1b96b4bef357a69e3e86b5561b9299b82d69c8e", "0x2d3a1aea2e6d44466808f88c9ba903d3bdcb6b58ba40441ed4ebcf11bbe1e37b", "0x14074bb14c982c81c9ad171e4f35fe49b39c4a7a72dbb6d9c98d803bfed65e64"] + ], + [ + ["0x124666f80561ed5916f2f070b1bd248c6d53f44d273d956a0c87b917692a4d18", "0x11924f02fd19b09255aaa1cf46ea0518e3d7bfeef47421609491011db0bd0b02", "0x247fa7f022304a1994ff505456c2201ef9b717369498d3ffce446601ed9df845", "0x03fd7b19ef2c861f22f77ff810f54e277bc94eb76c02d79d986be3dcdf051c3f", "0x18bd41239c3e71579a677443ecffbd555a81eeeea69352a68b67c8563c0c2a06", "0x2d78c3a5d28de9ff35bf0a257635196e5730ca7f40493277078cd75da8b4ebdc"], + ["0x0a514a5c227f4cec95dfa029e8dd124c34895aa46bb27c0911f3780d5015540a", "0x192e16d17d956b257b85a652eefdf2ee09589eac5be80915775723d2cb1da06d", "0x298ce0c1e3113bb935c7058e7772b533b1aa9db0c0926bdc8917e5605ca3ac10", "0x094cb4e83621afd271e41bc71727f0158ebd612239ac9d698b17fe4be05b7fc8", "0x03d880395be93c27d649af5fd142e76b33918cb8841d5a28173bd5cf7d328791", "0x28eeae6b5866ad68e443bbaf91680db7d7e2b3037e38fef61b42cbccffceca81"], + ["0x278bb49a7b4e44aea46eb0f882cb692801a6e60fdd5b5c23c63cd65ccce4fe0a", "0x063edec1bed831f506af8db648d6fdea145345887e8bdcff109035a1d9b674d7", "0x1baef1cb5509b526a42061fb53657f99b3232500e855192cbe8c940e068c475f", "0x1324564ac7bdf9e22164e9858d7fa8e368b165eaea3daf4eb67ee59c0df2e5d4", "0x005761b8c6aecb1a8ca4ea4dfc2c8376064a4a8004ceeda210a55240562ddc13", "0x10c9e283159d58cb4cb2e35fde83a3ba1fdc28002ed9963d2a99f186178a148d"], + ["0x0c399e9f67aa40707a203feefb0b958bbdadcec5ca34901d253d026a2419f6a2", "0x083f0df3f1a0351d0330ec3ff602ca8cc353b7f6e762c7107184cd7b423449f6", "0x1a6764d5943fc4a720b4c0a19fdb8c711984307287a58b9b5f9f5d58212cb263", "0x011a63a26feabf87fa66bde66cc25a922c96382d76c6a7ff48f1537beaed683a", "0x08ca7b64657c3548f32bef5b63ad24288a41c0b251099ad27f9434307e3e64d4", "0x01998270471e9361955446b0cdb8bea915ec0675f1cd648ddcb04303507a4489"], + ["0x1d6b3d5f6ea369c26f825d2362933eaa31ea35ec0a77c1fbd9e01ca1523e4432", "0x119ef188bb3dd0d32306976c19941e8664be687e7a69692da27da215a6f06d40", "0x2d9e0ab5c06893dfdfd03481381ba86b6e6292df5609d71f2c64b2d9a79f809e", "0x25f16631bf77060f7ea34087c025bf135784319ef08cda2e31419ee0a529e658", "0x144c7a11da5a7c5dabae3f33fbd03cad86d18bc594c79a497ecb9894edb554f1", "0x0f971162627723f3feadacb28b0c104cb8f74de508752fa8d7c0db2af13de8ee"], + ["0x24be510095436206dd0abd0b0cbb95c883ab304aa52598b1a69306ec981a688d", "0x211610e2ad4a377426fadf7068b0c1a6c299a164c1c1a603eaed944870d0b9b9", "0x15a67d981041b1f6f09f3f9ebefd864e779d3af08157786ac077505e50ec79fc", "0x049327fa79d28c12a2c82406947f77f06775b0287468b3136877701dbe7c9598", "0x230940dcc5232658ff9c29697a3fd416d170e8c998f1aa85dea0c42d79f951aa", "0x1b121c049cd1159e289007e0c9da9995cc4bab4c26fb888ec3972a8a2e656964"] + ], + [ + ["0x2abd9e16b7b48289aa19cdfec726fa3fa15cc1625102ae511bca45f39d337e9d", "0x1b4bc5885d1cfc8eb691875300db5a0c7362ae381898acaf8b63cad04ecb36c6", "0x08a72fbb55dde3e93c5818571a424a54953695029eedbcf91eaeb012751c7f83", "0x0f95359a1f6845d4921892f83e500bbb1b3d3763d8fc762400af039b0abb83f5", "0x16f01751ce985328afde34d81619defb43e6c7b5dadf52d0f82472fbce7770d9", "0x1c391626328457fcafa629f3e6d33e2555e8d885e3c07cecc8af1f4d56596417", "0x00970f671b9ba35e3e3c642d1e0b8032023ed5bac91c2c1056f03965a42c5297"], + ["0x1fe9feb5c7f7c7a426bff032cd6a3158278b6c6b2cc57a871213fcafd6427989", "0x0cc7eabb154aa7955eac47a19f6437a2b8dec0fe9e5686150ff6e88b1a7b4bc4", "0x0393efd96399aa0726ef9af79be8b6c715e429906ca0d15076b5a990fea75ace", "0x0871233835b752ea030cf8a4f43771296eeb33f697d1b0825db47d39ac9e5955", "0x1a02798f047a51baaea34fcfb26ca6afe96a5fad1d2db4270497b6e6504891cb", "0x055665d76df3cd0fcb713c234ea79d06a31d6e3e4c3bcc657dba4c664d5a0da0", "0x26ee9691a638edc7c91887e302fc55e8e7758286a44845ad88fd7de3bb1052c1"], + ["0x00cdb2db9e4f9d732d217c5e3114821165d49e5a2d41556bcd53d0c4d433224c", "0x012f3bb29c972793182123f5c49306e16a3a787c4bcd9c798a131b70856d1cbe", "0x0bba9006404c5ede82b527677daf444ed43fd1e0dbdc5528dd2cd1f17ad73481", "0x17e4e73bf701f88d219acf1ca6390cc1e17c9f84b1713820837ca070be84a2dc", "0x234b8a077ef52b53a343b8da5b20cc358ad60760dd60276d485015f73d53d207", "0x2dc3fd77394b7b5ac1cbd1b46e6ded5b835d7217a4c50a487ae9a35a7fd45d9d", "0x1668477640fab14c72b1c16ff0192e48cf882f12276bd12f97f82c6ee2e61e48"], + ["0x09664216ca565c1a44fc2b98347ea8b36904b3877f2159dcc999895adeb4d70b", "0x111fd8dfce2bd3b7ba0cfa93e20fb685abf76d77305857b8df30914e4849ecef", "0x19f53c0a592b3ea93497a511e56f66753598265b1ab6774da48eec04e4d93426", "0x19b683c39d3b002fc3523b7bee5a60148b1dbdf18dd1c318e6a541e8cf66a174", "0x2547113a818779f13e3448719c7ef100b8036bb3e882dd5e6456c35311c1bd5b", "0x00cf148f8045cdbe7bb1013f72ebd4126a3e35cba9a970441ba8d5bc76943b0b", "0x3008421eed767a093322a09c3733973a038168cb28cd2e1f709076c00b869599"], + ["0x1463f51d4a4cb1eba16dbc115566aa48fe77b43c244c9988a3c658d2f56493d6", "0x16afd8f4c39038b8006a59d292aea84731c0f83832a61b82250ed90118e8fec2", "0x2296361f3bf154efbab996921936e9b1dff8352711f958638172055333e07579", "0x1c3160ebaeb10f809f69843cf8d5bbaca198d1f8e3439be29beb92d909ec891c", "0x094c66bdcff54382cd9213abe43312edb5b4d414c6e09acca24912a7635404c6", "0x2e883bd408c4c826d004ff777d7c0938434ab5bb84f3420e5d94b853b1746f89", "0x228af6d425e91a783dd18fd89a6b38bda053f2f23c094b875f27cb3abba2030b"], + ["0x214e41788bd2b990347c7f2a8f47612d4dfceb1a1e6da38165873df66ce51f59", "0x03fba82d3f783620873da94e9f4e84c8b529d76f54e4b5d7d4805272af9b9775", "0x066782fe3e869de2cebd7ebbf60fb435785329dfb12ad9bd1b4e46ed36289511", "0x1c5cd6b23ef336be01efa37a27e6b7aae5d1643fceeb212cdff51588835fb537", "0x2f3b4bf0f105f88e27248af094e29feed9ff3fad9a794e15830bd2b311539453", "0x2f4085eaa9f80a69b739fc23f2fe4057f64729b311783fcfab3a0a36fc1ff432", "0x2363603349e94f520fa1f98fe2507f6aae361934078aa59a16214c088185638b"], + ["0x0548541724f64e20128260899abe8fbcdff184a1957a9385fb715923bf0fc79d", "0x21c5e25a6991364e59a205e5b01c811deeb095680a72928369cfd2de71b14f98", "0x11c5cc53f6338c825817aff7792a2efbce8fff171300d41455a2edac37663d02", "0x27a0949fdc9f10495c4ee7214aa0edd2ad8eef68f577da8b96f9d87a39504bf9", "0x1c7fc68f3fbde4a23c455ef0d0dbce0ce556a0194e6d552c0455cbb5b0c230e2", "0x11d0f56fc00e7d85b3a2939fd33991dc8abc1ced0c3f3c530cbfb4500d63de9c", "0x01b2e9d20d9b55deb048cabe1636f0e96363bec886679cbd91f332fb2bade44f"] + ], + [ + ["0x1aa4d470abeaa2357079129d114bab1170944f929fc178216ad847d4430f3f27", "0x0e1f4e4d26e9da5f8ee3deaf48b493610be61d7d3db1d9754feca30879adc644", "0x0c298c14356a5a7f226c5a549e59184900385aafd8ea41d9746729964ef75f34", "0x19e070982d3ee675e1622ca20d13b2375e528b676706882eb8f1afe1c5045ea1", "0x0333e2923992e89dee570a650125eda75a20a72e69e10863a19d17b7beea9295", "0x1944aac72bf6fbcdec04361238c3c4d9510d5f07439a1b6ff41f652990be0139", "0x27d802ad019a42fd04892ad167d9e83596a730605890401319661675736359f3", "0x2bd05a040a0987ac6bc01f67242d54b7a2c527a970ad2815b273471eb9623e73"], + ["0x254b8126f45243f14dd8211df41fe5516b35952d56c62678c148e73cdbad3718", "0x2089c597feaa4ca9a202edfbc823763100e294c9e33000e513b2a216491d474a", "0x0ddeaa906cb65f3e9c9bea6344dda8db90c253c0f7f99ecef88786fefe0e5cc3", "0x1114c9120442750493d999d4dd45dbd4f3b75ab183209235396ce83d8ee9916f", "0x2e8b35a8c29e639dde8dfd49b4b347f00ee467863f6efcb355fa1534ef70783f", "0x20e6cc613ae6cb0a518425f53db1298a7f8859ee20aad08320d0a4f9bbfe8512", "0x2420dd1281fc0dfac176a752d15906b55f137b9cc320d5d5daa9df3f3d43d3e6", "0x17bd4f2726748d99925af9a2f2929e231c1869428c13b1e397bb0099191723a3"], + ["0x270712f18b1518fafe093660f492cdbc2fb70ffab31d8a4d8a1934be68792369", "0x107cfefa1e864045a668396526ed9f675b2bbf272ca635d8d3e8801099bb97d0", "0x04b96a296a35acf415929b8784b6bba64a630d29dff28b628fc98ef708230b57", "0x1f0465a9c133a1c6805d705be6b3ea9912a2d062c34dbef92de46955b83e7bd9", "0x27a2b7f5549e5eedb90105c0f8e20f0571ab7af0801f1bdd23eaad91f2229a13", "0x031b0afb7ab2f1d241f882178f7dcdad48591cc67905d651dbcafce94b14d073", "0x22e0323bbbdace5fbc74a0b3dedea6e1e3bf10e84dfc71fe395089ac197af744", "0x1eef36d62f3f864eae67c63324e47a6344e33a2d5bfb82f05bef9900c54e745a"], + ["0x2bfc3981a249aeaaec4ab9001727d32d4e6fe75598ee964fc85cf30d50df584b", "0x021630ec3f236ed219f73cc617b9f8b267dbee99a63c528544ea31b27cde49fb", "0x28890a03199b727fede5ed0090ed69494c053c97930fbb6c52358b0d7d104c16", "0x1b80f3f439396c2f466b8e9b25765a014970455a1beaed7a6fa308dac75fb582", "0x2a4bbad245a33e5d9701537f751410e4ff297b8f1d1d9098fe9c518c261a1b0a", "0x1e431f2b1b7edae4f8cbb5d307bf5131c352c2a215a870d739617f4b017c6d16", "0x255639889a259ebe59f74a8fdf2efce7fde1e3a666b35d8e6ec601d4d0b22689", "0x2d0d8a814cfa16c2323f174be2dcbe0c295829fc59bf2a89f13b4ead0eb056a8"], + ["0x16060a17e1b11f851ceab20464572b3d78d582ea050014843101485f65ab723d", "0x2741203d66c523c7639ea713b20346119c961cc1e9659a458af74cbee16d71bf", "0x2208c5004806c7aaf58314590bcbea16168fe62ec0497afc6bdd2938c12d9a23", "0x1c01f6db435dc4885eef9cdfed193250b9d3eb4cee366674b07bdd194ff349fd", "0x1f0e36c2cf9ac2c4388e74966d9ee7d1a0b3186916a08cfa306f6bb36d21e548", "0x199fc2be60e49e679ec2ede6cf3345dcb3b918e5b3e07c2cd8141333934e178f", "0x0a38d163b8a2fa3092999c1797b1af909bd971a25a656baefbdbdfa3628e678f", "0x198949eef2b27c2b9c3d699e3fe57da3d5b509c2b670afce400aba1aaa9ed51f"], + ["0x00e73217a106c402e4c6c166cd9ef1fd2a0b16ac1cb43646bc1c726f83177770", "0x17b2092b0f634576b654c6de21a1a8d812bd4c01559fff83217129082e2b2b20", "0x2f24d609cb23720eda55fae29ec6f19902c42d8bf904fb656202736d97b2eb69", "0x2df183fe2bc9b8b75773fa961c8d4117e582a80b656af5c58763e7024ea4189c", "0x15fe963f5bd0d92878c10a894e118018db82e63528afa4d4703e9881eda118d1", "0x0af594dc4030e8509701fbd3d8995f73126ad72a7af0fff344eee82a31ce77ff", "0x0b8e857d9fb1d554f3a4ec307ad907de7a436438603af1b28d4e4ee379960ce7", "0x07ebcd25a10e56693a28155fcdaf7b3519d9e0e08241e21789696cb76ee06297"], + ["0x04b959ca07e7182ca08f2351a03545bd7ab676f740b02331637ea1434c8545ec", "0x068e8e63411df2b3a9d7c567f66419a580d3ba15bbfdd1226effa3fd6bd47b3c", "0x0344d0c772c2f053664a7b9266b19d48ae5d2ab3d1c1a18150754ab4b836afd3", "0x07e0cca1a35ed15fbdb619bfaecc7a9a8f4c51293927562acea8eab817c6b84b", "0x222edf3e26bf74b2f503983189201d4ee8e6d6fad341d7ff50748dd739749df6", "0x2d4308b4823b465db653d36818181209d23cd12f844f72f7548d49e55055a601", "0x2e8e67fc85f9b4d00e9e1197b35bedf55afd7300a4c370987c83c15cf73cae3c", "0x22f1bc4ec138b596128ce5ee5b8184964cc262318e17ad21d45c552477f53e61"], + ["0x0fc9cc95222f92715cf7476010225e14cc38f314071e50e0f3bc9ec674a8aacc", "0x2f5a2a0cd0cb24896c94878a8106d57e82c68dcf1e209167a45ae9cf8570fed2", "0x2cd19b5c55bab1809e52cc9fc1a038c08935da19cfc563e7048d6bd1970a0c8e", "0x24ff2986781fe40ae61e8f5ca0ef17c5a5ea7bddbc127d431547c1f6a8f5cedd", "0x12a87d0c5419f448419840e5e5a92d276ace00963d987f2a1008913d98a27114", "0x0af3ceff2c865a901b9406d5d9b2fc58833d642f46c6493ca030ef595061ec6c", "0x27f42d86842f4d8a8c3aff2f47ffc1e179f097aaecce55bba0b0fdfd5b190aa7", "0x2b6b3bc340d4119e57831e4a2187013f1216ab3b639945dd92a984943241f1d0"] + ], + [ + ["0x0190f922d97c8a7dcf0a142a3be27749d1c64bc22f1c556aaa24925d158cac56", "0x1f8d3a9d2d31ab32d9bdb6375170dbba89f6f8f74d16e4fd02f3675d5fe2baad", "0x230c694139416f40422d713e13c056c45c3c631b346854523970eaea58a37df4", "0x2063a461ad06315ae5992a53a14bb598367624afc2833ccbb83af92ca0f6a334", "0x0c574e628f84b6ba9d17b9d2bfd4747e06dd68cda2383d64ce365927098c046f", "0x276428d88040a3e0f442424d2ffcb8d19becf3fb6ca02c1b5c61b5ddc53ceb90", "0x24bdf6101b2f223174e869d6aecbe8ea5b04a14c38fdf1494393cc6fdb3e42a5", "0x180fca184150c0e354b4b3a4a075824d4b68e8274943f4dd8b0c64eca25dc68e", "0x10726dcff87299c8532159976607633f1bc2ad24453c1bab26b726b82d756ebb"], + ["0x0607cd8ff9b889773c9eb68b8a4366469d470cd7c6004106caae95c10c424419", "0x2591580b73e7b5d5f34d9fdc0cf7fe3de7f6a18a255e4376fde3eb31dfa51d79", "0x093cff12150aecb3465c4c99f044be85dcc1eba21d429132c2260dd3d12ea441", "0x059116da88a081267dd888204fc6fb79046c3297ccb65f9e0fe0d50b4db44ec6", "0x2c948497373514e7d9846dea9ddf5755337ddb661043d6c628cecb8f55173bd8", "0x2c2729812be9ed432e75709133119cb0a14e1b6ea31c1279b7c3e495deaf108e", "0x2280d6d4718f9f06b551a988408f0515070e455ed63377e910be087fb79bd191", "0x1b1bba125505ae9675bcec7c9af579c5cc83533c9d555be398afa09cbf95d6a7", "0x17013257716d3cbae28e1c272cb6aaa2844136049ffbca05ca201523032c64d4"], + ["0x1da524cff60b64856dc1f5dde0ff62da7b182da26908f6ba6e590adebf91b40c", "0x2bb4565893b6ffc5799139cdc151158749c2c65db48672abaf24c5b3813c0e2b", "0x25081a00fc20ae366b1fe7ea6b09e62a51f6fd377f608368c12ba4e3bf89935f", "0x1b43719cd10b60c5647c097d1fa84b8f3c12c9c475ade13b388c7ec47240be11", "0x22dd201ecbab94a2ee393796fefcca63aa54d9a19ab9c7f20a0bedcfb9d191f2", "0x0b8e79838cd30707999c621621e77e69c0f433d543b79c668cf379b6623bac84", "0x02082d5647658eae648936cefbedfad2cd0538572aa6122ca68ccced68f432f4", "0x277bae2fc597a536adbe9c24bc8ee81731eddb574c6a5142c1c5a48c51f82e81", "0x30354c9f29c920c05e99d7cc747510e76f7fa69a71594a290eae7293c5a48441"], + ["0x22f33eaee3c481e65801b761a72832908f066fe21dab5fa5ec1d4c6e99dd6dfc", "0x1c5ce77776893d48147444b9f6d66a4da29c95707de832756c739eab8e87658f", "0x2ab8edd22fbe2a1cd3ce9a4212d0efb282ccac28af4d876fc946203070c920bd", "0x26e49154acca24424d5f8d29f650f9824de82eb7887329cbc83a56ae01dee4a2", "0x0badd77f516d4fa321d1099bc1e51909001591ad9919f08ce9718aeeb2bca4d6", "0x23671c5d1fb556063a64b5f664340936dc5ffedd4bdbaa2e96205704da5864f5", "0x020d7202ccde24901d6ce2d107e79e1fd78d6c9398ba7a4996f116adef14def3", "0x1d86496995f14264e7a054cc8224900368775c3e5ac6b5f54285f4a73c2171ae", "0x136961746d34fd196025173c4d79bf8b3d1d05291c584928d97258fd5fb4fb4e"], + ["0x075f84e9c719bb8de8e61083290daff19aaa4337454e5ba804257787470f2f54", "0x175505391c619b75530fa83e513184381e603d8449d1e070017ee8ec0a4d25f9", "0x29c5ce97710c1578a0990d862cf881badf10e4f6bde629199e803cd1c426be4e", "0x2caf86cff60521ccc5ec6e2e2c83b4707bb90f948644bfaa8f80b0afcd4cde10", "0x24f92793d67638b4abfdf48ce3b62ab5d0e1b250dc274d746f2f7d0544185b62", "0x02809dfe24c7fd7cd49b97b27150f4d38a340b60f0733fd4530cd4269b4811e4", "0x26709688150ed035f959687edf7747ee8ee946b770173dbe50390ab8c08c5f9c", "0x1e5ae4c295ad5a17e00f973f136f1230a6fb85637631b306d3705f80effac24a", "0x2310e2337e4d53c1635da18a2722178d55af583591bcc317eba842df247deaa9"], + ["0x2084be9a57e9adb80303a8dcaffd4bb77adb6815168b36a1d363b38425437135", "0x06ed1d14dedf763a3065f27e7a46d7fbf20d2b4e86a0db86692a269767d577e3", "0x1324544a54174cf7b3cd8ffc4b86320f2319d9b88c1779b89b1916018f3fb9b7", "0x2e923ea46d492247e12e0a7dccf6620f5eea6629b7532b3af246809398859633", "0x000bbbbb87eccc91d5fb07b6c55088ca514d68ddd93cf31c8ed2d2cc7f23b22b", "0x26010a3f5295bb4481310cbca5384a47af0f9905e4c76bf54b870ef0ffefa1c8", "0x0751a4a4af246255ce412c4bb47fa34a51b8628f3cd902077775c8fa488e7519", "0x28d2351619ccc6fb31ad4206e2c064bf4d9b2292b28463e53e4771f10670ddbf", "0x1815e4f7b40a7027878640a6cdc4b2854300cf6fd4953c2ac2c77625ef44ae04"], + ["0x0b303449f1bf4b92d2cbc26ab34b4215b6dd7af010747a705b2a6e3398882922", "0x140cdda33bb7a79b2baa851df5ad459e7df569b9f2c3da542d3b8d5b76b356ce", "0x1d18b25aac98b282e10b5a3a74ce5caa169a5c30bae52bba280ed517f3f82fef", "0x1ec6c32f513b8f30c7aab42e7d91aecbe54aeb188a84f8ca46bd7e9741b9a389", "0x089beeb21c346cb9bc182aa2b70f853f1a2258d56893ce5a948d9c645ecbc9bb", "0x2790643a66038cce4a6488847d8d2da2eea84961f8134b1be36947f803527e67", "0x159e25e00326a76f25c1143a5be6f53fa51ccf368d9974cc6d93cce8eb81d37c", "0x2486b884370d49a003fd041e800f0a898ab61b5e947997461ee3284241f3baaa", "0x111efc136a9dfe0ebcffae8943e679cc0fbf62fd0ce03b409fecd932a8281b10"], + ["0x0c099bc68243537203f97254f08dfb7efc09de8f96d72f3b3e0aaded45e18b4a", "0x035e9ecc464cb431cc92c3356e8a98547e843ed1324c1e971179fd1ad9fd51a0", "0x02f35e921dae87f1284c0c8ae737dbdc4936cbbb03a03a5918552fe565270a8d", "0x23a72c27f4f5e6ea5325d5b368f98b40693b2db1e8ca3d096739753dc5678303", "0x0e07b1d22eed54fdf966ffdfbcebb653b5dac3b2a91f50272876efb17158be2c", "0x05fa56d431d4bd09625a86d3623464dc90bd541ea41748f2026f65025ea9d2f2", "0x2d6f3e0e98413d5d6a1101b245c9e711bb2e956e27a5870784fd5403b39867cc", "0x213176bc1a04939fe7d6bc30691aabd6152ed24f309bff3939a0d91d54c67a66", "0x0a5a1148dad4562eab18162b3914b64d5753e9617a5154e93f7e43e6860687ea"], + ["0x1c5fd9060d4e0d999264429a5004c165570bd1675b09f977708b1ca48e616388", "0x129f06c930edd36fc2fb7044a6332751a2e3bcdbe756d883716cead6bc7063cb", "0x14a5ce1603228d6e6fade57c1da536659ba46d1b25566f12c28debcbedc5b4f4", "0x143617efcdbbc0d27a091f28039eba8abb39392e2a462850b1f9cd8532f5075f", "0x2885f2d44be0ecff57d92a4384edb5bebfb585bb23eae2a2ea50806bab8b7bd7", "0x04715db6d86b513d002589f1f9522f7de3b1a8bd702c167559ede97da2c0076d", "0x088887966c079d2e689a8d6d7bd913e92d326959bada59b99a653feaadf6c467", "0x12ded41f8047da3e6c22bfed3ec5bb52d027e560048db4c0f96ca9fa85e17bc3", "0x1f47c67a4325672f17b8bd1ddbd80e4e9e6c62419a9c204cc7e8821892431aae"] + ], + [ + ["0x0b1e797eee3f15b88ce3a1fafec88da1d6329ac3c34712db570de886cf569098", "0x2fe429db8068e61b82624f25766273cd9fe6368ff097eab97aaa09be4c630e27", "0x2e750867942439083365d21fe760c7dfec9e3593c67de12a4255c6b01648b690", "0x23237985a96b177ff7c01486ab0d603d29991b8324abd6b07dbb96f5c21ba17f", "0x15ccec857b25934ffd429af92c910db31d00dc1c3fb83745a31d8131ea5baa85", "0x17102ad2d98043e5509e76c331e6b22d5fb62d074760806aa675764660eb56d2", "0x0a4ecaabde9d1ea11c81dafa8d5d4869bee7ad0bf4eb78397b71b8f989cf9812", "0x0ec1821648fddc448a1512aecc8ac37714923981940f5542737a468d4d887c8f", "0x255a493aa4becd9d137eb76941c4120784c1233f6c5fdf5d65c0832af543e415", "0x120f44670301b1435249294d9833d59e01682af4c8658719727678fd9ab7ef2e"], + ["0x1abb95b6e33243a050e563b5c4fd059de5513ec28994a6f60e57c98d3bc8f586", "0x0a5b604c958bc90071ad10618b1772599e0c8dddfb641131fef39daa58a39923", "0x24e82df5873953792baca345b7c19f61039adeb1190592bca18cf4f907c1a6fe", "0x10e3349eefd3a112417e110fd9e832078e54b5f4537cd018aee3dfbb90541581", "0x165adebe00c7ba019499018c96f5c5870eca5679c90c843d9527184a525fcca0", "0x01fb81218feeedf4e7e0e33dd8ecbe62d65c6b7d4233f32e073571ff862d89c3", "0x1be2802fbea51003aafae82ff4499d1158377b108f8b020c82b8460a8d603afa", "0x0418081de8c2958355a1e45e28ee51ba2c66cad04835f4fbd81e696de6398769", "0x1f3e937ab29f3a88c6fe438698a7198a5209aa6ac9f141319f3bb201e7fd6716", "0x0113e968769b0ea32cb7b5ff70484aacc96f13dc2827a8e5e611695e0797fc3c"], + ["0x110d213a836478aa301bc1fd4edd388507d87745b3abfba5bf282afd21f7242a", "0x2cdee0c635a4fcd9549f0f91b4f4a9b628aa7319e2eaa094a693b38b5cf9a242", "0x00d60f0585755d48577b465746de8e286e49925150f1784f29fb6b96dbd8f0ec", "0x2168dcf216d8369a626ccc61453236a389d02519f3052e87eff9ccb8aa299c46", "0x03530dd962ef23dc16f79b28c1fc1ddafe9458be15174cbbbf3a806de5f63cef", "0x1cedc6d4e1476741c1099557e58e642c42892aa36e2d0a793f670781a21b0dbd", "0x269c8c139a4f61e16bfaae9e8bbb1c69808c9071083b0a339dff9e4904b443d6", "0x0ea7bc52503e2039d277912e022fd6d0ded5bc687c6ff97194976f3a28bd30c6", "0x2180b9eb156eb33cad1aa750ea0fa3ddbfa4127296e497f86e6441e052a23b45", "0x18cd1471430adad31e45b529494fc8a7e319bd2fc0619c99207dfacdb657bbf7"], + ["0x18edb2d105bb53b768ae0137850dc2d2bf6d1303a1f8ee4aadf76d8f81990588", "0x2c962d7d54a98c3a82a638d8c82450813f42071a17c6c05f470b44958f57ef15", "0x1f495e93014314988dace5e4e867f5109e09fa00fce87929d1e0ece95a449345", "0x262903f36acf0dc055f610397df0794fbc30927ef185c6356bc33e5c31faef9f", "0x1b7e922b3dd503e6441ada966c8b3ba7b908cb2b98b5fbe1e4c2fb982455baa2", "0x1a88ae2fde12ba32e5f4eccacf11c25bc163bdedaaa8824474cae5869e5ec20f", "0x23407728269c70fe712b021915059dc8dc2124ae648e2cb549fc76362bc2b97d", "0x12ab318626d511c23d28baa9fb5b5802e0ab95e3cb17aedbaa25f4d084cfda57", "0x1cc69d8f34ee877838950e20a9d4c4bd3e9acaf3d693aa64cae04faa225a2e1e", "0x23d0fa965e920dfc530b52670b1e32e2d5fc2821fc918c0844a003b7141825ad"], + ["0x1e53e92df6c53ecec4c0de5b07dc4c9a0c5545f2abcc1fabf4ccb84a0a6e2c27", "0x2bc761185f59efb7b67bcf1d3e54da00daea067fe49e3f1d9334e5470438b454", "0x124331e0ecb1d9808a1d91efaa98950abe930c46fee5a30d5ad07976a5bc0263", "0x0046887724f29321895c2ef8bc0cf545df773c04baa097c352a4165395cca786", "0x247460ad4580a18639eada69b904c91b19f7d4387435707696c40bac3bfbdd33", "0x265412a4e3b5560aba502d20ed833deff707b7d425ba3c09f3b6392b6f1f4339", "0x02ad06fc9f81684542e0458aae19c0a7c18be94f1de3fce6a3e5d2335a01e90e", "0x0d1e34192343d66fc1b6591cb6a3b0602b0835a403c7227dbcbd72fd8000c6f2", "0x0b565179887ee30e381631d8e5dd357c70ee2ebb410617d2321f6d8537f98970", "0x2ea6b32af37cd765d728ddefa30918902a21e19b291400854f56393c56d69460"], + ["0x10fcb817e10f69f7074e64c393b807cdddf33c84a8b5cfe33f44b73fe18c0e36", "0x2e450d1fe7773c9889a0be55e44453bcc844c94b56fc0bb806eb9982ac553428", "0x2f421fcf54d77dd38930cd69076f9baadd3d3f1947371215a66c894d637e89b9", "0x13276081db012d1d4f4b7dd2d8a2f8a5180d2ecc33854cdd35f9ceb07bf40d53", "0x144d5be38d44c5bf8f3c5735334fb1a07c13702d86af39ba0b4220ec9a7568a2", "0x12691b599d32edc48ae99c7a73abd59e5b18f4bf773fa1051cabd2c49aaabf6b", "0x0578a55f0fda29909b9f850c3d74be6668e4444ac691764f1644a626498218e4", "0x12e3b04924b2cf6e407bd26b3cd47bca61d6ffcf7efa1aea1c2e0d8a49de64be", "0x1162a56ed3bbbb4b6760a16a300ba7202130086da4d5588a70926423ff8c242f", "0x03340cacb04d5a85614eacc4be3352938baa3fc714c2575aa9d85f739113c50b"], + ["0x2b1d8c11fc652c593543b6f9800bb7d0c9371dedb96f08bbbccffdc6cc44db98", "0x25c0f87c946f375e341f72f6a8dd63a94e86f4ad182715bcfcbf2b28df6b4a0d", "0x0543b2bc66f3b2d93d4c1882039ddb37c70c0b437ac23ac5bb9868e6df24485e", "0x2dd117218538e8acb0301eb40adfa2435f5bffa8028ff52f96a99d77fe927066", "0x269b06b31e89ff132daebc200efdc8ab068136fce65f2fc55a1dcb939b7fc6f5", "0x20d4401cbbf92877ecf616d7d28551cb0aec552fae9518dcf9218c38c1a0bc90", "0x2ee2da24b7f8e7035fb73b08c3414833ffa38e14b1faac198a860a5767d2feed", "0x06dd89fabf92546847b9c13b3a36bbc7e679c5bb0dd785403f3ff49bbe61c8e7", "0x1360f719034572b59410c529b62a62aa94565654597e42779f33400f1d17d652", "0x15ff827e034c02a90767f0152840e7fc6db983e496ea0519c0ff41dea8180628"], + ["0x19f473e40c05676d5f8d51e11336e9c65cb32828c397cc8125f1dc667b6cadf7", "0x0bfe6fc08e2a2e1b8911ae065b985388fcd105a490a4ab943b25558cf3d054b6", "0x203d9ee6462a586914fe7dbfc1bfa29773b7f9b3d63aea4120c601129c16660f", "0x1b912abf2e1649ad4834ca5b2a3831cc9c207d4d08e4bf274a79dca80e52fe24", "0x062caa3c9fd39b69864faf701dc8a4588571cb31bfd5c9c3c59dfd97e99f701a", "0x138c03a2ecea183cb8f265eecd7e93275b0bb98297c1545a72197dc6ddd9335f", "0x11589959fc2493292fb6c50730e74994ad7cd6d3533c3b00a57dae833cc701e5", "0x17b9facdbe747d7c5163ca00e3b0b825d012ed4357604e7185750d677c6b357f", "0x0c603d03f92860da8a68c6dcb1924d1a45099aea50f1a362edb2f2a7ddfe90ff", "0x05d56f0c844d169248503135e4deb9ffd6329d54cfceed4b947d78a568681147"], + ["0x0fcf3a4d9c6c3392de1bdfe25cfb86817ecb80c51be17d47f79750201f1fcd01", "0x0c182e438257c4ad7e7b79c3b68d60984e507ac597cb47dc31d913a7a540fd9a", "0x025a1ecbd7e7893f646f35d3e07ee997c94354737884fe6c26ae8155760db8aa", "0x20135ff263867f708ee0275170cc9788689c088b2933a361c775cf430748ef1f", "0x20e160f772998a2f7d0064c7efa15884ebc6d8b71821cd5336e2df14341c95ee", "0x150df11291b680e3ba925a0471c7fbb30e704ab4b554ea5d8c07b70b2b96202a", "0x17572029e8e897202d0e65c2172c571d4b91ca856e7ad3f118ad922127b87054", "0x0aff15650b805bff6f8b3515d5e29cf914b7349af8924e796009f8a4f1b7264c", "0x1a918fc117d9a6445e363ee5833dc01411034b95384d98eee47ae896f92a7d67", "0x2e5618411efea30cc7de310d4872597d087c1e122e02ebb117db0c2dff04fc0c"], + ["0x23b02d00fe2634889673a7d04736fe15b9f62652b1c0626a19af8d6085d70822", "0x2ff4d0b8798a82667793533730083c25223d589cdd079362f1e8c2e01d54476a", "0x1d897f60e87fce5ceed8da7f2f4a63fdee7ff9dcf179c08e05e9e5cdd8238ac7", "0x0ba6d4ceee2182d3f2ab2e4a3ad08fc31f7f4cc0fec91ad53e92bf8ada3e278f", "0x05ce94b8e9a60b28947710461d87c7757246266ae8fa5d3af3ea81776b5b8c07", "0x0c346b046af03cb9048c29353e1107d6b75e590bb2d422ea83c09a5da1ba0c65", "0x2fbf8cc6ec7efb30106423f2e67b0aa9403360e56e88b6c5cbaec34a80bdc7f4", "0x0d064e72449efc11d1e90b97749de3909490b912bb1f72f542f41d62ab2d847a", "0x02a88e0c35617665f3cc2fc77d90afc7a8d1001c71debcf2733ca0c71a19e1ea", "0x15eeb3e0541bcf010da0c47adb12f6df540b974d439c93e19ea4d02f9975d446"] + ], + [ + ["0x026dba58ade8cda188f49e52fce7167b8f219dbd924d7786b0f98fb799fefa2e", "0x011a131a3778c3774233bc54096419d463d3abbae18322a7e77a511881665f93", "0x2a18ab4dc4777e13cb8358c1c423153570d1cb909544243abdacd4547c8ec3aa", "0x16ebd782cbcf6d63c38b87b27db2a4a5af5847a9a60889c4cf6aa318d6866b1e", "0x02b7ed47fac275d34f842f09b01ef9421014de040c26a591595b227ba7bc6fb2", "0x0c5e49e319fb9535073f07f9e055accaf3e3f24a35dcb46cab67dfc648efaf30", "0x0161e4ae5b2d24cd638ba5c32bc2317bf90d404e37e003f1055d9a96e406d30d", "0x223c7fc6d24fc53d1b428edb8f1c52d20ceec592187d2c7a6b0b147b6292b81e", "0x1ae060e39b338d09845e2e9ebeb70bfb74cd4af926217f5732be2b6cb7fe72a6", "0x046191ab41e93929ea51f190fd4e773ac8d5083328d4b2f04828dca3e69098c3", "0x14ba1b5383e3733c63d00c32c2bbffd8e54507ed33bf7544c86388191eca3e40"], + ["0x009813c803ff84a3694eedaf4b1c2172615275dc18ca654c799a70440946ccf0", "0x1495af03dc9180c886f0e1bdaf9d18e32e6b0d1b80370e7cbe5745dafc433523", "0x0d95e8cf8a66b56c32e7d11e0107e41e1297122d1acc41332f1b49895a3c97fc", "0x0b05f16108c4616a973b01d82e50d4fc9dcdcce67d2d21f852816bd234e9872b", "0x230b62315b30bc49d73dff8a9de79c620e03c747b14c432f170715e588d605aa", "0x15d217a31784741048f326e155af96e90b5aae734f06779e698864039c92e123", "0x0af9afbecae1761cc17d44b51ca66d1dbdeaf341e85f1082958f9cb72f7b55d4", "0x1da4f4e3c6790ae1b89c4118861d8ca2a50cc82a4e7f1ed3c5ba8cb944ba4689", "0x2860aa52dc2f967c0c1a0b942ac81e02189d031430c11a919a5aa895bcfb6151", "0x16ff33d67c85121bcee7d81cff1618927f1c92b4d1d21c2a07b6ae18b2b7b9b7", "0x1ba0e835f47626b0d82426900c49170a8be29c39d90337aa5fc10764e2321a1b"], + ["0x00202973f7fba5bd21ed58bfe7156d7b29010d41090f63f1bb290c1d5da1ad60", "0x119344c53707f00243983c6d024fd49a0f8af80e5871933e58ff87c3a1f48b93", "0x07c22f96f2f55653d04edc63150567a7a04609b0b79eecfacb1485dceb7bc873", "0x2f394cfd3e442503c3a22512aa4b76b95b743c7076ca4115a9fbbb7c6b07ee5d", "0x206351750037bdc90d4f3e7918619fc690c2b5857f8bfbd86d7c001e4cf2ca18", "0x1accea09c2bfd17f4061725c712fd1976a07e773e54d906da166215201a58136", "0x05e52c0ff8c04a8e5e3c7eafa1d0902fe63e35898934b00f4333b38fe614f913", "0x2e708baaf894bc5835e5fea81227fa8cfaef99086d12b0a3a7f3f85bbca61d28", "0x0ac23f00ff015baab1c8be9a90943c3c72d17818be7ad427c45eb3ff1828727d", "0x02134798f4ca7fb9928012c937f37de87432b8665aeedf373e7ffa6fe0c13d00", "0x0219f5e28a5fa52689d2b7be432624280c940c9bf9883c1fb0fe929f78873c1b"], + ["0x12305eadf64dac24a7913a62d95aefd45f48355576c671e56fde9cc7c8344ffd", "0x00a92bd6a919d1605615786f2efe80743ca57c10ec80cfb926722b5bed408b79", "0x0f716c54de41920c401a62df8f9186e19b9523e98637a5b113d61ccc30ba0213", "0x0a157e244f939125d57f9c8e66f7d88ec0fb3c05b90f526bac0871bca84677f5", "0x2218be861d524eaf03b9420b1368e9c5aa7cefee72d0e6ef80732ee9d7e6e2c0", "0x2f9bd19d0c8c3887a7fc0173f863f075e66b183ad89f13704930416e1d5cb7ec", "0x14eb401c1084a9ddcd5d0092e5d1a299aa0f55c351545c781703c01ce87d6b29", "0x13fe23be24261ba5b92d363989f58e17fceed4a858d1c61fc2cf2b71dbdb6936", "0x032fa2f166622f057f61a9405c9256223cab2ba82c9495607921755ab018f690", "0x2aeddbfa245756ad1e1658629f747b8da7593b195cc950324f95edc9eda42aaf", "0x123a6055681023b16570c70fcdf3ae8e387a973690b9e6761be22f9941d7ef76"], + ["0x25c783ad66d6a1fc6c84770bd637f6207097dffb0378d7e0395f8c0b86b505f9", "0x1c7d3a92caa435cdd974520bb6fb6cac81634cc9bf4e534df77736e06d768c3c", "0x2cd68fc31b67dc45fb6b16f42b5eb89dba2ae7e9aa50c5f1915275a81887190a", "0x1d4567c12db648d4a9c41324c0329325b76a07730fad72ef9e490a748674985c", "0x069ee4eb20b4860d4af91afe1781338f53aa354562ecd873e0e625af70746f26", "0x06cad0c2bd438c4dba2ed64bbf75066e731484c36d1f6738b6e98601e9fb498d", "0x1e0e166d734aa614c6b53db4f691179841a33f8105430a3ee70abca83ba6ec6e", "0x1c879c9428e19607d647f5ef1415e76f7c59fd01e52afb80486081851f9a5284", "0x215c0cd4e3f1bdb482b93e571879d7931be90023d7a220e8f93b21c8add41ffa", "0x1f41fc67ca1322b37b7aa01b631fd19105281f6c6a4d37fbf68fc1b5f62802c6", "0x1dce36062af7e4b0098f5590622ced7af9f28e88d476cde1391eb30408d5d266"], + ["0x222deb606f13cf28c73a67216d88b16f5958d5d292ba10ef3bc2c10f5a0b613f", "0x12fb88a0f6f749d68da9250d5adecf088442827248d67f989fd14b5c9cd4d4c7", "0x0066292e64e6a2c64673aed365cb50f7bd4e1d3b5270f6b2e9982590c3f8400e", "0x0a94a2d7c4093c638823b095733f37176d7e747ba24645b515ac2a241ffdda81", "0x0a226128da1d9bd5b329f55f52c75682def3369ab13359dcb7d212eefca86229", "0x1b5da83966361586e8810fed032435caa80a9b476db21290474ed1977fcef22f", "0x2fa75deed281db734faba5b70eaf57962f93e2eea1d3dcee34c81ab1e9fcc0ee", "0x128cb3150b15cbc4faab14bf7d676ef3682b52cabfc8d3419dfd98109d19ecc0", "0x052700b19ef6d42ea392e044a094cbfc308eea1f72f2a3428b1e721bfc32c6ad", "0x22d1e64d4ee15e60c459d851ef9f3495e937f5a90990382c97867c45b7940071", "0x252e74746677fd7584ceb0f8aa6936bd04f9528ef600737e9913fe4b5698eb28"], + ["0x1614d025472771fd870a9e9d422b3571c5494e7d679824d8fe1212177d5fa2ec", "0x2f6c4e097bb5851be12bbe2c712c2fa906f310b78048d695b4aad301ffc0d268", "0x08a1ef65f52128eb3b22df2b6aca30509b0af8af2f7888eee766c0c24871188b", "0x2f6f14502f20d958a9ff23b696cac3ae24967517ae8b2e9592daf451840bb98e", "0x17ceb42a19de6dd32e3b38cc2990e64273b52a5618263eebfa49d84518ea3bef", "0x2adbde5c7b73e9a7e22b913f99e40d95e689c65c428c2397cd273923cf68ddbd", "0x14bfe33115df293670393e1dc8da4d6947acc4b60249e5b1c8cae376665cd580", "0x2bf523cd8aa3be20ce7d891f8727a7b24b72a4d4838484de842acc782fd8bd32", "0x033b93a5cf15ffbafa2726f2527824a11af8e42e01d3a7ee159b273ca0a6520c", "0x249f416fae5ab52a435d65201006dd8ae8d54266e4d5643307551902423f7cc6", "0x19a9079a9897a237074252767912bed7b7635ae8ca0ede2dd3a42a75c1c6b81a"], + ["0x01358bdd6b7a51b1f5b5d094dbd8ee086ccdcfb9c27faad0806e8ef718d0e2b1", "0x1c06c782fbc0980b9e493b29a5e4a04aefc668cd4255d6cfe208e9e7c8b9a1c4", "0x24529638ebcdf26de8816287fec6370614e112e10c039190c103a75ced11b426", "0x12641cc3cf50ca67bc93bc8c19ed89d4613e9e281a51cdf313cbc8111922242c", "0x29012deffb112eb14034159c59162f866d4a1803b4d192a4329359f0f903266f", "0x1a8b8ad1ecb6cb888273a90bef8b1a2cfc03dd44e0b28b18e1074e404a9e0f4c", "0x17ea198f3ab261da000152f26b0eb0ebe088a709e8b06a18a3dc2108c2096864", "0x045aaa99ce1e06a3c02150804a91087f57a43b79797773e83216ca969e873380", "0x254e3acdbc75ac592679b032b65a9c91d2e092ab5e5719551b5da635b13e9471", "0x12a996abc8577021ac7880c16f058d9e06e9511187f0aadff6bb640e4316d26c", "0x0777edef4d91520fcd490a22dc569a97e540a0fdb527b4b1a3a854fe346b8e7f"], + ["0x1c2007eba4d1629846bb69404acc84565de5d24620f75cfcd9f11feeeb3f3748", "0x211865b7f9c1c791a33d703ad3280f69756324349afc8912a19b83de2cd06a0c", "0x12e4b5408f48641951739ea27e521067240b82aa51a42de2d4dc1e8225908187", "0x02185c7a4ad8cb21f19009396f134a2c3fd614d305e475ddd19f26f6d4b3f9ce", "0x09c4b2f61adf245266168cc918e96f7f8dfc35bd3df7b23fc641ef01bcc71cce", "0x281eca14bbc3920919e001150451c3e44ff18e1dd1171412ff5e663d74a073c1", "0x0533e8a454b8cd6df8d48fa9b0a9cb2952933e1a6b1d423cbc54d0533a72599b", "0x284ccf70859547fcb9c3c7b64cf0ad62e51726ec81b58eb01c1a1f8ec7a9eb70", "0x04fa5620a2c057dc552a59fdefe50a901068190fdc3df8761991cab50a01a449", "0x2d2640a74ede9af6c9888e5f68a84fac92b13337dad8fc6152fab34b55419908", "0x121a3764269fd35cdf1e621c3dc6318f47b862380ba00357849d8840059463ee"], + ["0x22f49d7244077e41f409c0b353afd1696e3aa15ffdb4a0bdb883ffe7a1a87217", "0x25542e07c1c13979bb14f8d4ee93dab7a3dc750806cf37f2c02ff53b4bb9e66d", "0x0084b88b1ce4598b701cf96a3379a02a3157d4193c8a8f1157459f6a34ec32fb", "0x2f6da385450911cd272e13601e7ce66c2b91d809307492f7ee578ae34d6f5fb4", "0x1802b97e54bf3a8978632cbe10e429705b03680325d26ea190c0f1ebc7362ea3", "0x0054cc81c7d1d59581ebcd26b16ccbdcbf1968d77f87a2081d13054f51118f7c", "0x19681b4242d11e28aa72530cf33a7d15719f1a888fff625e04652c77ee2b2de3", "0x1abfe4b1cf5db29d4078e5289bb143498abbbdc9af56720470a26a3dfa2ba855", "0x1d2279673f6cabf0a1c4b8eebf8e9c78361680b2e59d7ec19348819f5b3d5a14", "0x0f246d2fbb4e1217f09631fbc8770827c36751e6ad8d6fb16810e3395143ad80", "0x2f80ca151b077b50767281ea5d4c1f7457f8da444dda16d8149bb6c1061ed0aa"], + ["0x1951523a4270c54403dfe3218fd3d4ccefa43114f1b19fb2c2821a4374718b9d", "0x12b5a09e1e95e0d01fbcd234fad473d8ee2ba976fa22827ffa6dd03c8b25a64f", "0x2c184e904d7bfd368d4495b9e3027f9af6b9313c8f193f929ac9e24d10d7a36f", "0x16fc48e55d64d83010ad573377ea2422397fc3a7e6c88af808a566de0223f0c0", "0x2db1ac4c2b1c23a00027fdcf0f663af896d87415bb035b149d28ad3da98c6fcc", "0x170c05a5f8a55d5c9fdc5e8238b367be358917a19a28b4c47e46f3e73d42a085", "0x1eb7f6e5520215c15e274355b19bbf71abbf04aa426cd07da536cb3f909f6e57", "0x14111a74bd24730c833699eb41b38f1d4ed16fcf0fecc1655b76f2437d4a0c9a", "0x2d46b48e5090c0c56a390de373f4c9a2008db311fe31063cf4fed54629113585", "0x15f30ebdfb8b8ee644241039a26b408dc7a8de77f2cc6fed754b703ea92dde53", "0x1ee950c45a0c2f4a4b64688a7935ed2b63d4fe5b414afa05c1a284674409f165"] + ], + [ + ["0x2cb13179d6e8a4ad1b9fec37376253cf64386ad905e240575fca86539b272dc6", "0x0fd547840f3a30a533a994d1fdb3f60ae5073f4484f34be951ee16a276fdeb9a", "0x05019671bda026670c7ffa9081795105963f56ce327fcf78451fba2bdb3ac1c6", "0x2952c18c15558f29b2ae77fc39e51a395f173a9097db404db765ab02906b27dc", "0x2353a60af6bd61e5eac2c9a4263d451fad07380654d4792378daf752e5cc33fa", "0x0ed6a3bd48174e370b4f264b37488b03a5e3f4c0f61cf32d3157ad3e3b86f6bd", "0x21103a7aa20c8d15501be8c23504c6a912c6100c5d88085cc2e42a52302f4483", "0x2fb232573e85d68c536d100c3a6ea9172884451e677b0d1cd0fb4dc4c27536b7", "0x302a085be040ff9a709ad0c73238b0d1e11e1d17409abaa34fc45de29b541535", "0x0683e640e6154ef73c3cd6b1d0f0fd86ebf7e292e63fa84cf0a883c2f1faa8ba", "0x1f09f3fb07f7f6476fac98946b7375095e014b28f23a07ac9fc7077144ac3979", "0x0598c38d2e2c78dfe4907c74e82325cb191d52608955b583e5826ebebd1857b5"], + ["0x1f930557a284998225f5f4e4dfbcf5ac211f1b12d91b0562ed3d63285d7a714a", "0x04c4061820cda9bf472df3f64d6afa004f1e8623d0a4f6142cca1f19a4c275fb", "0x0dbc22c3e54c924a882c22000951239cc263755dfcb38b27ef4f880e202cb5fa", "0x2fbb1c59e9e8999d91c40f4d44233122ab35ffc975edfb43c53ed07dbf0d9c76", "0x0b8f40d2c4d28c472085203a0e460af73bbecec3b2b3a63f27028f2ca8a71251", "0x028c01a9f01601bb46417ed466be6008595052f782e46857d81229e64e6bda02", "0x23ce8e402939cccf36176a5bd83183a0d54a24ee6cabe4fc7f814dfbf26f85ea", "0x0db82abbcd3a1b56f7fc8d116cb54c54fe26243702bd3d57e71f7ce0d470a40f", "0x2e703ea9af99161acf9949da7afb18d462d85b671656d61c2cdee3a72390213f", "0x16512c150c1d2fb7235efd2d4f0fad5fdd78f8d0cde53a66bc90206c82c4b597", "0x0298aa5d5a44565b75ef68df902d791d01d98a75e822ef553b1761c58d6fdf32", "0x203fd2078ab2a8f88b7606543145ee34daeab2aefca31bc04a476065697cabf8"], + ["0x018e8222f6907da5745eeb9cd4a9e62f28b8b710aa85fe729f9ea73a3ef0099d", "0x107757eb0c0799f781308d83d2e057ef8106f6b656b45e7636181e113a2cdf32", "0x0966a21b9615af2b7563dfe41b8b9fc06039512dc9c8e1196891eb77f856b608", "0x082046081498eee63c287c6fa3efcdefeba1b5272a77bba9cfddb56afa53c82d", "0x2c7ecbf14b2d6049a6439d0f29f10e26ec975acc3e3eddb77c831a509af59196", "0x144022e7e077ff22a2ce3dfe9923107d5aef046d0a1f2cb5f36191ab04eae4ed", "0x170403d414148f4681b8213550951e238edc009f46b00693ce3d9c5800fadd0a", "0x2997d92a5e9bc66c84f635e8cbf080eb720ecd4ca3e42c3ab8d088611880861a", "0x21427b3a9a2cdf1e2e6c628906b21e24271d72c18b0261be68cca44865dece11", "0x24bba58086a78541a8ebfd535c107c36946d78ba6cb26d227e615131f71d337d", "0x01fd5a6eba52e9ea1db389a1fc8dd3d0283d737c18eb06e090b6fd2dc88e0a14", "0x1276442d9383c52d50fc9b5ac34442a4ec8e9cd7aee6d6ceacc1a6f521aae4a4"], + ["0x180e924d757d0be4066feb146ed56212e38acf9df4957432653f370f905b8b07", "0x2acd39e3892ac429ed812863efa05eda746b55bb974694a4e77b9a19abb55001", "0x17b18621dbd61df085da4cf8a03395e3700269c7df4d98ce4851f90abcbb3631", "0x02a429c2d06dcf34d34730c3af8bc19b04abd652468de5a85b5d5cbfd9c23e6e", "0x197dfb64189c09aaef94a1f542d8c34aea27fffba704202d5286d62bd0eed372", "0x0fd3bdb79cad913432b7d3828e072dadc26cf4903d56b8976200723846c6577e", "0x29b9ffe05db2c52ddd1bf0e5c532eefe70497c7df4b97db2f0624836576a6b29", "0x0a2a006e3b086bf502c5b1540eaaec14b9c15bf88471cb6d479fb4563f016497", "0x237a9e020908cd0edbd9eae8772350e0e731e3228b892fc5f64fdfa9b9daa670", "0x006d349d6182ec30d68c9be010587c707f7e1e175c0d324e6added6337a72c2b", "0x0aabba39d220f30604d0c44dd47c3c70de3b79f5baa70a3a7a0ca02ae1b080c5", "0x16ee980a2c67de24fa1a34082f11c71b7c45966a6e8bc6aa1a1dbc7ef6a9bab2"], + ["0x2f7d0715d1391190e7b14a1242b6799eac3142e21f08ca02c21755eae77a55bc", "0x29788bb6cd947ea9efaeefd0eeb7fd563fcc2e40bd623ea2b2442b55d98dc5a6", "0x12cc274647fc572bb79035bfc3332a4e566a28011f69dd0874f01c56bc44c3e2", "0x2ef584c3aaeedbbe2b4b103a61e94ed40a97294156ad7ddf0de43b845249f534", "0x05f9a6a8d64cca12725dd15110f74aecf99dd30e57a7d99829cd8757b75b772f", "0x2979d1aeafdf97988560d4ebbacfa6e2b7f3d026946abbb9d5397645e6e81825", "0x153891052fca1290fbf83240d334fd4ce05de78adfaa2c9686488e0c47ce1fc0", "0x1b8c7eb04d351aff4e76af7f9fa1114fe45aaedafdeb42c1c23503b122639c7b", "0x2d8125dbef602bd970d11fad7cfe06c3c64f5687b09b960ab92b14f69efbea57", "0x10924807f6fdc4e9e586792e3ace3001f16bc02e84ada5df51d7bd37243ee1ee", "0x230918919b6826faa7124c5bd15d10c036d565e100b696a3be7afaedb2abba6b", "0x1db922b8c249ff7bf96121eae9d9555ef7770f3dd7b056191ae9ab38a5ccf6ed"], + ["0x02283ed8d5e6f9470b3f4f49a771061e4a4fc7dac683defcc0348a8862c6ce71", "0x06ab8672c936070a10757adb45031a5e2922f0fb8b5fab3a4f5e3872fb582ed3", "0x2c7d538b9e6d2b2e06e72f8aaab26dbddead1fef6a740a11e9953f8e8e9ee057", "0x28e4620d210536bcaa42ee46b1cdcb21bf215933bae4eec639efbd51f4bb6557", "0x00fe0def70bfba40679aef8d5a239b3a1b5a52fe8fd7edb754aee2b182d64b66", "0x22ae023520979741e5c58fb04fd25d12dc8f5fcb6ad15223a5da7e0f91c7b4f5", "0x105c0b246660c4bd8a6f1b36fc3cff86a2c432c0dc9321cb50abb98a10cd1bae", "0x2a5aba3b45e79eb2606b2a5b47eb907584aecfbfc0b4cd50cda1ce4854338597", "0x23a3b23d5edf5cb66160fd2523b3a383142291c0e0ee666682e946b1d57937d6", "0x26635f4df7172107dad6b7c3068d2d438bfbf486471039f9e65a9c8462a2c9c2", "0x2bb28ef42f5fadab6a6ffd5655b36580deb063ae3081d587bb1598878590f1cc", "0x096dd43a832ab68e35e57c98d7b01f2a2e5936807704593ac72c74001383f7e2"], + ["0x21f60efb132b62909990b9f994f381a9c02abc3ccb54c5c8e8c9c5664c6913d6", "0x1db98a562fcd1a5e4496e61264aad5ea3b455f46eabd8957ba671e9c31e5092b", "0x2f30800c0ee461010569d36b60685a38b02912a020bc4708598854f65822f15c", "0x1e32b1e2e6b59273a113d609663af6b30c95b36884fe5faf371de3d564213c3b", "0x1b1523463a45a2982889048681a422c02ea373f8b8c1bf16c74a375d5060c662", "0x05246ee7854b2e20e8612da021b30798e5f0d02a5bfd5e79d3f9ac6c79fa609b", "0x06cdf8055439ac8424c435e7e9bea3f0ae93eab171ac383ed2cedb460fcb04c4", "0x2f9a5cdb79645e3454c617d77a774feaf24ef603454c02076fc4c9d7548cc455", "0x01b1625d757786a19a93b37adf7f22ca8a502aa4462ca78f7da2d7c22b37d7f9", "0x28bf5488a525f5514400dce722430287fe8e4c810154056eb0f4d6fe61091cf5", "0x21891bee31fb7bd89f0e4422b3c8f5b393299af0d9825db9be73e7b20097923c", "0x2282e86ade85855d4ea0657c4add20625c6daa90bc93943b59a92dbb77b63681"], + ["0x1cde82acee60b84424e9bcee49a5464ee05d1cf0b70469208a675635ac715495", "0x1c4dde07d0f94d1aaa832ac2f5712d438b4e1804b5209ce55942d7afb24c6401", "0x116c45e4d88ceae4565c0e94da844eaf2775d5f5b435d94d2d3d38b583fa7841", "0x18820364804d22119347b728135b409956f7933defa1059d634b977d9d3abcde", "0x0c849d07b1d9e6ecbac517fc19237ff73424a0678f94699b23f76952afa4514c", "0x2b60a4d43d12cf31076e0690e931716c47a86e7728c34b2d3cb0cbcf95bbb74f", "0x03161d7b94e1b0411fc01dcfbd748a6df3156ff04536b3dd3101f7b2ebc3811b", "0x06438e8b0220464039a7b8022f06beaee502c5de269db82f91d88fe1b72834fa", "0x14898babc8810cbc626688531511a8473ed89a22569d47ba586c284e45bd0ae0", "0x0090dfcc0327a541672cfc26c7e1370583c5f9214177093010fd3fbf279aafd4", "0x038e0c2e29c79ccf46b5ea1bc589276aec95b74e8bb82e4385c0585637c885f8", "0x28331d0d31ca8675ad4767c490261bbfe5b84adb4ca2c5599a87f331908130f4"], + ["0x118a24510a2153f818f0a996c87de913587805f16cdb1939d9406941f958e8e1", "0x2cfc82712ed9d71ff4fdf63ee4ad116fac195794f8d910286c152efd9f959bee", "0x2ffccbc40031ebafecfc3a97284bd0f6dc4d45eceb8b8998f1a667bee369ed62", "0x09b6c00a37df2770cec0f1bf62a6aac3bd380c6ce9f4f96e0f0879237ffa510b", "0x2c4036616c156006337771c1e355fc0f2f238e64cbd69d068aabb4b58116886f", "0x041b909a658d136993b3f509a9e9d50138baca48f6b66399ac5c649e68dd3aa4", "0x25c075b41ea2d827a4955b6469db9d41760faf885f2c6e9c09407ebb1c4dc274", "0x115a91867233cc75d1c906a42930e93cb9c16afced390cc14435e5cfefb4e96e", "0x2f8fb37178b525758bf6aa527f25773e1ebcf8e1425379500c8245c741ba3fc4", "0x29a14dc4bac0a4c52bf30aaf6b9b8e05453d0d797246b64732d50f176a7ca257", "0x2c89dc7562b91d8f2f7daa209b7560520b6bc62ec631db41cc5edac1fb142be4", "0x14972bfc85de037b07e55332e6bc5b4f08f39ed4eb8a9721dffc4a586dd9a1df"], + ["0x164567b0de16b7a5550fca229bac7cb0779524325e4ca5e78a86078881660264", "0x18b49b773f5799888e9abe3f6883d7063333835b6cdd333580b2b4bf48f3b27e", "0x2007424b129ade2194c73e6e2c9d79360d1360c4fbb8c5f31330f938558b3ace", "0x0445e26e26f91707da2df5c188baf80ea2f48c703614980fa798971cd8ec60f5", "0x176804ec1cf85d35298351245d32236546838d9b98cf4242d601c7e8e501b49b", "0x25b6e65e90ffbf910d19fe3ae23d037f8f64da9fe3df483fc4f4977ca36a7b1c", "0x2fa2af7970e131f7efe3a7c788890ab860f76751e55b4ff634dd46cc4de660d8", "0x0c8fd4ece5c205190cf6c842d1683444079bf49835d5c8b8dfbb11af956ccaf3", "0x0e992f44463e2dfd267e6a4a1c3303ea7a1186252efd6c9fae9e5f0c1f6d8266", "0x02609ff97ef574fd68d16a3de0872c3b59a5b928258dd1469826a191dcbf5bd0", "0x15dc57879cb41d6015da9881f948b40d20f0e03fad87746d8575af009c96033d", "0x06d039b64e82d7975dd21a37b5ee79308f20e82e23489382ec2d176190587896"], + ["0x188ff303194112a7034527cc9dd0b4deb0960c9c106ce115178dd7087e4e8c02", "0x0b300de5b99c27d332091f8fb0d97cf04a86a51d4d2037788e0d4f38e8f4eab2", "0x2c53d6676d4d4c87d9eaf5d4da08d1e98d103a3388d59a7c0c3de51e2623aa3a", "0x19f5101715162976766e2b57a58674bc58e1ba2be18a59b07a07e4a93e038075", "0x2f5855a876a37f7bbbd6104accfcae507e9ddcd2a7219b487a76b17c525b50ca", "0x2c0de448a88dfeaacc9bcf2850b6ff4f701e1a538d69098bc94087cc35930966", "0x0ce587066eae0c345c3368c53dff2170cdb081bee52b243a1e6de6d4f82451d7", "0x2cea98cc64abd926df963da57f2ef4c434141cb53ac6311b2566edb957982713", "0x2c7ae475d90c475f73c0d29be8889d0c4b8536fee6c0389984bf9e4dbb1aae6d", "0x23238fda1417302dd03ce54607749610292945bddbd587241714fd3964af5f10", "0x1c674ff2ead27ce002f4befc7ad5f0f5123e59793c0fe21075e819ce56ce1e83", "0x2627be68d9cd0ccda3828d51621ba409f9acf09f1a9cc503a29ec306f8606ae7"], + ["0x083d832adf9bb4a25f686abeda9f16ebf53263dcf9ef4311781d09920d094ead", "0x0541af6b96524662084d1208d71b6b2a8d66d91179745b213679c2a2bbc94968", "0x2cf2c992c02a36334ff5dc851646ee7da04b44eb544ee3c0fadb8dc5eef2a585", "0x06c5df8fd61eca2fb4923f0a46dd4e416a3a3b48c10ded13133ffeab6fd153e3", "0x1a233c7cebfb0c6eb72dfd07aa2b537ccf291e84093aae36cc68002ffb83639b", "0x05f6d62f54518f039e79aa726bf15a5983583eca4062405400acca58ca9d2235", "0x2b09de93c6e3148cf7ff5731c8e144debb66ca896ecbe4089d2d22cbdb09777e", "0x0239ecd92517825174f796345db296562223760fb1b81c091b74a6a4a82968a4", "0x2945cb85e34532e3a22fc576703797893ce290d0156430a8dce61c9df89a8bd5", "0x00d3be6a5b12bcf1bc705c20c30f320b8881c6c2ec00e857685c0599262a3cf0", "0x11e7bc4a39d2730196b6c334f99750de5bb5e4fbca5d6a19eb7fe14abe845dbd", "0x0c7c9db952865fb9470f8aa1402536cb3b82276d9e288082ac7f83b10bcb6d17"] + ], + [ + ["0x0d064dee824928d39f2a8be7d2fa583223c33995784d228839adde2559592592", "0x2b2ff5f27531b6f3d6a85d75e3e08f3a2f0dac3680a6c26d55ecbf803ca80569", "0x0b658849ce620bbeeff233b7d12258015ea9f87a5390f5614981eb6e4cb4a5fa", "0x118132fbc1cd83f95167cb4473d54c6bd2c417e2782e5efea16e72d47b48b70f", "0x0b5944768d61c1b3562a5749f4f06c4dd085bb562b838d7e2ef14a21fdf524c0", "0x2b04d6ffbaf7144012d92c5c6212803c0b5bcc0d7b1950b889d1fa6f3e56445a", "0x29be2a42834ae32de3320fb0ee46b4c102a3d1ae44c5dce152fdeab5450c9c44", "0x1946fe9de0a943d5a716eac08561cd91f9031fec82da9ab72883c7b218b11eb7", "0x1af3ca6240a55aba55df8e49835b92fa17e39ad5701ef70f8144109f894bf1d0", "0x081f58a91a4e0d100e0369fdd81a190035342fd0677ee1bf5215e47f8e58c2c3", "0x22a852af90680a8ca9688b71ed27c157d02b406bd6c7fd8121d7c7793ad2305d", "0x0b27ba82a0ffb98368981736ae927a227828985c00c3e5df8c1276b1001089a1", "0x04b46526207edc70a0d23c8438bc49a365635552dee240661a2cdeef966f20f6"], + ["0x2d8c70035731ad9efba92821a88119f6b8183a362be641729a93d6a327c03809", "0x09ef3492ad19dd1d0bfbeb191330a880ee7933c9d3b36bb5fa02283bae5d605e", "0x1458de516a534190c5550c6a1bed3af535c38b242eb9291373096ec60e39c1f1", "0x136ef2515955ff6619498fac59424816189f896ac0ed69b59854d105df47c4b4", "0x18cbfde0cd21c183797a2f089594a81cd828f3b0742371ed02eb83fb0064dd43", "0x22757da9e822345297bd060a3f71bb1e70ce977049c393235035677e84357314", "0x1622805125ddf344c18e351d11e82291618b975822ad0c903efbeada5a51d44f", "0x29765d8cf77619a580658d127fb6faa44d6c70a0f4d65dbaa960754b4195d9fe", "0x2bb0b6b08fc1bd11070edc42f23e807b82e8b88ef70355dfc74e096a7ff381cb", "0x04951e747b7ae6b99d9250108c5d2b70181a93ff1d4bf723781e1b938029827c", "0x17780b9469e81ca70c7cbb4347e7fb40c63ef68f3dde51d04cb47b3b83fc299e", "0x1913d51d9c71d042bfbf649d9e6e6ea5fdd82b4fd3173ff2fe02b85582528912", "0x2a9e342a56c8b6466d3fe533b89f1ab441b62dff3153d3ae6500c2c3be6365e8"], + ["0x07b620c8a78e09e49ce547aa783aa78f3e4594c49ab3dd6f602bc6c0351d823f", "0x27d6bd18703d7ca92aa24076d3187b6c0028d0b6213d9e5d2c66115237a19051", "0x2969eb5016f24b31accf173ca204668dc2229845bf6446cea007c113349bd4d7", "0x29c67bce04bfd020f4ff7eacab6cbde034b22fb86334675a361f059e50395311", "0x124474b08829d9b717c50884bc895cd3f81d519859d21235d7a74450d0a9427b", "0x2c7e28f59fe8a8a3bb2fa2b2b1e114ce283fe22a978a3df9f62a171cb1d65e4e", "0x165c0b978b4bb646a9ff225ac4900521292be54c879882d3f11eaa3103341487", "0x02066134bb299d9e359cb82a8380feb63b60e4b9859d9b9872edaf9152f92d4f", "0x09372ed18ba1a774eafe1bff6deec4bc0814b0899c6196fa15a7acd15ecc5ca2", "0x1e3a130e8caff9b5e563e8aaf84b2fc73668e351cfd28cf66f5012de61345b58", "0x255543a314afc5a2991413228c75eae398b90576b23b6cd86128665cc3bd9478", "0x076547449fa03845f185e61578a5a8f2683a19733fc04c73ac6a0b89bebb8453", "0x2f98bf081e0eb78f8025c03ee9c199f2e838c51e5a0aefd333e9f7cfb38f534b"], + ["0x231996b592528575567d39d00645a83b13929093bbfa00d6a661e4a690351d0f", "0x193f32a3f839f76049c9cbf2414590698a2118e83658327c4338aa3648d8f7d7", "0x0a5da659b6fcb1a4273e1b7e3b544d2cbd362cac497afd004b8ea920fdb04bff", "0x02a832ceed3837e742196e09491fe23e3f6e51126eab9acec96e71953102ef24", "0x098bb2c4c6334dfea474d04cb2e9761861f6b18a8058a52b619d6227a26228a8", "0x101749f9dd2605191c1963f25694ae267f6b44bfe2d1af34fefcb65e958784b0", "0x0c7b5e09343db5c63c110d3175d01bb498290d971b1e6dc0e9a0e9e7158356b1", "0x116a313d00cf99dc18e21f93a5bb198018bbea4b7cdced3e4d210971dd0a681b", "0x0404c0fa1bd1f7e059054cbb87f6b5c69d11457e59f90419ce4bd10bb8a803df", "0x0c1c216af33054c497ef04381f58582298b54335f632bd62add29e08067a59d9", "0x11cb20544f43437a688a7dcb573a7da4f8c7b4437349eedf3fce432a6f3c1653", "0x186f160ae866e10c4be0ea7d204cd64e57337c60c40b34c3a371d753f2ff001a", "0x1e1d5920edcfe9d6b2d0ddb2f6f741afb06590340fc07b182ea7c3ebbd933931"], + ["0x04e47a72e49b9c5aa3f69f6af22fa0ab640c93fc524dd3c508486d66f079852a", "0x235d0e71a350f1f23d9bb5182ac44ec9e4615e77801e5aadcab8336aadb1712c", "0x1219740c424743dbbf896996f0ee7a4076ba960a57e8d7679b828479218570d1", "0x2b501f1003e27aa809dc9e5cd84976a3b8c169c1e9c63977d7823f80d3f823be", "0x0f34db93ea8d2ad7d1eff86db5820cc7ada47bdcd8c82d01821f5c21a3ea2325", "0x04d02ab05826fa50bcc5f9af9e396477e68542d076b683ee61b85869d4535893", "0x2bcc82e75391be4ea9cd0f8a505f9e4f684778fc7a9b1bceb7868bb299cd2072", "0x0fe29b5bead54c5bbf426bb12844a2920884ac447906101cea9888986a030b11", "0x1bb2091870a4fac03682fe5b1e2eb56b14ad6e48f4676fe41454bfeeb0ffd4d9", "0x0f54c9c522a5c74e0d4e0c63611a7502657575b7a963c0e786d2a761c4e845bb", "0x160f5ac0b2481f8019e95e0b26445ba64dc03a4be8a15461496247e6ac29002a", "0x2f3d6b8e2361166089501b9147e84ab6b09792ac17a5f080d75b3e320affc86c", "0x1b59bb60e986194987fcea070498bcc7c93dd561ce8af5fade754ceac07b1705"], + ["0x0a8cb4b2bf3f0c5da671e48f83e5c1b3018f0d31200a6f19fd5195db22eef7f4", "0x1df5c9ef694afe61bc253ae908a8f6af0a08cdb9e78a9f322c22388322f16c2a", "0x134431128e5ffc0ab60136c5d851a11dcdd63cdcf17ad64fd77517701de675f8", "0x03ea4e2bffe02da5977ced1f1a6e852e921abe2e015f35b36ce4bd0246c2cd89", "0x06e03ca1146705522bb5e9dc73560eeee6b9b4bf51d48f953fbd1f006d758a75", "0x014c499ee51925b231da17ee7b55a75f96f462e431675ee36c7be4e9b069e260", "0x0611ecd1f379a0062b05c4aedb100bc015244c6a88f1631a456cc2acca8930cc", "0x22af37c0e4a88deae9f7fad83819910735cb4b49311e0aae11cb7534d0bcee6e", "0x299ef95aed8c75494db82e8679fbc6d5a3d2e29aecdcf6979a9b272a607dd5df", "0x103cc8384be1be1087b9bb47c0eb6049f85e0413f7b408f1dc2fa1e6fc4af91b", "0x206cf4290ac984434fa774bb0f8901a233905632b793c80b1d59966e96a73832", "0x0dd85dcf08fd38d22f316d91d812cb2a884308775afa9f667c6ca80954397c86", "0x24ce0acb522da527d3eab72865cf073d954babbed3cd1706aa69d767e9afe7cd"], + ["0x18bbb002b46f2e5fec2b120faf87822ca8e77ace94e03aab5c16c4b931739dc8", "0x1db2021eca3a3624a7d45bb16cf4a44e2af4fae0dc280030e7ebe55394f69d8c", "0x097c6133aea8fe48f3a5fc416bdf5e46d05de0723bc49e53b9fb5e83d350c295", "0x150ef9e932a74b8debf670080641339b12684ff5a303b2fb7c1d8d56f56ab61f", "0x1237f44f036b2da0067a94947334e3afa2ac4cf1009896766f5b191cde284972", "0x2d9ea99d2d237328266d59dd7e018bbd6bcc7941d9ff5f07a17baf0099f614d2", "0x0477f951e19f531b8434ad755b6783d61b679efbb87fd956e394db9c434e2352", "0x1d8b8ba772c4cda72e8ef9b19c424d55d57251b247c632bea255271afcfc70b6", "0x206aa2f36e32b2b06d6be48ad493d354ca7468753f526e6bd82549fc36cd4109", "0x28da9309acca103ecf19df72a722134d530bae6c660db3c364d0ebb200c2aeaa", "0x01b9435855d6cc4339240e9fa3819c2ff420980d6cf14721b75e4cb1fe57e118", "0x238832e643158e96689b5803b0b77601b59bdfb4926113a3455f1ff4df6e2b46", "0x0b43b8facc43cfc067b5513abcce846504b9395cdc14df96861a528a52ae2ec5"], + ["0x02bfae1b054ef2e924d75a8a01283da29103c57bad129ec8396ce274ba4524df", "0x1a46a26691841c26109a32ae07eb584a6b8af657273cdc4d8a112dea0bcc85cf", "0x107da0784dfb314d82859be44d37b4d2b6345c174b91651c65c98449682a5204", "0x2b45b3be2674fd820516acd6cc6183c4fae0f7edfa9afcd02dfeeccd02bfed46", "0x2082e9103cc45245924289111527312860f6e7ee94578f0118f4a920d0f8d525", "0x303a9e22855d95d07e8172f3a0536d4b95142f962b006a8ab09e7bb6335e8487", "0x2963514313f046f844f950ffea80f5e5b424b707f16599662e5a2e3668cbe5fb", "0x04b7f8d1d5ec8bf689adf12d656b94e15b0b229c1638c9c4757faf0d18fa6433", "0x259547168b64b2a228941a542f394a2699c081c149463dc2c3d21fd8b2e4f31c", "0x27919dd2f9d3dc9fcbda1a23b95cf23e3630e6fd5210faca6acf4629b88e5ff1", "0x2b9237e5941e1657efa507b892c3b8dd57fc8d52876ecb599dd5e1052b6b1f2f", "0x202e38e669883619ecbc6a6a45368b9b9a3e9ab67efef50f896dfe48b78d3dac", "0x262758fb3e076936995ff3140ef7d1b0a1e0fe4240a50747e2c3c120d977f3ac"], + ["0x06d101b19477d1627b9542581bf0cdfab38b05cdefdcb81965c5be00d780f192", "0x0cae80cc05aedb66d6e649b057dbc5ae9759da5d7b43d5e25a400e1f92e9d1aa", "0x12256b3b99d31d8a372986f95d66cc139dd23e935487da26b3e249ea7cbf91ae", "0x238965d658967afa2bce50ff18cbbe535327c65b0b76e50da30739ded25eb492", "0x23a6e143284e8f238c4b632ad78ace5b0dcd94a897cb05d1e297b4880e7433b2", "0x24e13a38f04d5e0fc0b6b6e0f782a6a523a8b3b0127224b8e23751b9cb9f8960", "0x09010d73677620aae1b0fa8023ff1c812313ae9c3bf43066ea60bc1ab477a7f8", "0x0a41e5a4421defd5ed7acfd48401395a409a67c3edf4c168ce3368ed944212d7", "0x2fc7d17f3a9afc1de289ad0f94126aeec834498120629cc87c4586c627780075", "0x1f86e3e9d147ed604c71e1fb6ef8459cfc40001bb4fc5ccc2661669b155abeba", "0x182d8f91ee2a9a26215b35f3c0eecf8ec5cc360124cf6b903e70ca83126975dc", "0x067d2b612d75f4f974312d04ae0fef43a35b60ef054c0f475302c55fc10bdab0", "0x0eab3f26417e6b53c532072de92d4aa78ccdf1da91660a461abb0f9fd7bdcd7f"], + ["0x18af61f6184ff85f104c2bef179b3ec5a5d242dfbebe8e27a2918f620e8a5be8", "0x195057af1319e24df1b905c6e2eb2957003cfc34b001c0e54b9dcf2ea5df6be9", "0x1d952ebffcbedd26036c54a1e8a2828fe320adf07a286e7f2c211b47f6c3ee86", "0x0370b757ac6cdd46610eec0c22d43a543d5e0482577bbdc14e71090307b5f69a", "0x22e076a3aa6ebfe996ba068bf5bffb17fa724338cd67f67ea25330195c628172", "0x126851f3eadc0183288a750153910a41e074b3544f0610a51273ad3698be0cb9", "0x0361f4082b75a6ebd23f9a6e7309d8c4e7520159da23441edd631a6ac14c20cd", "0x1abe8badb2d12353b9bb98152086a9421b7cee17761730e25ac284d6b1ed7b37", "0x15a7e64a5a46f5973e4e82a263ef905ed64f182b2041baa00a1359e7e9c5eda7", "0x0e154ebd50db3c2864dbe1ed72b0816210851b86c353692d1744cb3372bfa72d", "0x25528d5d31dbd77cfa6e7b1847f8e84c81c1ed5bae2a51c9e403cc754c54bb55", "0x21f0c6b896fb14220d811441629c78f8e8e27746026220e331cceb89a0ee89a3", "0x20addeb2afd20e752a39d2f21ebddc2772773b062922dc8dd3ba068836dba464"], + ["0x11e3a7c2d5f74371beb188c6e3d7a14b33128af8ee3287546d12d7777cef70cb", "0x2d4d35acd9f28a3e6bfd601472948293c1e4f084c714ddb1a075f2eae9ce21b3", "0x26309b52cb55f6ea5a9030b01378f65d2e6b7a9619926d9b1b1e21cba01fa7e1", "0x2aa84c1ef9e848a64f748b80e279ddcff871e9c4c3e2fafaaf79159b0b4e4018", "0x2fe31b0df04f276a525b619acc4a5ba3eb58d8c321c62390febab05ecdbc798d", "0x27c1b406bd19ed13d533550b8b621186b1fd47f671e6604680317e6638b091e1", "0x0cebcf30975b37267aedf521ee2bc753c3424dc4b6edf3984fb02ae1ead44daf", "0x291c0da731c016c0d6c4c75387030a962bf7a2eb35e15aac02fadf530278a3d1", "0x1216f05607e032e49038ac1458100e89ac8519a5a3cee4545b08850d8bf160e0", "0x19ae65945a1dbed3965f2de3a39ff2d54ab1dee0f333b88fb49edb3fc9ac7899", "0x2f996ae620d00a3d4e55ef7a6ce0b681388f1b7ff3875b725aea6eb9039d8b25", "0x2c825ee561c4ab6a22331177999c89806fbc34518387e807c20c359739ba9eb6", "0x0754947436c3cded29a60c9e898237c2183a49db7e70e7eb73aefb4b5c693246"], + ["0x2de5d6a7a27343dd0422ac71b8d409b43ccb0b672e978f8fdfd214f4d7866404", "0x025eb2ed84c520aba164e33f0353b5131886c0fbd18e55695541512dec563a0c", "0x0a12525f0781322371fd70b0928cce6e2eaaa67b8970dcdf319df25e8019a6de", "0x1bbf43ddb5a0b0d2845923b1ce128292359cbb313c5876fbb52f5e6b1fcb7031", "0x23e8c3606aee818d2afa8c4465d5ecb9c45bde78dd819c0f35a620593c1f42e6", "0x158880f5adb96dd1398128b9ff339f3d827da6463891cca129c012c06b16b321", "0x23a1ac07351946a974c8841e92092a4ffc6aefc7fa988e3c1f7e7c87e1512a90", "0x034c460fff28862ef7a509a1750a26ed1e5960fcb58c4f48c7d267c77e58dd66", "0x223db18f31c85e98e1dd7b7245dddda0ff8e319bd7d1a67fdbc7eef56d667818", "0x0099b97c878ce35c957d01b43dab07f8003e2c379b41ca61a6e56a9204fb16bc", "0x2c2b1e7c70fec2f58ca01bef5ac37cbb9471ae7914bf08df7e47dd8e3bc3ce93", "0x04625f2258edf0262ba0647cae426a486fc801dc0b59d20ec0f4d0af8cbd23ce", "0x239ca61a6ef7e501810aa89ab4996dbea8fbd47fd2f7a2c96a818e93a3c38c89"], + ["0x227cb43b9818924f2a2588964a0ad7ddfa3df62284b4b3b10199a501ed970622", "0x16c7c5c6161eda32c65bb347655acaa80bcc98bfc023f4ab12f5b2a899f37e3d", "0x27e37c68a01530f092cd37c4a26dece2737868dc2c3519435e1f2cb88f07b62c", "0x19dd1c6d45298248ad499531f33ce002505458d76178eca26298e39a62fb9501", "0x215f5563464e2df6a8daa8c34476a465e4ee9fa0ad01fc4399b649b2e07d1679", "0x00f36d166e99139b9bfc1ac3270a3d98c4afa81bf97436076f57383da50436a5", "0x1edd7c7deaf249e0fd3f5768aa92e9dad64118b491bcce12340c46f210b07ced", "0x08e1741a97f6348ed6d68f4b7bc6ec8b2dbf03f426769cc779ceee4ba1beb03f", "0x2f4aa8641ea4135031f4d97a7a2f679a8cbca562ba6aa54eae7d32ff7d04dbd2", "0x21a0a43c88ce26effbf8b9ad668056b5b0362e5009f3d80033db473228fb7fc8", "0x031b369d011f219e4a8fb21df9352878d93ff8035bcda834c3dcc41c3c2df85d", "0x020a72083579059cb659952d3f2a01ed90d21002275b5ea11f209c763baa8457", "0x19f11771049b5be81b43ca81e3611f4108a4b9dc30cd122441f74319c3adcde9"] + ], + [ + ["0x0e30a774c353a2cbf244d3d014d1a0e5ff0bac5e242673ae33f1bb2030feff68", "0x12186bb22000ad84b6bf29179ade2d4e7e94ff07e51627e09580571061fa8ce8", "0x2399faa648aedf9024c6ac3ceafea248216e24a9e56caf5acd29ce2546a9f6b2", "0x03add29fe398ed2d44f233125ecd1509e3cede77e6be08b94af4fec87eb3e48e", "0x121af61f4dc5bb24890abeb9251e5cea94770ab062dc0c28bb8995dd8f183635", "0x2ca8ffee2d58f2945297b00cd0b511da167080d53949b3f1fceaca9616b6143d", "0x2c99ef5e064147da9782b914a294b6c14d21ea7eec1f72e8761671069d82a134", "0x0d7d07cd3798f44d832a6571c21706758693e5e93684ce2d1a5e8a53e0cc6709", "0x29195117106623ffffb0af525c838686d0d97259fc73a5194609ac7b7b171313", "0x01b62d4b17de67375b58f248a88dbf707cc9d1491bce0095644ca0219a01e40a", "0x2e1681bc7c22d24c433f81dd3a326fd0242bfc7e2bdeb6307e4d2aca32adda1d", "0x0065850d11d0eca87c3697b6f5e57f78ca86952bad1c9047dbd2eb6be9e9db30", "0x1a59b36b94f9d723577e504d600c493f2810f0e67112672c743abbb13abf43b8", "0x1a4b186b77cd53f961c8ccb7815d9781cef7a52af64d0bf746cb522512d3d0af"], + ["0x12826e5b9be1c9b85f7c98aaca9ce28a870687d3628d60def0ab3072b57b09b8", "0x237e39980f9007bbf8699dbece054fea1f19766be6101885d421fa3ea46b5348", "0x0540f5492497595e13080f02f6b1e653e2e51895160ffd5ca14d26aed93b8672", "0x12bbfbb110ec2971007ddac5f8e36f655465d05f2462996b2114efacac70afb5", "0x2f2ec51c48f8b73c51b264a70d2ba0b46bdb43f933de0faea8a7da2a97cb41f3", "0x26e36544d0b5952dde4007d11818465bde91c4dce65abc015e7556ba58b95ffa", "0x226bf94b86b177cfe7f03103d59e3f9ce2393821954708e7c723f8104a68c664", "0x25e311b37cee693545e2c2efc2043bc073552115b3a065cef13d36547b6b9dc5", "0x0f2336e0eee4685741ca23828c34c24f073491f0e72c139610524a56f71aa405", "0x0d9bb7dab4a189a3b6990a5526c82b0ae50ba7dd558f951bb9fd343cbb4b0e19", "0x2a4a6cc884cfd08af4b0dbe89b6d8e0e58113207aded8cbab2d075053efe998c", "0x1eb97819b3531ebb640ed6b42134335419101d1db60dd1a924ef9665f7a91af5", "0x226b91e352c65de4fcee112445bff20e4a67af0e110957319b2860d5087406bb", "0x0ac5b86128ee47944c12af531cf1458042c35adfcd9e5b6a7531973714559de7"], + ["0x22fea1297a4a5f08904d555c2e15d016102a4ed29c32b4bb10809ef14af42c77", "0x1808cbe7ddf2a3684d8a164fe2d150df62206f6be33d577dc5798f193aeed7a1", "0x1c1ccb44ff8ab6da854e9271f4bef26d2ac26cd7441f1b69d16eee0d7a7b481b", "0x1b8d209d66b2c1acbaba435e304ae20662d336d10330beb3355cf801f194733f", "0x11738ced3933c4b27de13911db71ccd58b7b31344ed9153dbddddb91fbdbceab", "0x1e97ce013afaa6e9c993e9cfdc9aaec91b06787819830985a72e9f7c6e516ab7", "0x066ab8beadae7bebd26a33adbd6bb392d6825da37a679e8af9ae8bc4813c3168", "0x21b37be521835c32b673a31d71aed1bc7f3ea96fe1d4c23f14623a0a851a3cd8", "0x1e86ec086805bc7712b7510def651249ba1d491076241d99d00c692880f39a75", "0x075d1aa6cd2b8d181c9e0f42275c9884ae6fa09186fe227e5c4673e56e3acd28", "0x142a83206747200fdb02773e766f504c65af82b200c0e7fd942f92be23d586be", "0x0ee4683c8da536b6b50773a469bbbde2e417a1cf9be221520af1e755968d7ff6", "0x168e771e9f8f860c49367ef919a00d4f128bab01c13d7dd72ce8d36bc6d1d835", "0x0c2a439067121449c1ef3dba6be1ff84f6ab7fac4bbd54ad7539e61826ca1971"], + ["0x24cc6751894087b831598b5bc7f9db3cbb48ce294d9208e1aa436cb5fa2e80e1", "0x033cccef05b0bcf7b77aa5560a0f949c90be5cc2c57122f9885d24a117c63f98", "0x0e8efc85cfebde295ce589de60aec0db43c81f4be7da44eb26fa4b71f7cb7ee9", "0x0a9d7ee7ee91677affd3ca4fc674625be897df79f82ec438e80f1e000c8b1f70", "0x09175b1fafacdc0e62b5f95e6ca67c3ffc96a26e37cfc734795b92f1e46124d4", "0x3016b074c814225e2d5c1091a8303eee4be476b1458ad54c16b4e1691f6b4724", "0x0c099861545e013a687cdd49a3a296a8d2c2e99691c2535da712d351d5e63c10", "0x0b71a06bb75b0a10bfd28a3788bf54a8a144b3287df9c591a2643c4100fe388f", "0x14937879c4c7127644c765b6362f8b98cfd32f8572d7aad9cc329bed5b507a69", "0x28f9e0058ebcf1591bc007cb02ac3acde0851427db20c7358dbef9fa9c57c2ba", "0x0df653524fff92dde8ec1c9a51c1bec30bf36a4f01e9b3b62eb13f8ffdf7b8bf", "0x02dfcfb280a3d372dbc15639eace45c0bac562c44e292f1429bc916578fb0bfd", "0x0b345890b33c23d167396c583d12e4f3d9efc904f261202512350190ab1961c5", "0x04f7f1fafee121bb811344f73f54f4a3583076739dd9dfc462b3ae6343c93cb0"], + ["0x2cc3d0503a0e1da952b081ba5dc5b117e646bed572a645266c6ec3ce0a1474b9", "0x2854c82b4b5f5df6dd3872e3f371372de0d12e16e9108766920b5458105e76bd", "0x0b1d810fcc721551e2a596e9009367fc6a924857ab29b703207b08c95ecd001d", "0x0b6eb2254edfae1d7503c3518e64cf19f3443d6cd03b71cfbf1be5936da4e046", "0x210a4a80e6eaa799f7ce05752bbda4d4ff0520742c943e1efeeb12a91229a5af", "0x1c1b2cf11f0d3a3a121be7d0ddfb24dc71f54b9bef943aee32963966922a8399", "0x1574c9e5caaa8a6a7fb4894d2c45d1901d1c42b3214fe9a72fd3cc668e399f76", "0x26ed5fff06ef9e1942bd3d0d3ba6848e47ec045cd26f93049d80cbfa6bcc73b0", "0x059de873c59806f55114bc3f8309f9b64cfcba7434aae220447ea0e9c4a66da2", "0x017e39ccba3432a135c0075d720c649562ee4d31b6da2e9c90bd72a039765e73", "0x2ae7f1414f1443735318163e1bfb1e1bcf5c271f37f6abf1aa86766b2e59e049", "0x12ea921acf5b8adc6a4e36be85713576d658099230b0b1766c666f12d92ab142", "0x1815d4c2e6a18f4f3fa538a004146d7f540fbe80a4605857714fba2795615df9", "0x18f6c40e3ccf885804b374433af0a962b2963fb9aa01e8bae8cc834b3e17a31d"], + ["0x11eedbe5a5969f33446503494b469a2b83f88d3aa477e5d6d7963a8333a61315", "0x009b63c75dfcab572d280b057fbc3640d35dd5f16244863ab8a31e0956da8802", "0x09fcacc3998065124de01bf7c0c8ba26ac4241f1f7deca1eefe5ef3d5015e3ad", "0x01a9ab3fc2059b0cff7e3cc431f7db45f59d8f7f724cd10a03f31a36638f8b52", "0x19bafd0d7942b839f36ad3d70d9c87b55674b9bdee02a7dc30e4f99ebcc1d94f", "0x00c474824afd2a880c6a85a7b7a5a434ac422c7a63aaf8ddc7c4d9325edef40e", "0x03a65a91d35b6e877908d5c419e7850f645f62b1c913765a214bb0f7a2915b49", "0x137908baac2e35e13f86834abfe98d1b54b7c25d6c85fc6c05ec7cded9175517", "0x1662f26cf04f5b969cdd6b93e890ef2b5b1124f51822888dc2167bbecf7c31e7", "0x0cd0a4c27de11aeb6460e32fa2bcb289cb83321723155304929eb0ca4eea03c9", "0x2030b7bc2a70905d031674efb420336fabb0769ac0125c35dfe2ff372c1aa4eb", "0x0b5342503af446ef824df4df6a088195fb67276657d420e6f312b2628e922986", "0x282a555f9ad4fb57698faa1fc3279bb8c28c1f8dc8c693225bd8520db4313489", "0x174c1a1095e95d4f098c8d60826776c2f73691db37ec3b937835b65b01ba13d6"], + ["0x189ae9e9b162ab1a19d599cedcef428bd1325c78740aaad6715b710bfac4c1e6", "0x28fd36f1c761ea7bce29e6f00067fa40b32e6b318f506b6c94bb847bf72b5b52", "0x05d2f0a3c223122ac01214250320b52ff5a3d242118e19778b2c8cd1a976c611", "0x023fba23ab4bc24d4880ba5a6ffd6eb5050dfb8d0f56476d3a30290eda372ac4", "0x26b8eab0dd0d95b7a8439e0ff7d3438a73a27b5993d81fcece729a824a3521b1", "0x19775ec781fd4089859f6b7f127c91eb83eeb7ec9eade14677b0a6b10b9e6e24", "0x0c073eaddb5d3f79e5bf83bac00f37700bd64502d8bf7d5a099fb3eff7d3b03f", "0x143991e8386d62334ca0d87832a0845b48416ef5158c18e7b9db8cd6aee223aa", "0x05fb897d71edd8d8eb1f3b5c823a5882a06d964056afd532e6c88893a25f2615", "0x2745a059d0962f1bf0dde1e1b97e0bbf4c4143d10fd3fdeb8d2b295ee4d7a9dd", "0x12a710de6d17f91af890102226853bb64209f1b41331a1d17305bf5b7b52172d", "0x09265fb314a676b6b3f827f07283a1ed4f300e8d90f967b20ff61f455d2ab2fe", "0x148ab15972a6925b714602710fe9e64c0a015053acb838d0e876a46cb5653f59", "0x1f7f9704cab1cfea2b2471d579ef99d193b234af90e62ca09b5a671c2428a515"], + ["0x1aad11449d6e2c6e1adcf9e89114c336c0145528f356ac049f52fd8cb084370a", "0x2b56c2e44f703a3b143da03c25749367f752b16817257e6d123b10bc85543432", "0x0c7513f762b64022a151d62302099dffd51791d9afd3dcf96cbfcf6035a2c27c", "0x0b26700fd4e950c25ad78fedb63fcb0d9ba73ecab858c071664866a9096f14d5", "0x173985fe17f3b0fb85de6104c02b46c3d79eee9dc28b567f02ab1a1c0ddec576", "0x20a9a6284cfc4381795e3b06837e9596815fd5b6f162bde02f97db687c8479fd", "0x217aa400b2b625bc36432a545e533124f99c1cb98eb85df747319e85d530470a", "0x148dc9335f621fff9c8d2fa72a9cf5b6febabe1f5ce77689c1a29e393185fba3", "0x0ecfacaad0c147e0b3c7e049771e6d4072b02ee4d171c0e53224214d17ade351", "0x1365a904c7f6721002dbce17077a89a92bb8038bd27af53333f447c4cf035a80", "0x1fba713b98742311dfb3fa356ff83eef234ce8bf2b0d4a52de7af4d2519f2f12", "0x0ab913f65e1ceb39ed8b83bd5d7fd900e78511edabcfe62314dd10d567858d8e", "0x08e13c2e61c446b53024d2116ab176c843600d00e676402c4641745158c243f8", "0x01fa02616024cd9bedf643ea36d262d1b24f38a557a77a82c686618c3c33edf9"], + ["0x0d7e1eae2cfec406402d34c259e5966f6e2eb261d4f08e29088325a6bb669a63", "0x184e5824689e4f81438567df435f39e1d35a819041d7eaf3af908429beb2bc2f", "0x18fde6451062016edeaa32e40a8fc30751e17e9bac192f8ca891c11f39ebff81", "0x04a572b86105dba5253d7ed1e76d35a126e6718551b976b208f593f08158dea9", "0x1d948e8774b180fa5e1a3932439dfe8c5f32a437657d21277e42614b4c9a3dc3", "0x20441aa5f4d5638e64d7ad9982b1bfcfde158f6a3cd6af62941e05cc8e533151", "0x178a58ff122d168cd4ff11a47280a4b8e5cdb313411b6f6e9a947c7fb577a51f", "0x256e145378d2604db8c509dda4552452b6c4a891fac5da199c7560768d948836", "0x25f64d42a750971afcb8023070f6ec97bb2362b196a5aae2af6a70f2e7b357af", "0x02f812121e2eaccc7d51bf266398d5ba8f601a2aa6d335eb69f7864642177667", "0x00c8f8722892a2f06c5ab454e407bd557e9c2ea77ef807ee0e3d89c6785b0d33", "0x0407d585a6a7efb561377e5f3972319a3e7285e146c5499ef6c8504a3d0b62e3", "0x11cb83e01ff5803b049a2b59ae9915b3e0045e1db694a6df9de9c4e7152d191d", "0x2e1c292e06b7f8a6e4344f10540675a63ca49e452f69565fcfbcd43bac0f3af4"], + ["0x0796a23ad6ed2ac995104a0d3e6c75e977ce29aba1d25e62a9a8a20364ea1be0", "0x1004c5ecbab6b7d12f6bb4caeab33dd56c1f829ee28f47c29fbfbb147e884654", "0x077559473737549dfb2016dfa72558bb2c1c816d7318763a5e4fd516b04914e8", "0x1bcbe67ed5fb7522adeafd1d9a150f8d57ada218db346915c86e6c00c00e38b8", "0x1b61a03e218362204fd20b67536e5e6ca7b96dbb53d53ed1602302988614876f", "0x2d3d269ee324e7c43c11aa84cd15bad65444ef8369df15749a8a6b2c8121e2b9", "0x0ea45d22479ef5773e58b0fe740868fc1e8b50bff76049d5b6ed5e723711867b", "0x2280250e212be2a48d293796a88ac62b05411012f46a66f87a0220a3dff3f79d", "0x20be703f86d7c0b9dad98ff8bb9fc92fe8ac0a84c6897a75d851146f74840b71", "0x21f8d854091ddb601dab1b01fb30c3d4f77cc3167fa3332c3b32377a07e6aac8", "0x0dbd093dc16e73832bde62d05cbb06f8271fa47229470462d8c18cf8a124f9eb", "0x2ff5bbbc022d1b74fe184c064e58d967f1aad1f0926c906a5e356cfc3b81ad24", "0x119816862c8226e9e5dfabf3167b3b2bf7fb3d19063989b24a16d97c94bd53d7", "0x06fbced52576a913e6cdc5c5c96fdc8f9f4e931fa90beeb46d9b3c2d775e1e36"], + ["0x299b8e8621d7d8c8d3d6286cb126b34ee53b2dc9a3697b8380c6e47f5711345c", "0x0a973a665693ed09434edb2cb0a971ad277a82b3385788552349ae09e8bd0c85", "0x2de9ee6529e5abc7aee93b794c4eefdd517c4fe12fa56bce06a3708d86336bbe", "0x2ea6b7a7265c503fcb284c2bb19512dae71ef357125c3ac755c6bc6cc37bdb66", "0x1380beac7b062c6b89914a976a8d0b9d3276a13c82c23fa21f4fa4403e3267cd", "0x1a5718f4a92dd8d179b932b0820f65c7bb93eabce398f997324f98ac76323b92", "0x1c7cbf2448de7114eed701b041809034e07b946a0340b777268529d582c225aa", "0x09c89e06cad5430153dd52cc66ae4f521bf4145df048681beb2e06a385050117", "0x296f3a9c104222692a44ad24f0f6fd8190027e0755567e9a7009ec71ef440ea0", "0x018393505ea6230669a8030f6e76130a14c1070a901ba5b640b88ae80d7d30b5", "0x1dca3060a6bbc4c324f7efba22274fd8d1f2560a4eeba8c8b0d38997e0d9c46b", "0x06da6d88c233e3182c5fa5ccda1392c0f89f7c6bec4e60da8df8054807eb0922", "0x0c61ec79b106e9dc6494a6359f175ff637839ca53ac8e7a13471c56646180390", "0x2cec67e62320bc6a0ca32518ec81c74363a4b6d259bd275a63425d6cede468d8"], + ["0x20f11ee81d2ac9a9ed1cac61d9cfdf10bf1b49cdfbb6d232872a1df1427c1839", "0x125478c8973bc395b648c822091f8df469504a71ca4fdf1dab59a708d0fe4719", "0x12b591b7af35ffd997b3a613687e449225625dd5d101cef2d6f2af02d9dbd6d7", "0x30544eda9c322c6c872671d667fc5fcf09cfb8d34e8e5812b6e738e7ab40d8ef", "0x2110c105efb481b679ceb2f112d6ea704442763ae2ac65edf8f15cfd169c560d", "0x08fd4397aa8b3a84dd1ba4e2d0eb7c6d1c5eda1f764814b5ffe204c8ec735606", "0x2487df9d5e066b76ffcb2f0ca190abf5fc1e5872c4b6a36a46870e9159201010", "0x0aad68c20fade1e3e2bf70fcef4b550ba00d6399e20d83402fe09b52ddcdf527", "0x06301679b6cdb17aa6c212ce342ecf681ab7cd96bf0bfb93350368004d97c353", "0x1e151fedfea11659c189a31ba27f2ccf6956084188eb2c4c99b827f645f1db61", "0x291bd9401de20916b9002a0066114b3bfae4d3c8308aba4afdccdf0aec12d66a", "0x00aab27e6279952c7291f036918f0b279d3b1d9f8e4e8ac380da77ec2fc24ea0", "0x1e8ee641308ba6fe5600b2df492cf2f14f9892ba1025826c53c77aeb7bcdb04b", "0x276e2623828949e6a2fdc917e2ed45dce0ee503cdaffc9add815f6d1d3c4f9d5"], + ["0x0a403e979943b8d2f947f6eda6d41170881341bb5e4fbbb3b4fe3dd7dccdd777", "0x2b0696d45980020a2a421073440e3a4fd39edc5288e6900a5958e0cd81e0eee6", "0x2f9f88fe9be36457e8a546455aa00a0f5100a7f32580b78f26a77bd0b7612181", "0x206733e327a64b78d3c48b6f7580d0887c1778343b67768859e2532d7d1c46a7", "0x00c272d10af2ef78a98dff7486c49d7505edd88c922e5672a3abb15cc49f4134", "0x1a327ff2c46f5969fcacb463506e102d682502381fc3f999b9ffbd4520ba4695", "0x2c0cbbe46422917152ca1906462bcb5a13ef536322a8715237da09b8c594cac5", "0x25f4103521e36d55e418162ef8ebfec6d45695520ef47b8548ba38b52a27fbf5", "0x007940eb04b61ec5341c1702f03993faed167db6fa2cea92290cd821b15fe4c2", "0x2ae1ec9e09577c82c97b4b09142ace51aaad1df7dc352cd4e5813d8cee9c98db", "0x1c97fc775f962fe05a7b66346b93c3260c8f6a90a7f5c63223a3386e19852ead", "0x27737fcd76dd296c28817646d30b1168c4d00e1f764c4565caa3276defd15c7e", "0x16b61b242d41e1975843309a01a36a14397d7c8e7beb4afbd9233b453aaccdba", "0x0c75ba60f8e0f6afa126e75703b83d9908116147b8b2db45ef24f3156b8f1855"], + ["0x04646253380f4bf642972ae81977779454aa0833fda36b1822cb9c09719e3dd1", "0x0264625c74f2a3bbbdc19481b7866757e639c124b4eb560da531fcef99773903", "0x09714e717daa3ceb3e9794d24abcd172831cba18066c4c048b0995e9e6df1dec", "0x14dac9059c9e78d96c7ef807ba342b946870679782231d2af0f6e4ab76cbd101", "0x129dd677c1f8aa2d36d2a7d5340645dfac34a64ae456f91b97de9f8e91313615", "0x10879ceabc3ad045d76f6cd5b26b56dc47b512d6509458f9ffde8da79e6649cd", "0x0f7c3f3cc96ceda039e43c86c1b680c77d6f49f50e94de23e4db42f8e9caf7d3", "0x10bd7824fc1b883b3da0072d2c6194c4a1e5957156594e908adbf6e6b1912b9b", "0x090da12e1595551d2500f90310b7701df97676404113c33e475b2e7749adb613", "0x24ceb0766de25fc22789286a09287be740310c41747320bdf2eb5c956e040356", "0x1c7dcecea59e6f7beb6d702e2fe74588415d30e5dc09970bb2d56acc8e08328f", "0x110a5e84de09209e9363c03c22b537ac6a7aaba2f6a9d1a1f6bfab71a960a583", "0x13822dcc3f6271b71549c2cd917b859cdac36af6848804d15a354d4de0f67ef9", "0x085e380905eb2cb7e753d0ab0ff4918b232c734418b6bfe1331de492fc76b21c"] + ], + [ + ["0x04523bf1a8f284c6d95b310dec2b54e0e00e59b571dd9d46b6201c18e1b56dfe", "0x19a92ac6087ab89982fe5650e5e799f91003fd8b45400748d2c25e40f04c578d", "0x302608d750f16491df5a285f5f7f6a5ce6b554f5dacf0b69d450b24bbb4967d7", "0x1a3c7daa6b4af5662d0d8407b287674d83eae5b7563405f48def49981c98c424", "0x2db1c9855ac29acc679367dbf70f08d98894077df2411f91ef68dd90177c1e9b", "0x0f06ee47558f182d810bbcb214a25da7f70a567a0464b348e1b30eca7de99d27", "0x2166d78d948dafa963381cf1560d00bf3a0a1c288a743344c8643a58daf8cbb3", "0x2929be9bfe3f93cd34fceae665d96b1de1afb26bcaeea2f4edc454c50cbc4401", "0x1076d439c67997c37c6c1fda9a37dc2f762dd577946f36fcfdccd7898ec67cd4", "0x185c9ad0da87cf824624d02bec3ba4665822a0f6b3b25deff3afcc687ce1321d", "0x2702b1be39e91044fb73926c1104719f4c037aa4151823ceab24f0cec49f4648", "0x0af71a51cd463b9faeda93803cdc03186c7781845252fdf4e0155709d93dd375", "0x28667f9c7332073e293c80b98edffae01af4f67b4c52ab45e49db8b30f182d28", "0x2763c33f5b2d7bc3a23040afbcdaf998bb13254c272a5f8635a12606a59c2e5c", "0x0f81a8d8e08758e8a32aa8292666c4cb6ba3f5f06c4dcf4fc502ff97f03a85a6"], + ["0x113ad8b46c3eec20c9965b5a7b2e8a51529871d0401b4de6f63de9e5211623e2", "0x07930cd5256f8ab77ab92b08bbb5b195a44a2382c66e27514619efb94e649110", "0x28f8144bdae1b904ead70b3b72c7943037de6b48490efd3177783594edd28b9f", "0x2474f543d1f2f33b5ef3fbb190651135a59390c8a3661fae2df1d3f14432b608", "0x21715a84742c02d057ac41f743b166da023228425681950edfaff8581201a097", "0x1ef0e0c1f0b5f67644c486fecf02238cb7f4fa63a082a3c030daddce65a4b82a", "0x278e8dac8c56b28a23dba4d90fba91eb947f5092d4a7a9ec7802f61778488e87", "0x0faf33843e6733437e98995e6f7bfa6feefa73d7410d8585918c347f3cfe92a5", "0x2ba437d6ae6c588c6b71506c8b508347e634b65cee317af1fbb9cc2a997fc006", "0x24a6c1919f94aba9db98a5af38feaa5391cda79f9debfaf118670d7927e41db0", "0x04d80e7ef7e27a2b1397678ac42abcc6e2662c880503e4643fdfbace67273b92", "0x17f6a3aedb0005a9b0a258e31b8e6e2a48f3f9551cef6812a49075aebb8785f5", "0x1e62029129492c8bdf8514945950681361591a9f5eedc2449e5f229c85bb97db", "0x16bae774867656e64fc95f3c249f801f150fd7ee28d195bad9eae43743875278", "0x10f0172799be23a8fc3f156adfb6c512ba415e35167b563bf7b186fd12a41e57"], + ["0x1fc50a16dbdfa1c3b99038f47f81a1c5d1ef6e7b221d4ccca6e821220130e000", "0x2d8d3d924f2897199e38eafbc7e101d17d7e563488a9f3198060796ae84c1b08", "0x2aa9aae62cdb852490c650ff9e27c9b33d4cd4020ca66f5e1a6b374e662935bc", "0x1848a60efc89965073b95773f467666687e38d59be208e8377d31903921057e4", "0x0c893808103549d2030cbfe0004ea6655e24ee71a1f8c1f072d5cf6e17ae2499", "0x0ad80718c6e9d1c67b4a37b9e103db32f225fe42a9ba655ff065618b87b82aea", "0x020d87476f1243f490246f88736ee5fd6d33191f0561271487e9693fcfd7a649", "0x134b86642ff202388f4fe37356ca4f0ec3805566b7d4d412d8937a359ef9b401", "0x2c04878b4cb8156e9983d11574ed99dc7562d3fbb1878257abbc68852fdd2680", "0x1783a45215805ade9d359232120b183db54b43f9a7e8fb8dcd95ba9bbabbba59", "0x0fc96302e8662de23cc5c8c228ac8ac2dcdbfc488a59f4dd41e3f27095f7e195", "0x24b22e5ce671ce79dff8de16d7cd2bd6375d7ecaa016ecf59cfeb246dac80720", "0x052c33fce08d4a39fd805156c8affb84349428ba4920cfd2e7902ddcf9b0557f", "0x00f0d475225c99702bba4fd01276102b5cabff7bd4d147c0e3cdee4c07ac31b1", "0x1183e91b7ab7372f157d4c477691eeaffc9e8863fb2d806570c67f4b1858fc54"], + ["0x1214a9d6d7288fe85651a8cb83048c7669c83b5ed82ca2642fff01e852a44b4a", "0x1c0de2bfeafce164c9838067a8df6340f9d97edf0122333159b714f45c3f13b1", "0x1e394d80067f0e10baa95de0d99b4e39204a18727d1401b476ec976b5f173a82", "0x2ca2d8b0a793d90ed318cdb5f697193137155bcfb942d82bef558be5fab359bd", "0x28427ab007a68c7ab12371f13bd7dba0acf7e97ea6e64ae52d5219210fe8a2b0", "0x2cffc378d2cec76ba7080b37fc671a96328bcdfc4630fcc2f2133dcf29c70dd1", "0x00cfcaa1d7d382e1fe1fcb950e14df202a08793d7185255b025d562eb8d97544", "0x1d8724c5e641d96f6e372771b0a776bb742fd3c08e1ae250432246cd3bd01bde", "0x0fee8f9731397974100834649ee87a27ac92be7a3810303460141aafb542a429", "0x116f239abe820737b5e1e82b2ace3a45cefac489a6bff084e323036f54277108", "0x2a31cadb918d78b96dcd548b394425a42e2aa7a28a6b63e509261bfae6fa25b3", "0x240caf6d7ab2f7b6ab3d15efcf3074f5b2142a1e804f25012d988454809e096c", "0x2224c85f0c0b4093014db1e817d1ff16918f15e0cd231b848a48cf83324c4144", "0x0039a288951a0381e3aaf598ef132853b5d694716c20db87923f0bcf14c914a8", "0x17620d438499f6c0a66bb577add4cadd66ad39e3377d302bf83d3bba126b2aca"], + ["0x0d421a7c25af5538788f49475836712af5da156f88c5867568cd958e305026cc", "0x20e4a28303dd55e5cee332f30eebafbd7932e7b3531d942454c344b8b8c17cde", "0x20bd028c958d57b79e35218fe34e469ebdaa8e8e714e918d58191f65046b972a", "0x06ed98a185bb2358f334eb257ae5e3183599c054c1b4e2022569b8368da1abc8", "0x051deb4b234890e31f5ac8e69a1e532453774ae93a9e9360fe009ed377ae9c36", "0x21f1f6a630471e32a8b9ac4b7ed4b04c56b96a71ee20a66a5458c6b8d5c6d346", "0x0c39dbdf6e6d24a91a0a45f922c894be252baa127d9ac76909f86dc0bcc68a66", "0x305614aacdfd4167cd1bfdd8fcdece6892d84d4a65e86e6f7c6349fb75e48b96", "0x0ef9ae65eb922605d4260ab2021dfbb4774cd5ffaedc1b79dc681208be6f85c5", "0x1adccb898e5fe18b5c29a4708c4b112b56d0fa5d299b5edc07d6f5bc00428b8b", "0x18a2661c03ab9b0d8f7d01091c7e563efc033196747e34139d3f5cc7ac001e9a", "0x0f8aeec74144d00a3ca38bff10bb0f3a8dbff4af6197847db879745aeb57b5ea", "0x1f53514a97e8b57204e57bd6b1b1d9555f3b50368154154e67c2134fd3151591", "0x27bcd639c47482d2dc8b6d13da19fb8d63f3d6c875f6fea486da6ff2ee11e107", "0x0e9e8373114ad25af97d28e272fc42d8490373cab582193b874a10428ee6cd21"], + ["0x2de8ba83d2b6ab6a711fb9230adee1cba46de8c930c86d266acb8c1cb9684e24", "0x1bb15ee4d492a8e2cf1b10db1b738c6780066ea8347abe536357a723f6cf57be", "0x27fa2120431379cbd86205ff114f34dd2dbce13e1c2a0a8e46a1dc27e7b686fd", "0x1ab527614a37c2ffb00c0fad360abaa447ac1063fb9fc656d0148cdce2d7c372", "0x170cee2983fa3d3ecef2f806f40eed8d8e135ceff076fc530bbfee876c9e7f1e", "0x288851770f1a13822251da91c84e123593fae1c9cbce6c4ff2317e70bb658209", "0x1795384e91bafa554dedf5156cd799e11210ffd2afe817b5c63ad5b85e7fdd06", "0x2cda26473cfdcd185ba28cfdaa15e7de2359646a0287ebe8b60d702df009010c", "0x27ab4b40901465ef59007114ecf1fbfab6157c24f402246b86a60397267308f3", "0x27122781df7bb05f6ae9e14e8e99da5c23dc77cc06108c0ebb061e5d1be93626", "0x26812acd03db3412cad4bba1aef71bd44b0094d318ace0366c79e729ff0eb2e6", "0x213d29d4e1b6c01fc0d109ea6169490076d131d8e034b3040f7bd9c3c373ea17", "0x2132f71ac89892c984a0a73653f2d45222ada34181a9e6dbcea0d63961f934f3", "0x121395023931f6bb3ef28b6063eb7a2ed7839e083fdb92c1e5593c83edff5f53", "0x1f665ba33da4ab9d9806caff77ced39c9be254fcc4c5da8f570096111fb109b5"], + ["0x0ea7be82f1cb493b1bbd83ab7ca285bf0a1559ea05c3f59827b3b013d0a91fb2", "0x2ccf31a572412bb7d9cfa637707853217e7db5550b1cc30a894cdf483a3b63e3", "0x0564651bc1179170e3c97afbc4f493617017b43b213eeed86b9b1bffe521fe86", "0x0bc769cd7b34fcd1b454abff0c00b89b540a619b87c95444679c3ac6be84d450", "0x244b6b63f8041a5975f4640b18c7d067e4a0627f18751dc906016b8893c35123", "0x2ff4ee110ee1be62e2715dcd119c95b95413376e88ec3ddc3f06fc9db8c27a94", "0x2666ec1a67daa7beb057aa0e6e8a10396601a21884372369c012b49aaf849049", "0x2b0666971fd911529e70ef918d019f44b5c9d77442b6d1866f6e76832d478847", "0x2bb5bf03cef933e4ee87f511de3985cff0323ab7b718d4cbca3f429addbf3052", "0x2e37a7440e75b649a0799cffeb7f9dae38fadfc7cab6c5585e4a84f437729d02", "0x000371f0d49346df2d88b9f1ada8ac99dd8125cfa6c30f3738fb9932a853268e", "0x0d0327b593042de04f58e0ff93386d1608d33a86872c1d3e7e089120aac7a4ff", "0x04dbc4c8de708e59aa4b2116e53944bec97ed42309b4a184561d8f32d291f9c1", "0x290ed9ae7479f9be13af13f98bf88507e6fdf018710e4859fd2e48cc66ff9b24", "0x135aa38339bd927dd5064e4d572df55811b226bab54b0acaee511d60aedb02fa"], + ["0x1e3ae7e5775d352651d713ebdfcebf9ca8e905cfb792bf7874239450f914c8c5", "0x01d492c34b245bc12941bb163c5118bfcf85bc4f344042b2031ed8662a1f6ffa", "0x07333cbd0ff13c8ade1febe72892d9ad435c7b451aa72a8c05a7082395882865", "0x29ad5236ffbb598a2f8d238703608db7a497a7453ef9d579fbf05be38f8f76f1", "0x2e72b1b114dfee7e8d7f0161255c6895fa786070ce62d806c45a22d7d98a0a30", "0x2ad369a84b57f7455ba31064001ca7779d2b4b96b0b4a91f156abec366aab786", "0x15793f31caea39de315dc5bf5a3662ad5d8e1a12fa1a7280f2efaadafa97adf4", "0x056c55df543a8d4043a12f409cd2c4bcf43a770f3e38c3fc79ad214b42da834c", "0x1ee10e28c612d9d6ee72f1274850c3e829be5c06f5bb293280152a5610eb01e3", "0x29f356dcec3b79523c0589a7046ef0758486828b212146c3f5ce987af3fd719e", "0x27cea9c43fe0bf1ce9e53c0c026e839d80a7d869136603102cddf63cdf28b975", "0x0bdc078b1edd9cb1fd2c2a01a97bdf7d458648439fac1f28509b41a2dc9e7740", "0x2565a17a6bc56e87b0b63664319b8a47bf662c1f49e2ec9251be4fdf33d90f4f", "0x15b085b5eb678f8cedf21bfb30e2d64ae1cbdd7472449ed24e6034101c658868", "0x22bc96cbe7f8cbca81b29ba7df848dd6599035ff515b6d485550842e1a35a1c2"], + ["0x05943e3618a32cf050018a4e2375f4d027b8c14ac82a0de57cbb90c5122a64b4", "0x1c9b5c2c07fccfd9dc6b3abfe05675fc997eb7b8cbd8d8b4cb7e671615b0ecce", "0x290a7ae732f4754e0cb91923c9248971932607be2e829163f11612ff8a955b10", "0x1434ece209d491280c5ae05d7e26cf92d99bb7289a5c1cac09a38ce53b6e03df", "0x228e7399b0e05802852bdd5d5e09966f03c4c3aff53c683eb2f69e0fcc21c0bb", "0x24f0fa154fcc6d6459d6c56f711f25e38d57e90be7b8046c9e001815edb41404", "0x18800bda17a89832fea54f26741d86c6b6fb9e15b02e7bd065533cb5661d2a95", "0x16b11f24502aa4cc3b0c2562a18a24ab8f986431b244034d3fc29555402b5f4a", "0x020a9d575fea891302b106439ab03a8a951d8b2ef2b562991946eb2541f1fbad", "0x0f9c05f609ad14debeaff107b95accd60e62662259905105abfafa9e8e08eaea", "0x095f1db43c827e6f0b9cd4fe929e7b8c78c93fd02ec9e0f10992feb753b4ca07", "0x26bc00d9cd25124442832d97abd90866d3fa7a401bf38bd95fa7ad526548fea2", "0x173e80596756cd9aee04bd6dd9dc15e4b8ebbfefe3771d9819bd4d444726f79d", "0x12a643f4a327acd2454514dd469551e36ab0e3f24ecc3b28a76dc1f38214fe38", "0x11e1b0af7f5fc9f049877154ae173a1a72c7bc3ba192e438a9d0fa81fdfa4900"], + ["0x0603755180f66e98215d61e5346b116cc00cfd058274d7d969b3af95e78bb335", "0x0243930ba01dfd3945f2aa02d588922b47c1bef2ff8023a849b4ca66a1bfe98b", "0x1eb520feac62e4545f4fe7cdb675e36474b8b1fd19e15d7c73a2b1dfbb23fed7", "0x255dfbdf30553413a1f8f5113d60e98583838d13e11c1ee02b25a387ea00cccf", "0x18451132581b9adf996c6cae15b92d2e4c09fdc7d6c27b4426f32b5e66a0b723", "0x07221cad39d9b5f8db705a8723038b92b6baf87284131735eafbecd533dda6d1", "0x156f6a09e6a81d8eecf4dbf21646bb968b2406786cd1dedd4cc732b7532f7fe0", "0x18ea0ede9010c7bf0fac361b5b8e7f97c75ed93a13a7ad4a017d920c03c98686", "0x0b73119c98d25eb6de14246b1401bef485c9dc6accedc23494b9526a39d53221", "0x1c66828552cac1443334ed70b7fd7fb525f907ab64479d117864c92e911986c6", "0x10a66268dd9a2f368e95507efc2085eeeee8ce977ca1eff5b2e3d94bc342ff58", "0x1f14aab5a59ad452cf692b123c65873dd80ffc188798a4570eca792b3f2f257e", "0x01d34655b5776e24701621acb41324cacb50165e019bff1e65f98304f7d822a6", "0x16a1eedbbea79c5411a639e3bf0e90f6e3f740f141599af8e6a43a2069572f95", "0x14de448becba6ca0adb21b07455d2c2864c7b85382267026e28f0978822d65ac"], + ["0x19817db66fdb8215ecf70476c4044c3f41d78ac5a549c684e35845947dca0b11", "0x08f328e5e66c0b879b36c233f598bd8578d18e2da9f019f0411731524f42d90b", "0x259a2a1f046844724cf992aedc2635f6680f55e8a0fdac695ecd05fbc2cbbd19", "0x067d9294b4072b12c368c2816a53bb16b7e7e2a79979a416f2d02af862abedfb", "0x0e1d7ec2a54b11b36e65d7551e9a875a88ccc7a6c0470e7c26e199670a0859b2", "0x173b3b349ee888d934aee9c14e889cd7d785d1e3e4f1eb72a5c2e56c48fd54c9", "0x2977658a10de6e7921ab9e34bcf07bbca61a72549ae57d0c15691bd143d4d2de", "0x0396097733de5a1fa4a548749b73ff7c426f98d9e5ad16920614d337897f6b1f", "0x2a66defcf489c23eec5079a0ece1c5341027a59e7c592e760184b826d70dba9c", "0x10f43368c0567f405aa6aafcf367e3e68beff957c4b0cba17c30c62b3f95490c", "0x25a2a43ee612663dbd61814f2deb06ed005a7414f99825f8be66f542f95a7b2f", "0x182f1c93c6eb29867b1559c58207a6aeaf40b66eaaf579ca6bd7ca40aaeb7abd", "0x042eea616d905025147a482eb436a3b75535c9869b76d6cdace118e15c91fb77", "0x05ce7f592dca2148e198554fd64db8c479f29d23f1f16daf3cb8930d9456e4c5", "0x1844a81d4fab57aedbb4c4628e2e47fcb2922883eab0b2e1de16f248de4bb902"], + ["0x073965f7a9ba8cb33a955d42da55fd7c37a3f0226b029d36dcb3fbea95d642f3", "0x284a2f083ee32a6663081c800713e0f2395e348dcecc89fc81aa75a5db2ba12b", "0x08f78e6dc59cd4694c41abbca086569a9083ca8cc800bd9134e4d48ed9d89dc3", "0x293ca8a06c5f179d938065ea47f80f65ff21969a9429e400aa177ecf6b6ae853", "0x029b68e652deac818824da0c2a11b408d7a839a2e8576c55bfa5f1335ffc5b93", "0x09bc3e40bfe5f616fbd520f3894a0fdd37feb29429fd3a5015953171de3a70f9", "0x284181093e43419789263736e544817111fdcb559a43773f05186608acc542e4", "0x0b9d5a3a957eef251ae9c26e53423f9be6f2efc24bb18756893a9d80e56a0825", "0x04aa8e91dc30f9ca318fe24718fe595871f7897e92d57f2d87d4b1bcf9a635e1", "0x253a11c66463a6dcafd8399fca58ba27febbc307d8833c666e0d8df072c5f69f", "0x0e4fd498778c2c76a02d0d91d8f89825856e706f598337dfebbf3ca33397968f", "0x126ec8c200262c45d1133bf9da5f1e5fd62bcea1e493a080af1bd283ab86f122", "0x0cf030b10a1b4291e576ebabb39c583fea0fa6decfa98cff7a96dc06cb77da51", "0x110298fe7f2bcfdac0bcdc3affeeb436d7b3a377453ae778fabd37a9acb299a7", "0x0eef04f24ae210ee0a94bc5621574783e49d4d93365a2b3dd069fafd43055452"], + ["0x09a550431430846b6694125b5642b00607f36a1a29485361a3cf427da77eccd0", "0x19772e83816fc2c49b96427c6ad0573347fa49a5df691252592aebc390055a35", "0x2d8ec6adad3a646843c88cda01285f8f32d29c6b1025cb5421422bf8bdba7fce", "0x255b96258dc8e1644f1bcaecee773632f25a6ea803cd32a1e01f82573775f6fc", "0x186e1360041193e12f38099b0e35e767affc3410f6a8dfce9bc75567e39bc402", "0x29cb31e1afef4f252578aabd76f23a1320aac90d4a0a66c2225e3d94cc48d22f", "0x200fa20ed1b871313900c01f8b697760d030d8cc0150fdc58e04a0d8a2b344b1", "0x1a63a589d1710aa705136cb520c2f1c44d778e490c212d4b72e9f1538e5555cf", "0x133369b3bcc73ee793e869360cd50d8df60fe398ed9d9c0d0d03e669f796e87f", "0x1e99516c240d42bcaaad9c73f21a46193db8433349203035eea30398f9df7893", "0x13d84ca7f358aaffb1ee8ebae81c32e01adc01e90d09c9451af36e31af82170e", "0x05a78464a4b6bbca6e96d839827bfddbaa9d924840aef6555de643df167d4caa", "0x260ef13ac7e80fd2db3de9eb942edeef3f5e252d4c04508b1e1b130191ad0df6", "0x14829f09d4beebbe6fc30545047243fb3dab99c62aab7364a7a5b427457a02c0", "0x1328467c87ba73028921a89333bab97f8b24fcaa72f43837cbcfe5dfb7a945fe"], + ["0x068eb4e9d6e0a588b61a6ad501f380da0f009067666c0853d156e33d59c43515", "0x2dc5900039d4c8523ac379945cb9b58a54e01dbacd67f0c4baee85d353d3fe97", "0x1b72ac4374e95b7b7d28cd2909507f3006e8352d4af19e47b0b909682a03200e", "0x1f2a8dcafe79fd0ea22bb1563c3b28b23c5c4d7591d45e06744b3b379d426618", "0x19294dd22da673470377d671fabdf42cecd37ecbc018386a438706d6106b04a8", "0x1932bc6bb488b736e0d4bf306d41e622e66c1d685aa4598153054b40f75c0b00", "0x08d1d68b8437bc980aa7c59d83393b162a0827de74070d2d34b4eaedc17e7e60", "0x1c0343816b8cecba48519b59b0fb6d4a9bad309ee38311dc3e8cfe8bad75dfbf", "0x0709eab96cc6255f2ae917914f25085025490c423284916e23b608638ccce29c", "0x0c67a06b33cf73882b1c7152d4585b78223d85c77cddc2c7d3594824c5016565", "0x0740c1e9b8ed16e9fae204369c554cfb72007dccfd2530f2e34d544003ae5994", "0x02a84c424eb58f9c38b4380af38e0458468980988faa1f0d4c6e723845678523", "0x0bc367fd93ceacb599c614aa28068783a5d27eec1fc8fa1765015b76dd82f5cf", "0x0278b58503e0b9014104f8c446bed4c6de575c72d4dd9db3d1866846979aab9b", "0x0791d832e976b66bdaaff450731ff35d998595ab9748f695bb45d2c0fef06930"], + ["0x225e00a0da5a7f7496b70d0923a7cf7ff332bff06958cc0f3fad439874f6024d", "0x0cc378b44e58f668b45832fdab4a49372731ef2415c37f40b5ded5594aef3cca", "0x0d7d8273de237ba2d4d5e8051c5bd5e312d298b6726ffbd3af7e732af91dff27", "0x22ebe0a315e07be4b0928885f52449b011b3967e519e438c424cc0428c35726f", "0x02ed3cf0214f444d436655e03af8aee2b4d96961eea06e8133bd6e8d3e38234f", "0x0cb6fa0a5e11b9192a51904939d45a05af8055bdea3f379faac29d1309830e85", "0x039598a1443c009678602b8dd3474f276da5d62425083ec628a1737e8cca3e7c", "0x1af56e6575123f99c5d7ab7b83770f0fd60fb9f4038c2942644069e3c243793d", "0x0e8d9c0707dc5bf80a2f08c343c69cc659def86630af3141a003acb3d3e90c08", "0x1f6dd8e85d3597bb6d37b47a1f063122014c888250b38cf8e82e3e5471ef84a9", "0x0cc8f90bab68e6de84845da1899bfc52440bdddb940b208301ae94a95777cb72", "0x0c0dcf2b13552ec55c97166be347ca2f93b07e2a10164096d353fa280c796821", "0x001f126117a949dff900fa5d111a0ce2661bd9d5444577c491a9951cfb58192d", "0x138f67fbd9cb91ef5206d48cabb269ac42bd352cf371e43311bccad89acc509e", "0x11492ba406435f35623906ff45df11c39efb59fff09f501fb893d717e34f9d61"] + ], + [ + ["0x2b6fd7bc3a3b595c206c43daac752b765a12255c37ab51ae183933737a8b8099", "0x069b1779dec3eaded3f07d0c3e6cecd6cffe78d747faedad9c90665aa2d92cb3", "0x1fa4effc83498d19aaa598b7771f88a0554dddda89d32dcf8a6f4cf776d13b99", "0x01676f5c07417ab54c37ec8ae1a8314bdeeb09964769881592043dffcb26bf41", "0x1f4e7bbc8d42779e58aa07bf54ff324b814fe687b4c8eb81b9b7e74448ee27ff", "0x0f6b18c98fc89fbfa99a04c8c96ae5db35c296479f484b680df905d4cbd1dfa9", "0x00e6cd10883e1e11c6c191d36329f30eb0045af06c2d86d0c439f5c1f4fef54b", "0x0425a9641fb01558bc7170a2ffc24eb6a514198b296a1629cc284d983bca8757", "0x00397a7d7434b0aa941348de45aec442cd5cad2c398884950e8233c58dd50335", "0x1d66f208fc04411a1385c22e203dc08f0bac2f7cd9dfaccdec20d3b93252ad04", "0x0ec1ed3ae3beac4ddd1fdb17b9c7c648e7ec81885a07a5bcbd967e6a3676f356", "0x0b3e601e36a5d82e0214362c8419474dc1cc2c0ed8126534d69a3f790b27c603", "0x163cb4e3a5ec92e57b25b095a3aaa8cfdc4ce59267718cc6090a07e14af10b0d", "0x2dca90f3e5a15b29895f48d7a1290d7a33646b89620dd0a8ccde3aa3a51d41cb", "0x2c78ee5ea16d38f0beb9dc0733c4bb1893cb33ff671b737a1122d64f729cff22", "0x2af324ec4f9e7786dcf00439c75a294bff753e3292bbf62e66471fa730f19c79"], + ["0x111d04c083f51a6fdf87412a537f6601076d61f435094ea16946efbfa4893e97", "0x187aae261ef3ee21b37023518a071675c6d00bde82bd7f5441448abb632a764b", "0x0da28ede7f63f75596a2568b2dd7a584576e5b282f284795b1a7aa21663822b1", "0x2043bfe52d2964e4a3b2da5e30107716cc764f9b1c8ba463f215ab1f7f03498b", "0x27b48a636a39b51a938aea3eb552091559fbfbe71e096d518c40d908dd2570ee", "0x17fe75a3d11b4b9d2acf7856d6dea3bbac62ade0c501347b16864f3c73ebb7f9", "0x2326c3dca7aab6b1852654fb13fff42a152ca9632124216cc7cc6f6d37522a59", "0x080c442909227f4a9da92e33237f9a82cb0c6f7d0c4155bdea5c6517b046eb9e", "0x2b1c00ea00893f9f91331bc907397db865c37d3bc6c4b39b81cd931696fd7837", "0x092f03c7e98e61c2a85943ffaf9c04dbb0145fc2055e4d5be90bb68b90109746", "0x2a0f77bb3624fc4826c9a2a66be4ec75dbc21642a16fcc4182d2d65c0fd8d7ff", "0x1083b742d35332a8b79b80e7dc04a72f7e86692e529b6a1ec5687334b607da7c", "0x053e95f9455bc6499d447b6cedd0b6aad9cbced97ccf10060f3c9ef51e28e76d", "0x05904dae3470d40ce12749b27d646e620e8519e2b17cfa016caeb89d9e34ee6e", "0x2e563b9dc5a3d4d5a93f476b466e371019c77fd6eea506126a4f79274f2f6b9b", "0x14560083d980d172dd40c9426cff41467acea41d7f48ff11ac5fcc087ba2d5b8"], + ["0x0133c5913f25ff5eaa860d0318f6a4b4349fd22f2d53530e5c785b70988a3a88", "0x169538094d4f752529471e3fddc9ef994cfad4f96dcc7d636f0fd509b8eb9c31", "0x199835da95f6eb22c591ebe514c7f283f674fcfa1eb787dfee5781a64f082439", "0x0dbd8662511dd7000991b39da129f9d03b565a0cd2f218d6eabbb49a25f105e5", "0x0dd0c118f15ae07e5db55077dfa46e08109954d99e18d72cd2caf613920e390b", "0x07c921bf45e354848a60b0e5f292bb03c2469498b9c1e4d322f4afd1867408c9", "0x1f694d1acbaab0ea5bc026a1864d568be555b89c0f49b6134e9b895ae141da86", "0x1604de6a2db122bdd5d839540a1005ed402425bac3b85e3a72224d337402bdec", "0x25970ce31b7b10cef221267bb1be1656ec29146df06fdb5b4f6fe6607523aa08", "0x14956f80a65b01f9ee97e2eb070e9df2711cb8bcb538dd98e532636cc60782e8", "0x01d799ae83ef6552f30edc47b9e82adc0503dc4b74da40ba0bbd2cc9eb1b0a53", "0x12417c001be86197013b2b4871c4e9b0dceb83991919a9cafacfe54666f590af", "0x2171fd11f94485466a819e24d0acef08b0c87d78b46d93bb9462b443fa40cdc5", "0x22e9bf2aa02fe65e3cc74fb3d83d4e3351869bd30528c378958af462efd645ff", "0x072ea2f5cdc8a3789fbcea414a91e7b27bbfb3151df510d080ff4ef7cc73f0d9", "0x260f751c7823abae61b8f3748c84791c0bd84acf7eb6854870250178e9a52cf5"], + ["0x08875f47d6f518c8c2df51a786bf2207aade284067228f440e7d0307520a56cf", "0x0a68830f19c0a729b2f89be27373d397ae1157bf507e7799d4220166ea0982d7", "0x2af560600b3e25abcc7f78a4d6e2cd3fd99bcba075ab82b55e9841bef7b9210d", "0x11b33a9f1818ed7f581cac020051de26fe28dc0bd8cb1a4457d5a8447bdbd6fc", "0x045c617f604c1ac9fb8d76e8d380322e5a3b69fa7b7c2ae2c8ec5966d6a4c788", "0x0e6197fe502328d0ef7f9b930355312b347204b877e7f85d9b569dc34f064c1a", "0x0cdfe099e7a154278dfb6c0388b9daa1e8ff323a20be6a6aa7a8438333f879cb", "0x15ded859d501c2733feaddde22ff36fa8ae85803aec7a204f42b1f6553bcc655", "0x2d4026bfa7b37a19a300abaf2e1d5c32dbcd42240ed860f681f61dd6d6214cef", "0x0bccb669cb016d498464944f7192ecff6716e6cb5f895d2715bcbbb65b1288c0", "0x05de1099c65f08a990ac0f1f45ec2fb872c771e10275dccfa4fce1146639d0d5", "0x2c465d9b5eb852d79338b427b3184d941f34046172a82cce44e2b8e5c4379478", "0x23918075c8fa0929befc2b171f99ebe9ddd6683594ef9a83f84d4acfd9592d59", "0x15d7fba62bac57be5d97452a3c06d9fa757f144df166479ee7306967480a287d", "0x02b6f16f812ba903901355955cc4ddb99f24f1c6e26430947e51811a68311bbf", "0x0f6673b7fb4be8cdea74aaa7802c9c73ff0d53a98e94a2bc60685d890a24fdeb"], + ["0x0ba9f44a107a81cb23fba66f2bc34152728f5f5ca68406649a7efe47c9473f21", "0x018ae39086eebb98d1fc5f05fa0f87ddcb149b0afe38d1bbb85a65697895e63f", "0x101544d131454f20b549b24a65ec84f1b3221fd9b43461ddc6d156833b34c52a", "0x026f2f58d63ca6ef59bb95206ce3ed3124885ec21762bbb1db1d6a7771ec6650", "0x25b974fc5129d82ae4c6246e35f802e03440ead09995865313c8ca91c820c2d1", "0x2d409bf78bd6f6a4eca7397d065023f0bb6732207925d3ce4beef9f621da2ba2", "0x17f732cc1354b1fb476e70568d2dcb0b6683d30b02415dfd385504736aa86de6", "0x040db0defe6ba4797b74a43125cf34d86a2b33e7a22e2710b0fb7a5568893aac", "0x29e89034942414a1ff6833d6e22742d4106e0f5f37d1f2ab80e5444e5a52c9c7", "0x121d2ba5bd8f232ecf44aacf1044cd6ab6f93f1e537d7d1541754fd49f51b225", "0x0f0913eb4ee7d3c02d8ce73d1cec2b6cbb176a92129b34a294adf066243ff6bd", "0x0a0fe66c0d4de00cc7761008732a0097fb14d6465f9d1df835e0423fb207d979", "0x0898ed1ec1a43687ff6aba32de5f819434528a0752b3928331899b0646b2f061", "0x11e0b2343ef371d2d6d22805974f2539b6e510d761e0da170d0da90095a13262", "0x1d59d5c10b0c9dd347899377da35b7e677c7d39ef1b49166b974a7f2bc99c946", "0x1a15b7e2de27125f2e6a74f4ec7cd2455f1bbfaeb1155f1af819bdb5fe54241d"], + ["0x0542832ab23b6c7a4b547a1066037152a2442e998c5381ba97698413153ba6f1", "0x04c5ebc771344cc0612765710bfcb1c2e6097abc3d346f049495f7d7b7f06cb1", "0x1a51740cda5e45ea4d4bd7bf5ce5466a66a11afb5bc93cf10d5309e07d410e4e", "0x2eb6ed568377b696ad3cb237064ec68e390c24886e1f122d21d7cf3290dc6d08", "0x181589b140c9109e492fc3ec7d8ca8e3c25a7ce58df06f13ef43561d58c5926e", "0x205a6d5aab2d224b668c70fcb41582ee9ebe1ff099292b4bc50af8b292c0ea42", "0x28239a882dc7b2f3ff7b9aa8de9e3d81af736d4ee6ed991d5c6b4fa540148f43", "0x1ab15f2fde6f535e77e615c8c2602193d45860cc015849df578f9fef9a5bb283", "0x032b6266f24017fde1b281d0fe206dff30b539d5c5ba13b5312e488d8d6f194b", "0x04e358f259a33244f4058a056110a26816bbec3c76ab6a5f7be93c9e0c92f3eb", "0x25a9ac2d1ef84abd98927b52c24f38796ea60e63858ec5b50196d7e169c93b84", "0x2f521f24bc02286ae2bf8484fbbc39843886755f52bfec7d3dd5df78d340721d", "0x1dc3f7a659530a13accad181b6e265474108d8b1469266552dfbc38cb679d06d", "0x2ba39845393fcc776fd383e535d567621c7f64005a83a6f7f48222bc902092a8", "0x04730fe04e0108c9a5145a5c48e60c5457e4708522157bfe0f82af5c664d6ea2", "0x075a09e41e74de8a2ac7fef27591e76a77c851e1a51185f31e99b5e08f01cc74"], + ["0x0ba1f764367360952942ccb6edf051c8f937906a816641e0d1e9e2ed26906fa8", "0x29faa7dadc8b7e9588d4a601e77bd80aadf272a1bfec3c443ca3ccac81d9e1e1", "0x1324558b8a5d4ba61b17790128be9f2440c0085dd5d6065b88f0a3b2537bdadd", "0x18faaf1c91e002f7dbbd12f408bd5c5b92f38e02ce3635824821e0347faf53ec", "0x0ee1288b29855e2e38dd26292b39e260529841344538d6499996a32e7cc523f3", "0x2380ab051d0ac580a7d116f4a9337eb31090a4c7ecbd4e638e7717b7a52bf106", "0x158926b9e94b10fcb321b293bb8a8647627a5bd31315808d397c1c94f650f2cd", "0x264fadcc791aa18e76751a895242c30cdbbd1197a90a456dc278e10bf0bff5e5", "0x2ea014b61ed575392239bd9411c0a6c4202b7334cf2e0dd8c3040528e4a3dfda", "0x2da2603a26d4fdec35318204ba5060663e15a0b1e4d9395258d5e6eecaea8fb1", "0x20a0e3f4e1249c4c6af100dfdf63f8bdc69ec7885bcd0d2c2e98d98f9bb9d104", "0x02f1d3eed36018f9679711e030bdbae51224b5efb8b1eb1cdca8ab886212f0fb", "0x0e388bb105242406e372080e997a31392cf4ffbd9c694163fc366eae770e435d", "0x25143649c13e08d4b00bf34d2aa1a8e450f89788e27766896217047155c5bf1e", "0x12ec24239ba1b0fc9f952550a223a52d209d8d22b8b21ac24881a2719276be0e", "0x079c04944d50b4777dd0bebe953600645ceca9d65fba020f97365146bef9c6ce"], + ["0x2e0611fa4ca3985d7bfaf512f21a4081141f4ed0dc4b022834d3cb6cfd8b7ffc", "0x2acf3493012bbd818724e7ceda2431e97c8933bfaeb5d7463b512e6e8e8f7fcc", "0x13473024ba419fc2a7743e7df8fc8375aab150d3753a54250a808d66f2d06b91", "0x29437af1b14f637a1f0e39955f2604bf20439fcb2a090e346aa65a9ebe69788e", "0x206e4d445315b764280cc643b9479f49946ea86d7304b6a2c692ac34d7c98d34", "0x1382c3c24bf2489fe9efd80a163e650111f5d9885e58a9ed729dca1f9a74e59f", "0x17cd11864fd2c73d0867d37264b4ca14df935a82f2a6f432c4998135fa5f4aa0", "0x2de279fcf77a270823a91a6cd1aafb58e9e3ab32fdff0b3b05c98d554db6fad3", "0x12ced5254e260a9db7abe0cbea26396680f6e57dc07732a755d409ef751200b9", "0x0ef5f9ee6ba1ae1d1264cf1a36e0fe4b8043ab0bddf9b9c3200fb687a8ea5c83", "0x06b7e18d01b47ff8e4ef08078e8128a06693be657489492ac4195a854722bdfd", "0x23aa7ccc3751b740eec9f35a29986bc958a4dbc7c4b12eab2be8376706deb20e", "0x2273c370eb5810c03903605d7cc94d5a92af6aaaa7b844f35189e77406a7e86b", "0x2a7310e75fafe902e20287a91abe388aae8420b1ea4660dd7c159c26b9632cd1", "0x20098399725ee15d93ffd3e481e4a7b95c8c5083f9d69bff1714eea7c7d82d49", "0x02ca2bac7c1aa0c64e684123f0ffe22173923052b6a01f3c29be80137fd8972c"], + ["0x0e6f23c0ef6f159dec68341a87830fb864b6c08cb954a14a2500876697897fb7", "0x23b34612e7d052f6b312ca0e0cf70034ad232d9bf63c88821085383b6f6ec4a3", "0x13f15bc6453df6f9383446550534dc57aedb10139e3053e83bafdd99356175f0", "0x0edf86bf1b1599fe27c66f3494862d75df7764070a8263cf88778f7287938d8e", "0x1641648c26b5a2dc297daaa6d4ddb6a2f258ba738f9094e7c5cda6efa8c993b1", "0x280c4522ad0ffd92c391e94c70f87120b8341890c3329af050625f2be52f3a41", "0x1d772098b6154921db8e7506e6f0372ca44f20af3386e13bcf71ff5dc0d61b1b", "0x053ed8ad550d8992f4b9814920183dd839bf355eaca8cc7b07020a22614a808a", "0x1d4f9ba4fd8ce4ef193b9f870f44956079538d63bce344f9016ac5ed63a99a5e", "0x0d53d61c8a5214e0c4715274ad67a5d6a2cfb9fc3c1e791d41de22c8ba8468a4", "0x12cf87253913d45d287e975f2b4f5b909d16a87d89c889057f666f6ba61389b0", "0x2b088cd30a10899babc325bba32aa343d329f9a8782469c4d25f0f237ff607fd", "0x19972ffdde7898ec8be4fb28e4b19efaa43c7ee20c88e29096ebe872e1c19475", "0x1fa6944703fe0012a16ee6042529ff02bc804313ef8c6d8b0f910a75e6f47739", "0x18237af733bc44418ac84e623f483a6be28b8f21d033fbf099d645ba20f1fc26", "0x13d9035a0dc798b04dcef0f08edd241524fdca0e95ba9cac05d207bd317e19cf"], + ["0x01a7a2a4a08d87e75f720302bead7ca21c8f7c2ed2debaced9b8b1b2da461cbc", "0x11680cc6e80b0e430a4cd3607017fa8331d86c4d03a96dfc18767c97cbe0a197", "0x1314b54f8786096244532c9f054b379636e2b58bfdceb3d48dfb2210b529b4e5", "0x1336b208e00d8ebac83246a96ebdde351063fa3f635887e753a0ce3e29c7eedd", "0x1887be87f7a352410482ef3bdcf7ef17976e087eb8990c76d7e971c44c048239", "0x1f405a9483311e1497568f1bdcd6d58cd6bc813982a0e71561b620003b888204", "0x209576be72db7b0c9fe2b8329125e7dff0489a8e900a5f14c1e6e48604134264", "0x00279702b135d144ede943195269c00bf620f058bf0186ce9fff3cb38b22245a", "0x02c9c3135cf64b89eb5b714d7b2ebcd81fc7edae637cc6116591df208b6b2583", "0x252e78b4838ad5007f518bb9c6a4ce501871f71128eee3f0c9784cd64b183fbf", "0x29a7d554e9ffbee639867842fd0e7d41ea9b1bc9621b654fcb398f71c95b668e", "0x305a0c2c2c4d35998e9913829f5602504363f21bd720347350b604193e79bc3f", "0x061d78e1953d1943e2d968335b73e15fecef89075e96c943d39702b214ddc5fa", "0x261f975babd7692822473b8e39f948b9cf98730a9785de393179d4bb99dacdc8", "0x1e3d6cef37f9bdac23d1b381a6c58d0ecf06a6ebf58dfa7a995a443ed7df68e9", "0x1d6657d791831169c56b6e9a201f8b7b240246a2d0f854430489b983454032d4"], + ["0x1d8005df48c8565987dbb442b482cae5bfc10ee486ecc5b670ce861345979d1d", "0x1fa772ebde6f3732444623d67fe991116298f8f30a2d1010c8ae6132a3d6907f", "0x056a8ecd232a674c63d7b603ef8cd06321c560df2fd3f6c2649af576467fd798", "0x2646341eb44b4800d56084cb48500fac48fc533891f557e96784cc6004d8928b", "0x231f2c98bda8d48bb4a6d9c98bbbc16027235a22a1ed4f88bc8d3a6e582209f2", "0x1cafcfb62926fbc04857b0bd7d7392b8d8add16b5cbefb54b4d5312826e89942", "0x0b7ab1ef17ff6235f7737f044161902f03d594cf4a0cc67b4ffb4711ade1eb0f", "0x179a82b77f2ccb94b38eb582ac4abbb16df429ecc22471be73cc7766f96d9948", "0x18b63685f6fed2aa1904856378442151dd1fa01c7ce6121d23e1e9ee20b42558", "0x0a27a8d1af6a0460ae1724f32f21a06b036668d0a863be50fcc47fec5763ce93", "0x186756775058d09c639cdabbacd01bf3c2744152156fbf7e8f3e999fb610ed38", "0x08bd9ddd192d797a19dd1da049beb39fa6596598a27031ea1c2b28966d96180c", "0x194184a825de9e9b63ed7a7bd071253ef5903e1e75a50536db93c26311a72017", "0x2e08b28bdcc417d9643b3008085a27f4a9876792d3915c8b9da3567a6dd6ce82", "0x28e55b0bed59191216d5dbe1dd05b22c009b079de877fd54aaf5401d2c867e02", "0x1c89d8f975f0304282ad8f7bd41c12c3b18ac6b80e4065fccda423bbb3ffa786"], + ["0x28122254823f8926acb7e98f557e796282e5e1271618858e76d49d0886da16f3", "0x2e63f1740332f57e8317f2592ebd8db0812714d6604132d525e33e19b3c98494", "0x0098b740976c2a1031e75132e050bf3838b739d061582543c1c7f95c152ee262", "0x06f53c79fed9e09848e112a0742d8ae84a04bd9ba5aa2765b1e5edfb1602140f", "0x1fcea89286dc1db61fe1111606af396e98cb53dab5199750aa5e5d11561fb145", "0x0a12e162620e71beeb203be56594416b083e7e94eec23e0f44a5ffe9e159508b", "0x1b1bbf4e9f706051716a0e28990caf17573086a5d818c038836696808b12d8e5", "0x089efed00e9d993f5fc1d5af2f2b5d47a9b70e6d5a603fbaaa8f65102123efd7", "0x2b202e1d2626c6793d68aacf9c3a8fffb27cdf5a0b83ff8f3504f9ab26a43d15", "0x03048a265d0eeb40e5a531633ac22bb825f75cee9036e66a061be3d4d248c862", "0x2532dd7487fcae0dc3a7ac50b80ec330c6fb6d4cf885f1135988bf6dfc010a6f", "0x12cee8e3d1cac1ca84517ab3def487c460aec058348ff220c801b78979af9e61", "0x21c0d1874decaf90613183ea827b91c1b2951839f71f329cb9c9b0753ffaefee", "0x017e9ed191c5641d768b0e55ec0d4a85f6e5419d32f5668d397d5b6cb805387f", "0x0c6c9ec31c9e3be0744919fc555c77c0c125927bd16de2807712b35ca26dd045", "0x20829ef3df9c183f8965e49c8f315c2995a6446a76053543eb750145f1a77400"], + ["0x2414d4aefc7b4857df681328e68a582d23b2dcffd579a8e6aeed6c61050e05cd", "0x1202e349d1d7b805846e90834efc911eb6b10c2a09eaeaa29ed288bd779b14f1", "0x024b96dbebfab6d23fa32c2c8e7758cb240bacd8143323c53cdb48dc8b65f8e4", "0x2a3c9f55afacee735a1b515526426384ad044291f7691974d9c05c634b43947e", "0x0f7bfcfab17db34c144cee44636bdeadfab44a6bf4fc8ef384ec89a4ae9ed209", "0x17203c4d2e1a428a17be2c27d1c4c5960dfc6aa36f22bdde8be56a0cd44e71ab", "0x22a8ee74367413eccf7aa03fdd420c6bb6255a6dd82081d6b14eda9a9752329b", "0x21e25f0a7f8edc38de25ba605a86cc08e08ccb03e77c5e0b9edabe74768b60c0", "0x06a78dfde1458ee341a089c15f953a2193527dffb43f552cdad595da7c6fecc6", "0x03fd94e51bbda6843d31a282530d54240aa496165d644d5d7737b1e5a7d60d52", "0x02efe529db1de3c01d6fe7fb8a71f1eaab6af1641fb1f7aad4f2b88cd13c9fe5", "0x0cab504b22a3573d09509f85d3fbd94e94417acb25392342bacd684006c37185", "0x1cb33ad2ba7dd0c2063443432a847bccce775a8daf868e0c474905a4fa36d70e", "0x0aaf37d1f53dd0556e347ec705962379077cd543198e1c27593f4454521261f7", "0x2a607facd3936fdd0e84e9bc3e4b4bac86e8102c2b5ad15cae550d28b3654e73", "0x14a2bd5a56f87009db981546533202f3af812d2ef4d6b037f2830853b9f9039c"], + ["0x2f710c72d6da19c7d87cbffd55665b472b0265d13e2326a9a33b96e95d3746b6", "0x168fdc32d4aa8dc9034ad4a4fafee89f0ed5c980d3db424d38f8ce5cd04c237c", "0x15bbd5619f0d59790804f2b9b37e069fc909a2796d1f77d0c62609deda2d0278", "0x1e16e9ca2502d696023bce3427244ad6553ce86bbc4c349a34ba61067c6b6d6a", "0x01dd0a5502743aaa9f583bd0ad35de13ad8d5fc98f1961f2612ad4c28fd9f9fa", "0x0ed2cfae7b36f470a7d1f6940f914e8ecd322bfd6b50f9ad9f6a2226e7a95db4", "0x2c785f9d8834f5cf5d08f106d5f9918340fd414abe24f0a9ff2b8e0492b44d83", "0x0d8dbc3fc854c0665c30c48846d7bb0eb18d3d78a4f70fef07f242e45b865eaa", "0x22f62e45e50084696ac2512a25db9925244cf0214b6b543d3a9f83b8e8e58ffa", "0x2f26bc13ae48520a439c9f546abb35a1222a307e38fafc3e7ffc843f6c77d7ad", "0x0af825f7ca24b4a285f544762d9defdc99f2b85c1b89fc5ff2079d3d50e6d4ea", "0x160590968429f480f55611c6448912fdf423d37bf483c36acccc1ac9a29d2a53", "0x2bb32cf60f8d469edb1b6c56493d4c9338b4051ae2514d4b6082ef18b1d5228a", "0x2a4a72e9dfe5bf25f6fde750a1847e5b44298ba58fb504be57a595e7fccdc404", "0x0c509a4bf48ad76e90410bea34a8919741608bbbb6b5503c93e732036f079d12", "0x199733da4aeed8d6cd148461617e8e46de22d3720431fc1605619b12a7fd4e2a"], + ["0x2e285441d0bed90bb41d6480836850e4d76da8211b04a236dbc7c3c30320c00e", "0x0b9ae9f5ee6ad70a651b4b66e34f521b130d18c49464d86fe5d4b1820489028f", "0x04760054bd5d07132548bed7657f17c61c038ebcdfdd4025c7b802e08948e108", "0x02a4c6d3259779c396ef8173ae5fe87bd611dbe25d1c048ada96306db1e3a40d", "0x1959db01f5c8bb0cf483490373e75b0451b87b43e59181be0b6016674f3f5efb", "0x1849cd0910d72eacc32d891b71faf500bcb93e1cef2504af443b94f8b1ce7212", "0x04b5dc2057b88170a718a102e0ca9177afc757ee26773a0290c6bab159ca4fb9", "0x17bdf338072884b522ce3c50ef4711091b9daf48a43374bdc0a830c37e5dcdc8", "0x2d9379e69b178208b8496b8a0a0a90d578b21f090c53042be4767e3c10d3b40e", "0x014057d02e5ebcf33c166e18fe904defa9e342a19e88d42336377f1c5e67ec30", "0x17818dd0254b291d0d8f4f1a458c6a21d8841153661812bbe986b1403cf270df", "0x1c95c2917353c53b4cdb7f750a0fe86ce10f8d5bdb018032d3f793797d7c0a35", "0x02495b3c1bfec60741808149333fc43f04d79dec56582c292829ffdfb3c1a3c4", "0x2adec8549dffde7238b2bda6e7732990a911700c8d35288baa39e67015953231", "0x178074303b90d8985e376584b8b8dfb7f952f8f4cf84d815f90baaa3b644c4c6", "0x1f5fc060028ba07d11fc9477f4faffe79a81040ea9a04c568267644895e6737f"], + ["0x2964901a2b42e9aea1a6593662aeb9e12077a287434bda4ec2012e36a19dc95c", "0x06c2194af72fac58ca13a2a5e3223104ef49a540fd2eaea0d67a920d8567040a", "0x0a5494c9bcfa06aa72c36fd22d98fe72dc14dc0e4e74e03d1755f38ac34050ad", "0x265ca211180b012c378e0198f0b5f7758c155e3675fadf92ca79156bd56fe339", "0x21f659fedaf6c2617f17d637cd6f54a27782f4e8431f87af5c8591932ce7dab7", "0x1e463ae3f4c3bd047aa1049f4f091a2f1d5d3550e3d5801fcff68f9a5e6828f4", "0x27412191fa2b2e5327a11d290e4b439a4124f48145c61ff4ece8448a4373eadf", "0x0b3a769c8b371562260395ee4f348f88bb056a2f0ec0f98e4e633bf7d943615f", "0x1adb4c87433d866e8fe5ae26d01477e3962879c20c8c3a170c0727167c06d0b8", "0x1fc26ed027db7b9e7241c2c760176662f634ba05a9ca7a850e184ae588cbe215", "0x10175fb6f81b16436af30682f36fbab396eddb7829a50e946c75f27e260987c7", "0x23d300373bb8ebf7dbcf314a3c0b1fdecd5cae23f7e7bb915bcdb6a6782b57fb", "0x0f0417fa6237167e741525261306c17664dc3efa9247aa0d4bcfff38e89dedee", "0x1e8fd20a8030fdd94e2c4353d8f82b4b212bf887bc59615814890b0f92a47d90", "0x18572826385dfc6eeca4d3c71d110b04abae013c5450d9e4947a3d019bb41b6f", "0x208b7c8c1ff8422d4a1bd13a02a94681ce217d925f40d2875f73def14de7a220"] + ], + [ + ["0x196b76cefdcc7f6a54c71d40114a0bb82694c936f1573ac7ac1ea3fcce1fe938", "0x1440dc2578f44694d18c25f892d98c23cfdb87a772200020e897823d4bc84d3b", "0x23aeeb0c6499b84bfc32ae3c42df9728798fd2ef774f1518b870bc57d1385900", "0x1ed9d3e9276acb7b4dae53eba148806fd9bb07b2dd06187212fab7dcbe63d72c", "0x2ff57f3f7e95b03411db790a86647467581197124d217520ef2e6332a5b35185", "0x15faefbf8584a38969b4a719ffe5f02c2191a8cceda0b775162203d30b80208b", "0x1e6eaab1191593de0d89cbb2399ab8aa955d829ad959428cd539be30b72fde9c", "0x2a3bb020c8a50d310ef5b5c77cc408b077fe2481454754c4568ff668fe5f0974", "0x051f815c454b6015c7ebf90c297b90e9604cd36acc6af07f99b5e51fdeb32234", "0x28b75c2ac167fdf184725317c7bbb8083e5ac5bba937bcfa6cefcb69e4048bf0", "0x023af324599683d9b71b61d093d63dcbbd97e44957333d2697fdd060c1e4b585", "0x05a07868a7c95f50a015879fe7cdf1eb6c317e4d489d4515208ddf40a32329ea", "0x2c5b4a65bc55ac5fbeebde53ce5fa68882faed2a92a7b3f5732832c72f7f2c30", "0x173f895e472c4eb16a2aff3b8e0417fb32b83eb1e3233471c76a0550505d0607", "0x206cb038cc328526d0c3dc5af19437d83219751c5ee8f61b0e9e2f5881366be3", "0x0240c57897161666f28d000b88d3353921d967420f401ce86bbee42be287a4f8", "0x1aaefc2e9925fcd453996fda804063fdab276b37c5f51dfdfef9255b4ec10cc0"], + ["0x130fc54477fd953377fc23abbd7a41be6764892a8787c759c1440fe0133c852d", "0x065e134cb8d84447d6ea1e17932bd4a341ebef2568313c24594faf9d7eca2110", "0x0e76c40392bd5f458bc187be54099312a0fefff44b441637020eb92670a6fcf3", "0x0b981765ecae69dd7af3b10ffa424b8aeb206cc4f49257265c6753b1cc54ebcf", "0x0e4fb044a9fcb4087e351341f25d98b1399b576e2d6654534f348219a0acdf86", "0x303e39ca88e8da6e5c963564712df8a7f8501a7af4a990e4ccec19e5f8fc805d", "0x01b77995dbf30cc55f9d4cd4849ced949349da81239a015440fdb38b876abee5", "0x23643add30be204734d029cf034c958144551060c1901c420a28c9688ec36a80", "0x1946a26ab8953f9be558105fa5179f175e76a24429dad5d532c2ceb3cfea05c9", "0x248b533f875e5ee8e751cefa4b1d0732fcd30151c3a5cc4abbbb1e93b4655d45", "0x2e7a1c51da61dd214a1789d6f1ee2957f69d21b1f16d1f9458eb25a406500bd3", "0x2065e374edb1f3cbbd2919dc04d14adb07062dd01ec1501b85522e7e0faf925e", "0x2f36535a83a09cf09fc38a20a725477aec56668f034a364a9f4a5605fffd33cc", "0x1123d3c97ff8e6b589d118bc40ca0b9ac12ae909558f2582551f7a42345b4621", "0x160b30c874d9c06704c92c266c7a5b7fd966a62a5db008f1bffdf443b1099a82", "0x1361d27c42a7b4bd6eaeb98a339592616c0d4d8fceadfdb16468162bdfa88d46", "0x00f1e8f86860c3b5c78bc14dfb67d22c6beb8992123658842f23f75ae3a92e99"], + ["0x2c9c91f48661771baeef6774578a78f69c355c8e907156fdf26db39d2446413f", "0x2c6b133e80abef84904fa4a75f968fbaabef890286d5fd11b87a1e52b7eb6d0d", "0x2ce8546cb59f420ede61692e764e0e9f6715b16a2c8047cd8131c97646f50d24", "0x0adaeaf28776b813d518f645c793e57bf16067fd80eb921dd5a67e895646c9c4", "0x2086a01b816438a2a41c59e43d73fa9aacf0c24e4f6bac229d65fba59922554a", "0x2348580de49aac01ce8fcb5aa2b467f6787dd8a96ccecd6fb47df7d5a4307398", "0x1fb6bd6df650d27e8cac05ac0b45eef0700e308b29b4bd41eecff58027edc45c", "0x03e9718237c1700d7dd213e026f307e8000b3851467fed9e6f51fa5020c2369c", "0x00925af35a3366801ac80a31d63f745fa807bda10560345ad572bef4cf2ce0d6", "0x0f8692d64a5b69a956c4e2006bfec344477fdf5f0c9aab866609842b9d75269d", "0x2bdfe7eb4fa803bc1dc0052a46d850ee3e091eba8a7f12579682f6f6fd5044d4", "0x13bdacc137bbcf51d8bc9d281931d6e71122dc6e93e7ffe8b835e3393775c3d4", "0x07d78ce0c1c87391a06a06c83d300d52524b29f183884e300e0eaddacd05f068", "0x0984c132b29a05f2b506ca07c06fe9a6584f36bb87506d2d316a4f353cac5f1f", "0x1b00faa85136b1bfc496e0ea9a6284cae525aa96612ffeeb514808955693879e", "0x19e1e46536704ceceac3eab991bd806e347be40a0b7956dcd7037352fdbc4347", "0x19c2540bbb1cd4e08f105437063c945cfef28ae9dd50b97e0b795f8dc5ae34e2"], + ["0x1dec0bafa3e8190621e5e095ef751ea03c836dbb8045b2a73f8d397cfb815192", "0x27c72332f59a00135baa94bde294911d135d1d95f53c52eb8b3b95594374906d", "0x16e64661144d816885b32f3f7809703477788268d57c14b1d939a26b29cb7ef3", "0x2018db386a3e4e57eada8d91408b155061df050140fb22f9a4f34fb4e2d02428", "0x12263b7e3f3de60899a2c22fee919972cd79dc289a87f31f1b44baf2439dc87c", "0x10e420edcb6da76170b24d777ce9d31612edb1593ea6d30e8cfdacfb6974f991", "0x0ebcb358f95f84b719c631d4045cef03ac6fc238f6834522cebd02e47411bb6f", "0x0c48e2f304f730d48e83dae5c78a46188500bc8040a49542eea5ef1a21b9d222", "0x00e766f03afbb7af630eaa8aff4fe60f3810f30f3f4438498efe0186333dadc0", "0x1b8a7909d7e7bd4f0bcc8003968e384ac2e8b405ad05cf610364d3ecb982db7e", "0x1d92e4213d840a330ecbdb08693dbf9a971bbd6229047eb88a03f334cadef227", "0x0d3b3fb86a44b7422429a249884c85644af1975641206e610070c02ef5a9f4cd", "0x25c7e8faf6c48a156cb91d81a997c6673d32694a3fdd64f5e9594e9f504bad83", "0x2d7af834c9cdf1b38c8cfed218f1ef0ce0b9908de9e7aa7a5510c4fb917a0281", "0x175af5e50e5685ec2dbb1cf7a2cd25d45680f6cddf68d7c0795dec98b87f6a71", "0x121f4a18d7b7d9650aab625ebe8695a8079439f2ab00c090279de74726234e6e", "0x21f08f9b3c23f3a02518114a96929b6d1056eb4d1db147ce0c8882e1b0f7bd1b"], + ["0x0a5f52ad6ec4a8aa377d8dd2ae3aaf6eea0c68c63a1d034fbda67133ca0b85cb", "0x087488f735b1fe2fa3c6c7148c4968e7f3479b1418a1a566743c1ca215dcfcfc", "0x06cf0db92f86b2732ee5fb881ef0176012dc4adfd849b9be4de17846a6ce5d99", "0x067c4411745db6c6aa659ec737a586a8f4a1cde0352e30aa0063794865fc1c04", "0x19909241cac50288c0d12343e0c12cf9b9790b405ef0a9001aa6be0289063aa9", "0x01d25b94bb7c49c0170ee1fb2a5824b70e4554bcc54b6c8f8cc0cc9d74f19a5e", "0x03274e735db2faf186787528254272ee01967e6ae9d825141378b8354d843965", "0x0cac320362e235b458d6d364cd0fff914f3c056adbb038dc2a861a49f7f70e24", "0x1111ed7a66ba2ccd4bea0d43eec86ea35ab40253a1209e3637f103dcb84fc429", "0x13e736cc70b7c828a38dd6394ece76b9ccdae2ca4f43963432502fe8c2ad19ff", "0x1f2805084976b142f7c74a416ff439ff1bcd8b8e7b0570130040754a61b71912", "0x27aa50a0e5d5588c1486e8e7fc8dda65489fffb866756c218f87e7280cddfa64", "0x1f3cc6f65d9d34370825a38fd1f48f509f7c56171b9e7a624d9b0ecdf6ac4eab", "0x1b11713791ea4cb2e17c8c5867502043d0a8cf955384c1c793c506b75fc0db29", "0x104560e95c49febb7a030862edb3a33c2b2a3d414b0536b2e54e25ab36e8f281", "0x08c45f3c4c486f6b5378c779c607b517200bb70b5533bdacef18519f625b925b", "0x2d2193c677bbcd56a74fc2ae50ab4f2cc69aa77ccfc33c7707452d5adac77edb"], + ["0x20ab7394bfdab344cbb6f2123800a0e23508e2125bfe795ab4a767cecb4d9306", "0x19f0e2e141896eae6d56d182b687b8a6c64cbb59e031b749f35822fc7ee353fe", "0x18f754a95b0af0e4706ff9024bb135164abd6fc16ee40cc2d6852d88a2ffc9f7", "0x193fe0e9b48010fa319c33b86b6b18f428f323fa237ca918a38faaa91ba49567", "0x011ff091dd551b6d586203ee0cafae2f7652e923aba82574a53b632a066f4884", "0x1da3e00601ca3fc0d90b197bd2a474b46efe3aff3b2cfaf1ebe15fa1afadf2db", "0x004ef41945559c1fb0b2116cb2be1f043bfce8dbc96feecccda47cbf68be59b5", "0x2f053fdf1a72d6ad8c9df97a04d637916f25e3425b6dc33e99ca7cac5cc7e4c7", "0x1daf74842c7e79104349ad399592c5c4cce16f79e1a86f50d941598772cca953", "0x2ae8da8d0b129a22f834d0d234c8917c2f877ff00dc16215498d4b748fb40df1", "0x099b0a6330926a4a1564dfe94f9a1104bb8374bb518a89de08c591c17dfaa059", "0x0b9aebf041146c119199757ea8ceee5abcea9ec42cdb28b921caf21e84847851", "0x055ef271e388278b1aca34d3cb00116bd6f7cb584b3c69f0de2a7afc8d98deb8", "0x26fbf1a351963fbbdab590dbd760ce6284273525a1b46c41f29226c65339f4b3", "0x12fd67863b2e03b6fb45224fb041ff280e936742b54c8e54d3823e090e144169", "0x00600cf26635b2d546431507589739010d1b757ceaae617bf95b8e1efa98643d", "0x0f528f5912be49455d4323b259e30ce2984d8170601eeb4bd7096b47353ab7fc"], + ["0x110ea322b0c26476c67bfa2c1b9d1713f93b3b9cf8320ce0dcd4b64288bda07a", "0x299c47f1e3ecc557ab1c9abe36f0d2ba0ece01051e07f0858e97a9ce16f5664e", "0x1cc053a6a4d6f96da77e5e73adb9d49bc4d0ef2cc2f69fade48040b7f8d71386", "0x09558ecc58bee4f3c578f62489dd900840a9889096c0a62114aa2db045a1d033", "0x093d7d5563e3ccd0b5f15a9b093fe6b863aacccf9af11ffea9b295b7dd42b1f6", "0x045dc0579ca66e7e096d4dd86b882e68af2d35d70cf5e3b1783caaa0ec424253", "0x0da02f6410e24058a1e90412cd5302c57197f7b1af2a99496f9cff3ffd58808f", "0x2dfb6dd598ada57ea71a8d68e6924608f0ec7838808688ee4b3fcd521f7be6d2", "0x1057062b40bdcf1fe2aaef45898c871146799a92c87d0fce64302d6bc83172df", "0x26e6d18aea75a94861a02333b5364ceceaa78adfbb742817218ca3af607b910e", "0x0565b96659025935d9c025c7ab20b1611db00b67ecc51426b342f8c7a17fed83", "0x2776bde52a1259472c1cc020e719f82191dec3ab7699b7d0fd769dd3fe392997", "0x0c1a324c49d15f87931821989b8c8437ea9eb46ed3aacf8895fd1cc311053e60", "0x27e68568e9cffd07f9253ef9dbc356251dc6b2d6a903d6c7046b5e90e1bcdc9a", "0x1db0e7e01722aad210e5296c36e9103e82d15765c318134d177146a1d9fd5358", "0x0aef8a4e47d5ec760e0565ae7acdabe7e8e98972de86dd2f447aaf216ab4cc17", "0x08c00c4e5b3467f01901f64f9f89c15bb0b90918d488b730cacc3296691e9200"], + ["0x054eabe6131681fa01fbc6dbf3e7d53595d0f8809987182142b890ac8af89cbe", "0x1a4befe11c0230c62de44ffafea0de903ba328c6d67af73680312b68f9acffda", "0x01e40665f5bb8c5c0dc9c11f39d47e9d33e717afa31ba74f92f8737a55efe134", "0x23c4abfeb83192362aae21b2e9ee5cfc765bf1000f798c3ae70133556abc78bd", "0x1669e44bf0223a77f48fffbc9f4f20b5814f6185ae11a210f8fdfcb5f71d603d", "0x2d5b3f523a9668cbe4887881bf7b40184f978713e358de270d87a600e5c5c92f", "0x10c1856f282f556d7cf6d4a293621506724ba6d3c582e4c261842f2a4bdb0ec6", "0x22cc4349f6baa3a8e0b61fc40ab97210e4bd3b3dec7f05bb8ef839c84692afbc", "0x12d019e37cd1bd76fee065bb7380a9bd8331a4dbcd1c9c776792bc19045c23b6", "0x27aa38fa051c434189df57bafd80723ee29bdccd59fbc1aa9af11891d3722e61", "0x0f0b9336db5c16d472fda3fb9ac13b13394c09ab9f484ecf6ad2060217b5896a", "0x275a6f59623354d71d38b4e200ce2e9676aab74ea8b8366fce33bdbc47d0586d", "0x02ebb6730d7bafeac23fc0b457ea824eeea3c55eca634bf24b2ac2a9a21483e1", "0x0ff215eb1e38dc67432e262df27eda7c3aa9419d5b6e299bd948e970fc35a62f", "0x247f9c7fa610322535feb0676cff549f1c177d0d39d3f1eee642e9253aafb82d", "0x2ad0bd9f71e2785084aa0b84616b7dada053207c418e65f4035be66a0cdc8c12", "0x0fc3ccef00d6a64080abbed4fed90b69c5e5803134c22b42cdca0a60f03ec33c"], + ["0x224d811fbdef8ec0a006d376a019e57c93bd596213a07823b7d4abce1fd8e621", "0x140762d30c5c3a0b0750b1400a86a9e2f5cfc2531b729370f3ad9fe1dcd43f96", "0x0976d7c3844bc8deea0f0337f89b2a131302ffd2d0a870181ca5fd5fb6d4fb63", "0x0152604201ca7df05994e9d5f058f3b6749cea63aa0cb5b4e1c3a00b6667958e", "0x1ab6d8fe39f87bb0ee5b883eea2725caa52c575740d5ac30b058f77113d05239", "0x1b62ba8037a83f1261544c307f019dbea1cc6a84d481ea8960b0fc670745e8ae", "0x239abc7c9f866aec28685c26f4e046a92d4360d36cb50890f422e18ed6f8a7b2", "0x02fed5a03200417664537df8fa30276b85d91bd2ed21de33d901fb4d82439857", "0x0996cae74d9627ca3c56c646095f39730274d25e82c42ce21cf789253d48a3f0", "0x304dbc0936862356e0024b2a32dfa3085abedbd337f22b89062be614d83cb083", "0x2a7de8f5ff476d81d393f1d274636ca956f05bd422bc9f3cc0fac0054b58cb02", "0x12c6f6c83a3530faced60c88f19a82fd12b7d938a79864ed20a545a52fdce11d", "0x201e03f1ff672629473a24f32d2d502acdc8fdd2883014de74c98f40a195b3e4", "0x118c3efe920c9c3f907c867743d35d2ccbff7c89e9c31bb6a17c552ef92b6c01", "0x0f705feba5f01cb27b27c104bc93f0c974f561fa26d5614f6a9d9e47d03bc655", "0x28d327a1c2d6012d9e69e9a3b4c11ad336d3c0dcdff4c5c84ddddf911eb645f5", "0x1bce67f4dc99547f2caff1b5c6d63e3ee2565a404190664533c1c65dd9d8d532"], + ["0x0e691fca423128a7d4afcaa582b1a94799ba1f5d2a5d53bc2bba56bbecb227a1", "0x180aa4babfa7539753d9c222e5e3359aca59e06bbefc7cf3a3ffa4f961fa1d5b", "0x2c54287eee368d5d52dfb068282d68e6b09b76bd1b5c9333b36848ac277744f5", "0x2f65361a4aed320fcd03a45c44dda740213571f3975ce20b96bffd960cbc6e25", "0x235bf178b5b56262d988bfc62708b0f85d57385cde2b4dacf9e6d592deb2afe4", "0x1794ec2b0eeb22fbd753b21fcd949e7bedb305f15a59eaf74a961c3046635f85", "0x083e1cd5943461ab505b200311bde4003fb4f7ed16aa58c8bc28f2e08e9f6922", "0x22a67a88776982d6a15f577dcf780ac485ebaae6fdf6fbe50b95ea266a7b6059", "0x2d1188d9e7e6ac24c4b2c9dc3dfcfb0fe4782d689f31b94b1fb15ef29d11f19e", "0x265c43c886f07d025200d56cd246b01670b3e82ab482f5879b10608cc05a37fc", "0x0f26d05e938f8317bd608eff0895d352dca712b653b1492f8c2ea96b26f9381e", "0x257689a4e22f6a8768aafe54218d31de4e409fdbf42319582536bb583313a395", "0x1edc57f174e1322b627c6f9dbe27ae2703c3f11c364b38188bf41d8ca0c1709a", "0x17b39f38636d5eff5e06eff089eb56051a602bc8f4bf1bb0ad2b2cd10cf07138", "0x306094ecfe63300b2f95bc98a0406c7898d86852330a7b69f9b04b5404b3eef3", "0x11afecc85590543bd2df8ab952be164670a3f32593e962d4bd493bcd3c84f84d", "0x1a8ba4f37d2315389c8560d74dac572a4447a02145516287053e6b9edefbca2d"], + ["0x189e279c92de0bab66707e6e6e310524e615cd4c6aacc665372a3b8e372d8ce6", "0x17208ea9cd4dc1a6deebe6a8d27a3181ab5f86c6a706e6fd007fc1eb678e9de6", "0x228a3488cabbf9f29efc0bce211a09031972b37f25ea35aca840dc2331a0cf35", "0x22122c6313fc9a4c6d0f944d3ce238272bf35147b1b788aab2b8dbceb6024c76", "0x06649a13e65023a713aaee5387d388e3609ae9b14ba4da10642ee0b7b4a16634", "0x1ed4c95c6283b45ec0cd88f511976f063ea2beb0695b8af7cc10589593a7978c", "0x15fe62a69b0438294395da1bfc93272d88797ceeef666ba2443f0c146f8ab7ee", "0x2b079a1d09b9d4a76d4e50c45c01fb7508b1c443a8fb21ebd28533e05def8864", "0x0c34496a7db5abb330b2f6ce9adaef5ae6e308c8fc2c5634097ae352aa7457d4", "0x04ffe27a92cb4300e774388edc3147ab9dcc4ab354c380f51ca7a2e7fe0463c4", "0x28b73b335c72f0774871a2030d444e5fb954979c1c568e112fb911a46c666768", "0x195821b99af2c217404ee582e29889072ba3cd994b74955c261b5ad364e5a9c7", "0x20a56fce37122b7400ab61a65eac815dd180f52fad2835f7fd9649063523881e", "0x235132912db2da07a4750c5ed5df2590e718404aefc48be6953432f64424042e", "0x1059db5e97f25826b0bbefd6bfaa6e9496c55ef5a88fefe9712691f6fbdf4298", "0x0b050c882073a581e767223705cd9510c04c30168c50ffe0c9875a28b6938299", "0x115e60c4e2937eb53c6e4a5488f801266e84d07547a0b1cd91b18f49efef9920"], + ["0x1d9bcbbd17b93b1913d2f79cdf12844441237206f0294746d93f8e5bdceb4725", "0x20007a0f5d37798789e0a8ef683536d9cf4831a6566eb727b41191d9f2974710", "0x16bae49f5ebb1ffe886b634d215de61ebf4f44d1cdc4f84670df8ed69310bfe2", "0x229aa5b547a63780d8d129e209fdb92f85662616d59da908075e668fd817822d", "0x29a5b1e4e2f25445496adec230ed53a35993b37630aecb5d76e56608d1b78cc6", "0x0bfce7b120068b9a30029dbdb36be01d071e8163fa1724f13c6ca89be29b729e", "0x20055568b33367bc12bf4aed7a0909c173588a5763c6a1a7598ba7c6c7e3c2a5", "0x2df1ff86644fcc42a1932cf15d314eed407608246f14a8098725ff7be809c87e", "0x1d4fb0f18f31c8270b4636e6b5d7a33e455b1050de1164182cfcb739cce965da", "0x19d6f1d110d9f873db002ff2ed828905bd6cc5d7921c238d7569daa9b2401d32", "0x282a01e8f2ce09cbdd862f98fdaba3f9af02443edc962cb34802d04477de1e20", "0x304b679008e8a1f09448423a05889e0df663a2b65055ca9ee5a99dfe13fb9a16", "0x1998147edaf3a92ab179c61ac2c36af5caf3e78bcbfb684cfea15db17b835907", "0x028a4572cb654261cf9358435923e65aff8f40393752748b76acfd2e3f5755c9", "0x15bd998c2729dbeaccc29b5d6e4f0fd96ad0a6037c84a1a1a785169fb336fb6e", "0x07cdf3309e130f9ceddd688af3885369fbacf6d8a44de4d450667c0d7641213f", "0x152d47acb9b06c9d12c2138a31416bbbbb991a65dc4d4f8ef91a3dd728e63b6a"], + ["0x1179184635a9780ee1312dcc3d15c7ef042b18ae9409670e28c4c7f0fb9b608e", "0x229da441a302929b0bae93741b7c75e11337c797e5721f9d7ee59235cda9a40c", "0x2e269dc78f70f9103b2bced3edbd41e156e64910887b4dddf8a3eee960f601b7", "0x21a91fed8bed14914c4fd491b6fa4dcbae7b3b8b3d456303af886c328abf4699", "0x29f07c1effc65b5589e1ca52cbe00bd65ef5e962d01200302670b6dce79eeb00", "0x0506a7a5de6b56ebec5e708a70a3cecb3a2cfd25e7a20ed495e295a93023c5a8", "0x0c02b148f4a1559b597cd320f00c02b96a7fc7c83811bd86a1e79cc3106b2201", "0x24a466f74e99a602894f421010f43a81c708b1b4ad076425190b85347f685b1a", "0x1fee18888425724970bd2897b54c7fa8e9c367dddbc8484da37864faff9f9056", "0x19711c41d76f64a371aba62f3f46710dee0c3aad217b7cb00bd12613b24ef52b", "0x2770d14a220152fa7083040be9b3cd38c8ace9e207073486bcfafcad706748b1", "0x08dffe684aa33f911d35e9a644b4bdbfcd15a4da49b6531816b60e8ce4f6b5e0", "0x1cbfab7cb05e2f28254b230bfce017f005fb4f2dd8935ad11765b347d2003667", "0x21d7269a53d3712b20543b0039aecc9466520133d299e8442000b33184a39e84", "0x21fde580a19886b13358f18a32d5aff685b4bd77d94f067f44f6e7a93350fd2a", "0x05232bf95807e48ad82a1eb4bc481e9b0720e95196dfe361f55c4d1cfc7926d7", "0x13602646b88ba31c0d544c757bd9181727835dbe690c30583a23f37f52fe5e3d"], + ["0x0e48466182ae8333af1891a6aa19736741ed0680d57c931ede13fc07ae82e88b", "0x1137b5c61b9684bec41e4dfaa76438256622a4378ea4e646a2844bbc85bf81cc", "0x1f4b85552b960d1c18b7b8f66af7305a6773d9b05faf51e0ed1a5f2ef2f95e7d", "0x0ba8a54914886fae16700c02efdf7767413a0bec5a19ed0cf0a7d8ac60c1f1c3", "0x30289c9678c0330f85cf8e362683a6144f22b841aa08f586f219dd9edaef78bc", "0x04890048fcdbde6366761cd58fcc6ac0a3360d9a64233d3ea4d8d6be8a23ec45", "0x1a4162e8a7704447be0c1d4d5cf2f777670f4841ea27ac2709cd6bffeed2cebd", "0x2e944b449c1369ce9766fa6f4f99a87630b5c1f2d63677a437a537d61b6c7470", "0x22d6e787f44daa6b6593dfde5576d2fdf5dc0447e65a1d5e7712e4e62c3bdcee", "0x0e08ddb69d5efd949c3d671e4e78e4fc7628c65ec1cfbc18ba6a101aa19dbf66", "0x27a573036509a8a29a90eaa34d2adaed5ed1ec6b207274f3c5ca23dad3880e57", "0x072372083f62195bcc2b5afab1038198a3f0546b62d171ea21c37c8f31551176", "0x151e0bc2110e4300dd82a4c92442c4751c65b294426c8c320c69e61831958ceb", "0x13f1acc389c4f8e752cc7e4b81c37ae2130c60df9c8b7e87dc5fb7459caf4916", "0x06823a9baa55623732b02fa270b2f887fd3804a85c1a7f2a355df3fbefc69dc1", "0x1e41936e6bc0c3ed665c2e2466ab9216b9973fe136d9f9aad95878c1b5607c6e", "0x065766d2980331a55c0a39d83be78bd127baee77d53a24268e064c71daaf2b6a"], + ["0x1c9d56f71c2f22c44d3a8c17bf5b40452e05471f0b6dfe9ffe4725eb29f73464", "0x113003c1dc7baf35e4536f95f4eab2f3badda2c7a1c6b5afc956234ade3e7129", "0x0d5fb9b0e1503f2b92697c473b69cf76d38fc12912e2c3cb33996dbb0cdfaa38", "0x2e164a524ee22eb5a8903fae1f35a3a78f882f3e3a9892b6ff4753baac934949", "0x01f9dcbde7d058134a510a711d036d1f1800e473a63b33a7e0fb04dc2e09e3af", "0x285b20799970b58c63ac9f4af564ce0f28209b61802214da5bfafd0cf24c6712", "0x0ce3dd727fdd11a8bc731500effa23763089ce3332cb730f9fe57146ee204810", "0x01079746ca51d9518a0c309296ca48206292798910494277be2bb65a6b134b3a", "0x23a85d4f91eda69f310c451d7d480c2f40c0d53382ddd3fcaaae627b9617170e", "0x240657d67f92b5e4261ace434fd286206c315565378ce8b81661523f0e6ddc54", "0x2384a384bcc2c4a17ff7c9e3e7d131d39173c431333a9c7c1d6fd7110e25902b", "0x25547b51b2c6874e4538ca9b34093b714ad36a8f356e4c78e0d66b1f190038fb", "0x0e59e1a990ec00f72edc37248349d7a5a6f7bcaef158110450f1e5985f0a5d99", "0x066c6090936f6b054f17dea91682954332b3e32d8f20a0ae171d417316d3622f", "0x1b25662843b0986ab1a4e9a766193efca47c70d49364f03d50c5edb5b5517ebe", "0x2647635477ee5fa9e7ac5983f92db34d7336646c63c63e2dd53d60b8714bd759", "0x26db2e85a9006ef5c11cd675a267d42efef9f5af90466b2aaf75eea8024b00bb"], + ["0x2234546f5e8541e8f72ad794891950b32b1cd891cc66775c5b635961642e9c15", "0x1b61468fab59c925f1986186bcb97965a858523a2582d434319a9525ae71158f", "0x011291ef514a10d6f0651e4ad0da5d4a489e3018927879da942defdbdf701ddd", "0x2df2fb2c2e321e3cce13d16091705a40c5c795f8b41b61dfd6ae7d97d63578b4", "0x01baaf8ff96bb2224bc34cf80c38bf13086f1e429bceec12090d8a7c376a9a82", "0x07b0d70ccff1b70dad9bb4b0142e3f6dc5bc95d3766affad378cc5042484dec9", "0x11f28ee5da80d19e31581b566a439537466d9ca7fdf14b7086830bd8ac13c4cb", "0x0013d7b03e8fc9fa647fca6cdca97146901df7c675a164913c2bd2a3b6ee3cb4", "0x2440e786179a7fbcfe8d29ab18d0fc6cfa383cfb747f7a2d15b77d82d9b0d9d3", "0x056149221712b88ec291fc218324142d02873cdd53199679fce4dfcb5dda9116", "0x162c5bbc81b44427be4e82c5e5253bd66c3054f5c5b73b28b29238487849a794", "0x178f2aa8df9a11ef33558dcc934971f7697e626cfef00ffcdeb6f3c9c1a7d10a", "0x24afd92f80e57788f40fbb2b79f29454dc485fbafb5a7263f462b7c84b4e500b", "0x0492ae5f5ac2a5102ea96e60ac8375553687151ae44042dbf5899232c8f2100a", "0x10dcb11f815c7e29c66be1dd3c5f7602c98e9fb1687c2d825b48789c521fbd0b", "0x0a11d587cb75d48544eec662ad27ca6acfec98f7a8b7963a294e4bb329b170df", "0x1dd6b095cb68459dcf6bdadd434aa81f80a55a08e6782c653a93afd8a65f3267"], + ["0x14c09d155c5d428198c234b553da338f227cbc12b0e42f2b9ce71563ee1495c0", "0x117fd528770fb17f718e29a2d91a63ec7c39ef1dd3039f0943f717d1804253d5", "0x120e7416d74308e24047f6828c68ae28bc288b216e8a25e8b0ebcf738480e390", "0x06995e510fd7669374c39d27903f342ac5bf8a1464807f308bef610b76cb693e", "0x1d814b3c17656c2327f94cc02472780b886b88394f1a5cbe34dc4f44ff134fce", "0x03b90da34b198cbca17e34aac98b169875ecf73aeb5c6ff1f00c9fe535aa9902", "0x27fa77a0658791e6755781c367683f9c9333a41364f7870edff1935a347485d8", "0x06d6ee531ba3fdced05e24cf9103d0962dd227f1de692c0199483e92ab24ba59", "0x1e507921be7c76124879ffce5b62dd0e96259e98cc64c27208d62b40bfe3e482", "0x0681adaea79cf457db5701931f0ee2f15ecbb159ed50cf746a15b85c6f8a5370", "0x1e6196147508bf2edc872c4e897a967778b119f69fb431a7f646d2018eab4010", "0x068efa35bc620124ab7d88990171bae4102ad21dfddfb387df0de0c8a3a189e9", "0x1b012224a4f050df841122d17c5ea4eded7c8ec2034743a432a2cee893976f29", "0x208d814151bcdcddfcf835a958c259a6477bfe4b3392710edf9d80787a25c5d0", "0x28f901fcaa860b0dc4192adef8ea4ae55af6ce432c85e0ce4d073e514ab24252", "0x1bd639879731823c871f9cd4714e3cc56a6eb19884b73664eed24b11929119a0", "0x1d3ee85f078fbeecda2473efc2bedd1ba7ec6f4795faaeae3b0de48d3080c625"] + ] + ] +} diff --git a/packages/macisdk/tsconfig.json b/packages/macisdk/tsconfig.json new file mode 100644 index 00000000..737ad361 --- /dev/null +++ b/packages/macisdk/tsconfig.json @@ -0,0 +1,38 @@ +{ + "compilerOptions": { + "esModuleInterop": true, + "resolveJsonModule": true, + "skipLibCheck": true, + + "declaration": false, + "importHelpers": true, + "lib": ["esnext", "es5", "dom", "dom.iterable"], + "moduleResolution": "node", + "noEmitOnError": true, + "noImplicitThis": true, + "preserveSymlinks": true, + "preserveWatchOutput": true, + "pretty": false, + "rootDir": "src", + "target": "esnext", + + "experimentalDecorators": true, + "alwaysStrict": false, + "allowJs": true, + "noImplicitAny": false, + "forceConsistentCasingInFileNames": false, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "sourceMap": true, + "strict": false, + "outDir": "./build", + "skipDefaultLibCheck": true, + "module": "commonjs", + "allowSyntheticDefaultImports": true, + "isolatedModules": true + }, + "exclude": ["node_modules", "**/*.d.ts"], + "include": ["./src/**/*.ts"] +} diff --git a/packages/macisdk/yarn.lock b/packages/macisdk/yarn.lock new file mode 100644 index 00000000..245dea91 --- /dev/null +++ b/packages/macisdk/yarn.lock @@ -0,0 +1,2667 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@adraffy/ens-normalize@1.8.9": + version "1.8.9" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.8.9.tgz#67b3acadebbb551669c9a1da15fac951db795b85" + integrity sha512-93OmGCV0vO8+JQ3FHG+gZk/MPHzzMPDRiCiFcCQNTCnHaaxsacO3ScTPGlu2wX2dOtgfalbchPcw1cOYYjHCYQ== + +"@ethereumjs/common@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.5.0.tgz#ec61551b31bef7a69d1dc634d8932468866a4268" + integrity sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.1" + +"@ethereumjs/common@^2.5.0": + version "2.6.5" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30" + integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.5" + +"@ethereumjs/tx@3.3.2": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.3.2.tgz#348d4624bf248aaab6c44fec2ae67265efe3db00" + integrity sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog== + dependencies: + "@ethereumjs/common" "^2.5.0" + ethereumjs-util "^7.1.2" + +"@ethersproject/abi@^5.6.3": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + 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" + +"@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + 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" + +"@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + 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" + +"@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + 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" + +"@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + 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" + +"@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + 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" + +"@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + 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" + +"@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + 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" + +"@noble/hashes@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" + integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== + +"@noble/secp256k1@1.7.1": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + +"@sindresorhus/is@^4.0.0", "@sindresorhus/is@^4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + dependencies: + defer-to-connect "^2.0.0" + +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + dependencies: + defer-to-connect "^2.0.1" + +"@types/bn.js@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682" + integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== + dependencies: + "@types/node" "*" + +"@types/cacheable-request@^6.0.1", "@types/cacheable-request@^6.0.2": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" + +"@types/http-cache-semantics@*": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" + integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + +"@types/node@*": + version "18.14.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.6.tgz#ae1973dd2b1eeb1825695bb11ebfb746d27e3e93" + integrity sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA== + +"@types/node@^12.12.6": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/pbkdf2@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== + dependencies: + "@types/node" "*" + +"@types/responselike@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + dependencies: + "@types/node" "*" + +"@types/secp256k1@^4.0.1": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" + integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== + dependencies: + "@types/node" "*" + +abortcontroller-polyfill@^1.7.3: + version "1.7.5" + resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" + integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== + +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +aes-js@4.0.0-beta.3: + version "4.0.0-beta.3" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.3.tgz#da2253f0ff03a0b3a9e445c8cbdf78e7fda7d48c" + integrity sha512-/xJX0/VTPcbc5xQE2VUP91y1xN8q/rDfhEzLm+vLc3hYvb5+qHCnpJRuFcrKn63zumK/sCwYYzhG8HP78JYSTA== + +ajv@^6.12.3: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + 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" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +assert@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" + integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== + dependencies: + es6-object-assign "^1.1.0" + is-nan "^1.2.1" + object-is "^1.0.1" + util "^0.12.0" + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + +aws4@^1.8.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== + +b4a@^1.0.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.1.tgz#9effac93a469a868d024e16fd77162c653544cbd" + integrity sha512-AsKjNhz72yxteo/0EtQEiwkMUgk/tGmycXlbG4g3Ard2/ULtNLUykGOkeK0egmN27h0xMAhb76jYccW+XTBExA== + +base-x@^3.0.2, base-x@^3.0.8: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + +bignumber.js@^9.0.0: + version "9.1.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" + integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== + +bindings@^1.2.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +blake-hash@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/blake-hash/-/blake-hash-1.1.1.tgz#b6251600d7812dd5097f96cb341ceae245bf9d12" + integrity sha512-V93H+FEJuXXZi1eEsMtbcBFP9oL5Ept7SLw3cbXYlPC3nocm9Fr4m18ZhbhdJrZVS9J/Z0oNE4L3oDZvmorHNA== + dependencies: + bindings "^1.2.1" + inherits "^2.0.3" + nan "^2.2.1" + +blake-hash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/blake-hash/-/blake-hash-2.0.0.tgz#af184dce641951126d05b7d1c3de3224f538d66e" + integrity sha512-Igj8YowDu1PRkRsxZA7NVkdFNxH5rKv5cpLxQ0CVXSIA77pVYwCPRQJ2sMew/oneUpfuYRyjG6r8SmmmnbZb1w== + dependencies: + node-addon-api "^3.0.0" + node-gyp-build "^4.2.2" + readable-stream "^3.6.0" + +blake2b-wasm@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/blake2b-wasm/-/blake2b-wasm-2.4.0.tgz#9115649111edbbd87eb24ce7c04b427e4e2be5be" + integrity sha512-S1kwmW2ZhZFFFOghcx73+ZajEfKBqhP82JMssxtLVMxlaPea1p9uoLiUZ5WYyHn0KddwbLc+0vh4wR0KBNoT5w== + dependencies: + b4a "^1.0.1" + nanoassert "^2.0.0" + +blake2b@^2.1.3: + version "2.1.4" + resolved "https://registry.yarnpkg.com/blake2b/-/blake2b-2.1.4.tgz#817d278526ddb4cd673bfb1af16d1ad61e393ba3" + integrity sha512-AyBuuJNI64gIvwx13qiICz6H6hpmjvYS5DGkG6jbXMOT8Z3WUJ3V1X0FlhIoT1b/5JtHE3ki+xjtMvu1nn+t9A== + dependencies: + blake2b-wasm "^2.4.0" + nanoassert "^2.0.0" + +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +bluebird@^3.5.0: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== + +bn.js@^4.11.6, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + 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" + +body-parser@^1.16.0: + version "1.20.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== + 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" + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + 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" + +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +buffer-to-arraybuffer@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" + integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@^5.0.5, buffer@^5.5.0, buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bufferutil@^4.0.1: + version "4.0.7" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.7.tgz#60c0d19ba2c992dd8273d3f73772ffc894c153ad" + integrity sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw== + dependencies: + node-gyp-build "^4.3.0" + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-lookup@^6.0.4: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz#0330a543471c61faa4e9035db583aad753b36385" + integrity sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww== + +cacheable-request@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" + integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== + 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" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +cids@^0.7.1: + version "0.7.5" + resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" + integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== + dependencies: + buffer "^5.5.0" + class-is "^1.1.0" + multibase "~0.6.0" + multicodec "^1.0.0" + multihashes "~0.4.15" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +circomlibjs@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/circomlibjs/-/circomlibjs-0.0.8.tgz#c2d1130d2d99fbb22f3d40ac19f347d768eace76" + integrity sha512-oZFYapLO0mfiA+i2GU/V7bRNEEPjVcwV4M444nU5lNsdSJpqLwD57m9zxTD5m/KeY7WQ3lEAC9NNKEPQHu7s1w== + dependencies: + blake-hash "^2.0.0" + blake2b "^2.1.3" + ffjavascript "^0.2.38" + web3 "^1.6.0" + web3-utils "^1.6.0" + +class-is@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" + integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== + +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-hash@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" + integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== + dependencies: + cids "^0.7.1" + multicodec "^0.5.5" + multihashes "^0.4.15" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +cors@^2.8.1: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +crc-32@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + 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" + +cross-fetch@^3.1.4: + version "3.1.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== + dependencies: + node-fetch "2.6.7" + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + +debug@2.6.9, debug@^2.2.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +decode-uri-component@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== + dependencies: + mimic-response "^1.0.0" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +define-properties@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + 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" + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.62" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-object-assign@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" + integrity sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw== + +es6-promise@^4.2.8: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eth-ens-namehash@2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" + integrity sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw== + dependencies: + idna-uts46-hx "^2.3.1" + js-sha3 "^0.5.7" + +eth-lib@0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" + integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" + +eth-lib@^0.1.26: + version "0.1.29" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" + integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== + 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" + +ethereum-bloom-filters@^1.0.6: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" + integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== + dependencies: + js-sha3 "^0.8.0" + +ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + 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" + +ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.5: + version "7.1.5" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== + 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" + +ethers@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.1.0.tgz#de9c3acbb865fda6c080e80ec88ae0aada046947" + integrity sha512-aC45YGbvgXt7Nses5WsdQwc1cUIrrQt32zeFShNW7ZT3RQCIHBnd4nmbE5sJmrp70uTdwkRHkr4cZr1D/YwFPg== + dependencies: + "@adraffy/ens-normalize" "1.8.9" + "@noble/hashes" "1.1.2" + "@noble/secp256k1" "1.7.1" + aes-js "4.0.0-beta.3" + tslib "2.4.0" + ws "8.5.0" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +eventemitter3@4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== + +evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +express@^4.14.0: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + 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" + +ext@^1.1.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +ffjavascript@^0.2.38, ffjavascript@^0.2.57: + version "0.2.57" + resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.2.57.tgz#ba1be96015b2688192e49f2f4de2cc5150fd8594" + integrity sha512-V+vxZ/zPNcthrWmqfe/1YGgqdkTamJeXiED0tsk7B84g40DKlrTdx47IqZuiygqAVG6zMw4qYuvXftIJWsmfKQ== + dependencies: + wasmbuilder "0.0.16" + wasmcurves "0.2.0" + web-worker "^1.2.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + 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" + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + +form-data-encoder@1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96" + integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + +global@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +got@12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-12.1.0.tgz#099f3815305c682be4fd6b0ee0726d8e4c6b0af4" + integrity sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig== + 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" + +got@^11.8.5: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + 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" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +http-cache-semantics@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-https@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" + integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg== + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + +http2-wrapper@^2.1.10: + version "2.2.0" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.0.tgz#b80ad199d216b7d3680195077bd7b9060fa9d7f3" + integrity sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +idna-uts46-hx@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" + integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== + dependencies: + punycode "2.1.0" + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== + +is-nan@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +is-typed-array@^1.1.10, is-typed-array@^1.1.3: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + 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-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-sha3@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" + integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + +keccak@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" + integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +keyv@^4.0.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.2.tgz#0e310ce73bf7851ec702f2eaf46ec4e3805cce56" + integrity sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g== + dependencies: + json-buffer "3.0.1" + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== + dependencies: + dom-walk "^0.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass@^2.6.0, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + +mkdirp-promise@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" + integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w== + dependencies: + mkdirp "*" + +mkdirp@*: + version "2.1.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-2.1.5.tgz#78d7eaf15e069ba7b6b47d76dd94cfadf7a4062f" + integrity sha512-jbjfql+shJtAPrFoKxHOXip4xS+kul9W3OzfzzrqueWK2QMGon2bFH2opl6W9EagBThjEz+iysyi/swOoVfB/w== + +mkdirp@^0.5.5: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mock-fs@^4.1.0: + version "4.14.0" + resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" + integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multibase@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" + integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multibase@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" + integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multicodec@^0.5.5: + version "0.5.7" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" + integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== + dependencies: + varint "^5.0.0" + +multicodec@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" + integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== + dependencies: + buffer "^5.6.0" + varint "^5.0.0" + +multihashes@^0.4.15, multihashes@~0.4.15: + version "0.4.21" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" + integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== + dependencies: + buffer "^5.5.0" + multibase "^0.7.0" + varint "^5.0.0" + +nan@^2.2.1: + version "2.17.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" + integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== + +nano-json-stream-parser@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" + integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew== + +nanoassert@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/nanoassert/-/nanoassert-2.0.0.tgz#a05f86de6c7a51618038a620f88878ed1e490c09" + integrity sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-addon-api@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== + +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build@^4.2.0, node-gyp-build@^4.2.2, node-gyp-build@^4.3.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" + integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +oboe@2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" + integrity sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA== + dependencies: + http-https "^1.0.0" + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + +p-cancelable@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" + integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== + +parse-headers@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" + integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +pbkdf2@^3.0.17: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + 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" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +psl@^1.1.28: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" + integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +readable-stream@^3.6.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.1.tgz#f9f9b5f536920253b3d26e7660e7da4ccff9bb62" + integrity sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +request@^2.79.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + 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" + +resolve-alpn@^1.0.0, resolve-alpn@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rlp@^2.2.4: + version "2.2.7" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== + dependencies: + bn.js "^5.2.0" + +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scrypt-js@^3.0.0, scrypt-js@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +secp256k1@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + 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" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +servify@^0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" + integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== + dependencies: + body-parser "^1.16.0" + cors "^2.8.1" + express "^4.14.0" + request "^2.79.0" + xhr "^2.3.3" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^2.7.0: + version "2.8.2" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.2.tgz#5708fb0919d440657326cd5fe7d2599d07705019" + integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw== + dependencies: + decompress-response "^3.3.0" + once "^1.3.1" + simple-concat "^1.0.0" + +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + 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" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== + dependencies: + is-hex-prefixed "1.0.0" + +swarm-js@^0.1.40: + version "0.1.42" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.42.tgz#497995c62df6696f6e22372f457120e43e727979" + integrity sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ== + 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" + +tar@^4.0.2: + version "4.4.19" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" + integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== + 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" + +timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +tslib@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typescript@4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-set-query@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" + integrity sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg== + +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + +utf8@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util@^0.12.0, util@^0.12.5: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + 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" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== + +varint@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +wasmbuilder@0.0.16: + version "0.0.16" + resolved "https://registry.yarnpkg.com/wasmbuilder/-/wasmbuilder-0.0.16.tgz#f34c1f2c047d2f6e1065cbfec5603988f16d8549" + integrity sha512-Qx3lEFqaVvp1cEYW7Bfi+ebRJrOiwz2Ieu7ZG2l7YyeSJIok/reEQCQCuicj/Y32ITIJuGIM9xZQppGx5LrQdA== + +wasmcurves@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/wasmcurves/-/wasmcurves-0.2.0.tgz#ccfc5a7d3778b6e0768b82a9336c80054f9bc0cf" + integrity sha512-3e2rbxdujOwaod657gxgmdhZNn+i1qKdHO3Y/bK+8E7bV8ttV/fu5FO4/WLBACF375cK0QDLOP+65Na63qYuWA== + dependencies: + wasmbuilder "0.0.16" + +web-worker@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.2.0.tgz#5d85a04a7fbc1e7db58f66595d7a3ac7c9c180da" + integrity sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA== + +web3-bzz@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.8.2.tgz#67ea1c775874056250eece551ded22905ed08784" + integrity sha512-1EEnxjPnFnvNWw3XeeKuTR8PBxYd0+XWzvaLK7OJC/Go9O8llLGxrxICbKV+8cgIE0sDRBxiYx02X+6OhoAQ9w== + dependencies: + "@types/node" "^12.12.6" + got "12.1.0" + swarm-js "^0.1.40" + +web3-core-helpers@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.8.2.tgz#82066560f8085e6c7b93bcc8e88b441289ea9f9f" + integrity sha512-6B1eLlq9JFrfealZBomd1fmlq1o4A09vrCVQSa51ANoib/jllT3atZrRDr0zt1rfI7TSZTZBXdN/aTdeN99DWw== + dependencies: + web3-eth-iban "1.8.2" + web3-utils "1.8.2" + +web3-core-method@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.8.2.tgz#ba5ec68084e903f0516415010477618be017eac2" + integrity sha512-1qnr5mw5wVyULzLOrk4B+ryO3gfGjGd/fx8NR+J2xCGLf1e6OSjxT9vbfuQ3fErk/NjSTWWreieYWLMhaogcRA== + dependencies: + "@ethersproject/transactions" "^5.6.2" + web3-core-helpers "1.8.2" + web3-core-promievent "1.8.2" + web3-core-subscriptions "1.8.2" + web3-utils "1.8.2" + +web3-core-promievent@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.8.2.tgz#e670d6b4453632e6ecfd9ad82da44f77ac1585c9" + integrity sha512-nvkJWDVgoOSsolJldN33tKW6bKKRJX3MCPDYMwP5SUFOA/mCzDEoI88N0JFofDTXkh1k7gOqp1pvwi9heuaxGg== + dependencies: + eventemitter3 "4.0.4" + +web3-core-requestmanager@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.8.2.tgz#dda95e83ca4808949612a41e54ecea557f78ef26" + integrity sha512-p1d090RYs5Mu7DK1yyc3GCBVZB/03rBtFhYFoS2EruGzOWs/5Q0grgtpwS/DScdRAm8wB8mYEBhY/RKJWF6B2g== + dependencies: + util "^0.12.5" + web3-core-helpers "1.8.2" + web3-providers-http "1.8.2" + web3-providers-ipc "1.8.2" + web3-providers-ws "1.8.2" + +web3-core-subscriptions@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.8.2.tgz#0c8bd49439d83c6f0a03c70f00b24a915a70a5ed" + integrity sha512-vXQogHDmAIQcKpXvGiMddBUeP9lnKgYF64+yQJhPNE5PnWr1sAibXuIPV7mIPihpFr/n/DORRj6Wh1pUv9zaTw== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.8.2" + +web3-core@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.8.2.tgz#333e93d7872b1a36efe758ed8b89a7acbdd962c2" + integrity sha512-DJTVEAYcNqxkqruJE+Rxp3CIv0y5AZMwPHQmOkz/cz+MM75SIzMTc0AUdXzGyTS8xMF8h3YWMQGgGEy8SBf1PQ== + dependencies: + "@types/bn.js" "^5.1.0" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-core-requestmanager "1.8.2" + web3-utils "1.8.2" + +web3-eth-abi@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.8.2.tgz#16e1e9be40e2527404f041a4745111211488f31a" + integrity sha512-Om9g3kaRNjqiNPAgKwGT16y+ZwtBzRe4ZJFGjLiSs6v5I7TPNF+rRMWuKnR6jq0azQZDj6rblvKFMA49/k48Og== + dependencies: + "@ethersproject/abi" "^5.6.3" + web3-utils "1.8.2" + +web3-eth-accounts@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.8.2.tgz#b894f5d5158fcae429da42de75d96520d0712971" + integrity sha512-c367Ij63VCz9YdyjiHHWLFtN85l6QghgwMQH2B1eM/p9Y5lTlTX7t/Eg/8+f1yoIStXbk2w/PYM2lk+IkbqdLA== + 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.8.2" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-utils "1.8.2" + +web3-eth-contract@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.8.2.tgz#5388b7130923d2b790c09a420391a81312a867fb" + integrity sha512-ID5A25tHTSBNwOPjiXSVzxruz006ULRIDbzWTYIFTp7NJ7vXu/kynKK2ag/ObuTqBpMbobP8nXcA9b5EDkIdQA== + dependencies: + "@types/bn.js" "^5.1.0" + web3-core "1.8.2" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-core-promievent "1.8.2" + web3-core-subscriptions "1.8.2" + web3-eth-abi "1.8.2" + web3-utils "1.8.2" + +web3-eth-ens@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.8.2.tgz#0a086ad4d919102e28b9fd3036df246add9df22a" + integrity sha512-PWph7C/CnqdWuu1+SH4U4zdrK4t2HNt0I4XzPYFdv9ugE8EuojselioPQXsVGvjql+Nt3jDLvQvggPqlMbvwRw== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + web3-core "1.8.2" + web3-core-helpers "1.8.2" + web3-core-promievent "1.8.2" + web3-eth-abi "1.8.2" + web3-eth-contract "1.8.2" + web3-utils "1.8.2" + +web3-eth-iban@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.8.2.tgz#5cb3022234b13986f086353b53f0379a881feeaf" + integrity sha512-h3vNblDWkWMuYx93Q27TAJz6lhzpP93EiC3+45D6xoz983p6si773vntoQ+H+5aZhwglBtoiBzdh7PSSOnP/xQ== + dependencies: + bn.js "^5.2.1" + web3-utils "1.8.2" + +web3-eth-personal@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.8.2.tgz#3526c1ebaa4e7bf3a0a8ec77e34f067cc9a750b2" + integrity sha512-Vg4HfwCr7doiUF/RC+Jz0wT4+cYaXcOWMAW2AHIjHX6Z7Xwa8nrURIeQgeEE62qcEHAzajyAdB1u6bJyTfuCXw== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.8.2" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-net "1.8.2" + web3-utils "1.8.2" + +web3-eth@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.8.2.tgz#8562287ae1803c30eb54dc7d832092e5739ce06a" + integrity sha512-JoTiWWc4F4TInpbvDUGb0WgDYJsFhuIjJlinc5ByjWD88Gvh+GKLsRjjFdbqe5YtwIGT4NymwoC5LQd1K6u/QQ== + dependencies: + web3-core "1.8.2" + web3-core-helpers "1.8.2" + web3-core-method "1.8.2" + web3-core-subscriptions "1.8.2" + web3-eth-abi "1.8.2" + web3-eth-accounts "1.8.2" + web3-eth-contract "1.8.2" + web3-eth-ens "1.8.2" + web3-eth-iban "1.8.2" + web3-eth-personal "1.8.2" + web3-net "1.8.2" + web3-utils "1.8.2" + +web3-net@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.8.2.tgz#97e1e0015fabc4cda31017813e98d0b5468dd04f" + integrity sha512-1itkDMGmbgb83Dg9nporFes9/fxsU7smJ3oRXlFkg4ZHn8YJyP1MSQFPJWWwSc+GrcCFt4O5IrUTvEkHqE3xag== + dependencies: + web3-core "1.8.2" + web3-core-method "1.8.2" + web3-utils "1.8.2" + +web3-providers-http@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.8.2.tgz#fbda3a3bbc8db004af36e91bec35f80273b37885" + integrity sha512-2xY94IIEQd16+b+vIBF4IC1p7GVaz9q4EUFscvMUjtEq4ru4Atdzjs9GP+jmcoo49p70II0UV3bqQcz0TQfVyQ== + dependencies: + abortcontroller-polyfill "^1.7.3" + cross-fetch "^3.1.4" + es6-promise "^4.2.8" + web3-core-helpers "1.8.2" + +web3-providers-ipc@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.8.2.tgz#e52a7250f40c83b99a2482ec5b4cf2728377ae5c" + integrity sha512-p6fqKVGFg+WiXGHWnB1hu43PbvPkDHTz4RgoEzbXugv5rtv5zfYLqm8Ba6lrJOS5ks9kGKR21a0y3NzE3u7V4w== + dependencies: + oboe "2.1.5" + web3-core-helpers "1.8.2" + +web3-providers-ws@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.8.2.tgz#56a2b701387011aca9154ca4bc06ea4b5f27e4ef" + integrity sha512-3s/4K+wHgbiN+Zrp9YjMq2eqAF6QGABw7wFftPdx+m5hWImV27/MoIx57c6HffNRqZXmCHnfWWFCNHHsi7wXnA== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.8.2" + websocket "^1.0.32" + +web3-shh@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.8.2.tgz#217a417f0d6e243dd4d441848ffc2bd164cea8a0" + integrity sha512-uZ+3MAoNcaJsXXNCDnizKJ5viBNeHOFYsCbFhV755Uu52FswzTOw6DtE7yK9nYXMtIhiSgi7nwl1RYzP8pystw== + dependencies: + web3-core "1.8.2" + web3-core-method "1.8.2" + web3-core-subscriptions "1.8.2" + web3-net "1.8.2" + +web3-utils@1.8.2, web3-utils@^1.6.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.8.2.tgz#c32dec5e9b955acbab220eefd7715bc540b75cc9" + integrity sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA== + 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" + +web3@^1.6.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.8.2.tgz#95a4e5398fd0f01325264bf8e5e8cdc69a7afe86" + integrity sha512-92h0GdEHW9wqDICQQKyG4foZBYi0OQkyg4CRml2F7XBl/NG+fu9o6J19kzfFXzSBoA4DnJXbyRgj/RHZv5LRiw== + dependencies: + web3-bzz "1.8.2" + web3-core "1.8.2" + web3-eth "1.8.2" + web3-eth-personal "1.8.2" + web3-net "1.8.2" + web3-shh "1.8.2" + web3-utils "1.8.2" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +websocket@^1.0.32: + version "1.0.34" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" + integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== + 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" + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-typed-array@^1.1.2: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + 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" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@8.5.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== + +ws@^3.0.0: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +xhr-request-promise@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" + integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== + dependencies: + xhr-request "^1.1.0" + +xhr-request@^1.0.1, xhr-request@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" + integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== + 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" + +xhr@^2.0.4, xhr@^2.3.3: + version "2.6.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== + dependencies: + global "~4.4.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== + +yallist@^3.0.0, yallist@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== diff --git a/packages/subgraph/.eslintrc.json b/packages/subgraph/.eslintrc.json deleted file mode 100644 index 21b855cb..00000000 --- a/packages/subgraph/.eslintrc.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "env": { - "es2021": true - }, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "prettier" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 13, - "sourceType": "module", - "project": "./tsconfig.json" - }, - "plugins": ["@typescript-eslint"], - "ignorePatterns": ["node_modules", "build", "generated"], - "rules": { - "no-console": ["warn", { "allow": ["warn", "error"] }], - "no-restricted-syntax": "off" - } -} diff --git a/packages/subgraph/.gitignore b/packages/subgraph/.gitignore deleted file mode 100644 index c81539a9..00000000 --- a/packages/subgraph/.gitignore +++ /dev/null @@ -1,61 +0,0 @@ -# IDE -.vscode -.idea - -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Dependency directories -node_modules/ - -# Parcel cache -.parcel-cache - -# TypeScript cache -*.tsbuildinfo - -# Optional eslint cache -.eslintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Yarn Integrity file -.yarn-integrity - -# Generate output -dist -build -generated -docs -gh-pages/* -!gh-pages/CNAME - -# dotenv environment variables file -.env -.env.test - -# Optional npm cache directory -.npm - -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* \ No newline at end of file diff --git a/packages/subgraph/.lintstagedrc b/packages/subgraph/.lintstagedrc deleted file mode 100644 index a6328f89..00000000 --- a/packages/subgraph/.lintstagedrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "*.ts": ["eslint --fix", "prettier --write"] -} diff --git a/packages/subgraph/.prettierrc.json b/packages/subgraph/.prettierrc.json deleted file mode 100644 index 1b2511ff..00000000 --- a/packages/subgraph/.prettierrc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "semi": false, - "arrowParens": "always", - "trailingComma": "none" -} \ No newline at end of file diff --git a/packages/subgraph/abis/GrantRound.json b/packages/subgraph/abis/GrantRound.json deleted file mode 100644 index c0654a78..00000000 --- a/packages/subgraph/abis/GrantRound.json +++ /dev/null @@ -1,1178 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "uint256", - "name": "_voiceCreditFactor", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_coordinator", - "type": "address" - }, - { - "internalType": "contract ERC20", - "name": "_nativeToken", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_duration", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "maxMessages", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "maxVoteOptions", - "type": "uint256" - } - ], - "internalType": "struct Params.MaxValues", - "name": "_maxValues", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "uint8", - "name": "intStateTreeDepth", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "messageTreeSubDepth", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "messageTreeDepth", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "voteOptionTreeDepth", - "type": "uint8" - } - ], - "internalType": "struct Params.TreeDepths", - "name": "_treeDepths", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "uint8", - "name": "messageBatchSize", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "tallyBatchSize", - "type": "uint8" - } - ], - "internalType": "struct Params.BatchSizes", - "name": "_batchSizes", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "x", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "y", - "type": "uint256" - } - ], - "internalType": "struct IPubKey.PubKey", - "name": "_coordinatorPubKey", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "contract VkRegistry", - "name": "vkRegistry", - "type": "address" - }, - { - "internalType": "contract IMACI", - "name": "maci", - "type": "address" - }, - { - "internalType": "contract AccQueue", - "name": "messageAq", - "type": "address" - } - ], - "internalType": "struct PollDeploymentParams.ExtContracts", - "name": "_extContracts", - "type": "tuple" - }, - { - "internalType": "contract IRecipientRegistry", - "name": "_recipientRegistry", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "_recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_voteOptionIndex", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_allocatedAmount", - "type": "uint256" - } - ], - "name": "FundsClaimed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bool", - "name": "_isFinalized", - "type": "bool" - }, - { - "indexed": false, - "internalType": "bool", - "name": "_isCancelled", - "type": "bool" - } - ], - "name": "GrantRoundCancelled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_stateRoot", - "type": "uint256" - } - ], - "name": "MergeMaciStateAq", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_numSrQueueOps", - "type": "uint256" - } - ], - "name": "MergeMaciStateAqSubRoots", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_messageRoot", - "type": "uint256" - } - ], - "name": "MergeMessageAq", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_numSrQueueOps", - "type": "uint256" - } - ], - "name": "MergeMessageAqSubRoots", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "components": [ - { - "internalType": "uint256[10]", - "name": "data", - "type": "uint256[10]" - } - ], - "indexed": false, - "internalType": "struct IMessage.Message", - "name": "_message", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "x", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "y", - "type": "uint256" - } - ], - "indexed": false, - "internalType": "struct IPubKey.PubKey", - "name": "_encPubKey", - "type": "tuple" - } - ], - "name": "PublishMessage", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "string", - "name": "_tallyHash", - "type": "string" - } - ], - "name": "TallyPublished", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_voter", - "type": "address" - } - ], - "name": "Voted", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_messageSubRoot", - "type": "uint256" - } - ], - "name": "batchEnqueueMessage", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "batchSizes", - "outputs": [ - { - "internalType": "uint8", - "name": "messageBatchSize", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "tallyBatchSize", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "cancel", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_voteOptionIndex", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_tallyResult", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_spentVoiceCreditsHash", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_perVOSpentVoiceCreditsHash", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_tallyCommitment", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_spent", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_spentSalt", - "type": "uint256" - } - ], - "name": "claimFunds", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "coordinator", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "coordinatorPubKey", - "outputs": [ - { - "internalType": "uint256", - "name": "x", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "y", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "coordinatorPubKeyHash", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "currentSbCommitment", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "extContracts", - "outputs": [ - { - "internalType": "contract VkRegistry", - "name": "vkRegistry", - "type": "address" - }, - { - "internalType": "contract IMACI", - "name": "maci", - "type": "address" - }, - { - "internalType": "contract AccQueue", - "name": "messageAq", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_totalSpent", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_totalSpentSalt", - "type": "uint256" - } - ], - "name": "finalize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tallyResult", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_spent", - "type": "uint256" - } - ], - "name": "getAllocatedAmount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getDeployTimeAndDuration", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[2]", - "name": "array", - "type": "uint256[2]" - } - ], - "name": "hash2", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[3]", - "name": "array", - "type": "uint256[3]" - } - ], - "name": "hash3", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[4]", - "name": "array", - "type": "uint256[4]" - } - ], - "name": "hash4", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[5]", - "name": "array", - "type": "uint256[5]" - } - ], - "name": "hash5", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_left", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_right", - "type": "uint256" - } - ], - "name": "hashLeftRight", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "uint256[10]", - "name": "data", - "type": "uint256[10]" - } - ], - "internalType": "struct IMessage.Message", - "name": "_message", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "x", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "y", - "type": "uint256" - } - ], - "internalType": "struct IPubKey.PubKey", - "name": "_encPubKey", - "type": "tuple" - } - ], - "name": "hashMessageAndEncPubKey", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "isAfterDeadline", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "isCancelled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "isFinalized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "matchingPoolSize", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "maxValues", - "outputs": [ - { - "internalType": "uint256", - "name": "maxMessages", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "maxVoteOptions", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pollId", - "type": "uint256" - } - ], - "name": "mergeMaciStateAq", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_numSrQueueOps", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_pollId", - "type": "uint256" - } - ], - "name": "mergeMaciStateAqSubRoots", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "mergeMessageAq", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_numSrQueueOps", - "type": "uint256" - } - ], - "name": "mergeMessageAqSubRoots", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "mergedStateRoot", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "nativeToken", - "outputs": [ - { - "internalType": "contract ERC20", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "numSignUpsAndMessages", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "uint256[10]", - "name": "data", - "type": "uint256[10]" - } - ], - "internalType": "struct IMessage.Message", - "name": "_message", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "x", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "y", - "type": "uint256" - } - ], - "internalType": "struct IPubKey.PubKey", - "name": "_encPubKey", - "type": "tuple" - } - ], - "name": "publishMessage", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "uint256[10]", - "name": "data", - "type": "uint256[10]" - } - ], - "internalType": "struct IMessage.Message[]", - "name": "_messages", - "type": "tuple[]" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "x", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "y", - "type": "uint256" - } - ], - "internalType": "struct IPubKey.PubKey[]", - "name": "_encPubKeys", - "type": "tuple[]" - } - ], - "name": "publishMessageBatch", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "_tallyHash", - "type": "string" - } - ], - "name": "publishTallyHash", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "recipientRegistry", - "outputs": [ - { - "internalType": "contract IRecipientRegistry", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "array", - "type": "uint256[]" - } - ], - "name": "sha256Hash", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "stateAqMerged", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "tallyHash", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSpent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalVotes", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "treeDepths", - "outputs": [ - { - "internalType": "uint8", - "name": "intStateTreeDepth", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "messageTreeSubDepth", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "messageTreeDepth", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "voteOptionTreeDepth", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_voteOptionIndex", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_spent", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_spentSalt", - "type": "uint256" - } - ], - "name": "verifyPerVOSpentVoiceCredits", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_totalSpent", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_totalSpentSalt", - "type": "uint256" - } - ], - "name": "verifySpentVoiceCredits", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_voteOptionIndex", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_tallyResult", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_spentVoiceCreditsHash", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_perVOSpentVoiceCreditsHash", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_tallyCommitment", - "type": "uint256" - } - ], - "name": "verifyTallyResult", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "voiceCreditFactor", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } -] \ No newline at end of file diff --git a/packages/subgraph/abis/GrantRoundFactory.json b/packages/subgraph/abis/GrantRoundFactory.json deleted file mode 100644 index c09e05cd..00000000 --- a/packages/subgraph/abis/GrantRoundFactory.json +++ /dev/null @@ -1,383 +0,0 @@ -[ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "_messageAqFactory", - "type": "address" - } - ], - "name": "MessageAqFactoryChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "_recipientRegistry", - "type": "address" - } - ], - "name": "RecipientRegistryChanged", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_voiceCreditFactor", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_coordinator", - "type": "address" - }, - { - "internalType": "contract ERC20", - "name": "_nativeToken", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_duration", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "maxMessages", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "maxVoteOptions", - "type": "uint256" - } - ], - "internalType": "struct Params.MaxValues", - "name": "_maxValues", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "uint8", - "name": "intStateTreeDepth", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "messageTreeSubDepth", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "messageTreeDepth", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "voteOptionTreeDepth", - "type": "uint8" - } - ], - "internalType": "struct Params.TreeDepths", - "name": "_treeDepths", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "uint8", - "name": "messageBatchSize", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "tallyBatchSize", - "type": "uint8" - } - ], - "internalType": "struct Params.BatchSizes", - "name": "_batchSizes", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "x", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "y", - "type": "uint256" - } - ], - "internalType": "struct IPubKey.PubKey", - "name": "_coordinatorPubKey", - "type": "tuple" - }, - { - "internalType": "contract VkRegistry", - "name": "_vkRegistry", - "type": "address" - }, - { - "internalType": "contract IMACI", - "name": "_maci", - "type": "address" - }, - { - "internalType": "address", - "name": "_grantRoundOwner", - "type": "address" - } - ], - "name": "deployGrantRound", - "outputs": [ - { - "internalType": "contract GrantRound", - "name": "", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[2]", - "name": "array", - "type": "uint256[2]" - } - ], - "name": "hash2", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[3]", - "name": "array", - "type": "uint256[3]" - } - ], - "name": "hash3", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[4]", - "name": "array", - "type": "uint256[4]" - } - ], - "name": "hash4", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[5]", - "name": "array", - "type": "uint256[5]" - } - ], - "name": "hash5", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_left", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_right", - "type": "uint256" - } - ], - "name": "hashLeftRight", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [], - "name": "messageAqFactory", - "outputs": [ - { - "internalType": "contract MessageAqFactory", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "recipientRegistry", - "outputs": [ - { - "internalType": "contract IRecipientRegistry", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract MessageAqFactory", - "name": "_messageAqFactory", - "type": "address" - } - ], - "name": "setMessageAqFactory", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IRecipientRegistry", - "name": "_recipientRegistry", - "type": "address" - } - ], - "name": "setRecipientRegistry", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "array", - "type": "uint256[]" - } - ], - "name": "sha256Hash", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } -] \ No newline at end of file diff --git a/packages/subgraph/abis/OptimisticRecipientRegistry.json b/packages/subgraph/abis/OptimisticRecipientRegistry.json deleted file mode 100644 index b3ed566a..00000000 --- a/packages/subgraph/abis/OptimisticRecipientRegistry.json +++ /dev/null @@ -1,362 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "uint256", - "name": "_baseDeposit", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_challengePeriodDuration", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_controller", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "_recipientId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "enum OptimisticRecipientRegistry.RequestType", - "name": "_type", - "type": "uint8" - }, - { - "indexed": true, - "internalType": "bool", - "name": "_rejected", - "type": "bool" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_recipientIndex", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_timestamp", - "type": "uint256" - } - ], - "name": "RequestResolved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "_recipientId", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "enum OptimisticRecipientRegistry.RequestType", - "name": "_type", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "address", - "name": "_recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "string", - "name": "_metadata", - "type": "string" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_timestamp", - "type": "uint256" - } - ], - "name": "RequestSubmitted", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_recipient", - "type": "address" - }, - { - "internalType": "string", - "name": "_metadata", - "type": "string" - } - ], - "name": "addRecipient", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [], - "name": "baseDeposit", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "challengePeriodDuration", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_recipientId", - "type": "bytes32" - }, - { - "internalType": "address payable", - "name": "_beneficiary", - "type": "address" - } - ], - "name": "challengeRequest", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "controller", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_recipientId", - "type": "bytes32" - } - ], - "name": "executeRequest", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_index", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_startTime", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_endTime", - "type": "uint256" - } - ], - "name": "getRecipientAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getRecipientCount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "maxRecipients", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_recipientId", - "type": "bytes32" - } - ], - "name": "removeRecipient", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_baseDeposit", - "type": "uint256" - } - ], - "name": "setBaseDeposit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_challengePeriodDuration", - "type": "uint256" - } - ], - "name": "setChallengePeriodDuration", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_maxRecipients", - "type": "uint256" - } - ], - "name": "setMaxRecipients", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } -] \ No newline at end of file diff --git a/packages/subgraph/abis/QFI.json b/packages/subgraph/abis/QFI.json deleted file mode 100644 index f6fcb742..00000000 --- a/packages/subgraph/abis/QFI.json +++ /dev/null @@ -1,1484 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "contract ERC20", - "name": "_nativeToken", - "type": "address" - }, - { - "internalType": "contract GrantRoundFactory", - "name": "_grantRoundFactory", - "type": "address" - }, - { - "internalType": "contract PollFactory", - "name": "_pollFactory", - "type": "address" - }, - { - "internalType": "contract SignUpGatekeeper", - "name": "_signUpGatekeeper", - "type": "address" - }, - { - "internalType": "contract InitialVoiceCreditProxy", - "name": "_initialVoiceCreditProxy", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "_contributor", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "ContributionSent", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "_contributor", - "type": "address" - } - ], - "name": "ContributionWithdrew", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_pollId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "_pollAddr", - "type": "address" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "x", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "y", - "type": "uint256" - } - ], - "indexed": false, - "internalType": "struct IPubKey.PubKey", - "name": "_pubKey", - "type": "tuple" - } - ], - "name": "DeployPoll", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "_source", - "type": "address" - } - ], - "name": "FundingSourceAdded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "_source", - "type": "address" - } - ], - "name": "FundingSourceRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "_currentGrantRound", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_duration", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "maxMessages", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "maxVoteOptions", - "type": "uint256" - } - ], - "indexed": false, - "internalType": "struct Params.MaxValues", - "name": "_maxValues", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "uint8", - "name": "intStateTreeDepth", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "messageTreeSubDepth", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "messageTreeDepth", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "voteOptionTreeDepth", - "type": "uint8" - } - ], - "indexed": false, - "internalType": "struct Params.TreeDepths", - "name": "_treeDepths", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "uint8", - "name": "messageBatchSize", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "tallyBatchSize", - "type": "uint8" - } - ], - "indexed": false, - "internalType": "struct Params.BatchSizes", - "name": "_batchSizes", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "x", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "y", - "type": "uint256" - } - ], - "indexed": false, - "internalType": "struct IPubKey.PubKey", - "name": "_coordinatorPubKey", - "type": "tuple" - }, - { - "indexed": false, - "internalType": "enum QFI.Stage", - "name": "_currentStage", - "type": "uint8" - } - ], - "name": "GrantRoundDeployed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "_currentGrantRound", - "type": "address" - }, - { - "indexed": false, - "internalType": "enum QFI.Stage", - "name": "_currentStage", - "type": "uint8" - } - ], - "name": "GrantRoundFinalized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "contract VkRegistry", - "name": "_vkRegistry", - "type": "address" - }, - { - "indexed": false, - "internalType": "contract MessageAqFactory", - "name": "_messageAqFactory", - "type": "address" - } - ], - "name": "Init", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_pollId", - "type": "uint256" - } - ], - "name": "MergeStateAq", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_pollId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_numSrQueueOps", - "type": "uint256" - } - ], - "name": "MergeStateAqSubRoots", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "_pollProcessorAndTallyer", - "type": "address" - } - ], - "name": "PollProcessorAndTallyerChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "enum QFI.Stage", - "name": "_currentStage", - "type": "uint8" - } - ], - "name": "PreRoundContributionPeriodStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "_grantRoundFactory", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "_nativeToken", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_voiceCreditFactor", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "enum QFI.Stage", - "name": "_currentStage", - "type": "uint8" - } - ], - "name": "QfiDeployed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "_stateAq", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "_pollFactory", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "_signUpGatekeeper", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "_initialVoiceCreditProxy", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_timestamp", - "type": "uint256" - } - ], - "name": "MaciDeployed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "_messageAqFactoryGrantRounds", - "type": "address" - }, - { - "indexed": false, - "internalType": "enum QFI.Stage", - "name": "_currentStage", - "type": "uint8" - } - ], - "name": "QfiInitialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "_stateIndex", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "x", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "y", - "type": "uint256" - } - ], - "indexed": false, - "internalType": "struct IPubKey.PubKey", - "name": "_userPubKey", - "type": "tuple" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_voiceCreditBalance", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_timestamp", - "type": "uint256" - } - ], - "name": "SignUp", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "enum QFI.Stage", - "name": "_currentStage", - "type": "uint8" - } - ], - "name": "VotingPeriodClosed", - "type": "event" - }, - { - "inputs": [], - "name": "acceptContributionsAndTopUpsBeforeNewRound", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_source", - "type": "address" - } - ], - "name": "addFundingSource", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "closeVotingAndWaitForDeadline", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "x", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "y", - "type": "uint256" - } - ], - "internalType": "struct IPubKey.PubKey", - "name": "pubKey", - "type": "tuple" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "contribute", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "contributorCount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "currentGrantRound", - "outputs": [ - { - "internalType": "contract GrantRound", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "currentStage", - "outputs": [ - { - "internalType": "enum QFI.Stage", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_duration", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "maxMessages", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "maxVoteOptions", - "type": "uint256" - } - ], - "internalType": "struct Params.MaxValues", - "name": "_maxValues", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "uint8", - "name": "intStateTreeDepth", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "messageTreeSubDepth", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "messageTreeDepth", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "voteOptionTreeDepth", - "type": "uint8" - } - ], - "internalType": "struct Params.TreeDepths", - "name": "_treeDepths", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "x", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "y", - "type": "uint256" - } - ], - "internalType": "struct IPubKey.PubKey", - "name": "_coordinatorPubKey", - "type": "tuple" - }, - { - "internalType": "address", - "name": "coordinator", - "type": "address" - } - ], - "name": "deployGrantRound", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_duration", - "type": "uint256" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "maxMessages", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "maxVoteOptions", - "type": "uint256" - } - ], - "internalType": "struct Params.MaxValues", - "name": "_maxValues", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "uint8", - "name": "intStateTreeDepth", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "messageTreeSubDepth", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "messageTreeDepth", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "voteOptionTreeDepth", - "type": "uint8" - } - ], - "internalType": "struct Params.TreeDepths", - "name": "_treeDepths", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "uint256", - "name": "x", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "y", - "type": "uint256" - } - ], - "internalType": "struct IPubKey.PubKey", - "name": "_coordinatorPubKey", - "type": "tuple" - } - ], - "name": "deployPoll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_totalSpent", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_totalSpentSalt", - "type": "uint256" - } - ], - "name": "finalizeCurrentRound", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_grantRoundId", - "type": "uint256" - } - ], - "name": "getGrantRound", - "outputs": [ - { - "internalType": "contract GrantRound", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract ERC20", - "name": "token", - "type": "address" - } - ], - "name": "getMatchingFunds", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pollId", - "type": "uint256" - } - ], - "name": "getPoll", - "outputs": [ - { - "internalType": "contract Poll", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getStateAqRoot", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "getVoiceCredits", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "grantRound", - "type": "uint256" - } - ], - "name": "getVotingDeadline", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "grantRoundFactory", - "outputs": [ - { - "internalType": "contract GrantRoundFactory", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "grantRounds", - "outputs": [ - { - "internalType": "contract GrantRound", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[2]", - "name": "array", - "type": "uint256[2]" - } - ], - "name": "hash2", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[3]", - "name": "array", - "type": "uint256[3]" - } - ], - "name": "hash3", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[4]", - "name": "array", - "type": "uint256[4]" - } - ], - "name": "hash4", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[5]", - "name": "array", - "type": "uint256[5]" - } - ], - "name": "hash5", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_left", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_right", - "type": "uint256" - } - ], - "name": "hashLeftRight", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "components": [ - { - "internalType": "uint256", - "name": "x", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "y", - "type": "uint256" - } - ], - "internalType": "struct IPubKey.PubKey", - "name": "pubKey", - "type": "tuple" - }, - { - "internalType": "uint256", - "name": "voiceCreditBalance", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "internalType": "struct DomainObjs.StateLeaf", - "name": "_stateLeaf", - "type": "tuple" - } - ], - "name": "hashStateLeaf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract VkRegistry", - "name": "_vkRegistry", - "type": "address" - }, - { - "internalType": "contract MessageAqFactory", - "name": "_messageAqFactory", - "type": "address" - } - ], - "name": "init", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "initialVoiceCreditProxy", - "outputs": [ - { - "internalType": "contract InitialVoiceCreditProxy", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract VkRegistry", - "name": "_vkRegistry", - "type": "address" - }, - { - "internalType": "contract MessageAqFactory", - "name": "_messageAqFactoryPolls", - "type": "address" - }, - { - "internalType": "contract MessageAqFactory", - "name": "_messageAqFactoryGrantRounds", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "isInitialised", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pollId", - "type": "uint256" - } - ], - "name": "mergeStateAq", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_numSrQueueOps", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_pollId", - "type": "uint256" - } - ], - "name": "mergeStateAqSubRoots", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "messageAqFactory", - "outputs": [ - { - "internalType": "contract MessageAqFactory", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "messageAqFactoryGrants", - "outputs": [ - { - "internalType": "contract MessageAqFactory", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "nativeToken", - "outputs": [ - { - "internalType": "contract ERC20", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "nextGrantRoundId", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "numSignUps", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "numStateLeaves", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pollFactory", - "outputs": [ - { - "internalType": "contract PollFactory", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pollProcessorAndTallyer", - "outputs": [ - { - "internalType": "contract PollProcessorAndTallyer", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "polls", - "outputs": [ - { - "internalType": "contract Poll", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_source", - "type": "address" - } - ], - "name": "removeFundingSource", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract PollProcessorAndTallyer", - "name": "_pollProcessorAndTallyer", - "type": "address" - } - ], - "name": "setPollProcessorAndTallyer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256[]", - "name": "array", - "type": "uint256[]" - } - ], - "name": "sha256Hash", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "x", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "y", - "type": "uint256" - } - ], - "internalType": "struct IPubKey.PubKey", - "name": "_pubKey", - "type": "tuple" - }, - { - "internalType": "bytes", - "name": "_signUpGatekeeperData", - "type": "bytes" - }, - { - "internalType": "bytes", - "name": "_initialVoiceCreditProxyData", - "type": "bytes" - } - ], - "name": "signUp", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "signUpGatekeeper", - "outputs": [ - { - "internalType": "contract SignUpGatekeeper", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "signUpTimestamp", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "stateAq", - "outputs": [ - { - "internalType": "contract AccQueue", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "stateTreeDepth", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "vkRegistry", - "outputs": [ - { - "internalType": "contract VkRegistry", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "voiceCreditFactor", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "withdrawContribution", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } -] \ No newline at end of file diff --git a/packages/subgraph/package.json b/packages/subgraph/package.json deleted file mode 100644 index edd6b51c..00000000 --- a/packages/subgraph/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "@quadratic-funding/subgraph", - "version": "0.0.1", - "description": "quadratic-funding subgraph", - "main": "index.js", - "author": "", - "license": "GPL-3.0", - "private": false, - "scripts": { - "codegen": "graph codegen", - "build": "graph build", - "auth": "graph auth --product hosted-service", - "deploy": "yarn codegen && graph deploy --product hosted-service", - "lint": "eslint ./src --ext js,ts", - "lint:fix": "eslint ./src --ext js,ts --fix", - "prettier": "prettier ./src", - "prettier:write": "prettier --write ./src" - }, - "dependencies": { - "@graphprotocol/graph-ts": "^0.26.0" - }, - "devDependencies": { - "@graphprotocol/graph-cli": "^0.26.0", - "@types/node": "^17.0.23", - "@typescript-eslint/eslint-plugin": "^5.18.0", - "@typescript-eslint/parser": "^5.18.0", - "eslint": "^8.13.0", - "eslint-config-prettier": "^8.5.0", - "prettier": "^2.6.2", - "typescript": "^4.6.3" - } -} \ No newline at end of file diff --git a/packages/subgraph/schema.graphql b/packages/subgraph/schema.graphql deleted file mode 100644 index be88db6a..00000000 --- a/packages/subgraph/schema.graphql +++ /dev/null @@ -1,329 +0,0 @@ -# Values for the current status/stage of the QFI. -enum Stage { - NotInitialized - WaitingForSignupsAndTopups - VotingPeriodOpen - WaitingForFinalization - Finalized - Cancelled -} - -# Values for the RecipientRegistry requests. -enum RequestType { - Registration - Removal -} - -# QFI Core entity. -type QFI @entity { - # Set to the HEX string representation of the QFI smart contract address. - id: ID! - - # Main fields. - coordinator: Coordinator - currentStage: Stage! # Enum. - voiceCreditFactor: BigInt! - nextGrantRoundId: BigInt! - contributorCount: BigInt! - isStateAqMerged: Boolean - - # Inherited from MACI. - stateTreeDepth: Int - numSignUps: BigInt! - isInitialized: Boolean - signUpTimestamp: BigInt! - # Useful smart contracts addresses. - signUpGatekeeperAddress: Bytes! - initialVoiceCreditProxyAddress: Bytes! - vkRegistryAddress: Bytes - pollFactoryAddress: Bytes! - messageAqFactoryPollAddress: Bytes - stateAqAddress: Bytes - nativeERC20TokenAddress: Bytes! - messageAqFactoryGrantRoundAddress: Bytes - grantRoundFactoryAddress: Bytes! - pollProcessorAndTallyerAddress: Bytes - - # Links. - recipientRegistry: RecipientRegistry - currentGrantRound: GrantRound - - # Reverse Lookups. - grantRounds: [GrantRound!] @derivedFrom(field: "qfi") - # Specifically, those Polls are GrantRounds (polls[pollId] = g, where g is a GrantRound). - polls: [GrantRound!] @derivedFrom(field: "qfi") - - fundingSources: [FundingSource!] @derivedFrom(field: "qfi") - - createdAt: String! - lastUpdatedAt: String! -} - -# Represents a PublicKey used during the subscription/forwarding of a message. -type PublicKey @entity { - # Set to the HEX string representation of the ETH address of the owner of the key. - # (i.e., can be derived from the tx sender or an address event parameter). - id: ID! - - # Main fields. - x: BigInt! - y: BigInt! - - # Associated voting info. - lifetimeAmountContributed: BigInt! - voiceCreditBalance: BigInt! - stateIndex: BigInt - - # Links. - grantRound: GrantRound # Can be present if the PublicKey is used in addition to send a message. - - # Reverse Lookup for the messages signed w/ this public key. - messages: [Message!] @derivedFrom(field: "publicKey") - # Reverse Lookup for the contribution made w/ this public key. - contributions: [Contribution!] @derivedFrom(field: "publicKey") - - timestamp: String! -} - -# A message sent from a public key by a voter. -type Message @entity { - # Set to the HEX string representation of the tx hash where the message has been sent. - id: ID! - - # Main fields. - sender: Bytes! - data: [BigInt!]! - txHash: Bytes! - - # Links. - publicKey: PublicKey! - grantRound: GrantRound! - - timestamp: String! -} - -# The registry where the recipient for the GrantRound are recorded -# (nb. Mainly based on OptimisticRecipientRegistry implementation.) -type RecipientRegistry @entity { - # Set to the HEX string representation of the OptimisticRecipientRegistry smart contract address. - id: ID! - - # Main fields. - grantRoundFactoryAddress: Bytes! - baseDeposit: BigInt! - challengePeriodDuration: BigInt! - controller: Bytes! - maxRecipients: BigInt! - - # Link. - grantRound: GrantRound! - - # Reverse Lookup for the recipients registered in this registry. - recipients: [Recipient!] @derivedFrom(field: "recipientRegistry") - - createdAt: String! - lastUpdatedAt: String! -} - -# Represent a Recipient for the GrantRound w/ requests info for add/remove. -# (nb. Mainly based on OptimisticRecipientRegistry implementation.) -type Recipient @entity { - # Set to the HEX string representation of the ETH address of the recipient. - # (i.e., can be derived from the tx sender or an address event parameter). - id: ID! - - # Main fields. - address: Bytes! - metadata: String - requestType: RequestType # Enum. - requesterAddress: Bytes - submissionTime: BigInt - deposit: BigInt - addedAt: BigInt - removedAt: BigInt - voteOptionIndex: BigInt - rejected: Boolean! - # Tx hash mirror. - requestResolvedHash: Bytes - requestSubmittedHash: Bytes - - # Links. - grantRounds: [GrantRoundRecipient!] @derivedFrom(field: "recipient") - recipientRegistry: RecipientRegistry! - - # Reverse Lookup of the claimed donations sent to this recipient. - donations: [Donation!] @derivedFrom(field: "recipient") - - createdAt: String! - lastUpdatedAt: String! -} - -# Mapping table to handle efficiently the GrantRound-Recipient many-to-many relationship. -type GrantRoundRecipient @entity { - # Set to the concatenation of `${grantRound.id}-${recipient.id}`. - id: ID! - - grantRound: GrantRound! - recipient: Recipient! -} - -type GrantRound @entity { - # Set to the HEX string representation of the numeric unique index of the Grant Round. - id: ID! - - # Main fields (also from Poll). - # Max values. - maxMessages: BigInt! - maxVoteOptions: BigInt! - # Tree depths. - intStateTreeDepth: BigInt! - messageTreeSubDepth: BigInt! - messageTreeDepth: BigInt! - voteOptionTreeDepth: BigInt! - # Batch sizes. - tallyBatchSize: BigInt! - messageBatchSize: BigInt! - # Time and duration. - duration: BigInt! - deployTimestamp: BigInt! # Grant Round start time. - voiceCreditFactor: BigInt! - # Status. - isCancelled: Boolean - isMessageAqMerged: Boolean - isFinalized: Boolean - stateAqMerged: Boolean - # State Ballot commitment. - mergedStateRoot: BigInt - tallyHash: String - # Total amounts spent, votes, and matching funds. - totalSpent: BigInt - totalVotes: BigInt - matchingPoolSize: BigInt - - # Links. - qfi: QFI! - recipientRegistry: RecipientRegistry! - coordinator: Coordinator! - - # Reverse Lookups. - # Messages related to this grant round. - messages: [Message!] @derivedFrom(field: "grantRound") - # Recipients related to this grant round. - recipients: [GrantRoundRecipient!] @derivedFrom(field: "grantRound") - # Who has contributed to the grant round. - contributors: [GrantRoundContributor!] @derivedFrom(field: "grantRound") - # The contributions to the grant round. - contributions: [Contribution!] @derivedFrom(field: "grantRound") - # Who has quadratically voted (w/ VCs) in the grant round. - votes: [Vote!] @derivedFrom(field: "grantRound") - - createdAt: String! - lastUpdatedAt: String! -} - -# MACI/QFI Coordinator. -type Coordinator @entity { - # Set to the HEX string representation of the ETH address of the coordinator. - # (i.e., can be derived from the tx sender or an address event parameter). - id: ID! - - # Main fields. - address: Bytes! - publicKey: String! - - # Links. - qfi: QFI! - grantRounds: [GrantRound!] @derivedFrom(field: "coordinator") - - timestamp: String! -} - -# A contributor who has sent tokens to the matching pool in exchange of VCs. -type Contributor @entity { - # Set to the HEX string representation of the ETH address of the contributor. - # (i.e., can be derived from the tx sender or an address event parameter). - id: ID! - - # Main fields. - address: Bytes! # Eth EOA. - voiceCredits: BigInt! - isRegistered: Boolean! - txHash: Bytes! - - # Link. - publicKey: PublicKey! - grantRounds: [GrantRoundContributor!] @derivedFrom(field: "contributor") - - # Reverse lookups. - contributions: [Contribution!] @derivedFrom(field: "contributor") - votes: [Vote!] @derivedFrom(field: "contributor") - - createdAt: String! - lastUpdatedAt: String! -} - -# Mapping table to handle efficiently the GrantRound-Contributor many-to-many relationship. -type GrantRoundContributor @entity { - # Set to the concatenation of `${grantRound.id}-${contributor.id}`. - id: ID! - - grantRound: GrantRound! - contributor: Contributor! -} - -type Contribution @entity { - # Set to the concatenation of `${grantRound.id}-${contributor.id}`. - id: ID! - - # Main fields. - amount: BigInt! - voiceCredits: BigInt! - - # Links. - contributor: Contributor! - grantRound: GrantRound! - publicKey: PublicKey! - - createdAt: String! - lastUpdatedAt: String! -} - -# An amount of funds donated. -type Donation @entity { - # Set to the concatenation of `${grantRound.id}-${recipient.id}`. - id: ID! - - # Main fields. - amount: BigInt! - voteOptionIndex: BigInt! - - # Links - recipient: Recipient! - grantRound: GrantRound! - - createdAt: String! -} - -# This entity is stored when a contributor cast a vote (publish a message). -type Vote @entity { - # Set to the concatenation of `${grantRound.id}-${contributor.id}`. - id: ID! - - # Links. - contributor: Contributor! - grantRound: GrantRound! -} - -# Represent a funding source to the match poll for a Grant Round. -type FundingSource @entity { - # Set to the HEX string representation of the ETH address of the Funding Source. - # (i.e., can be derived from an address event parameter). - id: ID! - - qfi: QFI! - address: Bytes! - isActive: Boolean! # False when removed, otherwise true. - - createdAt: String! - lastUpdatedAt: String! -} \ No newline at end of file diff --git a/packages/subgraph/src/mapping/GrantRoundFactoryMapping.ts b/packages/subgraph/src/mapping/GrantRoundFactoryMapping.ts deleted file mode 100644 index 04fd37dc..00000000 --- a/packages/subgraph/src/mapping/GrantRoundFactoryMapping.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { log } from "@graphprotocol/graph-ts" -import { - OwnershipTransferred, - MessageAqFactoryChanged, - RecipientRegistryChanged -} from "../../generated/GrantRoundFactory/GrantRoundFactory" -import { OptimisticRecipientRegistry as RecipientRegistryContract } from "../../generated/OptimisticRecipientRegistry/OptimisticRecipientRegistry" -import { QFI as QFISchema, GrantRound, RecipientRegistry } from "../../generated/schema" - -/** - * (e.g., Store a PublicKey in the storage). - * @param event Ethereum event emitted when XYZ. - */ -export function handleOwnershipTransferred(event: OwnershipTransferred): void { - log.debug(`OwnershipTransferred event block: {}`, [event.block.number.toString()]) -} - -/** - * Handle the change of the MessageAqFactory contract for the GrantRound Factory. - * @param event Ethereum event emitted when a new MessageAqFactory contract is used by the GrantRound Factory. - */ -export function handleMessageAqFactoryChanged(event: MessageAqFactoryChanged): void { - log.debug(`MessageAqFactoryChanged event block: {}`, [event.block.number.toString()]) - - // Update QFI. - const qfiAddress = event.transaction.from - const qfiId = qfiAddress.toHexString() - const qfi = new QFISchema(qfiId) - - if (qfi !== null) { - qfi.messageAqFactoryGrantRoundAddress = event.params._messageAqFactory - qfi.lastUpdatedAt = event.block.timestamp.toString() - - qfi.save() - } else { - log.error(`QFI entity not found!`, []) - } -} - -/** - * (e.g., Store a PublicKey in the storage). - * @param event Ethereum event emitted when XYZ. - */ -export function handleRecipientRegistryChanged(event: RecipientRegistryChanged): void { - log.debug(`RecipientRegistryChanged event block: {}`, [event.block.number.toString()]) - - const timestamp = event.block.timestamp.toString() - // Get QFI. - const qfiAddress = event.transaction.from - const qfiId = qfiAddress.toHexString() - const qfi = new QFISchema(qfiId) - - if (qfi !== null) { - const recipientRegistryAddress = event.params._recipientRegistry - const recipientRegistryId = recipientRegistryAddress.toHexString() - let recipientRegistry = RecipientRegistry.load(recipientRegistryId) - const recipientRegistryContract = RecipientRegistryContract.bind(recipientRegistryAddress) - - // Read from contract (trade-off, only when changing registry. May not be changed for multiple rounds). - const baseDeposit = recipientRegistryContract.baseDeposit() - const challengePeriodDuration = recipientRegistryContract.challengePeriodDuration() - const controller = recipientRegistryContract.controller() - const maxRecipients = recipientRegistryContract.maxRecipients() - - const grantRoundId = qfi.currentGrantRound - - if (recipientRegistry === null) { - recipientRegistry = new RecipientRegistry(recipientRegistryId) - } - - if (grantRoundId !== null) { - recipientRegistry.grantRoundFactoryAddress = event.address - recipientRegistry.baseDeposit = baseDeposit - recipientRegistry.challengePeriodDuration = challengePeriodDuration - recipientRegistry.controller = controller - recipientRegistry.maxRecipients = maxRecipients - recipientRegistry.grantRound = grantRoundId - recipientRegistry.createdAt = timestamp - recipientRegistry.lastUpdatedAt = timestamp - - recipientRegistry.save() - - // Update QFI. - qfi.recipientRegistry = recipientRegistryId - qfi.lastUpdatedAt = event.block.timestamp.toString() - - qfi.save() - - // Update GrantRound. - const grantRound = GrantRound.load(grantRoundId) - - if (grantRound !== null) { - grantRound.recipientRegistry = recipientRegistryId - grantRound.lastUpdatedAt = timestamp - - grantRound.save() - } else { - log.error(`GrantRound entity not found!`, []) - } - } else { - log.error(`QFI current GrantRound is not initialized!`, []) - } - } else { - log.error(`QFI entity not found!`, []) - } -} diff --git a/packages/subgraph/src/mapping/GrantRoundMapping.ts b/packages/subgraph/src/mapping/GrantRoundMapping.ts deleted file mode 100644 index 52b684b5..00000000 --- a/packages/subgraph/src/mapping/GrantRoundMapping.ts +++ /dev/null @@ -1,237 +0,0 @@ -import { log } from "@graphprotocol/graph-ts" -import { - Contributor, - Donation, - GrantRound as GrantRoundSchema, - GrantRoundRecipient, - Message, - PublicKey, - Recipient, - Vote -} from "../../generated/schema" -import { - OwnershipTransferred, - PublishMessage, - MergeMessageAq, - GrantRoundCancelled, - FundsClaimed, - TallyPublished, - Voted, - GrantRound as GrantRoundContract -} from "../../generated/templates/GrantRound/GrantRound" - -/** - * (e.g., Store a PublicKey in the storage). - * @param event Ethereum event emitted when XYZ. - */ -export function handleOwnershipTransferred(event: OwnershipTransferred): void { - log.debug(`OwnershipTransferred event block: {}`, [event.block.number.toString()]) -} - -/** - * Handle the publishing of a message by a registered user. - * @param event Ethereum event emitted when a user publishes a message. - */ -export function handlePublishMessage(event: PublishMessage): void { - log.debug(`PublishMessage event block: {}`, [event.block.number.toString()]) - - const txSender = event.transaction.from - // Get Grant Round. - const grantRoundId = event.address.toHexString() - const grantRound = GrantRoundSchema.load(grantRoundId) - - if (grantRound !== null) { - // Create a new Message. - const messageId = event.transaction.hash.toHexString() - const message = new Message(messageId) - - const publicKeyId = txSender.toHexString() - const publicKey = PublicKey.load(publicKeyId) - - if (publicKey === null) { - const publicKey = new PublicKey(publicKeyId) - - // The first message is now recorded as published w/ this public key. - publicKey.x = event.params._encPubKey.x - publicKey.y = event.params._encPubKey.y - publicKey.messages = [messageId] - publicKey.grantRound = grantRoundId - - publicKey.save() - } else { - log.error(`PublicKey entity not found!`, []) - } - - message.sender = txSender - message.data = event.params._message.data - message.txHash = event.transaction.hash - message.publicKey = publicKeyId - message.grantRound = grantRoundId - message.timestamp = event.block.timestamp.toString() - - message.save() - } else { - log.error(`GrantRound entity not found!`, []) - } -} - -/** - * Handle the merge of the message AQ used by the Grant Round. - * @param event Ethereum event emitted when the Grant Round message AQ is merged. - */ -export function handleMergeMessageAq(event: MergeMessageAq): void { - log.debug(`MergeMessageAq event block: {}`, [event.block.number.toString()]) - - const grantRoundId = event.address.toHexString() - const grantRound = GrantRoundSchema.load(grantRoundId) - - if (grantRound !== null) { - grantRound.mergedStateRoot = event.params._messageRoot - - grantRound.save() - } else { - log.error(`GrantRound entity not found!`, []) - } -} - -/** - * Handle the cancellation of the Grant Round. - * @param event Ethereum event emitted when the Grant Round message AQ is merged. - */ -export function handleGrantRoundCancelled(event: GrantRoundCancelled): void { - log.debug(`GrantRoundCancelled event block: {}`, [event.block.number.toString()]) - - const grantRoundId = event.address.toHexString() - const grantRound = GrantRoundSchema.load(grantRoundId) - - if (grantRound !== null) { - grantRound.isCancelled = event.params._isCancelled - grantRound.isFinalized = event.params._isFinalized - - grantRound.save() - } else { - log.error(`GrantRound entity not found!`, []) - } -} - -/** - * Handle the claiming of the funds from the matching pool of the GrantRound. - * @param event Ethereum event emitted when a recipient claim the funds from the matching pool of the GrantRound. - */ -export function handleFundsClaimed(event: FundsClaimed): void { - log.debug(`FundsClaimed event block: {}`, [event.block.number.toString()]) - - const timestamp = event.block.timestamp.toString() - - // Get GrantRound. - const grantRoundAddress = event.address - const grantRoundId = grantRoundAddress.toHexString() - const grantRoundContract = GrantRoundContract.bind(grantRoundAddress) - const grantRound = GrantRoundSchema.load(grantRoundId) - - // Get RecipientRegistry address from GrantRound contract (trade-off). - const recipientRegistryAddress = grantRoundContract.recipientRegistry() - - if (grantRound !== null) { - // Calculate Recipient Registry identifier for Recipient. - const recipientRegistryId = recipientRegistryAddress.toString() - - // Get Recipient. - const recipientAddress = event.params._recipient - const recipientId = recipientAddress.toHexString() - let recipient = Recipient.load(recipientId) - const donationId = grantRoundId.concat("-").concat(recipientId) - - // Get the mapping table for GrantRound and Recipient. - const mappingTableGRRId = grantRoundId.concat("-").concat(recipientId) - let mappingTableGRR = GrantRoundRecipient.load(mappingTableGRRId) - - if (recipient === null) { - recipient = new Recipient(recipientId) - } - - if (mappingTableGRR === null) { - mappingTableGRR = new GrantRoundRecipient(mappingTableGRRId) - } - - recipient.address = recipientAddress - recipient.recipientRegistry = recipientRegistryId - recipient.rejected = false - recipient.voteOptionIndex = event.params._voteOptionIndex - recipient.donations = [donationId] - recipient.createdAt = timestamp - recipient.lastUpdatedAt = timestamp - - mappingTableGRR.grantRound = grantRoundId - mappingTableGRR.recipient = recipientId - - recipient.save() - mappingTableGRR.save() - - // Create a new Donation entity. - const donation = new Donation(donationId) - - donation.grantRound = grantRoundId - donation.recipient = recipientId - donation.amount = event.params._allocatedAmount - donation.voteOptionIndex = event.params._voteOptionIndex - donation.createdAt = event.block.timestamp.toString() - - donation.save() - } else { - log.error(`GrantRound entity not found!`, []) - } -} - -/** - * Handle the publishing of the tally on IPFS. - * @param event Ethereum event emitted when the tally hash is published on IPFS. - */ -export function handleTallyPublished(event: TallyPublished): void { - log.debug(`TallyPublished event block: {}`, [event.block.number.toString()]) - - const grantRoundId = event.address.toHexString() - const grantRound = GrantRoundSchema.load(grantRoundId) - - if (grantRound !== null) { - grantRound.tallyHash = event.params._tallyHash - grantRound.lastUpdatedAt = event.block.timestamp.toString() - - grantRound.save() - } else { - log.error(`GrantRound entity not found!`, []) - } -} - -/** - * Handle the vote registration when someone publish a message. - * @param event Ethereum event emitted when someone publish a message to vote in a GrantRound. - */ -export function handleVoted(event: Voted): void { - log.debug(`Voted event block: {}`, [event.block.number.toString()]) - - const grantRoundId = event.address.toHexString() - const grantRound = GrantRoundSchema.load(grantRoundId) - - if (grantRound !== null) { - // Get Voter (Contributor). - const voterAddress = event.params._voter - const voterId = voterAddress.toHexString() - const voter = Contributor.load(voterId) - - if (voter !== null) { - // Create a new Vote. - const voteId = grantRoundId.concat("-").concat(voterId) - const vote = new Vote(voteId) - - vote.contributor = voterAddress.toHexString() - vote.grantRound = grantRoundId - - vote.save() - } else { - log.error(`Contributor (Voter) entity not found!`, []) - } - } else { - log.error(`GrantRound entity not found!`, []) - } -} diff --git a/packages/subgraph/src/mapping/QFIMapping.ts b/packages/subgraph/src/mapping/QFIMapping.ts deleted file mode 100644 index b47d812f..00000000 --- a/packages/subgraph/src/mapping/QFIMapping.ts +++ /dev/null @@ -1,598 +0,0 @@ -import { BigInt, log, store } from "@graphprotocol/graph-ts" -import { OwnershipTransferred } from "../../generated/GrantRoundFactory/GrantRoundFactory" -import { - QFI as QFIContract, - ContributionWithdrew, - GrantRoundDeployed, - GrantRoundFinalized, - Init, - QfiInitialized, - MergeStateAq, - SignUp, - ContributionSent, - VotingPeriodClosed, - PreRoundContributionPeriodStarted, - PollProcessorAndTallyerChanged, - MaciDeployed, - QfiDeployed, - FundingSourceAdded, - FundingSourceRemoved -} from "../../generated/QFI/QFI" -import { GrantRound as GrantRoundContract } from "../../generated/templates/GrantRound/GrantRound" -import { - QFI as QFISchema, - GrantRound, - PublicKey, - Coordinator, - Contribution, - Contributor, - FundingSource, - GrantRoundContributor -} from "../../generated/schema" -import { GrantRound as GrantRoundTemplate } from "../../generated/templates" -import { currentStageConverter } from "../utils/converter" - -/** - * Handle a smart contract based on MACI (constructor event). - * @param event Ethereum event emitted when deploying a smart contract based on MACI. - */ -export function handleMaciDeployed(event: MaciDeployed): void { - log.debug(`MACI Deployed event block: {}`, [event.block.number.toString()]) - - const timestamp = event.block.timestamp.toString() - // Get the QFI/MACI instance. - const qfiAddress = event.address - const qfiContract = QFIContract.bind(qfiAddress) - const qfiId = qfiAddress.toHexString() - const qfi = new QFISchema(qfiId) - - qfi.stateAqAddress = event.params._stateAq - qfi.pollFactoryAddress = event.params._pollFactory - qfi.initialVoiceCreditProxyAddress = event.params._initialVoiceCreditProxy - qfi.signUpGatekeeperAddress = event.params._signUpGatekeeper - qfi.signUpTimestamp = event.params._timestamp - qfi.numSignUps = new BigInt(0) - qfi.nextGrantRoundId = new BigInt(0) - qfi.createdAt = timestamp - qfi.lastUpdatedAt = timestamp - - // External call to contract instance (one time event - good trade-off for sync time). - qfi.stateTreeDepth = qfiContract.stateTreeDepth().toI32() - qfi.numSignUps = qfiContract.numSignUps() - - qfi.save() -} - -/** - * Handle a new QFI instance deploy. - * @param event Ethereum event emitted when a new QFI instance is deployed. - */ -export function handleQfiDeployed(event: QfiDeployed): void { - log.debug(`QFI Deployed event block: {}`, [event.block.number.toString()]) - - // Get the QFI/MACI instance. - const qfiAddress = event.address - const qfiId = qfiAddress.toHexString() - const qfi = new QFISchema(qfiId) - - if (qfi !== null) { - qfi.grantRoundFactoryAddress = event.params._grantRoundFactory - qfi.nativeERC20TokenAddress = event.params._nativeToken - qfi.voiceCreditFactor = event.params._voiceCreditFactor - qfi.currentStage = currentStageConverter(new BigInt(event.params._currentStage)) - - qfi.save() - - log.info("QFI has been correctly deployed!", []) - } else { - log.error(`QFI entity not found!`, []) - } -} - -/** - * Handle the initialization of a smart contract based on MACI. - * @param event Ethereum event emitted when initializing a smart contract based on MACI. - */ -export function handleInitMaci(event: Init): void { - log.debug(`Init MACI event block: {}`, [event.block.number.toString()]) - - // Get the QFI/MACI instance. - const qfiAddress = event.address - const qfiId = qfiAddress.toHexString() - const qfi = new QFISchema(qfiId) - - if (qfi !== null) { - qfi.vkRegistryAddress = event.params._vkRegistry - qfi.messageAqFactoryPollAddress = event.params._messageAqFactory - qfi.isInitialized = true - - qfi.save() - } -} - -/** - * Handle the initialization of the QFI smart contract. - * @param event Ethereum event emitted when initializing the QFI smart contract. - */ -export function handleQfiInitialized(event: QfiInitialized): void { - log.debug(`QfiInitialized event block: {}`, [event.block.number.toString()]) - - // Get the QFI/MACI instance. - const qfiAddress = event.address - const qfiId = qfiAddress.toHexString() - const qfi = new QFISchema(qfiId) - - if (qfi !== null) { - qfi.messageAqFactoryGrantRoundAddress = event.params._messageAqFactoryGrantRounds - qfi.currentStage = currentStageConverter(new BigInt(event.params._currentStage)) - - qfi.save() - - log.info("QFI has been correctly initialized", []) - } -} - -/** - * Handle the signup of a new user to QFI/MACI. - * @param event Ethereum event emitted when someone do signup on QFI/MACI. - */ -export function handleSignUp(event: SignUp): void { - log.debug(`SignUp event block: {}`, [event.block.number.toString()]) - - const publicKeyId = event.transaction.from.toHexString() - const publicKey = PublicKey.load(publicKeyId) - const qfiAddress = event.address - const qfiId = qfiAddress.toHexString() - const qfi = new QFISchema(qfiId) - - if (qfi !== null) { - if (publicKey === null) { - // Create a new PublicKey instance. - const publicKey = new PublicKey(publicKeyId) - - publicKey.x = event.params._userPubKey.x - publicKey.y = event.params._userPubKey.y - publicKey.stateIndex = event.params._stateIndex - publicKey.voiceCreditBalance = event.params._voiceCreditBalance - publicKey.timestamp = event.params._timestamp.toString() - - publicKey.save() - - log.info("A new PublicKey with ID '{}' has been created!", [publicKeyId]) - } - - // Update QFI. - qfi.numSignUps = qfi.numSignUps.plus(BigInt.fromI32(1)) - qfi.lastUpdatedAt = event.block.timestamp.toString() - - qfi.save() - - log.info("QFI signups updated to '{}'!", [qfi.numSignUps.toString()]) - } else { - log.error("QFI is not initialized!", []) - } -} - -/** - * Handle the merge of the state message AQ. - * @param event Ethereum event emitted when the state message AQ is merged. - */ -export function handleMergeStateAq(event: MergeStateAq): void { - log.debug(`MergeStateAq event block: {}`, [event.block.number.toString()]) - - const timestamp = event.block.timestamp.toString() - const qfiAddress = event.address - const qfiId = qfiAddress.toHexString() - const qfi = new QFISchema(qfiId) - - if (qfi !== null) { - qfi.isStateAqMerged = true - qfi.lastUpdatedAt = timestamp - - qfi.save() - - const currentGrantRound = qfi.currentGrantRound - if (currentGrantRound) { - // Update GrantRound. - const grantRound = GrantRound.load(currentGrantRound) - - if (grantRound !== null) { - grantRound.stateAqMerged = true - grantRound.lastUpdatedAt = timestamp - - grantRound.save() - } else { - log.error("GrantRound is not initialized!", []) - } - } else { - log.error("QFI current GrantRound is not initialized!", []) - } - } else { - log.error("QFI is not initialized!", []) - } -} - -/** - * Handle the contribution in native ERC20 token to matching pool from a user. - * @param event Ethereum event emitted when someone donates/fund the matching pool in exchange of VCs. - */ -export function handleContributionSent(event: ContributionSent): void { - log.debug(`ContributionSent event block: {}`, [event.block.number.toString()]) - - // Get QFI. - const qfiAddress = event.address - const qfiId = qfiAddress.toHexString() - const qfi = new QFISchema(qfiId) - - // Get Contributor. - const contributorAddress = event.params._contributor - const contributorId = contributorAddress.toHexString() - let contributor = Contributor.load(contributorId) - const grantRoundId = qfi.currentGrantRound - const timestamp = event.block.timestamp.toString() - - if (grantRoundId) { - // Create a new mapping table for GrantRound-Contribution relationship. - const mappingTableGRCId = grantRoundId.concat("-").concat(contributorId) - let mappingTableGRC = GrantRoundContributor.load(mappingTableGRCId) - - // Associate a new PublicKey to the Contributor. - const publicKeyId = contributorId - const publicKey = PublicKey.load(publicKeyId) - - if (publicKey !== null) { - if (contributor === null) { - contributor = new Contributor(contributorId) - } - - if (mappingTableGRC === null) { - mappingTableGRC = new GrantRoundContributor(mappingTableGRCId) - } - - contributor.address = event.params._contributor - contributor.voiceCredits = publicKey.voiceCreditBalance - contributor.isRegistered = false // TODO: To be checked. - contributor.publicKey = publicKeyId - contributor.txHash = event.transaction.hash - contributor.createdAt = timestamp - contributor.lastUpdatedAt = timestamp - - mappingTableGRC.grantRound = grantRoundId - mappingTableGRC.contributor = contributorId - - contributor.save() - mappingTableGRC.save() - - // Get the VoiceCreditFactor from QFI contract (for each contribution - trade off to be considered). - const qfiContract = QFIContract.bind(qfiAddress) - const voiceCreditFactor = qfiContract.voiceCreditFactor() - - // Create a new Contribution. - const contributionId = grantRoundId.concat("-").concat(contributorId) - const contribution = new Contribution(contributionId) - - contribution.contributor = contributorId - contribution.grantRound = grantRoundId - contribution.publicKey = publicKeyId - contribution.amount = event.params._amount - contribution.voiceCredits = event.params._amount.div(voiceCreditFactor) - contribution.createdAt = timestamp - contribution.lastUpdatedAt = timestamp - - contribution.save() - - // Update PublicKey. - publicKey.voiceCreditBalance = publicKey.voiceCreditBalance.plus( - event.params._amount.div(voiceCreditFactor) - ) - publicKey.lifetimeAmountContributed = publicKey.lifetimeAmountContributed.plus( - event.params._amount - ) - - publicKey.save() - - // Update QFI. - if (qfi !== null) { - qfi.contributorCount = qfi.contributorCount.plus(BigInt.fromI32(1)) - qfi.lastUpdatedAt = event.block.timestamp.toString() - - qfi.save() - } else { - log.error(`QFI entity not found!`, []) - } - } else { - log.error(`Contributor PublicKey not found!`, []) - } - } else { - log.error(`GrantRound is not initialized!`, []) - } -} - -/** - * Handle the withdrawn of a user contribution. - * @param event Ethereum event emitted when someone withdraw a contribution. - */ -export function handleContributionWithdrew(event: ContributionWithdrew): void { - log.debug(`ContributionWithdrew event block: {}`, [event.block.number.toString()]) - - // Get QFI. - const qfiAddress = event.address - const qfiId = qfiAddress.toHexString() - const qfi = new QFISchema(qfiId) - // Get Contributor. - const contributorId = event.params._contributor.toHexString() - const grantRoundId = qfi.currentGrantRound - - if (grantRoundId !== null) { - const contributionId = grantRoundId.concat(contributorId) - - // Remove the Contribution from the store. - store.remove("Contribution", contributionId) - } else { - log.error(`QFI current GrantRound is not initialized!`, []) - } - - // Update QFI. - if (qfi !== null) { - qfi.contributorCount = qfi.contributorCount.minus(BigInt.fromI32(1)) - qfi.lastUpdatedAt = event.block.timestamp.toString() - - qfi.save() - } else { - log.error(`QFI entity not found!`, []) - } -} - -/** - * Handle the deploy of a new Grant Round. - * @param event Ethereum event emitted when a new GrantRound smart contract instance is deployed. - */ -export function handleGrantRoundDeployed(event: GrantRoundDeployed): void { - log.debug(`GrantRoundDeployed event block: {}`, [event.block.number.toString()]) - - const grantRoundId = event.params._currentGrantRound.toHexString() - const grantRound = GrantRound.load(grantRoundId) - - const timestamp = event.block.timestamp.toString() - const qfiAddress = event.address - const coordinatorAddress = event.transaction.from - const qfiContract = QFIContract.bind(qfiAddress) - const voiceCreditFactor = qfiContract.voiceCreditFactor() - - if (grantRound === null) { - // Start indexing the GrantRound. - GrantRoundTemplate.create(event.params._currentGrantRound) - // Create a new GrantRound entity. - const grantRound = new GrantRound(grantRoundId) - - grantRound.duration = event.params._duration - grantRound.maxMessages = event.params._maxValues.maxMessages - grantRound.maxVoteOptions = event.params._maxValues.maxVoteOptions - grantRound.messageTreeDepth = new BigInt(event.params._treeDepths.messageTreeDepth) - grantRound.messageTreeSubDepth = new BigInt(event.params._treeDepths.messageTreeSubDepth) - grantRound.voteOptionTreeDepth = new BigInt(event.params._treeDepths.voteOptionTreeDepth) - grantRound.intStateTreeDepth = new BigInt(event.params._treeDepths.intStateTreeDepth) - grantRound.deployTimestamp = event.block.timestamp - grantRound.messageBatchSize = new BigInt(event.params._batchSizes.messageBatchSize) - grantRound.tallyBatchSize = new BigInt(event.params._batchSizes.tallyBatchSize) - grantRound.voiceCreditFactor = voiceCreditFactor - grantRound.qfi = qfiAddress.toHexString() - grantRound.coordinator = coordinatorAddress.toHexString() - grantRound.createdAt = timestamp - grantRound.lastUpdatedAt = timestamp - - grantRound.save() - - // Store the Coordinator. - const coordinatorId = coordinatorAddress.toHexString() - const coordinator = Coordinator.load(coordinatorId) - - if (coordinator === null) { - const coordinator = new Coordinator(coordinatorId) - - coordinator.address = coordinatorAddress - coordinator.publicKey = event.params._coordinatorPubKey.toString() - coordinator.qfi = qfiAddress.toHexString() - coordinator.grantRounds = [grantRoundId] - coordinator.timestamp = timestamp - - coordinator.save() - } - - // Update QFI. - const qfiId = qfiAddress.toHexString() - const qfi = new QFISchema(qfiId) - - if (qfi !== null) { - qfi.coordinator = coordinatorId - qfi.currentGrantRound = grantRoundId.toString() - qfi.nextGrantRoundId = qfi.nextGrantRoundId.plus(BigInt.fromI32(1)) - qfi.currentStage = currentStageConverter(new BigInt(event.params._currentStage)) - qfi.lastUpdatedAt = event.block.timestamp.toString() - - qfi.save() - } else { - log.error(`QFI entity not found!`, []) - } - } else { - log.error(`Grant Round already exists!`, []) - } -} - -/** - * Handle the finalization step for a Grant Round. - * @param event Ethereum event emitted when a Grant Round is finalized. - */ -export function handleGrantRoundFinalized(event: GrantRoundFinalized): void { - log.debug(`GrantRoundFinalized event block: {}`, [event.block.number.toString()]) - - // Get Grant Round. - const grantRoundId = event.params._currentGrantRound.toHexString() - const grantRoundContract = GrantRoundContract.bind(event.params._currentGrantRound) - const grantRound = GrantRound.load(grantRoundId) - - // Read from Grant Round contract (there are no other possibilities to read these information). - const totalSpent = grantRoundContract.totalSpent() - const totalVotes = grantRoundContract.totalVotes() - const tallyHash = grantRoundContract.tallyHash() - const isFinalized = grantRoundContract.isFinalized() - const isCancelled = grantRoundContract.isCancelled() - const matchingPoolSize = grantRoundContract.matchingPoolSize() - - if (grantRound !== null) { - grantRound.totalSpent = totalSpent - grantRound.totalVotes = totalVotes - grantRound.tallyHash = tallyHash - grantRound.isFinalized = isFinalized - grantRound.isCancelled = isCancelled - grantRound.matchingPoolSize = matchingPoolSize - - grantRound.save() - } else { - log.error(`GrantRound entity not found!`, []) - } - - // Update QFI. - const qfiAddress = event.address - const qfiId = qfiAddress.toHexString() - const qfi = new QFISchema(qfiId) - - if (qfi !== null) { - qfi.currentStage = currentStageConverter(new BigInt(event.params._currentStage)) - - qfi.save() - } else { - log.error(`QFI entity not found!`, []) - } -} - -/** - * (e.g., Add a Group in the storage). - * @param event Ethereum event emitted when XYZ. - */ -export function handleOwnershipTransferred(event: OwnershipTransferred): void { - log.debug(`OwnershipTransferred event block: {}`, [event.block.number.toString()]) -} - -/** - * Handle the closing of the voting period for a Grant Round. - * @param event Ethereum event emitted when a voting period for a Grant Round is over. - */ -export function handleVotingPeriodClosed(event: VotingPeriodClosed): void { - log.debug(`VotingPeriodClosed event block: {}`, [event.block.number.toString()]) - - // Update QFI. - const qfiAddress = event.address - const qfiId = qfiAddress.toHexString() - const qfi = new QFISchema(qfiId) - - if (qfi !== null) { - qfi.currentStage = currentStageConverter(new BigInt(event.params._currentStage)) - - qfi.save() - } else { - log.error(`QFI entity not found!`, []) - } -} - -/** - * Handle the pre round contribution period start for a Grant Round. - * @param event Ethereum event emitted when a pre round contribution period for a Grant Round is starting. - */ -export function handlePreRoundContributionPeriodStarted(event: PreRoundContributionPeriodStarted): void { - log.debug(`PreRoundContributionPeriodStarted event block: {}`, [event.block.number.toString()]) - - // Update QFI. - const qfiAddress = event.address - const qfiId = qfiAddress.toHexString() - const qfi = new QFISchema(qfiId) - - if (qfi !== null) { - qfi.currentStage = currentStageConverter(new BigInt(event.params._currentStage)) - - qfi.save() - } else { - log.error(`QFI entity not found!`, []) - } -} - -/** - * Handle the update of the PPT contract used for a Grant Round. - * @param event Ethereum event emitted when a PPT contract is set for a Grant Round. - */ -export function handlePollProcessorAndTallyerChanged(event: PollProcessorAndTallyerChanged): void { - log.debug(`PollProcessorAndTallyerChanged event block: {}`, [event.block.number.toString()]) - - // Update QFI. - const qfiAddress = event.address - const qfiId = qfiAddress.toHexString() - const qfi = new QFISchema(qfiId) - - if (qfi !== null) { - qfi.pollProcessorAndTallyerAddress = event.params._pollProcessorAndTallyer - - qfi.save() - } else { - log.error(`QFI entity not found!`, []) - } -} - -/** - * Handle the addition of a Funding Source. - * @param event Ethereum event emitted when a Funding Source is added. - */ -export function handleFundingSourceAdded(event: FundingSourceAdded): void { - log.debug(`FundingSourceAdded event block: {}`, [event.block.number.toString()]) - - const timestamp = event.block.timestamp.toString() - // Update QFI. - const qfiAddress = event.address - const qfiId = qfiAddress.toHexString() - const qfi = new QFISchema(qfiId) - - if (qfi !== null) { - // Create a new Funding Source. - const fundingSourceId = event.params._source.toHexString() - const fundingSource = new FundingSource(fundingSourceId) - - fundingSource.address = event.params._source - fundingSource.qfi = qfiId - fundingSource.isActive = true - fundingSource.createdAt = timestamp - fundingSource.lastUpdatedAt = timestamp - - fundingSource.save() - } else { - log.error(`QFI entity not found!`, []) - } -} - -/** - * Handle the removal of a Funding Source. - * @param event Ethereum event emitted when a Funding Source is removed. - */ -export function handleFundingSourceRemoved(event: FundingSourceRemoved): void { - log.debug(`FundingSourceRemoved event block: {}`, [event.block.number.toString()]) - - const timestamp = event.block.timestamp.toString() - // Update QFI. - const qfiAddress = event.address - const qfiId = qfiAddress.toHexString() - const qfi = new QFISchema(qfiId) - - if (qfi !== null) { - const fundingSourceId = event.params._source.toHexString() - const fundingSource = FundingSource.load(fundingSourceId) - - if (fundingSource !== null) { - fundingSource.isActive = false - fundingSource.lastUpdatedAt = timestamp - - fundingSource.save() - } else { - log.error(`FundingSource entity not found!`, []) - } - } else { - log.error(`QFI entity not found!`, []) - } -} diff --git a/packages/subgraph/src/mapping/RecipientRegistryMapping.ts b/packages/subgraph/src/mapping/RecipientRegistryMapping.ts deleted file mode 100644 index 9760c0d1..00000000 --- a/packages/subgraph/src/mapping/RecipientRegistryMapping.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { BigInt, log } from "@graphprotocol/graph-ts" -import { - OwnershipTransferred, - RequestResolved, - RequestSubmitted -} from "../../generated/OptimisticRecipientRegistry/OptimisticRecipientRegistry" - -import { Recipient } from "../../generated/schema" - -/** - * (e.g., Store a PublicKey in the storage). - * @param event Ethereum event emitted when XYZ. - */ -export function handleOwnershipTransferred(event: OwnershipTransferred): void { - log.debug(`OwnershipTransferred event block: {}`, [event.block.number.toString()]) -} - -/** - * Store a registration/removal request for a Recipient. - * @param event Ethereum event emitted when someone make a registration/removal request for a Recipient. - */ -export function handleRequestSubmitted(event: RequestSubmitted): void { - log.debug(`RequestSubmitted event block: {}`, [event.block.number.toString()]) - - const recipientRegistryId = event.address.toHexString() - const timestamp = event.block.timestamp.toString() - - // Create a new Recipient. - const recipientId = event.params._recipientId.toHexString() - const recipient = new Recipient(recipientId) - - recipient.address = event.params._recipient - recipient.requestType = BigInt.fromI32(event.params._type).toString() - recipient.requesterAddress = event.transaction.from - recipient.submissionTime = event.params._timestamp - recipient.deposit = event.transaction.value - recipient.metadata = event.params._metadata - recipient.recipientRegistry = recipientRegistryId - recipient.requestSubmittedHash = event.transaction.hash - recipient.createdAt = timestamp - recipient.lastUpdatedAt = timestamp - - recipient.save() -} - -/** - * Handle the request resolution for a Recipient. - * @param event Ethereum event emitted when the request for a Recipient is resolved. - */ - -export function handleRequestResolved(event: RequestResolved): void { - log.debug(`RequestResolved event block: {}`, [event.block.number.toString()]) - - // Calculate the RecipientRegistry identifier. - const recipientRegistryId = event.address.toHexString() - const recipientId = event.params._recipientId.toHexString() - const recipient = Recipient.load(recipientId) - - if (recipient !== null) { - recipient.requestType = BigInt.fromI32(event.params._type).toString() - recipient.requesterAddress = event.transaction.from - recipient.submissionTime = event.params._timestamp - recipient.deposit = event.transaction.value - recipient.recipientRegistry = recipientRegistryId - recipient.requestResolvedHash = event.transaction.hash - recipient.rejected = event.params._rejected - - if (event.params._recipientIndex != BigInt.fromI32(0)) { - if (BigInt.fromI32(event.params._type).toString() == "Registration") - recipient.addedAt = event.params._recipientIndex - else recipient.removedAt = event.params._recipientIndex - } - - recipient.save() - } - { - log.error(`Recipient entity not found!`, []) - } -} diff --git a/packages/subgraph/src/utils/converter.ts b/packages/subgraph/src/utils/converter.ts deleted file mode 100644 index dbe2bfbf..00000000 --- a/packages/subgraph/src/utils/converter.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { BigInt, log, store } from "@graphprotocol/graph-ts" - -// Relates to schema.graphql Stage enum. -export const NOT_INITIALIZED = 'NotInitialized'; -export const WAITING_FOR_SIGNUPS_AND_TOPUPS = 'WaitingForSignupsAndTopups'; -export const VOTING_PERIOD_OPEN = 'VotingPeriodOpen'; -export const WAITING_FOR_FINALIZATION = 'WaitingForFinalization'; -export const FINALIZED = 'Finalized'; -export const CANCELLED = 'Cancelled'; - -/** - * Current stage value converter. - * @param _stage : current value to be converted from BigInt to String. - * @returns - */ -export function currentStageConverter(_stage: BigInt): string { - let stage = _stage.toI32() - - switch (stage) { - case 0: return NOT_INITIALIZED - case 1: return WAITING_FOR_SIGNUPS_AND_TOPUPS - case 2: return VOTING_PERIOD_OPEN - case 3: return WAITING_FOR_FINALIZATION - case 4: return FINALIZED - case 5: return CANCELLED - default: throw new Error('Invalid current stage value'); - } -} \ No newline at end of file diff --git a/packages/subgraph/subgraph.yaml b/packages/subgraph/subgraph.yaml deleted file mode 100644 index 83ff3299..00000000 --- a/packages/subgraph/subgraph.yaml +++ /dev/null @@ -1,150 +0,0 @@ -specVersion: 0.0.4 -description: Quadratic-Funding Infrastructure w/ collusion-resistance. -repository: https://github.com/quadratic-funding/qfi -schema: - file: ./schema.graphql -dataSources: - - kind: ethereum/contract - name: QFI - # network: { { network } } - source: - # address: { { address } } - # startBlock: { { startBlock } } - abi: QFI - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - entities: - - QFI - - RecipientRegistry - - GrantRound - abis: - - name: QFI - file: ./abis/QFI.json - - name: OptimisticRecipientRegistry - file: ./abis/OptimisticRecipientRegistry.json - - name: GrantRound - file: ./abis/GrantRound.json - - name: GrantRoundFactory - file: ./abis/GrantRoundFactory.json - eventHandlers: - - event: MaciDeployed(address,address,address,address,uint256) - handler: handleMaciDeployed - - event: QfiDeployed(address,address,uint256,uint8) - handler: handleQfiDeployed - - event: Init(address,address) - handler: handleInitMaci - - event: SignUp(uint256,(uint256,uint256),uint256,uint256) - handler: handleSignUp - - event: FundingSourceAdded(address) - handler: handleFundingSourceAdded - - event: FundingSourceRemoved(address) - handler: handleFundingSourceRemoved - - event: MergeStateAq(uint256) - handler: handleMergeStateAq - - event: QfiInitialized(address,uint8) - handler: handleQfiInitialized - - event: ContributionSent(address,uint256) - handler: handleContributionSent - - event: ContributionWithdrew(address) - handler: handleContributionWithdrew - - event: GrantRoundDeployed(address,uint256,(uint256,uint256),(uint8,uint8,uint8,uint8),(uint8,uint8),(uint256,uint256),uint8) - handler: handleGrantRoundDeployed - - event: GrantRoundFinalized(address,uint8) - handler: handleGrantRoundFinalized - - event: OwnershipTransferred(indexed address,indexed address) - handler: handleOwnershipTransferred - - event: VotingPeriodClosed(uint8) - handler: handleVotingPeriodClosed - - event: PreRoundContributionPeriodStarted(uint8) - handler: handlePreRoundContributionPeriodStarted - - event: PollProcessorAndTallyerChanged(address) - handler: handlePollProcessorAndTallyerChanged - file: ./src/mapping/QFIMapping.ts - - kind: ethereum/contract - name: OptimisticRecipientRegistry - # network: { { network } } - source: - # address: { { address } } - # startBlock: { { startBlock } } - abi: OptimisticRecipientRegistry - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - entities: - - RecipientRegistry - - Recipient - abis: - - name: OptimisticRecipientRegistry - file: ./abis/OptimisticRecipientRegistry.json - eventHandlers: - - event: OwnershipTransferred(indexed address,indexed address) - handler: handleOwnershipTransferred - - event: RequestSubmitted(indexed bytes32,indexed uint8,address,string,uint256) - handler: handleRequestSubmitted - - event: RequestResolved(indexed bytes32,indexed uint8,indexed bool,uint256,uint256) - handler: handleRequestResolved - file: ./src/mapping/RecipientRegistryMapping.ts - - kind: ethereum/contract - name: GrantRoundFactory - # network: { { network } } - source: - # address: { { address } } - # startBlock: { { startBlock } } - abi: GrantRoundFactory - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - entities: - - QFI - abis: - - name: GrantRoundFactory - file: ./abis/GrantRoundFactory.json - eventHandlers: - - event: OwnershipTransferred(indexed address,indexed address) - handler: handleOwnershipTransferred - - event: MessageAqFactoryChanged(address) - handler: handleMessageAqFactoryChanged - - event: RecipientRegistryChanged(address) - handler: handleRecipientRegistryChanged - file: ./src/mapping/GrantRoundFactoryMapping.ts -templates: - - name: GrantRound - kind: ethereum/contract - # network: { { network } } - source: - abi: GrantRound - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - entities: - - GrantRound - - Contribution - - Funds - - Recipient - - Contributor - abis: - - name: GrantRound - file: ./abis/GrantRound.json - - name: OptimisticRecipientRegistry - file: ./abis/OptimisticRecipientRegistry.json - eventHandlers: - - event: PublishMessage((uint256[10]),(uint256,uint256)) - handler: handlePublishMessage - - event: MergeMessageAq(uint256) - handler: handleMergeMessageAq - - event: GrantRoundCancelled(bool,bool) - handler: handleGrantRoundCancelled - - event: FundsClaimed(address,uint256,uint256) - handler: handleFundsClaimed - - event: OwnershipTransferred(indexed address,indexed address) - handler: handleOwnershipTransferred - - event: TallyPublished(string) - handler: handleTallyPublished - - event: Voted(indexed address) - handler: handleVoted - file: ./src/mapping/GrantRoundMapping.ts diff --git a/packages/subgraph/tsconfig.json b/packages/subgraph/tsconfig.json deleted file mode 100644 index 139d71cb..00000000 --- a/packages/subgraph/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "compilerOptions": { - "strict": true, - "target": "ES5", - "module": "ES6", - "moduleResolution": "node", - "esModuleInterop": true, - "preserveConstEnums": true, - "skipLibCheck": true, - "declaration": true, - "allowSyntheticDefaultImports": true - }, - "include": ["src/**/*"] -} \ No newline at end of file diff --git a/packages/ui/CHANGELOG.md b/packages/ui/CHANGELOG.md new file mode 100644 index 00000000..270425b2 --- /dev/null +++ b/packages/ui/CHANGELOG.md @@ -0,0 +1,137 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [2.1.0](https://github.com/quadratic-funding/qfi/compare/v2.0.1...v2.1.0) (2022-07-08) + + +### Features + +* **all:** ethBarcelona changes ([5e59b1a](https://github.com/quadratic-funding/qfi/commit/5e59b1add68fe141269e8d42a08e605af3c916cb)) + + + + + +# [2.0.0](https://github.com/quadratic-funding/qfi/compare/v1.5.0...v2.0.0) (2022-06-29) + +**Note:** Version bump only for package @qfi/ui + + + + + +# [1.5.0](https://github.com/quadratic-funding/qfi/compare/v1.4.1...v1.5.0) (2022-06-11) + +**Note:** Version bump only for package @qfi/ui + + + + + +# [1.4.0](https://github.com/quadratic-funding/qfi/compare/v1.3.0...v1.4.0) (2022-06-11) + +**Note:** Version bump only for package @qfi/ui + + + + + +# [1.1.0](https://github.com/quadratic-funding/qfi/compare/v1.0.1...v1.1.0) (2022-06-10) + +**Note:** Version bump only for package @qfi/ui + + + + + +# [1.0.0](https://github.com/quadratic-funding/qfi/compare/v0.3.3...v1.0.0) (2022-06-09) + +**Note:** Version bump only for package @qfi/ui + + + + + +## [0.3.3](https://github.com/quadratic-funding/qfi/compare/v0.3.2...v0.3.3) (2022-06-09) + +**Note:** Version bump only for package @qfi/ui + + + + + +## [0.3.1](https://github.com/quadratic-funding/qfi/compare/v0.2.2...v0.3.1) (2022-06-09) + +**Note:** Version bump only for package @qfi/ui + + + + + +# [0.3.0](https://github.com/quadratic-funding/qfi/compare/v0.2.2...v0.3.0) (2022-06-08) + +**Note:** Version bump only for package @qfi/ui + + + + + +## [0.2.2](https://github.com/quadratic-funding/qfi/compare/v0.2.1...v0.2.2) (2022-06-08) + + +### Bug Fixes + +* **app:** connect button on mobile ([7799767](https://github.com/quadratic-funding/qfi/commit/77997672b6065782bdb4f65211dda1767a57369e)) + + + + + +## [0.2.1](https://github.com/quadratic-funding/qfi/compare/v0.2.0...v0.2.1) (2022-06-08) + +**Note:** Version bump only for package @qfi/ui + + + + + +# [0.2.0](https://github.com/quadratic-funding/qfi/compare/v0.1.0...v0.2.0) (2022-06-03) + +**Note:** Version bump only for package @qfi/ui + + + + + +# [0.1.0](https://github.com/quadratic-funding/qfi/compare/v0.0.4...v0.1.0) (2022-06-02) + +**Note:** Version bump only for package @qfi/ui + + + + + +## [0.0.4](https://github.com/quadratic-funding/qfi/compare/v0.0.3...v0.0.4) (2022-06-01) + +**Note:** Version bump only for package @qfi/ui + + + + + +## [0.0.3](https://github.com/quadratic-funding/qfi/compare/v0.0.2...v0.0.3) (2022-06-01) + + +### Bug Fixes + +* **ci:** build failing ([e85b744](https://github.com/quadratic-funding/qfi/commit/e85b74426f45a3b75148e82cfaf85cee62da0701)) + + + + + +## 0.0.2 (2022-06-01) + +**Note:** Version bump only for package @qfi/ui diff --git a/packages/ui/package.json b/packages/ui/package.json index 8eaa162b..23e8ef17 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,13 +1,13 @@ { "name": "@qfi/ui", - "version": "0.1.0", + "version": "3.0.0", "private": true, "main": "./src/index.tsx", "dependencies": { "@chakra-ui/react": "^1.7.2", "@emotion/react": "^11.0.0", "@emotion/styled": "^11.0.0", - "@qfi/hooks": "^0.1.0", + "@qfi/hooks": "^3.0.0", "@testing-library/jest-dom": "^5.9.0", "@testing-library/react": "^10.2.1", "@testing-library/user-event": "^12.0.2", @@ -25,7 +25,7 @@ "react-pose-text": "^3.1.0", "react-scripts": "4.0.3", "react-spinners": "^0.11.0", - "typescript": "^4.3.5", + "typescript": "4.9.5", "web-vitals": "^0.2.2" }, "scripts": { diff --git a/packages/ui/src/components/magik/MagikButton.tsx b/packages/ui/src/components/magik/MagikButton.tsx index 09e69f0e..6aa5fcab 100644 --- a/packages/ui/src/components/magik/MagikButton.tsx +++ b/packages/ui/src/components/magik/MagikButton.tsx @@ -1,30 +1,29 @@ import { useCallback, useMemo } from "react"; -import { - Text, - VStack, Button, - Show, - Image, - useColorModeValue -} from "@chakra-ui/react"; +import { Text, VStack, Button, Show, Image, useColorModeValue } from "@chakra-ui/react"; import BeatLoader from "react-spinners/BeatLoader"; import CircleLoader from "react-spinners/CircleLoader"; import { formatAddress, useWallet, useENS } from "@qfi/hooks"; +import { ButtonProps } from "@chakra-ui/react"; +type MagikButtonProps = ButtonProps & {}; -export function MagikButton() { +export const MagikButton: React.FC = ({ children, ...props }) => { const { connectWallet, isConnecting, isConnected, disconnect, address } = useWallet(); const { avatar, loading } = useENS({ address: address ?? undefined }); // const { avatar, loading } = useENS({ ens: "alisha.eth" ?? "" }); - + const logoutBg = useColorModeValue(`red.400`, `red.400`); const loginBg = useColorModeValue(`#73FFBC`, `#37FFCF`); const switchBgHoverColor = isConnected ? logoutBg : loginBg; + + const switchBg = useColorModeValue(`#6953A2`, `rgba(255, 255, 255, 0.08)`) + const switchBgColor = switchBg; const logoutColor = useColorModeValue(`white`, `white`); const loginColor = useColorModeValue(`white`, `white`); const switchTextHoverColor = isConnected ? logoutColor : loginColor; const switchHeight = isConnected ? [14, 14, 14, 16] : [12, 12, 12, 14]; - const switchIconColor = useColorModeValue("black", "white"); + const switchIconColor = useColorModeValue("white", "white"); const BaseIcon = loading ? : <>; const SwitchAvatar = avatar ? ( @@ -36,25 +35,27 @@ export function MagikButton() { const switchAction = isConnected ? disconnect : connectWallet; return ( - - ); -} +}; function Web3State() { const switchColor = useColorModeValue("black", "white"); const { address } = useWallet(); @@ -75,29 +76,24 @@ function Web3State() { return `(¬、¬)`; } }, []); - const BaseName = useMemo( ()=>{ + const BaseName = useMemo(() => { return ens ? ( - {ens} - - - ) : ( - - {randomPlaceHolder()} - - ); + {ens} + + ) : ( + + {randomPlaceHolder()} + + ); }, [ens, randomPlaceHolder]); - const SwitchName = loading ? ( - - ) : ( - BaseName - ); + const SwitchName = loading ? : BaseName; return ( {SwitchName} - {ens} + {ens} {formatAddress(address)} ); @@ -105,14 +101,13 @@ function Web3State() { function ConnectState() { return ( - + CONNECT ); } - // MIT License // Copyright (c) 2022 RadHaus @@ -133,4 +128,4 @@ function ConnectState() { // 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. \ No newline at end of file +// SOFTWARE. diff --git a/packages/ui/src/components/magik/MagikText.tsx b/packages/ui/src/components/magik/MagikText.tsx index a08ab090..b0d12cf7 100644 --- a/packages/ui/src/components/magik/MagikText.tsx +++ b/packages/ui/src/components/magik/MagikText.tsx @@ -67,7 +67,7 @@ export type MagikTextProps = Omit & PropsWithChildren<{ text: string; charPoses: CharPoses; - fontFamily: "Futura" | "Helvetica" | "Arial" | "Tinos" | "sans-serif"; + fontFamily: "Futura" | "Helvetica" | "Arial" | "Dahlia" |"DahliaCondensed"| "Space Grotesk" | "sans-serif"; }>; export const MagikText: React.FC = ({ children, charPoses, text, ...props }) => ( diff --git a/packages/ui/src/index.tsx b/packages/ui/src/index.tsx index 5811944f..8bdfaa53 100644 --- a/packages/ui/src/index.tsx +++ b/packages/ui/src/index.tsx @@ -3,4 +3,5 @@ export * from "./components/magik/Magik" export * from "./components/magik/MagikButton" export * from "./components/magik/MagikLogo" export * from "./components/magik/MagikText" -export * from "./theme/index" \ No newline at end of file +export * from "./theme/index" +export * from "./theme/Fonts" \ No newline at end of file diff --git a/packages/ui/src/theme/ RTFM.md b/packages/ui/src/theme/ RTFM.md new file mode 100644 index 00000000..166ac5a3 --- /dev/null +++ b/packages/ui/src/theme/ RTFM.md @@ -0,0 +1,7 @@ + + + {/* It is important that the Label comes after the Control due to css selectors */} + First name + Keep it very short and sweet! + Your First name is invalid + diff --git a/packages/ui/src/theme/Fonts.tsx b/packages/ui/src/theme/Fonts.tsx new file mode 100644 index 00000000..b35d0356 --- /dev/null +++ b/packages/ui/src/theme/Fonts.tsx @@ -0,0 +1,125 @@ +import { Global } from "@emotion/react"; + +export const Fonts = () => ( + +); diff --git a/packages/ui/src/theme/brand.tsx b/packages/ui/src/theme/brand.tsx index 358d8755..1837e3d4 100644 --- a/packages/ui/src/theme/brand.tsx +++ b/packages/ui/src/theme/brand.tsx @@ -24,12 +24,12 @@ export const defaultTheme: { primaryAlpha: rgba("#10153d", 0.9), secondary: rgba("#10153d", 0.5), secondaryAlpha: rgba("#10153d", 0.75), - background: "#0d152e", - backgroundAlpha: "#03061B", + background: "#0D1429", + backgroundAlpha: "#0D1429", backgroundOverlayOpacity: 0.75, mode: "#FFFFFF", - headingFont: "Helvetica", - bodyFont: "Helvetica", + headingFont: "Space Grotesk", + bodyFont: "Space Grotesk", monoFont: "Times", avatarImg: BrandImg, bgImg: BgImg, diff --git a/packages/ui/src/theme/core/button.tsx b/packages/ui/src/theme/core/button.tsx index 026378c0..66e92ea3 100644 --- a/packages/ui/src/theme/core/button.tsx +++ b/packages/ui/src/theme/core/button.tsx @@ -1,52 +1,112 @@ -import { theme as base} from '@chakra-ui/react' -import { mode } from "@chakra-ui/theme-tools" +import { theme as base } from "@chakra-ui/react"; +import { mode } from "@chakra-ui/theme-tools"; const Button = { ...base.components.Button, // 1. Update the base styles baseStyle: { - fontWeight: 'medium', // Normally, it's "semibold" - _hover: { scale: '1.05', bg: 'background.50' }, + fontWeight: "medium", // Normally, it's "semibold" + _hover: { scale: "1.05", bg: "background.50" }, }, // 2. Add a new button size or extend existing sizes: {}, // 3. Add a new visual variant variants: { primary: { - color: 'white', - bg: 'primary.400', - _hover: { bg: 'primary.500' }, + color: "white", + bg: "primary.400", + _hover: { bg: "primary.500" }, }, + barcelona: { + height: "50px", + color: "white", + justifyContent: "center", + alignItems: "center", + borderRadius: "50%", + background: "rgb(53, 75, 55) none repeat scroll 0% 0%", + fontFamily: 'Space Grotesk', + fontWeight: "700", + _hover: { transition: "all 0s", transform: "rotate(-6.41deg)", color: "white", scale: "1" }, + transform: "rotate(6.41deg)", + width: "122px", + }, + porto: (props:any )=>({ + height: "50px", + width: "auto", + textAlign: "center", + padding: "1rem 2rem", + display: "inline-block", + textDecoration: "none", + position: "relative", + zIndex: "20", + textTransform: "uppercase", + + letterSpacing: "2px", + fontSize: "1.4rem", + fontWeight: "700", + color: mode(`#6953A2`, `#f6ec10`)(props), + + _hover: { + bg: mode(`transparent`, `transparent`)(props), + boxShadow: `0 0 10px`, + color: mode(`#6953A2`, `#E9D100` )(props), + textShadow: `0 0 2px ${mode(`grey.100`, `#f6ec10`)(props)}`, + }, + _before :{ + content: '""', + width: "100%", + display: "block", + height: "100%", + position: "absolute", + left: "0", + top: "0", + zIndex: "2", + boxShadow: `0 0 5px ${mode(`#6953A2`, `#f6ec10`)}, inset 0 0 5px ${mode(`#6953A2`, `#f6ec10`)(props)}`, + border: `${mode(`#6953A2`, `#f6ec10`)(props)} 2px solid`, + borderRadius: mode("3px", "8px")(props), + }, + _after :{ + content: '""', + width: "90px", + display: "block", + height: "16px", + position: "absolute", + + backgroundColor: mode(`transparent`, `#0D1429`)(props), + right: "-5px", + bottom: "-9px", + zIndex: "3", + } + }), sideNav: { - bg: 'transparent', - color: 'whiteAlpha.900', - borderRadius: '9999px', - height: '56px', - alignItems: 'center', - justifyContent: 'flex-start', - _hover: { bg: 'transparent', color: 'secondary.500', scale: '1' }, + bg: "transparent", + color: "whiteAlpha.900", + borderRadius: "9999px", + height: "56px", + alignItems: "center", + justifyContent: "flex-start", + _hover: { bg: "transparent", color: "secondary.500", scale: "1" }, _active: { - boxShadow: 'none', - borderColor: 'transparent', - outline: 'none', - backgroundColor: 'white', + boxShadow: "none", + borderColor: "transparent", + outline: "none", + backgroundColor: "white", }, _focus: { - boxShadow: 'none', - borderColor: 'transparent', - outline: 'none', + boxShadow: "none", + borderColor: "transparent", + outline: "none", }, }, - magik: (props:any) => ({ + magik: (props: any) => ({ ...base.components.Button.variants.solid(props), bg: mode(`gray.100`, `whiteAlpha.200`)(props), color: mode(`gray.800`, `whiteAlpha.900`)(props), - }), // 4. Override existing variants - outline: (props:any) => ({ + outline: (props: any) => ({ ...base.components.Button.variants.outline(props), - bg: 'transparent', - _active: { bg: 'inherit' }, + bg: "transparent", + _active: { bg: "inherit" }, }), }, }; diff --git a/packages/ui/src/theme/fonts/dahlia-bold.woff b/packages/ui/src/theme/fonts/dahlia-bold.woff new file mode 100644 index 00000000..181f995a Binary files /dev/null and b/packages/ui/src/theme/fonts/dahlia-bold.woff differ diff --git a/packages/ui/src/theme/fonts/dahlia-boldcondensed.woff b/packages/ui/src/theme/fonts/dahlia-boldcondensed.woff new file mode 100644 index 00000000..3a91dd70 Binary files /dev/null and b/packages/ui/src/theme/fonts/dahlia-boldcondensed.woff differ diff --git a/packages/ui/src/theme/fonts/dahlia-medium.woff b/packages/ui/src/theme/fonts/dahlia-medium.woff new file mode 100644 index 00000000..541035e9 Binary files /dev/null and b/packages/ui/src/theme/fonts/dahlia-medium.woff differ diff --git a/packages/ui/src/theme/fonts/dahlia-mediumcondensed.woff b/packages/ui/src/theme/fonts/dahlia-mediumcondensed.woff new file mode 100644 index 00000000..11c47cd7 Binary files /dev/null and b/packages/ui/src/theme/fonts/dahlia-mediumcondensed.woff differ diff --git a/packages/ui/src/theme/fonts/dahlia-regular.woff b/packages/ui/src/theme/fonts/dahlia-regular.woff new file mode 100644 index 00000000..f4e6b7f2 Binary files /dev/null and b/packages/ui/src/theme/fonts/dahlia-regular.woff differ diff --git a/packages/ui/src/theme/fonts/dahlia-regularcondensed.woff b/packages/ui/src/theme/fonts/dahlia-regularcondensed.woff new file mode 100644 index 00000000..2fce5c51 Binary files /dev/null and b/packages/ui/src/theme/fonts/dahlia-regularcondensed.woff differ diff --git a/packages/ui/src/theme/index.tsx b/packages/ui/src/theme/index.tsx index f11f0b7a..320cd957 100644 --- a/packages/ui/src/theme/index.tsx +++ b/packages/ui/src/theme/index.tsx @@ -1,39 +1,42 @@ import { ColorMode, extendTheme } from "@chakra-ui/react"; -import { theme as defaultTheme} from "@chakra-ui/theme" -import { StepsStyleConfig as Steps } from 'chakra-ui-steps'; +import { theme as defaultTheme } from "@chakra-ui/theme"; +import { StepsStyleConfig as Steps } from "chakra-ui-steps"; import { lighten, darken } from "polished"; +import { mode } from "@chakra-ui/theme-tools"; +import { theme as base } from "@chakra-ui/react"; -import Badge from './core/badge'; -import Button from './core/button'; -import FormLabel from './core/formLabel'; -import Heading from './core/heading'; -import IconButton from './core/iconButton'; -import Input from './core/input'; -import Link from './core/link'; -import Menu from './core/menu'; -import Modal from './core/modal'; -import NumberInput from './core/numberInput'; -import Popover from './core/popover'; -import Tabs from './core/tabs'; -import Textarea from './core/textarea'; - +import Badge from "./core/badge"; +import Button from "./core/button"; +import FormLabel from "./core/formLabel"; +import Heading from "./core/heading"; +import IconButton from "./core/iconButton"; +import Input from "./core/input"; +import Link from "./core/link"; +import Menu from "./core/menu"; +import Modal from "./core/modal"; +import NumberInput from "./core/numberInput"; +import Popover from "./core/popover"; +import Tabs from "./core/tabs"; +import Textarea from "./core/textarea"; import { defaultTheme as customTheme } from "./brand"; - +const activeLabelStyles = { + transform: "scale(0.85) translateY(-24px)", +}; const themeKeys = Object.keys(customTheme); const brand = { ...defaultTheme, - ...themeKeys.reduce((acc:any, prop): {} => { + ...themeKeys.reduce((acc: any, prop): {} => { //@ts-ignore acc[prop] = customTheme[prop] || defaultTheme[prop]; return acc; }, {}), }; // Add color mode config -const mode: ColorMode | undefined = "dark"; +const colormode: ColorMode | undefined = "light"; const config = { - initialColorMode: mode, + initialColorMode: colormode, useSystemColorMode: false, }; @@ -42,7 +45,7 @@ export const theme = extendTheme({ colors: { secondaryAlpha: brand.secondaryAlpha, primaryAlpha: brand.primaryAlpha, - + link: { 50: lighten(0.4, brand.link), 100: lighten(0.3, brand.link), @@ -103,19 +106,17 @@ export const theme = extendTheme({ 800: darken(0.15, brand.secondary), 900: darken(0.2, brand.secondary), }, - }, images: { avatarImg: brand.avatarImg, bgImg: brand.bgImg, }, fonts: { - heading: brand.headingFont, - body: brand.bodyFont, + heading: `'Space Grotesk', serif`, + body: `'Space Grotesk', sans-serif`, mono: brand.monoFont, - hub: "Mirza", - accessory: "Roboto Mono", - space: "Space Mono", + accessory: "Space Grotesk", + space: "Space Grotesk", }, meta: { projects: brand.branding.projects, @@ -123,6 +124,56 @@ export const theme = extendTheme({ }, components: { // core components + Accordion: { + variants: { + porto: (props: any) => ({ + container: { + padding: "3rem 3rem", + borderRadius: mode("3px", "16px")(props), + position: "relative", + display: "flex", + flexDirection: "column", + + justifyContent: "flex-start", + _before: { + content: '""', + zIndex: "-3", + boxShadow: `0 0 10px ${mode(`gray.100`, `#9eeafd`)(props)}, inset 0 0 10px ${mode(`gray.100`, `#9eeafd`)(props)} !important`, + border: `${mode(`#6953A2`, `#9eeafd`)(props)} 2px solid`, + borderRadius: mode("3px", "16px")(props), + width: "98% !important", + + height: "100%", + position: "absolute", + left: "0", + top: "0", + right: "0", + }, + _after: { + content: '""', + width: "200px", + height: "30px", + position: "absolute", + backgroundColor: mode(`transparent`, `#0D1429`)(props), + right: "-20px", + top: "-15px", + zIndex: "-2", + }, + }, + button: { + _focus: { + boxShadow: "none", + }, + _hover: { + bg: mode(`transparent`, `transparent`)(props), + boxShadow: mode(`0`, `1px 1px 0px 1px`)(props), + color: mode(`#6953A2`, `#E9D100` )(props), + textShadow: `0 0 2px ${mode(`grey.100`, `#f6ec10`)(props)}`, + }, + }, + }), + }, + }, Button, Badge, FormLabel, @@ -137,22 +188,55 @@ export const theme = extendTheme({ Tabs, Textarea, Steps, + Form: { + variants: { + floating: (props: any) => ({ + container: { + _focusWithin: { + label: { + ...activeLabelStyles, + }, + }, + "input:not(:placeholder-shown) + label, .chakra-select__wrapper + label": { + ...activeLabelStyles, + }, + label: { + top: 0, + left: 0, + zIndex: 2, + position: "absolute", + backgroundColor: mode(`gray.100`, `#020e38`)(props), + pointerEvents: "none", + mx: 3, + px: 1, + my: 2, + transformOrigin: "left top", + }, + }, + }), + }, + }, + // custom components }, styles: { bgOverlayOpacity: brand.bgOverlayOpacity, - global: { - 'html, body': { - fontSize: 'm', - color: 'mode.900', - lineHeight: 'tall', + global: (props: any) => ({ + "html, body": { + fontSize: "m", + color: "mode.900", + lineHeight: "tall", + }, + body: { + bg: mode(`gray.100`, `#0D1429`)(props), + color: mode(`gray.800`, `whiteAlpha.900`)(props), }, a: { - transition: 'all 0.15s linear', - color: 'secondary.400', - _hover: { textDecoration: 'none', color: 'secondary.500' }, + transition: "all 0.15s linear", + color: mode(`secondary.400`, `blue.500`)(props), + _hover: { textDecoration: "none", color: "secondary.500" }, }, - }, + }), }, config, }); diff --git a/packages/ui/thisone b/packages/ui/thisone new file mode 100644 index 00000000..e69de29b diff --git a/yarn.lock b/yarn.lock index c3d8ca4b..e69de29b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,24621 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" - integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== - dependencies: - "@jridgewell/trace-mapping" "^0.3.0" - -"@babel/code-frame@7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.5.5": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== - dependencies: - "@babel/highlight" "^7.16.7" - -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" - integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== - -"@babel/core@7.12.3": - version "7.12.3" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" - integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/generator" "^7.12.1" - "@babel/helper-module-transforms" "^7.12.1" - "@babel/helpers" "^7.12.1" - "@babel/parser" "^7.12.3" - "@babel/template" "^7.10.4" - "@babel/traverse" "^7.12.1" - "@babel/types" "^7.12.1" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.1" - json5 "^2.1.2" - lodash "^4.17.19" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.5", "@babel/core@^7.8.4": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a" - integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.7" - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helpers" "^7.17.8" - "@babel/parser" "^7.17.8" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - -"@babel/generator@^7.12.1", "@babel/generator@^7.17.3", "@babel/generator@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad" - integrity sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w== - dependencies: - "@babel/types" "^7.17.0" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" - integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" - integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" - integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.17.5" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9" - integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - -"@babel/helper-create-regexp-features-plugin@^7.16.7": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" - integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - regexpu-core "^5.0.1" - -"@babel/helper-define-polyfill-provider@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" - integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== - dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-environment-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" - integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-explode-assignable-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" - integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" - integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== - dependencies: - "@babel/helper-get-function-arity" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-get-function-arity@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" - integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-hoist-variables@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" - integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-member-expression-to-functions@^7.16.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" - integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== - dependencies: - "@babel/types" "^7.17.0" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" - integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" - integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== - dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.17.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" - -"@babel/helper-optimise-call-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" - integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" - integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== - -"@babel/helper-remap-async-to-generator@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" - integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-wrap-function" "^7.16.8" - "@babel/types" "^7.16.8" - -"@babel/helper-replace-supers@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" - integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== - dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-simple-access@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" - integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== - dependencies: - "@babel/types" "^7.17.0" - -"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" - integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-split-export-declaration@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" - integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - -"@babel/helper-validator-option@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" - integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== - -"@babel/helper-wrap-function@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" - integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== - dependencies: - "@babel/helper-function-name" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.8" - "@babel/types" "^7.16.8" - -"@babel/helpers@^7.12.1", "@babel/helpers@^7.17.8": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.8.tgz#288450be8c6ac7e4e44df37bcc53d345e07bc106" - integrity sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw== - dependencies: - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7": - version "7.16.10" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" - integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.12.3", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8", "@babel/parser@^7.7.0": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.8.tgz#2817fb9d885dd8132ea0f8eb615a6388cca1c240" - integrity sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ== - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" - integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" - integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" - -"@babel/plugin-proposal-async-generator-functions@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" - integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-remap-async-to-generator" "^7.16.8" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" - integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-proposal-class-static-block@^7.16.7": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c" - integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.6" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-decorators@^7.16.4": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.8.tgz#4f0444e896bee85d35cf714a006fc5418f87ff00" - integrity sha512-U69odN4Umyyx1xO1rTII0IDkAEC+RNlcKXtqOblfpzqy1C+aOplb76BQNq0+XdpVkOaPlpEDwd++joY8FNFJKA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.6" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/plugin-syntax-decorators" "^7.17.0" - charcodes "^0.2.0" - -"@babel/plugin-proposal-dynamic-import@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" - integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" - integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" - integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" - integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" - integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.16.0", "@babel/plugin-proposal-numeric-separator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" - integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.16.7": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" - integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== - dependencies: - "@babel/compat-data" "^7.17.0" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.16.7" - -"@babel/plugin-proposal-optional-catch-binding@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" - integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" - integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.16.0", "@babel/plugin-proposal-private-methods@^7.16.11": - version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" - integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.10" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-proposal-private-property-in-object@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" - integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" - integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-decorators@^7.17.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.17.0.tgz#a2be3b2c9fe7d78bd4994e790896bc411e2f166d" - integrity sha512-qWe85yCXsvDEluNP0OyeQjH63DlhAR3W7K9BxxU1MvbDb48tgBG+Ao6IJJ6smPDrrVzSQZrbF6donpkFBMcs3A== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-flow@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz#202b147e5892b8452bbb0bb269c7ed2539ab8832" - integrity sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.12.13", "@babel/plugin-syntax-jsx@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665" - integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" - integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-arrow-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" - integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-async-to-generator@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" - integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-remap-async-to-generator" "^7.16.8" - -"@babel/plugin-transform-block-scoped-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" - integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-block-scoping@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" - integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-classes@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" - integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" - integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-destructuring@^7.16.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz#49dc2675a7afa9a5e4c6bdee636061136c3408d1" - integrity sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" - integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-duplicate-keys@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" - integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-exponentiation-operator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" - integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-flow-strip-types@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz#291fb140c78dabbf87f2427e7c7c332b126964b8" - integrity sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-flow" "^7.16.7" - -"@babel/plugin-transform-for-of@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" - integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" - integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== - dependencies: - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" - integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-member-expression-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" - integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-modules-amd@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" - integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== - dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.16.8": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz#d86b217c8e45bb5f2dbc11eefc8eab62cf980d19" - integrity sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA== - dependencies: - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-simple-access" "^7.17.7" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.16.7": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz#81fd834024fae14ea78fbe34168b042f38703859" - integrity sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw== - dependencies: - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" - integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== - dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" - integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - -"@babel/plugin-transform-new-target@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" - integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-object-super@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" - integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - -"@babel/plugin-transform-parameters@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" - integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-property-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" - integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-react-constant-elements@^7.12.1": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.17.6.tgz#6cc273c2f612a6a50cb657e63ee1303e5e68d10a" - integrity sha512-OBv9VkyyKtsHZiHLoSfCn+h6yU7YKX8nrs32xUmOa1SRSk+t03FosB6fBZ0Yz4BpD1WV7l73Nsad+2Tz7APpqw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" - integrity sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-react-jsx-development@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8" - integrity sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.16.7" - -"@babel/plugin-transform-react-jsx@^7.16.7": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz#eac1565da176ccb1a715dae0b4609858808008c1" - integrity sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-jsx" "^7.16.7" - "@babel/types" "^7.17.0" - -"@babel/plugin-transform-react-pure-annotations@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67" - integrity sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-regenerator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb" - integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q== - dependencies: - regenerator-transform "^0.14.2" - -"@babel/plugin-transform-reserved-words@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" - integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-runtime@^7.16.4", "@babel/plugin-transform-runtime@^7.5.5": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70" - integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.5.0" - babel-plugin-polyfill-regenerator "^0.3.0" - semver "^6.3.0" - -"@babel/plugin-transform-shorthand-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" - integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-spread@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" - integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - -"@babel/plugin-transform-sticky-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" - integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-template-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" - integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-typeof-symbol@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" - integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-typescript@^7.16.7": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz#591ce9b6b83504903fa9dd3652c357c2ba7a1ee0" - integrity sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-typescript" "^7.16.7" - -"@babel/plugin-transform-unicode-escapes@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" - integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-unicode-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" - integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4", "@babel/preset-env@^7.8.4": - version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" - integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== - dependencies: - "@babel/compat-data" "^7.16.8" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-async-generator-functions" "^7.16.8" - "@babel/plugin-proposal-class-properties" "^7.16.7" - "@babel/plugin-proposal-class-static-block" "^7.16.7" - "@babel/plugin-proposal-dynamic-import" "^7.16.7" - "@babel/plugin-proposal-export-namespace-from" "^7.16.7" - "@babel/plugin-proposal-json-strings" "^7.16.7" - "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" - "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.16.7" - "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-private-methods" "^7.16.11" - "@babel/plugin-proposal-private-property-in-object" "^7.16.7" - "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@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-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.16.7" - "@babel/plugin-transform-async-to-generator" "^7.16.8" - "@babel/plugin-transform-block-scoped-functions" "^7.16.7" - "@babel/plugin-transform-block-scoping" "^7.16.7" - "@babel/plugin-transform-classes" "^7.16.7" - "@babel/plugin-transform-computed-properties" "^7.16.7" - "@babel/plugin-transform-destructuring" "^7.16.7" - "@babel/plugin-transform-dotall-regex" "^7.16.7" - "@babel/plugin-transform-duplicate-keys" "^7.16.7" - "@babel/plugin-transform-exponentiation-operator" "^7.16.7" - "@babel/plugin-transform-for-of" "^7.16.7" - "@babel/plugin-transform-function-name" "^7.16.7" - "@babel/plugin-transform-literals" "^7.16.7" - "@babel/plugin-transform-member-expression-literals" "^7.16.7" - "@babel/plugin-transform-modules-amd" "^7.16.7" - "@babel/plugin-transform-modules-commonjs" "^7.16.8" - "@babel/plugin-transform-modules-systemjs" "^7.16.7" - "@babel/plugin-transform-modules-umd" "^7.16.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" - "@babel/plugin-transform-new-target" "^7.16.7" - "@babel/plugin-transform-object-super" "^7.16.7" - "@babel/plugin-transform-parameters" "^7.16.7" - "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.16.7" - "@babel/plugin-transform-reserved-words" "^7.16.7" - "@babel/plugin-transform-shorthand-properties" "^7.16.7" - "@babel/plugin-transform-spread" "^7.16.7" - "@babel/plugin-transform-sticky-regex" "^7.16.7" - "@babel/plugin-transform-template-literals" "^7.16.7" - "@babel/plugin-transform-typeof-symbol" "^7.16.7" - "@babel/plugin-transform-unicode-escapes" "^7.16.7" - "@babel/plugin-transform-unicode-regex" "^7.16.7" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.16.8" - babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.5.0" - babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.20.2" - semver "^6.3.0" - -"@babel/preset-modules@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" - integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852" - integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-transform-react-display-name" "^7.16.7" - "@babel/plugin-transform-react-jsx" "^7.16.7" - "@babel/plugin-transform-react-jsx-development" "^7.16.7" - "@babel/plugin-transform-react-pure-annotations" "^7.16.7" - -"@babel/preset-typescript@^7.16.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9" - integrity sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-transform-typescript" "^7.16.7" - -"@babel/runtime-corejs3@^7.10.2": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.8.tgz#d7dd49fb812f29c61c59126da3792d8740d4e284" - integrity sha512-ZbYSUvoSF6dXZmMl/CYTMOvzIFnbGfv4W3SEHYgMvNsFTeLaF2gkGAF4K2ddmtSK4Emej+0aYcnSC6N5dPCXUQ== - dependencies: - core-js-pure "^3.20.2" - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.16.7", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2" - integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.10.4", "@babel/template@^7.16.7", "@babel/template@^7.3.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" - integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" - integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.3" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.3" - "@babel/types" "^7.17.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.6", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" - integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@chakra-ui/accordion@1.4.10": - version "1.4.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/accordion/-/accordion-1.4.10.tgz#1754b26ffe4450e39306ba7b94e75e89598cb510" - integrity sha512-TehP/24201HHmsq0aTa6efp/TkzULbQPFs1WvUkG46CBaWBz2/PfwhZ61ETrFDJST1NKVljpm+WrWPtx9jWF4w== - dependencies: - "@chakra-ui/descendant" "2.1.3" - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/icon" "2.0.5" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/transition" "1.4.7" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/alert@1.3.7": - version "1.3.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/alert/-/alert-1.3.7.tgz#f36020ffc3b2c26be67025c56bccbf0639a81a67" - integrity sha512-fFpJYBpHOIK/BX4BVl/xafYiDBUW+Bq/gUYDOo4iAiO4vHgxo74oa+yOwSRNlNjAgIX7pi2ridsYQALKyWyxxQ== - dependencies: - "@chakra-ui/icon" "2.0.5" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/anatomy@1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/anatomy/-/anatomy-1.3.0.tgz#38a40dd6f2bb076fe8bebe8fb8e4769ea005e03d" - integrity sha512-vj/lcHkCuq/dtbl69DkNsftZTnrGEegB90ODs1B6rxw8iVMdDSYkthPPFAkqzNs4ppv1y2IBjELuVzpeta1OHA== - dependencies: - "@chakra-ui/theme-tools" "^1.3.6" - -"@chakra-ui/avatar@1.3.10": - version "1.3.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/avatar/-/avatar-1.3.10.tgz#5d479cad9e5565b8b741b41de26076dcd57b7b76" - integrity sha512-vTkEwvqYNSQR3zxPmT+ZkQS44ptI0N0i8fO3r+S0s6Hi1m6phBgohd20wxdIlSKcfHqPMqRjpQr/VBlSqziyyQ== - dependencies: - "@chakra-ui/image" "1.1.9" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/breadcrumb@1.3.6": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/breadcrumb/-/breadcrumb-1.3.6.tgz#fe22e162c37add5830bd1292172bb11d859c6f35" - integrity sha512-iXxienBO6RUnJEcDvyDWyRt+mzPyl7/b6N8i0vrjGKGLpgtayJFvIdo33tFcvx6TCy7V9hiE3HTtZnNomWdR6A== - dependencies: - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/button@1.5.9": - version "1.5.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/button/-/button-1.5.9.tgz#d8117d103367331f84d9b1d193152a5a2a82268c" - integrity sha512-flHRK6Bxsr3mto+DiOK32+lyfLHTPBZCfIsLPSoFGyf2g67hFxDrkqj9oD8QOlQOU9vsIptd10A3kqZQEd00FA== - dependencies: - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/spinner" "1.2.6" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/checkbox@1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/checkbox/-/checkbox-1.7.0.tgz#324299d84b98eda6b489ff3f027f05ed60c2af46" - integrity sha512-BElMx27+oIWU2Y+pv8QYjNmJmj21HvqfTZc4boinU+Hh/vbrtRTuxigKKFxYhQqsPfUcpUyNkRwNwN2KB8Hk3A== - dependencies: - "@chakra-ui/form-control" "1.5.10" - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/utils" "1.10.4" - "@chakra-ui/visually-hidden" "1.1.6" - -"@chakra-ui/clickable@1.2.6": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/clickable/-/clickable-1.2.6.tgz#7f3deef71580acf47c2395cac2c1734f43418a3f" - integrity sha512-89SsrQwwwAadcl/bN8nZqqaaVhVNFdBXqQnxVy1t07DL5ezubmNb5SgFh9LDznkm9YYPQhaGr3W6HFro7iAHMg== - dependencies: - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/close-button@1.2.7": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/close-button/-/close-button-1.2.7.tgz#6f3073618ae777d7e36a80fb17bc00aaa790e7a5" - integrity sha512-cYTxfgrIlPU4IZm1sehZXxx/TNQBk9c3LBPvTpywEM8GVRGINh4YLq8WiMaPtO+TDNBnKoWS/jS4IHnR+abADw== - dependencies: - "@chakra-ui/icon" "2.0.5" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/color-mode@1.4.7": - version "1.4.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/color-mode/-/color-mode-1.4.7.tgz#01ad9b83a97f18e1b314ad3541c52360aee53771" - integrity sha512-pl5lMhNnFVBpYzXrs3mjxJOE/qnb5NJC71sQaxk9uqUQUpM/oJ+kyE4eYKKSWNvs+qhFx9eZJvuP5DvSrtij3w== - dependencies: - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/react-env" "1.1.6" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/control-box@1.1.6": - version "1.1.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/control-box/-/control-box-1.1.6.tgz#15a40a2cab525799988ae53948b61eed81a7f177" - integrity sha512-EUcq5f854puG6ZA6wAWl4107OPl8+bj4MMHJCa48BB0qec0U8HCEtxQGnFwJmaYLalIAjMfHuY3OwO2A3Hi9hA== - dependencies: - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/counter@1.2.9": - version "1.2.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/counter/-/counter-1.2.9.tgz#51a5616f49396db230c3ab3ff38f7b05878e38fa" - integrity sha512-gGsG7xbFjgvnZu8UoiaGVpX5NwQKFHpO1fpZanIYi1Ty4DKlMWar8ouWaxHgQESSsiVwprRePFhwxv9Mk/mnYQ== - dependencies: - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/css-reset@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@chakra-ui/css-reset/-/css-reset-1.1.3.tgz#da65507ea1d69ed309bc34619881e23b5004ec7d" - integrity sha512-AgfrE7bRTJvNi/4zIfacI/kBHmHmHEIeQtHwCvk/0qM9V2gK1VM3ctYlnibf7BTh17F/UszweOGRb1lHSPfWjw== - -"@chakra-ui/descendant@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@chakra-ui/descendant/-/descendant-2.1.3.tgz#6198ccce207b3d8697dedefff6886f18ca13b5ce" - integrity sha512-aNYNv99gEPENCdw2N5y3FvL5wgBVcLiOzJ2TxSwb4EVYszbgBZ8Ry1pf7lkoSfysdxD0scgy2cVyxO8TsYTU4g== - dependencies: - "@chakra-ui/react-utils" "^1.2.3" - -"@chakra-ui/editable@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/editable/-/editable-1.4.1.tgz#3cb78221a2dadcde6373c3a1f97e850bfd97ffa3" - integrity sha512-mt5BuI59YRzLetH3FBG3qAKxxJ0WtsYBaNHuulJLgO4iO6y279WWIQZVGXYmtZw/6ENK6GtRHCotf+ruDcGBEA== - dependencies: - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/focus-lock@1.2.6": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/focus-lock/-/focus-lock-1.2.6.tgz#ecdc9688651c55c67f9059720f0885ea7c02b979" - integrity sha512-ZJNE1oNdUM1aGWuCJ+bxFa/d3EwxzfMWzTKzSvKDK50GWoUQQ10xFTT9nY/yFpkcwhBvx1KavxKf44mIhIbSog== - dependencies: - "@chakra-ui/utils" "1.10.4" - react-focus-lock "2.5.2" - -"@chakra-ui/form-control@1.5.10": - version "1.5.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/form-control/-/form-control-1.5.10.tgz#0f6d3814eb995eab774ebd8096db34620619e7d1" - integrity sha512-u64RtIuqUd7D0cRIuNvvi6+BQ1yls+IhcXmUlbTbn27bvBJcKgwxlFpKE26KonW77qHjguL1Sse2Mv5Gz/9akw== - dependencies: - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/icon" "2.0.5" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/hooks@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/hooks/-/hooks-1.9.0.tgz#1fe049e69267d34083fa045b911b30ca1ca7d7dc" - integrity sha512-fvhsObVxfQzAGaT5Vc4siwzoUVxueSK81MCHlU4FifANJQ+u/6c8PZkn9WRM0+WzWJHMAcYvp0y+A46y7TftFQ== - dependencies: - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/utils" "1.10.4" - compute-scroll-into-view "1.0.14" - copy-to-clipboard "3.3.1" - -"@chakra-ui/icon@2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/icon/-/icon-2.0.5.tgz#d57f53e6a2c7ae1bae7292a1778fd466c02e2e29" - integrity sha512-ZrqRvCCIxGr4qFd/r1pmtd9tobRmv8KAxV7ygFoc/t4vOSKTcVIjhE12gsI3FzgvXM15ZFVwsxa1zodwgo5neQ== - dependencies: - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/image@1.1.9": - version "1.1.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/image/-/image-1.1.9.tgz#9887cd4ba5482bd7031e99c1541fc2e2963ecbbc" - integrity sha512-Aki+17AI/A3ss0DaQWrJa74luZN2m9o0bTugCeFr+6yV/VWjXeGSW7aht3XeGH6NrNoVuIkew0lmfrVRt9FfXA== - dependencies: - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/input@1.4.5": - version "1.4.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/input/-/input-1.4.5.tgz#8e4f22fe151166fd1497647b38a97231d7e10e0a" - integrity sha512-UOycHcMcxKwGCt7qVEdas3gfgJLc/R3siEMVTH/aiROi4wPtzn7GZPphLd/Zn/sALlbVIqjofZ6Cj6Koz+bx2g== - dependencies: - "@chakra-ui/form-control" "1.5.10" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/layout@1.7.8": - version "1.7.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/layout/-/layout-1.7.8.tgz#0fcd70059ecab3eaf0ef25621d1fb376eb5d9973" - integrity sha512-zXMS/TEjqYDCgG3zwS/PcSTNBs1OMyuY92WP5HBxJLGipGxVLTvmIt0cPDiodTqLNfFsalBUMH6lR79pxk6ZtA== - dependencies: - "@chakra-ui/icon" "2.0.5" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/live-region@1.1.6": - version "1.1.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/live-region/-/live-region-1.1.6.tgz#135461a19ae2d479eefb012376ffa0f500b83b16" - integrity sha512-9gPQHXf7oW0jXyT5R/JzyDMfJ3hF70TqhN8bRH4fMyfNr2Se+SjztMBqCrv5FS5rPjcCeua+e0eArpoB3ROuWQ== - dependencies: - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/media-query@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/media-query/-/media-query-2.0.4.tgz#25e8074a19613d4ccce880a1f92c8e733708b079" - integrity sha512-kn6g/L0IFFUHz2v4yiCsBnhg9jUeA7525Z+AWl+BPtvryi7i9J+AJ27y/QAge7vUGy4dwDeFyxOZTs2oZ9/BsA== - dependencies: - "@chakra-ui/react-env" "1.1.6" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/menu@1.8.10": - version "1.8.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/menu/-/menu-1.8.10.tgz#5715a4b1cbf992250f4041effbdd0e976e1fdade" - integrity sha512-ml2LFo/Tn4OuGosqabZRO0nBNqZ+v/5IBfVUGAXWpSPSYXfQXPQg6WRy5hLxlCEMYdVFrYxDRvQTOCaHcN0Q8g== - dependencies: - "@chakra-ui/clickable" "1.2.6" - "@chakra-ui/descendant" "2.1.3" - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/popper" "2.4.3" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/transition" "1.4.7" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/modal@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/modal/-/modal-1.11.0.tgz#8477c23d114ea580ced46a4b0c7dacab3daed29a" - integrity sha512-E2Ebne3rqz3vMSH/eLOmBAd+LnQX9uPlcuCoAolS0l8peD8ifILhuAYmOa/vzdAhakEut2/Y9LLTty22cxCyOg== - dependencies: - "@chakra-ui/close-button" "1.2.7" - "@chakra-ui/focus-lock" "1.2.6" - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/portal" "1.3.9" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/transition" "1.4.7" - "@chakra-ui/utils" "1.10.4" - aria-hidden "^1.1.1" - react-remove-scroll "2.4.1" - -"@chakra-ui/number-input@1.4.6": - version "1.4.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/number-input/-/number-input-1.4.6.tgz#9f9197a24e0b9765df71881a02df105daff5b32d" - integrity sha512-MgdhpvyOdzWxbl3CQXWHwp/b8/NV6Hnpi0VjiJd52Plw8BQH5wl/SEbl9tECZ8pv7opGiNdGSqAFeVXOhXgFQw== - dependencies: - "@chakra-ui/counter" "1.2.9" - "@chakra-ui/form-control" "1.5.10" - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/icon" "2.0.5" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/pin-input@1.7.9": - version "1.7.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/pin-input/-/pin-input-1.7.9.tgz#9e20a8bb383e035d68cb7a13fe90b5d0d611f2e6" - integrity sha512-xx0n1iRK83MPNUaWxGEL2yUxGAtzXeGjYsZzzccqL/vTqsLHUBWnDjsjoztMkcekwcZt6fKzVrq60iCiLGYYUQ== - dependencies: - "@chakra-ui/descendant" "2.1.3" - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/popover@1.11.8": - version "1.11.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/popover/-/popover-1.11.8.tgz#cbcee4792c86ee825db3e2c020872c2f4e49c53a" - integrity sha512-EGDAnr2ohIZmrDoS7tmlFojHD9vJjUUi7ZYbTB7QGUbQSvjfJKw36d4Y9Kd85dA1nlz18oe7b5+Eqmraw+tSPg== - dependencies: - "@chakra-ui/close-button" "1.2.7" - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/popper" "2.4.3" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/popper@2.4.3": - version "2.4.3" - resolved "https://registry.yarnpkg.com/@chakra-ui/popper/-/popper-2.4.3.tgz#fcdc917d13a56b9d44868c78a009e4dd692697a2" - integrity sha512-TGzFnYt3mtIVkIejtYIAu4Ka9DaYLzMR4NgcqI6EtaTvgK7Xep+6RTiY/Nq+ZT3l/eaNUwqHRFoNrDUg1XYasA== - dependencies: - "@chakra-ui/react-utils" "1.2.3" - "@popperjs/core" "^2.9.3" - -"@chakra-ui/portal@1.3.9": - version "1.3.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/portal/-/portal-1.3.9.tgz#48ca6d1df4510fdaac2bcd103aaaa2fb27ad0019" - integrity sha512-C/DYG90Zlal+N4HtaEU54PKmufRqnmPmmXHYiB0uh27I1frAdzizgrmkjyne5F1Hodf1XlnWYGlxRzJql2j/rQ== - dependencies: - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/progress@1.2.6": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/progress/-/progress-1.2.6.tgz#4a3a40e826c8c72160d3c8ff411e86244e280ebc" - integrity sha512-thaHRIYTVktgV78vJMNwzfCX+ickhSpn2bun6FtGVUphFx4tjV+ggz+IGohm6AH2hapskoR1mQU2iNZb6BK0hQ== - dependencies: - "@chakra-ui/theme-tools" "1.3.6" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/provider@1.7.13": - version "1.7.13" - resolved "https://registry.yarnpkg.com/@chakra-ui/provider/-/provider-1.7.13.tgz#2471a84906e5cbbdbd41f5d530e6f8fd0e24bd60" - integrity sha512-LTcEZ/u61qQnZ/hKoXv01s2EkIwz9gS/tffLdhL83XVFIFNi5blxv9VIEU50+tkhLrK3rgBiDb5jMvkJq23uyA== - dependencies: - "@chakra-ui/css-reset" "1.1.3" - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/portal" "1.3.9" - "@chakra-ui/react-env" "1.1.6" - "@chakra-ui/system" "1.12.0" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/radio@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/radio/-/radio-1.5.0.tgz#39cc504a50ff8ecd7066f96ebafe4f3fca2fa19b" - integrity sha512-jiS3NL6oJ4Qe+GP4JTfEzx/M6mtmJTK9DNYUTo7dIRemsEqH3hH4ZTZit15sg07w1odbhOAL7UJdt8F4EkOXNQ== - dependencies: - "@chakra-ui/form-control" "1.5.10" - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/utils" "1.10.4" - "@chakra-ui/visually-hidden" "1.1.6" - -"@chakra-ui/react-env@1.1.6": - version "1.1.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-env/-/react-env-1.1.6.tgz#9915b02fd1f8ca62ccf578eaec793f1c4dea78b0" - integrity sha512-L90LNvCfe04FTkN9OPok/o2e60zLJNBH8Im/5dUHvqy7dXLXok8ZDad5vEL46XmGbhe7O8fbxhG6FmAYdcCHrQ== - dependencies: - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/react-utils@1.2.3", "@chakra-ui/react-utils@^1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-utils/-/react-utils-1.2.3.tgz#3356c9299bc8faada8fac6c5886ca65ec95bb5be" - integrity sha512-r8pUwCVVB7UPhb0AiRa9ZzSp4xkMz64yIeJ4O4aGy4WMw7TRH4j4QkbkE1YC9tQitrXrliOlvx4WWJR4VyiGpw== - dependencies: - "@chakra-ui/utils" "^1.10.4" - -"@chakra-ui/react@^1.7.2", "@chakra-ui/react@^1.8.6": - version "1.8.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/react/-/react-1.8.7.tgz#1719f4acea1aa9ef4f33403c992009aa45122e9a" - integrity sha512-XyPXBCV446Cv+OCHDOFwDHiCwtlnMC/SwS21zC4rbIQgb1rz3vPCh4wJaD7FaXutoB7RMjDaU08xKxXXVy1wyg== - dependencies: - "@chakra-ui/accordion" "1.4.10" - "@chakra-ui/alert" "1.3.7" - "@chakra-ui/avatar" "1.3.10" - "@chakra-ui/breadcrumb" "1.3.6" - "@chakra-ui/button" "1.5.9" - "@chakra-ui/checkbox" "1.7.0" - "@chakra-ui/close-button" "1.2.7" - "@chakra-ui/control-box" "1.1.6" - "@chakra-ui/counter" "1.2.9" - "@chakra-ui/css-reset" "1.1.3" - "@chakra-ui/editable" "1.4.1" - "@chakra-ui/form-control" "1.5.10" - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/icon" "2.0.5" - "@chakra-ui/image" "1.1.9" - "@chakra-ui/input" "1.4.5" - "@chakra-ui/layout" "1.7.8" - "@chakra-ui/live-region" "1.1.6" - "@chakra-ui/media-query" "2.0.4" - "@chakra-ui/menu" "1.8.10" - "@chakra-ui/modal" "1.11.0" - "@chakra-ui/number-input" "1.4.6" - "@chakra-ui/pin-input" "1.7.9" - "@chakra-ui/popover" "1.11.8" - "@chakra-ui/popper" "2.4.3" - "@chakra-ui/portal" "1.3.9" - "@chakra-ui/progress" "1.2.6" - "@chakra-ui/provider" "1.7.13" - "@chakra-ui/radio" "1.5.0" - "@chakra-ui/react-env" "1.1.6" - "@chakra-ui/select" "1.2.10" - "@chakra-ui/skeleton" "1.2.13" - "@chakra-ui/slider" "1.5.10" - "@chakra-ui/spinner" "1.2.6" - "@chakra-ui/stat" "1.2.7" - "@chakra-ui/switch" "1.3.9" - "@chakra-ui/system" "1.12.0" - "@chakra-ui/table" "1.3.6" - "@chakra-ui/tabs" "1.6.9" - "@chakra-ui/tag" "1.2.7" - "@chakra-ui/textarea" "1.2.10" - "@chakra-ui/theme" "1.14.0" - "@chakra-ui/toast" "1.5.8" - "@chakra-ui/tooltip" "1.5.0" - "@chakra-ui/transition" "1.4.7" - "@chakra-ui/utils" "1.10.4" - "@chakra-ui/visually-hidden" "1.1.6" - -"@chakra-ui/select@1.2.10": - version "1.2.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/select/-/select-1.2.10.tgz#c5af49e586ccac2914e6f356e419a823ac5d9d0c" - integrity sha512-f6Z5e9ZBX3JKvlOdEVJaSroirRYXoaF98NfIY/qRYLp9/4pzh8qkLHMxN4JCA1iNP5LCJ1LFqHPZFLPZFGxCgg== - dependencies: - "@chakra-ui/form-control" "1.5.10" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/skeleton@1.2.13": - version "1.2.13" - resolved "https://registry.yarnpkg.com/@chakra-ui/skeleton/-/skeleton-1.2.13.tgz#417328f363ecc3fc0a97ff96f8f769d0ffe84c3c" - integrity sha512-yLcMQ+D6ZFTzpX0uivLLqcKm4x/K7H8guNn31AGx0ri1slcPrv4M5Z10URFFHSpf0lamotZgL1YucOMxMYzZZw== - dependencies: - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/media-query" "2.0.4" - "@chakra-ui/system" "1.12.0" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/slider@1.5.10": - version "1.5.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/slider/-/slider-1.5.10.tgz#454b6b18c86b385e786bf95fbc214c0be23c6bcf" - integrity sha512-wsp/x0pr7E3n1TrVKWhZ+mj5HTsVe9Zmg7EGCKeERbCNlnXdaGt3rjaDjxnH05oNPXbMFcqHf7ZkvZK4LakpSw== - dependencies: - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/spinner@1.2.6": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/spinner/-/spinner-1.2.6.tgz#d85fb3d763a69d40570b591507c5087dba38e6c4" - integrity sha512-GoUCccN120fGRVgUtfuwcEjeoaxffB+XsgpxX7jhWloXf8b6lkqm68bsxX4Ybb2vGN1fANI98/45JmrnddZO/A== - dependencies: - "@chakra-ui/utils" "1.10.4" - "@chakra-ui/visually-hidden" "1.1.6" - -"@chakra-ui/stat@1.2.7": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/stat/-/stat-1.2.7.tgz#e173171d80f9e756966604e620987bbd7590d291" - integrity sha512-m76jumFW1N+mCG4ytrUz9Mh09nZtS4OQcADEvOslfdI5StwwuzasTA1tueaelPzdhBioMwFUWL05Fr1fXbPJ/Q== - dependencies: - "@chakra-ui/icon" "2.0.5" - "@chakra-ui/utils" "1.10.4" - "@chakra-ui/visually-hidden" "1.1.6" - -"@chakra-ui/styled-system@1.19.0": - version "1.19.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/styled-system/-/styled-system-1.19.0.tgz#102fadaefc1a2dfd8e0c4837eafa660531a08419" - integrity sha512-z+bMfWs6jQGkpgarge1kmk78DuDhJIXRUMyRqZ3+CiIkze88bIIsww6mV2i8tEfUfTAvALeMnlYZ1DYsHsTTJw== - dependencies: - "@chakra-ui/utils" "1.10.4" - csstype "3.0.9" - -"@chakra-ui/switch@1.3.9": - version "1.3.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/switch/-/switch-1.3.9.tgz#2ba43174114c426dfd8a8bd7652e9582572463dd" - integrity sha512-s3wBVKiXpxEq7dSxuFdDiecKHrm6USZxYn3sJy+ssLhAyNu9Qb1FFGRuXrnbJ0qeTS1Gq/GLmt4EM+cnjWN/ag== - dependencies: - "@chakra-ui/checkbox" "1.7.0" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/system@1.12.0": - version "1.12.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/system/-/system-1.12.0.tgz#360edda3d477f134f4342497241ad1e88db37c2b" - integrity sha512-yKX7T0KGo39YXAVMIdJB3PKzkStIblPAPLy7BIho1dK8ja8LpcB/HmQMioJocvQgD/0bV3sBls/v5So9Jb9PYQ== - dependencies: - "@chakra-ui/color-mode" "1.4.7" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/styled-system" "1.19.0" - "@chakra-ui/utils" "1.10.4" - react-fast-compare "3.2.0" - -"@chakra-ui/table@1.3.6": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/table/-/table-1.3.6.tgz#e271676dc03cd4c684e4041df2cf394d86a28510" - integrity sha512-7agZAgAeDFKviqStvixqnLAH54+setzhx67EztioZTr5Xu+6hQ4rotfJbu8L4i587pcbNg98kCEXEkidjw0XRQ== - dependencies: - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/tabs@1.6.9": - version "1.6.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/tabs/-/tabs-1.6.9.tgz#78b89cb40e0659b7c4838c602b130971abc502b8" - integrity sha512-dWRpmLQDnCAZwTMY+e/0RPs80oXofz6565ACcffTmOm9DT/JXmMhicA+oIVsU8TxJczzrHhIICJzxWd1MNEweQ== - dependencies: - "@chakra-ui/clickable" "1.2.6" - "@chakra-ui/descendant" "2.1.3" - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/tag@1.2.7": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/tag/-/tag-1.2.7.tgz#5861a92e83e63825f6fe563921d2704e921b585f" - integrity sha512-RKrKOol4i/CnpFfo3T9LMm1abaqM+5Bs0soQLbo1iJBbBACY09sWXrQYvveQ2GYzU/OrAUloHqqmKjyVGOlNtg== - dependencies: - "@chakra-ui/icon" "2.0.5" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/textarea@1.2.10": - version "1.2.10" - resolved "https://registry.yarnpkg.com/@chakra-ui/textarea/-/textarea-1.2.10.tgz#578b83d322396177f38647d134443f1806169a66" - integrity sha512-cdauifkP4CyjOqLeVc95+HCk8mag8PlfGHCGew1+3VeayxjBKDcgbP71NTT6dQPJYdUJbG2E0ghQfpMb7UWx2g== - dependencies: - "@chakra-ui/form-control" "1.5.10" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/theme-tools@1.3.6", "@chakra-ui/theme-tools@^1.3.6": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/theme-tools/-/theme-tools-1.3.6.tgz#2e5b5c192efd685c158e940a5cedcb0eb51f8602" - integrity sha512-Wxz3XSJhPCU6OwCHEyH44EegEDQHwvlsx+KDkUDGevOjUU88YuNqOVkKtgTpgMLNQcsrYZ93oPWZUJqqCVNRew== - dependencies: - "@chakra-ui/utils" "1.10.4" - "@ctrl/tinycolor" "^3.4.0" - -"@chakra-ui/theme@1.14.0": - version "1.14.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/theme/-/theme-1.14.0.tgz#0aa1d602db8256e09b2e7f172108dea4a79748b1" - integrity sha512-zKy/8JSbiCP0QeBsLzdub7aBnfX2k0qp5vD+RA+mxPEiykEvPGg+TwryxRM5KMZK1Zdgg95aH+9mwiGe9tJt3A== - dependencies: - "@chakra-ui/anatomy" "1.3.0" - "@chakra-ui/theme-tools" "1.3.6" - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/toast@1.5.8": - version "1.5.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/toast/-/toast-1.5.8.tgz#a71f209fcf8ec13b11be8c55f4faaa8472f75401" - integrity sha512-6hDEUtYDlfCENfoz5w63pQjwPOGUP0Asn9tP1dq/o9ppi6nudcNQ6wukU1umOUCeuZetlCMgLjNEpSWmqOtd9Q== - dependencies: - "@chakra-ui/alert" "1.3.7" - "@chakra-ui/close-button" "1.2.7" - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/theme" "1.14.0" - "@chakra-ui/transition" "1.4.7" - "@chakra-ui/utils" "1.10.4" - "@reach/alert" "0.13.2" - -"@chakra-ui/tooltip@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/tooltip/-/tooltip-1.5.0.tgz#3efa0203396f5ee6f8a5dec4a05b3c701ead30b6" - integrity sha512-Lv3L0BpawJ0Vfdl8ht3h7aytRv6pXDZ+NMs7CrT+EeLVcCh2QldEAdOBnSpocsqGBqaJ1mnBofAr6bE9YIxTGg== - dependencies: - "@chakra-ui/hooks" "1.9.0" - "@chakra-ui/popper" "2.4.3" - "@chakra-ui/portal" "1.3.9" - "@chakra-ui/react-utils" "1.2.3" - "@chakra-ui/utils" "1.10.4" - "@chakra-ui/visually-hidden" "1.1.6" - -"@chakra-ui/transition@1.4.7": - version "1.4.7" - resolved "https://registry.yarnpkg.com/@chakra-ui/transition/-/transition-1.4.7.tgz#c8f3248d54fbf7e661e620acf3a3292832c88805" - integrity sha512-2sbMoKB/enp6Qbte3DD6zwBHyO4YAUSgvSr3wn7DAy4hz9kRZHPuUf/N+i9QZ0whL2koXLgdZvV6RNtSTShq4g== - dependencies: - "@chakra-ui/utils" "1.10.4" - -"@chakra-ui/utils@1.10.4", "@chakra-ui/utils@^1.10.4": - version "1.10.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/utils/-/utils-1.10.4.tgz#40a32d4efd8684b2e7432a40b285796383eacfd3" - integrity sha512-AM91VQQxw8F4F1WDA28mqKY6NFIOuzc2Ekkna88imy2OiqqmYH0xkq8J16L2qj4cLiLozpYqba3C79pWioy6FA== - dependencies: - "@types/lodash.mergewith" "4.6.6" - css-box-model "1.2.1" - framesync "5.3.0" - lodash.mergewith "4.6.2" - -"@chakra-ui/visually-hidden@1.1.6": - version "1.1.6" - resolved "https://registry.yarnpkg.com/@chakra-ui/visually-hidden/-/visually-hidden-1.1.6.tgz#7a546a5aebe4779c8f18d65b1f0e56249720f28d" - integrity sha512-Xzy5bA0UA+IyMgwJizQYSEdgz8cC/tHdmFB3CniXzmpKTSK8mJddeEBl+cGbXHBzxEUhH7xF1eaS41O+0ezWEQ== - dependencies: - "@chakra-ui/utils" "1.10.4" - -"@cnakazawa/watch@^1.0.3": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" - integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== - dependencies: - exec-sh "^0.3.2" - minimist "^1.2.0" - -"@coinbase/wallet-sdk@^3.0.4": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@coinbase/wallet-sdk/-/wallet-sdk-3.0.5.tgz#d9eb49b482570e93ef9fd0bfe15c5582e28b3063" - integrity sha512-MsPhgS9b9DpNQdbuYEFDZToPVhh8OQZFkLH59LpYHXRxRIjQDsGGjXcLC50jfW06ElBbtB9adl5RlJTmXb9KbA== - dependencies: - "@metamask/safe-event-emitter" "2.0.0" - bind-decorator "^1.0.11" - bn.js "^5.1.1" - clsx "^1.1.0" - eth-block-tracker "4.4.3" - eth-json-rpc-filters "4.2.2" - eth-rpc-errors "4.0.2" - js-sha256 "0.9.0" - json-rpc-engine "6.1.0" - keccak "^3.0.1" - preact "^10.5.9" - rxjs "^6.6.3" - stream-browserify "^3.0.0" - -"@colors/colors@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" - integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== - -"@craco/craco@^6.4.1": - version "6.4.3" - resolved "https://registry.yarnpkg.com/@craco/craco/-/craco-6.4.3.tgz#784395b6ebab764056550a2860494d24c3abd44e" - integrity sha512-RzkXYmNzRCGUyG7mM+IUMM+nvrpSfA34352sPSGQN76UivAmCAht3sI4v5JKgzO05oUK9Zwi6abCKD7iKXI8hQ== - dependencies: - cosmiconfig "^7.0.1" - cosmiconfig-typescript-loader "^1.0.0" - cross-spawn "^7.0.0" - lodash "^4.17.15" - semver "^7.3.2" - webpack-merge "^4.2.2" - -"@cspotcode/source-map-consumer@0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" - integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg== - -"@cspotcode/source-map-support@0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz#4789840aa859e46d2f3173727ab707c66bf344f5" - integrity sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA== - dependencies: - "@cspotcode/source-map-consumer" "0.8.0" - -"@csstools/convert-colors@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" - integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== - -"@csstools/normalize.css@^10.1.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" - integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== - -"@ctrl/tinycolor@^3.4.0": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz#c3c5ae543c897caa9c2a68630bed355be5f9990f" - integrity sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ== - -"@emotion/babel-plugin@^11.7.1": - version "11.7.2" - resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.7.2.tgz#fec75f38a6ab5b304b0601c74e2a5e77c95e5fa0" - integrity sha512-6mGSCWi9UzXut/ZAN6lGFu33wGR3SJisNl3c0tvlmb8XChH1b2SUvxvnOh7hvLpqyRdHHU9AiazV3Cwbk5SXKQ== - dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/plugin-syntax-jsx" "^7.12.13" - "@babel/runtime" "^7.13.10" - "@emotion/hash" "^0.8.0" - "@emotion/memoize" "^0.7.5" - "@emotion/serialize" "^1.0.2" - babel-plugin-macros "^2.6.1" - convert-source-map "^1.5.0" - escape-string-regexp "^4.0.0" - find-root "^1.1.0" - source-map "^0.5.7" - stylis "4.0.13" - -"@emotion/cache@^11.7.1": - version "11.7.1" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.7.1.tgz#08d080e396a42e0037848214e8aa7bf879065539" - integrity sha512-r65Zy4Iljb8oyjtLeCuBH8Qjiy107dOYC6SJq7g7GV5UCQWMObY4SJDPGFjiiVpPrOJ2hmJOoBiYTC7hwx9E2A== - dependencies: - "@emotion/memoize" "^0.7.4" - "@emotion/sheet" "^1.1.0" - "@emotion/utils" "^1.0.0" - "@emotion/weak-memoize" "^0.2.5" - stylis "4.0.13" - -"@emotion/hash@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" - integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== - -"@emotion/is-prop-valid@^0.7.3": - version "0.7.3" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.7.3.tgz#a6bf4fa5387cbba59d44e698a4680f481a8da6cc" - integrity sha512-uxJqm/sqwXw3YPA5GXX365OBcJGFtxUVkB6WyezqFHlNe9jqUWH5ur2O2M8dGBz61kn1g3ZBlzUunFQXQIClhA== - dependencies: - "@emotion/memoize" "0.7.1" - -"@emotion/is-prop-valid@^0.8.2": - version "0.8.8" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" - integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== - dependencies: - "@emotion/memoize" "0.7.4" - -"@emotion/is-prop-valid@^1.1.0", "@emotion/is-prop-valid@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.1.2.tgz#34ad6e98e871aa6f7a20469b602911b8b11b3a95" - integrity sha512-3QnhqeL+WW88YjYbQL5gUIkthuMw7a0NGbZ7wfFVk2kg/CK5w8w5FFa0RzWjyY1+sujN0NWbtSHH6OJmWHtJpQ== - dependencies: - "@emotion/memoize" "^0.7.4" - -"@emotion/memoize@0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.1.tgz#e93c13942592cf5ef01aa8297444dc192beee52f" - integrity sha512-Qv4LTqO11jepd5Qmlp3M1YEjBumoTHcHFdgPTQ+sFlIL5myi/7xu/POwP7IRu6odBdmLXdtIs1D6TuW6kbwbbg== - -"@emotion/memoize@0.7.4": - version "0.7.4" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" - integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== - -"@emotion/memoize@^0.7.4", "@emotion/memoize@^0.7.5": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50" - integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ== - -"@emotion/react@^11.0.0", "@emotion/react@^11.1.4": - version "11.8.2" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.8.2.tgz#e51f5e6372e22e82780836c9288da19af4b51e70" - integrity sha512-+1bcHBaNJv5nkIIgnGKVsie3otS0wF9f1T1hteF3WeVvMNQEtfZ4YyFpnphGoot3ilU/wWMgP2SgIDuHLE/wAA== - dependencies: - "@babel/runtime" "^7.13.10" - "@emotion/babel-plugin" "^11.7.1" - "@emotion/cache" "^11.7.1" - "@emotion/serialize" "^1.0.2" - "@emotion/utils" "^1.1.0" - "@emotion/weak-memoize" "^0.2.5" - hoist-non-react-statics "^3.3.1" - -"@emotion/serialize@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.0.2.tgz#77cb21a0571c9f68eb66087754a65fa97bfcd965" - integrity sha512-95MgNJ9+/ajxU7QIAruiOAdYNjxZX7G2mhgrtDWswA21VviYIRP1R5QilZ/bDY42xiKsaktP4egJb3QdYQZi1A== - dependencies: - "@emotion/hash" "^0.8.0" - "@emotion/memoize" "^0.7.4" - "@emotion/unitless" "^0.7.5" - "@emotion/utils" "^1.0.0" - csstype "^3.0.2" - -"@emotion/sheet@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.1.0.tgz#56d99c41f0a1cda2726a05aa6a20afd4c63e58d2" - integrity sha512-u0AX4aSo25sMAygCuQTzS+HsImZFuS8llY8O7b9MDRzbJM0kVJlAz6KNDqcG7pOuQZJmj/8X/rAW+66kMnMW+g== - -"@emotion/styled@^11.0.0": - version "11.8.1" - resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.8.1.tgz#856f6f63aceef0eb783985fa2322e2bf66d04e17" - integrity sha512-OghEVAYBZMpEquHZwuelXcRjRJQOVayvbmNR0zr174NHdmMgrNkLC6TljKC5h9lZLkN5WGrdUcrKlOJ4phhoTQ== - dependencies: - "@babel/runtime" "^7.13.10" - "@emotion/babel-plugin" "^11.7.1" - "@emotion/is-prop-valid" "^1.1.2" - "@emotion/serialize" "^1.0.2" - "@emotion/utils" "^1.1.0" - -"@emotion/stylis@^0.8.4": - version "0.8.5" - resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" - integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== - -"@emotion/unitless@^0.7.4", "@emotion/unitless@^0.7.5": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" - integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== - -"@emotion/utils@^1.0.0", "@emotion/utils@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.1.0.tgz#86b0b297f3f1a0f2bdb08eeac9a2f49afd40d0cf" - integrity sha512-iRLa/Y4Rs5H/f2nimczYmS5kFJEbpiVvgN3XVfZ022IYhuNA1IRSHEizcof88LtCTXtl9S2Cxt32KgaXEu72JQ== - -"@emotion/weak-memoize@^0.2.5": - version "0.2.5" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" - integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== - -"@ensdomains/ens@^0.4.4": - version "0.4.5" - resolved "https://registry.yarnpkg.com/@ensdomains/ens/-/ens-0.4.5.tgz#e0aebc005afdc066447c6e22feb4eda89a5edbfc" - integrity sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw== - dependencies: - bluebird "^3.5.2" - eth-ens-namehash "^2.0.8" - solc "^0.4.20" - testrpc "0.0.1" - web3-utils "^1.0.0-beta.31" - -"@ensdomains/resolver@^0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" - integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== - -"@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== - dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@eslint/eslintrc@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.1.tgz#8b5e1c49f4077235516bc9ec7d41378c0f69b8c6" - integrity sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.3.1" - globals "^13.9.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@ethereum-waffle/chai@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/chai/-/chai-3.4.4.tgz#16c4cc877df31b035d6d92486dfdf983df9138ff" - integrity sha512-/K8czydBtXXkcM9X6q29EqEkc5dN3oYenyH2a9hF7rGAApAJUpH8QBtojxOY/xQ2up5W332jqgxwp0yPiYug1g== - dependencies: - "@ethereum-waffle/provider" "^3.4.4" - ethers "^5.5.2" - -"@ethereum-waffle/compiler@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/compiler/-/compiler-3.4.4.tgz#d568ee0f6029e68b5c645506079fbf67d0dfcf19" - integrity sha512-RUK3axJ8IkD5xpWjWoJgyHclOeEzDLQFga6gKpeGxiS/zBu+HB0W2FvsrrLalTFIaPw/CGYACRBSIxqiCqwqTQ== - dependencies: - "@resolver-engine/imports" "^0.3.3" - "@resolver-engine/imports-fs" "^0.3.3" - "@typechain/ethers-v5" "^2.0.0" - "@types/mkdirp" "^0.5.2" - "@types/node-fetch" "^2.5.5" - ethers "^5.0.1" - mkdirp "^0.5.1" - node-fetch "^2.6.1" - solc "^0.6.3" - ts-generator "^0.1.1" - typechain "^3.0.0" - -"@ethereum-waffle/ens@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/ens/-/ens-3.4.4.tgz#db97ea2c9decbb70b9205d53de2ccbd6f3182ba1" - integrity sha512-0m4NdwWxliy3heBYva1Wr4WbJKLnwXizmy5FfSSr5PMbjI7SIGCdCB59U7/ZzY773/hY3bLnzLwvG5mggVjJWg== - dependencies: - "@ensdomains/ens" "^0.4.4" - "@ensdomains/resolver" "^0.2.4" - ethers "^5.5.2" - -"@ethereum-waffle/mock-contract@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/mock-contract/-/mock-contract-3.4.4.tgz#fc6ffa18813546f4950a69f5892d4dd54b2c685a" - integrity sha512-Mp0iB2YNWYGUV+VMl5tjPsaXKbKo8MDH9wSJ702l9EBjdxFf/vBvnMBAC1Fub1lLtmD0JHtp1pq+mWzg/xlLnA== - dependencies: - "@ethersproject/abi" "^5.5.0" - ethers "^5.5.2" - -"@ethereum-waffle/provider@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/provider/-/provider-3.4.4.tgz#398fc1f7eb91cc2df7d011272eacba8af0c7fffb" - integrity sha512-GK8oKJAM8+PKy2nK08yDgl4A80mFuI8zBkE0C9GqTRYQqvuxIyXoLmJ5NZU9lIwyWVv5/KsoA11BgAv2jXE82g== - dependencies: - "@ethereum-waffle/ens" "^3.4.4" - ethers "^5.5.2" - ganache-core "^2.13.2" - patch-package "^6.2.2" - postinstall-postinstall "^2.1.0" - -"@ethereumjs/block@^3.5.0", "@ethereumjs/block@^3.6.0", "@ethereumjs/block@^3.6.2": - version "3.6.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/block/-/block-3.6.2.tgz#63d1e26d0b7a7a3684fce920de6ebabec1e5b674" - integrity sha512-mOqYWwMlAZpYUEOEqt7EfMFuVL2eyLqWWIzcf4odn6QgXY8jBI2NhVuJncrMCKeMZrsJAe7/auaRRB6YcdH+Qw== - dependencies: - "@ethereumjs/common" "^2.6.3" - "@ethereumjs/tx" "^3.5.1" - ethereumjs-util "^7.1.4" - merkle-patricia-tree "^4.2.4" - -"@ethereumjs/blockchain@^5.5.0", "@ethereumjs/blockchain@^5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/blockchain/-/blockchain-5.5.2.tgz#1848abd9dc1ee56acf8cec4c84304d7f4667d027" - integrity sha512-Jz26iJmmsQtngerW6r5BDFaew/f2mObLrRZo3rskLOx1lmtMZ8+TX/vJexmivrnWgmAsTdNWhlKUYY4thPhPig== - dependencies: - "@ethereumjs/block" "^3.6.2" - "@ethereumjs/common" "^2.6.3" - "@ethereumjs/ethash" "^1.1.0" - debug "^4.3.3" - ethereumjs-util "^7.1.4" - level-mem "^5.0.1" - lru-cache "^5.1.1" - semaphore-async-await "^1.5.1" - -"@ethereumjs/common@^2.3.0", "@ethereumjs/common@^2.4.0", "@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.0", "@ethereumjs/common@^2.6.3": - version "2.6.3" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.3.tgz#39ddece7300b336276bad6c02f6a9f1a082caa05" - integrity sha512-mQwPucDL7FDYIg9XQ8DL31CnIYZwGhU5hyOO5E+BMmT71G0+RHvIT5rIkLBirJEKxV6+Rcf9aEIY0kXInxUWpQ== - dependencies: - crc-32 "^1.2.0" - ethereumjs-util "^7.1.4" - -"@ethereumjs/ethash@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/ethash/-/ethash-1.1.0.tgz#7c5918ffcaa9cb9c1dc7d12f77ef038c11fb83fb" - integrity sha512-/U7UOKW6BzpA+Vt+kISAoeDie1vAvY4Zy2KF5JJb+So7+1yKmJeJEHOGSnQIj330e9Zyl3L5Nae6VZyh2TJnAA== - 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" - -"@ethereumjs/tx@^3.2.1", "@ethereumjs/tx@^3.3.2", "@ethereumjs/tx@^3.4.0", "@ethereumjs/tx@^3.5.1": - version "3.5.1" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.1.tgz#8d941b83a602b4a89949c879615f7ea9a90e6671" - integrity sha512-xzDrTiu4sqZXUcaBxJ4n4W5FrppwxLxZB4ZDGVLtxSQR4lVuOnFR6RcUHdg1mpUhAPVrmnzLJpxaeXnPxIyhWA== - dependencies: - "@ethereumjs/common" "^2.6.3" - ethereumjs-util "^7.1.4" - -"@ethereumjs/vm@^5.6.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/vm/-/vm-5.8.0.tgz#c9055f96afc13dd7b72893b57fa20027effea6fe" - integrity sha512-mn2G2SX79QY4ckVvZUfxlNUpzwT2AEIkvgJI8aHoQaNYEHhH8rmdVDIaVVgz6//PjK52BZsK23afz+WvSR0Qqw== - dependencies: - "@ethereumjs/block" "^3.6.2" - "@ethereumjs/blockchain" "^5.5.2" - "@ethereumjs/common" "^2.6.3" - "@ethereumjs/tx" "^3.5.1" - async-eventemitter "^0.2.4" - core-js-pure "^3.0.1" - debug "^4.3.3" - ethereumjs-util "^7.1.4" - functional-red-black-tree "^1.0.1" - mcl-wasm "^0.7.1" - merkle-patricia-tree "^4.2.4" - rustbn.js "~0.2.0" - -"@ethersproject/abi@5.0.0-beta.153": - version "5.0.0-beta.153" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz#43a37172b33794e4562999f6e2d555b7599a8eee" - integrity sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg== - dependencies: - "@ethersproject/address" ">=5.0.0-beta.128" - "@ethersproject/bignumber" ">=5.0.0-beta.130" - "@ethersproject/bytes" ">=5.0.0-beta.129" - "@ethersproject/constants" ">=5.0.0-beta.128" - "@ethersproject/hash" ">=5.0.0-beta.128" - "@ethersproject/keccak256" ">=5.0.0-beta.127" - "@ethersproject/logger" ">=5.0.0-beta.129" - "@ethersproject/properties" ">=5.0.0-beta.131" - "@ethersproject/strings" ">=5.0.0-beta.130" - -"@ethersproject/abi@5.0.7": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.7.tgz#79e52452bd3ca2956d0e1c964207a58ad1a0ee7b" - integrity sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw== - dependencies: - "@ethersproject/address" "^5.0.4" - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.4" - "@ethersproject/hash" "^5.0.4" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/strings" "^5.0.4" - -"@ethersproject/abi@5.6.0", "@ethersproject/abi@^5.0.0-beta.146", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.0.tgz#ea07cbc1eec2374d32485679c12408005895e9f3" - integrity sha512-AhVByTwdXCc2YQ20v300w6KVHle9g2OFc28ZAFCPnJyEpkv1xKXjZcSTgWOlv1i+0dqlgF8RCF2Rn2KC1t+1Vg== - dependencies: - "@ethersproject/address" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" - "@ethersproject/hash" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - -"@ethersproject/abstract-provider@5.6.0", "@ethersproject/abstract-provider@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.6.0.tgz#0c4ac7054650dbd9c476cf5907f588bbb6ef3061" - integrity sha512-oPMFlKLN+g+y7a79cLK3WiLcjWFnZQtXWgnLAbHZcN3s7L4v90UHpTOrLk+m3yr0gt+/h9STTM6zrr7PM8uoRw== - dependencies: - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/networks" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" - "@ethersproject/web" "^5.6.0" - -"@ethersproject/abstract-signer@5.6.0", "@ethersproject/abstract-signer@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.0.tgz#9cd7ae9211c2b123a3b29bf47aab17d4d016e3e7" - integrity sha512-WOqnG0NJKtI8n0wWZPReHtaLkDByPL67tn4nBaDAhmVq8sjHTPbCdz4DRhVu/cfTOvfy9w3iq5QZ7BX7zw56BQ== - dependencies: - "@ethersproject/abstract-provider" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - -"@ethersproject/address@5.6.0", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.0.tgz#13c49836d73e7885fc148ad633afad729da25012" - integrity sha512-6nvhYXjbXsHPS+30sHZ+U4VMagFC/9zAk6Gd/h3S21YW4+yfb0WfRtaAIZ4kfM4rrVwqiy284LP0GtL5HXGLxQ== - dependencies: - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/rlp" "^5.6.0" - -"@ethersproject/base64@5.6.0", "@ethersproject/base64@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.0.tgz#a12c4da2a6fb86d88563216b0282308fc15907c9" - integrity sha512-2Neq8wxJ9xHxCF9TUgmKeSh9BXJ6OAxWfeGWvbauPh8FuHEjamgHilllx8KkSd5ErxyHIX7Xv3Fkcud2kY9ezw== - dependencies: - "@ethersproject/bytes" "^5.6.0" - -"@ethersproject/basex@5.6.0", "@ethersproject/basex@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.6.0.tgz#9ea7209bf0a1c3ddc2a90f180c3a7f0d7d2e8a69" - integrity sha512-qN4T+hQd/Md32MoJpc69rOwLYRUXwjTlhHDIeUkUmiN/JyWkkLLMoG0TqvSQKNqZOMgN5stbUYN6ILC+eD7MEQ== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - -"@ethersproject/bignumber@5.6.0", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.0.tgz#116c81b075c57fa765a8f3822648cf718a8a0e26" - integrity sha512-VziMaXIUHQlHJmkv1dlcd6GY2PmT0khtAqaMctCIDogxkrarMzA9L94KN1NeXqqOfFD6r0sJT3vCTOFSmZ07DA== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - bn.js "^4.11.9" - -"@ethersproject/bytes@5.6.0", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.0.tgz#81652f2a0e04533575befadce555213c11d8aa20" - integrity sha512-3hJPlYemb9V4VLfJF5BfN0+55vltPZSHU3QKUyP9M3Y2TcajbiRrz65UG+xVHOzBereB1b9mn7r12o177xgN7w== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/bytes@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.1.tgz#24f916e411f82a8a60412344bf4a813b917eefe7" - integrity sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/constants@5.6.0", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.0.4", "@ethersproject/constants@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.0.tgz#55e3eb0918584d3acc0688e9958b0cedef297088" - integrity sha512-SrdaJx2bK0WQl23nSpV/b1aq293Lh0sUaZT/yYKPDKn4tlAbkH96SPJwIhwSwTsoQQZxuh1jnqsKwyymoiBdWA== - dependencies: - "@ethersproject/bignumber" "^5.6.0" - -"@ethersproject/contracts@5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.6.0.tgz#60f2cfc7addd99a865c6c8cfbbcec76297386067" - integrity sha512-74Ge7iqTDom0NX+mux8KbRUeJgu1eHZ3iv6utv++sLJG80FVuU9HnHeKVPfjd9s3woFhaFoQGf3B3iH/FrQmgw== - dependencies: - "@ethersproject/abi" "^5.6.0" - "@ethersproject/abstract-provider" "^5.6.0" - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/address" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" - -"@ethersproject/hash@5.6.0", "@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.0.4", "@ethersproject/hash@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.6.0.tgz#d24446a5263e02492f9808baa99b6e2b4c3429a2" - integrity sha512-fFd+k9gtczqlr0/BruWLAu7UAOas1uRRJvOR84uDf4lNZ+bTkGl366qvniUZHKtlqxBRU65MkOobkmvmpHU+jA== - dependencies: - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/address" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - -"@ethersproject/hdnode@5.6.0", "@ethersproject/hdnode@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.6.0.tgz#9dcbe8d629bbbcf144f2cae476337fe92d320998" - integrity sha512-61g3Jp3nwDqJcL/p4nugSyLrpl/+ChXIOtCEM8UDmWeB3JCAt5FoLdOMXQc3WWkc0oM2C0aAn6GFqqMcS/mHTw== - dependencies: - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/basex" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/pbkdf2" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/sha2" "^5.6.0" - "@ethersproject/signing-key" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" - "@ethersproject/wordlists" "^5.6.0" - -"@ethersproject/json-wallets@5.6.0", "@ethersproject/json-wallets@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.6.0.tgz#4c2fc27f17e36c583e7a252fb938bc46f98891e5" - integrity sha512-fmh86jViB9r0ibWXTQipxpAGMiuxoqUf78oqJDlCAJXgnJF024hOOX7qVgqsjtbeoxmcLwpPsXNU0WEe/16qPQ== - dependencies: - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/address" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/hdnode" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/pbkdf2" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/random" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/keccak256@5.6.0", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.6.0.tgz#fea4bb47dbf8f131c2e1774a1cecbfeb9d606459" - integrity sha512-tk56BJ96mdj/ksi7HWZVWGjCq0WVl/QvfhFQNeL8fxhBlGoP+L80uDCiQcpJPd+2XxkivS3lwRm3E0CXTfol0w== - dependencies: - "@ethersproject/bytes" "^5.6.0" - js-sha3 "0.8.0" - -"@ethersproject/logger@5.6.0", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" - integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== - -"@ethersproject/networks@5.6.0", "@ethersproject/networks@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.0.tgz#486d03fff29b4b6b5414d47a232ded09fe10de5e" - integrity sha512-DaVzgyThzHgSDLuURhvkp4oviGoGe9iTZW4jMEORHDRCgSZ9K9THGFKqL+qGXqPAYLEgZTf5z2w56mRrPR1MjQ== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/networks@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.1.tgz#7a21ed1f83e86121737b16841961ec99ccf5c9c7" - integrity sha512-b2rrupf3kCTcc3jr9xOWBuHylSFtbpJf79Ga7QR98ienU2UqGimPGEsYMgbI29KHJfA5Us89XwGVmxrlxmSrMg== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/pbkdf2@5.6.0", "@ethersproject/pbkdf2@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.6.0.tgz#04fcc2d7c6bff88393f5b4237d906a192426685a" - integrity sha512-Wu1AxTgJo3T3H6MIu/eejLFok9TYoSdgwRr5oGY1LTLfmGesDoSx05pemsbrPT2gG4cQME+baTSCp5sEo2erZQ== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/sha2" "^5.6.0" - -"@ethersproject/properties@5.6.0", "@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.6.0.tgz#38904651713bc6bdd5bdd1b0a4287ecda920fa04" - integrity sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/providers@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.6.1.tgz#9a05f00ecbac59565bf6907c8d2af8ac33303b48" - integrity sha512-w8Wx15nH+aVDvnoKCyI1f3x0B5idmk/bDJXMEUqCfdO8Eadd0QpDx9lDMTMmenhOmf9vufLJXjpSm24D3ZnVpg== - dependencies: - "@ethersproject/abstract-provider" "^5.6.0" - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/address" "^5.6.0" - "@ethersproject/basex" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" - "@ethersproject/hash" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/networks" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/random" "^5.6.0" - "@ethersproject/rlp" "^5.6.0" - "@ethersproject/sha2" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" - "@ethersproject/web" "^5.6.0" - bech32 "1.1.4" - ws "7.4.6" - -"@ethersproject/providers@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.6.2.tgz#b9807b1c8c6f59fa2ee4b3cf6519724d07a9f422" - integrity sha512-6/EaFW/hNWz+224FXwl8+HdMRzVHt8DpPmu5MZaIQqx/K/ELnC9eY236SMV7mleCM3NnEArFwcAAxH5kUUgaRg== - dependencies: - "@ethersproject/abstract-provider" "^5.6.0" - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/address" "^5.6.0" - "@ethersproject/basex" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" - "@ethersproject/hash" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/networks" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/random" "^5.6.0" - "@ethersproject/rlp" "^5.6.0" - "@ethersproject/sha2" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" - "@ethersproject/web" "^5.6.0" - bech32 "1.1.4" - ws "7.4.6" - -"@ethersproject/random@5.6.0", "@ethersproject/random@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.6.0.tgz#1505d1ab6a250e0ee92f436850fa3314b2cb5ae6" - integrity sha512-si0PLcLjq+NG/XHSZz90asNf+YfKEqJGVdxoEkSukzbnBgC8rydbgbUgBbBGLeHN4kAJwUFEKsu3sCXT93YMsw== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/rlp@5.6.0", "@ethersproject/rlp@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.6.0.tgz#55a7be01c6f5e64d6e6e7edb6061aa120962a717" - integrity sha512-dz9WR1xpcTL+9DtOT/aDO+YyxSSdO8YIS0jyZwHHSlAmnxA6cKU3TrTd4Xc/bHayctxTgGLYNuVVoiXE4tTq1g== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/sha2@5.6.0", "@ethersproject/sha2@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.0.tgz#364c4c11cc753bda36f31f001628706ebadb64d9" - integrity sha512-1tNWCPFLu1n3JM9t4/kytz35DkuF9MxqkGGEHNauEbaARdm2fafnOyw1s0tIQDPKF/7bkP1u3dbrmjpn5CelyA== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - hash.js "1.1.7" - -"@ethersproject/signing-key@5.6.0", "@ethersproject/signing-key@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.6.0.tgz#4f02e3fb09e22b71e2e1d6dc4bcb5dafa69ce042" - integrity sha512-S+njkhowmLeUu/r7ir8n78OUKx63kBdMCPssePS89So1TH4hZqnWFsThEd/GiXYp9qMxVrydf7KdM9MTGPFukA== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - bn.js "^4.11.9" - elliptic "6.5.4" - hash.js "1.1.7" - -"@ethersproject/solidity@5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.6.0.tgz#64657362a596bf7f5630bdc921c07dd78df06dc3" - integrity sha512-YwF52vTNd50kjDzqKaoNNbC/r9kMDPq3YzDWmsjFTRBcIF1y4JCQJ8gB30wsTfHbaxgxelI5BfxQSxD/PbJOww== - dependencies: - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/sha2" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - -"@ethersproject/strings@5.6.0", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.0.4", "@ethersproject/strings@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.6.0.tgz#9891b26709153d996bf1303d39a7f4bc047878fd" - integrity sha512-uv10vTtLTZqrJuqBZR862ZQjTIa724wGPWQqZrofaPI/kUsf53TBG0I0D+hQ1qyNtllbNzaW+PDPHHUI6/65Mg== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/transactions@5.6.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.0.tgz#4b594d73a868ef6e1529a2f8f94a785e6791ae4e" - integrity sha512-4HX+VOhNjXHZyGzER6E/LVI2i6lf9ejYeWD6l4g50AdmimyuStKc39kvKf1bXWQMg7QNVh+uC7dYwtaZ02IXeg== - dependencies: - "@ethersproject/address" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/rlp" "^5.6.0" - "@ethersproject/signing-key" "^5.6.0" - -"@ethersproject/units@5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.6.0.tgz#e5cbb1906988f5740254a21b9ded6bd51e826d9c" - integrity sha512-tig9x0Qmh8qbo1w8/6tmtyrm/QQRviBh389EQ+d8fP4wDsBrJBf08oZfoiz1/uenKK9M78yAP4PoR7SsVoTjsw== - dependencies: - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/constants" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/wallet@5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.6.0.tgz#33d11a806d783864208f348709a5a3badac8e22a" - integrity sha512-qMlSdOSTyp0MBeE+r7SUhr1jjDlC1zAXB8VD84hCnpijPQiSNbxr6GdiLXxpUs8UKzkDiNYYC5DRI3MZr+n+tg== - dependencies: - "@ethersproject/abstract-provider" "^5.6.0" - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/address" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/hash" "^5.6.0" - "@ethersproject/hdnode" "^5.6.0" - "@ethersproject/json-wallets" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/random" "^5.6.0" - "@ethersproject/signing-key" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" - "@ethersproject/wordlists" "^5.6.0" - -"@ethersproject/web@5.6.0", "@ethersproject/web@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.6.0.tgz#4bf8b3cbc17055027e1a5dd3c357e37474eaaeb8" - integrity sha512-G/XHj0hV1FxI2teHRfCGvfBUHFmU+YOSbCxlAMqJklxSa7QMiHFQfAxvwY2PFqgvdkxEKwRNr/eCjfAPEm2Ctg== - dependencies: - "@ethersproject/base64" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - -"@ethersproject/wordlists@5.6.0", "@ethersproject/wordlists@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.6.0.tgz#79e62c5276e091d8575f6930ba01a29218ded032" - integrity sha512-q0bxNBfIX3fUuAo9OmjlEYxP40IB8ABgb7HjEZCL5IKubzV3j30CWi2rqQbjTS2HfoyQbfINoKcTVWP4ejwR7Q== - dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/hash" "^5.6.0" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - -"@fontsource/tinos@^4.5.4": - version "4.5.6" - resolved "https://registry.yarnpkg.com/@fontsource/tinos/-/tinos-4.5.6.tgz#cf52635719cb2d132bb8c0bb5aff69c0f0434e6b" - integrity sha512-JrlpytHtH+/x0QOQDbKMkt619OWR0Jt8qPRqZ5BOdAdvXuyYGcpk3jJ0zla3KSBThBPfoK4ix5fJJk2EUyqkvA== - -"@gar/promisify@^1.0.1": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" - integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== - -"@gnosis.pm/safe-apps-provider@0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@gnosis.pm/safe-apps-provider/-/safe-apps-provider-0.11.0.tgz#e8fece9bb09dc5179895bb8f3a75f8cddcfdf18c" - integrity sha512-XTEXa5iCk0XOZQkgwHcpzP3sOmT9kYsieY5Bfmlrj7GSuApxnn8PnA7tQuzCOrrH2PbT+nspY04h4aBDDJaKrw== - dependencies: - "@gnosis.pm/safe-apps-sdk" "7.3.0" - events "^3.3.0" - -"@gnosis.pm/safe-apps-sdk@7.3.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@gnosis.pm/safe-apps-sdk/-/safe-apps-sdk-7.3.0.tgz#3a3ed38b75657a7d5cd58d5a6884ec60087b05a8" - integrity sha512-1f6VHJWqPRKAEg/m+fbO1XiaDrsTcI3PQg31A0ciHATlVVoh35BYXryijaQxXblLzz4eDgbbIXQdNAH683j87Q== - dependencies: - "@gnosis.pm/safe-react-gateway-sdk" "^2.10.0" - ethers "^5.4.7" - -"@gnosis.pm/safe-apps-web3modal@^12.0.0": - version "12.0.0" - resolved "https://registry.yarnpkg.com/@gnosis.pm/safe-apps-web3modal/-/safe-apps-web3modal-12.0.0.tgz#43886896b49ba420fc95596bd2ef6ae562acc71a" - integrity sha512-WArrFSiQm90dTbUSXLBsIJ6isWXTAsakAqKf5DRk2dvlyLPFFj3+8dQkNdjg/vyD2R6lDB8f2cPIu5uZb/qz7g== - dependencies: - "@gnosis.pm/safe-apps-provider" "0.11.0" - -"@gnosis.pm/safe-react-gateway-sdk@^2.10.0": - version "2.10.1" - resolved "https://registry.yarnpkg.com/@gnosis.pm/safe-react-gateway-sdk/-/safe-react-gateway-sdk-2.10.1.tgz#62f4abf733855e734aa1eab4be4778ccd08fe689" - integrity sha512-uIosTEqmoxhCy7WS8sIzXde2nJQwzC+KfNoeDQVeLZtEpnRZQ7R+N/qDtORMUJfKeyc8cIwkKXmVc2DRgSRxOQ== - dependencies: - cross-fetch "^3.1.5" - -"@graphprotocol/graph-cli@^0.26.0": - version "0.26.0" - resolved "https://registry.yarnpkg.com/@graphprotocol/graph-cli/-/graph-cli-0.26.0.tgz#9bcc3533d1384d44b65e0bf7eef81221ae8a4e05" - integrity sha512-sQKKfkGy6jsfpZD6KA9KdvHRpeStd1ZH334CMVxhyJtPY006a/Wc2rr7TBqgAtwpggs7UiT0UA3s5vG0jFQB5g== - dependencies: - assemblyscript "0.19.10" - binary-install-raw "0.0.13" - chalk "^3.0.0" - chokidar "^3.0.2" - debug "^4.1.1" - docker-compose "^0.23.2" - dockerode "^2.5.8" - fs-extra "^9.0.0" - glob "^7.1.2" - gluegun "https://github.com/edgeandnode/gluegun#v4.3.1-pin-colors-dep" - graphql "^15.5.0" - immutable "^3.8.2" - ipfs-http-client "^34.0.0" - jayson "^3.0.2" - js-yaml "^3.13.1" - node-fetch "^2.3.0" - pkginfo "^0.4.1" - prettier "^1.13.5" - request "^2.88.0" - semver "7.3.5" - tmp-promise "^3.0.2" - which "2.0.2" - yaml "^1.5.1" - -"@graphprotocol/graph-ts@^0.26.0": - version "0.26.0" - resolved "https://registry.yarnpkg.com/@graphprotocol/graph-ts/-/graph-ts-0.26.0.tgz#576f995531eebaca4374901aeaff499219e382e8" - integrity sha512-GW/emOJl+35MXgmIxTnUK7dJtPCaB9u5aAwoLVqJ8swogC794O92UrXMVrAJsherUriu+yI9bLMGmNPOIi60jw== - dependencies: - assemblyscript "0.19.10" - -"@hapi/address@2.x.x": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" - integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== - -"@hapi/bourne@1.x.x": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" - integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== - -"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": - version "8.5.1" - resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" - integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== - -"@hapi/joi@^15.1.0": - version "15.1.1" - resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" - integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== - dependencies: - "@hapi/address" "2.x.x" - "@hapi/bourne" "1.x.x" - "@hapi/hoek" "8.x.x" - "@hapi/topo" "3.x.x" - -"@hapi/topo@3.x.x": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" - integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== - dependencies: - "@hapi/hoek" "^8.3.0" - -"@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== - dependencies: - "@humanwhocodes/object-schema" "^1.2.0" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/config-array@^0.9.2": - version "0.9.5" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" - integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/object-schema@^1.2.0", "@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -"@hutson/parse-repository-url@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" - integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== - -"@iden3/bigarray@0.0.2": - version "0.0.2" - resolved "https://registry.yarnpkg.com/@iden3/bigarray/-/bigarray-0.0.2.tgz#6fc4ba5be18daf8a26ee393f2fb62b80d98c05e9" - integrity sha512-Xzdyxqm1bOFF6pdIsiHLLl3HkSLjbhqJHVyqaTxXt3RqXBEnmsUmEW47H7VOi/ak7TdkRpNkxjyK5Zbkm+y52g== - -"@iden3/binfileutils@0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@iden3/binfileutils/-/binfileutils-0.0.8.tgz#d1d349bdbaa9f0a99644232c7d75ea0db98ea1c7" - integrity sha512-/GqTsujUssGuQY+sd/XaLrA+OiCwzm+6yH28C57QQDWCHET2Logry9fGxU10n6XKdhCQBjZ7T/YMQkLwwkpRTQ== - dependencies: - fastfile "0.0.19" - ffjavascript "^0.2.30" - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - 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" - -"@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" - integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^26.6.2" - jest-util "^26.6.2" - slash "^3.0.0" - -"@jest/core@^26.6.0", "@jest/core@^26.6.3": - version "26.6.3" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" - integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== - dependencies: - "@jest/console" "^26.6.2" - "@jest/reporters" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^26.6.2" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-resolve-dependencies "^26.6.3" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - jest-watcher "^26.6.2" - micromatch "^4.0.2" - p-each-series "^2.1.0" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^26.6.0", "@jest/environment@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" - integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== - dependencies: - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - -"@jest/fake-timers@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" - integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== - dependencies: - "@jest/types" "^26.6.2" - "@sinonjs/fake-timers" "^6.0.1" - "@types/node" "*" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-util "^26.6.2" - -"@jest/globals@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" - integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/types" "^26.6.2" - expect "^26.6.2" - -"@jest/reporters@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" - integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.4" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^26.6.2" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^7.0.0" - optionalDependencies: - node-notifier "^8.0.0" - -"@jest/source-map@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" - integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.4" - source-map "^0.6.0" - -"@jest/test-result@^26.6.0", "@jest/test-result@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" - integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== - dependencies: - "@jest/console" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^26.6.3": - version "26.6.3" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" - integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== - dependencies: - "@jest/test-result" "^26.6.2" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - -"@jest/transform@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" - integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^26.6.2" - babel-plugin-istanbul "^6.0.0" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-regex-util "^26.0.0" - jest-util "^26.6.2" - micromatch "^4.0.2" - pirates "^4.0.1" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" - integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - -"@jest/types@^26.6.0", "@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" - integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - -"@jridgewell/resolve-uri@^3.0.3": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" - integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" - integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== - -"@jridgewell/trace-mapping@^0.3.0": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" - integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@lerna/add@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/add/-/add-4.0.0.tgz#c36f57d132502a57b9e7058d1548b7a565ef183f" - integrity sha512-cpmAH1iS3k8JBxNvnMqrGTTjbY/ZAiKa1ChJzFevMYY3eeqbvhsBKnBcxjRXtdrJ6bd3dCQM+ZtK+0i682Fhng== - dependencies: - "@lerna/bootstrap" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/npm-conf" "4.0.0" - "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - npm-package-arg "^8.1.0" - p-map "^4.0.0" - pacote "^11.2.6" - semver "^7.3.4" - -"@lerna/bootstrap@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-4.0.0.tgz#5f5c5e2c6cfc8fcec50cb2fbe569a8c607101891" - integrity sha512-RkS7UbeM2vu+kJnHzxNRCLvoOP9yGNgkzRdy4UV2hNalD7EP41bLvRVOwRYQ7fhc2QcbhnKNdOBihYRL0LcKtw== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/has-npm-version" "4.0.0" - "@lerna/npm-install" "4.0.0" - "@lerna/package-graph" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/rimraf-dir" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/symlink-binary" "4.0.0" - "@lerna/symlink-dependencies" "4.0.0" - "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - get-port "^5.1.1" - multimatch "^5.0.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - p-map "^4.0.0" - p-map-series "^2.1.0" - p-waterfall "^2.1.1" - read-package-tree "^5.3.1" - semver "^7.3.4" - -"@lerna/changed@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-4.0.0.tgz#b9fc76cea39b9292a6cd263f03eb57af85c9270b" - integrity sha512-cD+KuPRp6qiPOD+BO6S6SN5cARspIaWSOqGBpGnYzLb4uWT8Vk4JzKyYtc8ym1DIwyoFXHosXt8+GDAgR8QrgQ== - dependencies: - "@lerna/collect-updates" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/listable" "4.0.0" - "@lerna/output" "4.0.0" - -"@lerna/check-working-tree@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-4.0.0.tgz#257e36a602c00142e76082a19358e3e1ae8dbd58" - integrity sha512-/++bxM43jYJCshBiKP5cRlCTwSJdRSxVmcDAXM+1oUewlZJVSVlnks5eO0uLxokVFvLhHlC5kHMc7gbVFPHv6Q== - dependencies: - "@lerna/collect-uncommitted" "4.0.0" - "@lerna/describe-ref" "4.0.0" - "@lerna/validation-error" "4.0.0" - -"@lerna/child-process@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-4.0.0.tgz#341b96a57dffbd9705646d316e231df6fa4df6e1" - integrity sha512-XtCnmCT9eyVsUUHx6y/CTBYdV9g2Cr/VxyseTWBgfIur92/YKClfEtJTbOh94jRT62hlKLqSvux/UhxXVh613Q== - dependencies: - chalk "^4.1.0" - execa "^5.0.0" - strong-log-transformer "^2.1.0" - -"@lerna/clean@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-4.0.0.tgz#8f778b6f2617aa2a936a6b5e085ae62498e57dc5" - integrity sha512-uugG2iN9k45ITx2jtd8nEOoAtca8hNlDCUM0N3lFgU/b1mEQYAPRkqr1qs4FLRl/Y50ZJ41wUz1eazS+d/0osA== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/rimraf-dir" "4.0.0" - p-map "^4.0.0" - p-map-series "^2.1.0" - p-waterfall "^2.1.1" - -"@lerna/cli@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-4.0.0.tgz#8eabd334558836c1664df23f19acb95e98b5bbf3" - integrity sha512-Neaw3GzFrwZiRZv2g7g6NwFjs3er1vhraIniEs0jjVLPMNC4eata0na3GfE5yibkM/9d3gZdmihhZdZ3EBdvYA== - dependencies: - "@lerna/global-options" "4.0.0" - dedent "^0.7.0" - npmlog "^4.1.2" - yargs "^16.2.0" - -"@lerna/collect-uncommitted@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-4.0.0.tgz#855cd64612969371cfc2453b90593053ff1ba779" - integrity sha512-ufSTfHZzbx69YNj7KXQ3o66V4RC76ffOjwLX0q/ab//61bObJ41n03SiQEhSlmpP+gmFbTJ3/7pTe04AHX9m/g== - dependencies: - "@lerna/child-process" "4.0.0" - chalk "^4.1.0" - npmlog "^4.1.2" - -"@lerna/collect-updates@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-4.0.0.tgz#8e208b1bafd98a372ff1177f7a5e288f6bea8041" - integrity sha512-bnNGpaj4zuxsEkyaCZLka9s7nMs58uZoxrRIPJ+nrmrZYp1V5rrd+7/NYTuunOhY2ug1sTBvTAxj3NZQ+JKnOw== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/describe-ref" "4.0.0" - minimatch "^3.0.4" - npmlog "^4.1.2" - slash "^3.0.0" - -"@lerna/command@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/command/-/command-4.0.0.tgz#991c7971df8f5bf6ae6e42c808869a55361c1b98" - integrity sha512-LM9g3rt5FsPNFqIHUeRwWXLNHJ5NKzOwmVKZ8anSp4e1SPrv2HNc1V02/9QyDDZK/w+5POXH5lxZUI1CHaOK/A== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/package-graph" "4.0.0" - "@lerna/project" "4.0.0" - "@lerna/validation-error" "4.0.0" - "@lerna/write-log-file" "4.0.0" - clone-deep "^4.0.1" - dedent "^0.7.0" - execa "^5.0.0" - is-ci "^2.0.0" - npmlog "^4.1.2" - -"@lerna/conventional-commits@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-4.0.0.tgz#660fb2c7b718cb942ead70110df61f18c6f99750" - integrity sha512-CSUQRjJHFrH8eBn7+wegZLV3OrNc0Y1FehYfYGhjLE2SIfpCL4bmfu/ViYuHh9YjwHaA+4SX6d3hR+xkeseKmw== - dependencies: - "@lerna/validation-error" "4.0.0" - conventional-changelog-angular "^5.0.12" - conventional-changelog-core "^4.2.2" - conventional-recommended-bump "^6.1.0" - fs-extra "^9.1.0" - get-stream "^6.0.0" - lodash.template "^4.5.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - pify "^5.0.0" - semver "^7.3.4" - -"@lerna/create-symlink@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-4.0.0.tgz#8c5317ce5ae89f67825443bd7651bf4121786228" - integrity sha512-I0phtKJJdafUiDwm7BBlEUOtogmu8+taxq6PtIrxZbllV9hWg59qkpuIsiFp+no7nfRVuaasNYHwNUhDAVQBig== - dependencies: - cmd-shim "^4.1.0" - fs-extra "^9.1.0" - npmlog "^4.1.2" - -"@lerna/create@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/create/-/create-4.0.0.tgz#b6947e9b5dfb6530321952998948c3e63d64d730" - integrity sha512-mVOB1niKByEUfxlbKTM1UNECWAjwUdiioIbRQZEeEabtjCL69r9rscIsjlGyhGWCfsdAG5wfq4t47nlDXdLLag== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/npm-conf" "4.0.0" - "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - fs-extra "^9.1.0" - globby "^11.0.2" - init-package-json "^2.0.2" - npm-package-arg "^8.1.0" - p-reduce "^2.1.0" - pacote "^11.2.6" - pify "^5.0.0" - semver "^7.3.4" - slash "^3.0.0" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "^3.0.0" - whatwg-url "^8.4.0" - yargs-parser "20.2.4" - -"@lerna/describe-ref@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-4.0.0.tgz#53c53b4ea65fdceffa072a62bfebe6772c45d9ec" - integrity sha512-eTU5+xC4C5Gcgz+Ey4Qiw9nV2B4JJbMulsYJMW8QjGcGh8zudib7Sduj6urgZXUYNyhYpRs+teci9M2J8u+UvQ== - dependencies: - "@lerna/child-process" "4.0.0" - npmlog "^4.1.2" - -"@lerna/diff@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-4.0.0.tgz#6d3071817aaa4205a07bf77cfc6e932796d48b92" - integrity sha512-jYPKprQVg41+MUMxx6cwtqsNm0Yxx9GDEwdiPLwcUTFx+/qKCEwifKNJ1oGIPBxyEHX2PFCOjkK39lHoj2qiag== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/validation-error" "4.0.0" - npmlog "^4.1.2" - -"@lerna/exec@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-4.0.0.tgz#eb6cb95cb92d42590e9e2d628fcaf4719d4a8be6" - integrity sha512-VGXtL/b/JfY84NB98VWZpIExfhLOzy0ozm/0XaS4a2SmkAJc5CeUfrhvHxxkxiTBLkU+iVQUyYEoAT0ulQ8PCw== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/profiler" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/validation-error" "4.0.0" - p-map "^4.0.0" - -"@lerna/filter-options@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-4.0.0.tgz#ac94cc515d7fa3b47e2f7d74deddeabb1de5e9e6" - integrity sha512-vV2ANOeZhOqM0rzXnYcFFCJ/kBWy/3OA58irXih9AMTAlQLymWAK0akWybl++sUJ4HB9Hx12TOqaXbYS2NM5uw== - dependencies: - "@lerna/collect-updates" "4.0.0" - "@lerna/filter-packages" "4.0.0" - dedent "^0.7.0" - npmlog "^4.1.2" - -"@lerna/filter-packages@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-4.0.0.tgz#b1f70d70e1de9cdd36a4e50caa0ac501f8d012f2" - integrity sha512-+4AJIkK7iIiOaqCiVTYJxh/I9qikk4XjNQLhE3kixaqgMuHl1NQ99qXRR0OZqAWB9mh8Z1HA9bM5K1HZLBTOqA== - dependencies: - "@lerna/validation-error" "4.0.0" - multimatch "^5.0.0" - npmlog "^4.1.2" - -"@lerna/get-npm-exec-opts@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-4.0.0.tgz#dc955be94a4ae75c374ef9bce91320887d34608f" - integrity sha512-yvmkerU31CTWS2c7DvmAWmZVeclPBqI7gPVr5VATUKNWJ/zmVcU4PqbYoLu92I9Qc4gY1TuUplMNdNuZTSL7IQ== - dependencies: - npmlog "^4.1.2" - -"@lerna/get-packed@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-4.0.0.tgz#0989d61624ac1f97e393bdad2137c49cd7a37823" - integrity sha512-rfWONRsEIGyPJTxFzC8ECb3ZbsDXJbfqWYyeeQQDrJRPnEJErlltRLPLgC2QWbxFgFPsoDLeQmFHJnf0iDfd8w== - dependencies: - fs-extra "^9.1.0" - ssri "^8.0.1" - tar "^6.1.0" - -"@lerna/github-client@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-4.0.0.tgz#2ced67721363ef70f8e12ffafce4410918f4a8a4" - integrity sha512-2jhsldZtTKXYUBnOm23Lb0Fx8G4qfSXF9y7UpyUgWUj+YZYd+cFxSuorwQIgk5P4XXrtVhsUesIsli+BYSThiw== - dependencies: - "@lerna/child-process" "4.0.0" - "@octokit/plugin-enterprise-rest" "^6.0.1" - "@octokit/rest" "^18.1.0" - git-url-parse "^11.4.4" - npmlog "^4.1.2" - -"@lerna/gitlab-client@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-4.0.0.tgz#00dad73379c7b38951d4b4ded043504c14e2b67d" - integrity sha512-OMUpGSkeDWFf7BxGHlkbb35T7YHqVFCwBPSIR6wRsszY8PAzCYahtH3IaJzEJyUg6vmZsNl0FSr3pdA2skhxqA== - dependencies: - node-fetch "^2.6.1" - npmlog "^4.1.2" - whatwg-url "^8.4.0" - -"@lerna/global-options@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-4.0.0.tgz#c7d8b0de6a01d8a845e2621ea89e7f60f18c6a5f" - integrity sha512-TRMR8afAHxuYBHK7F++Ogop2a82xQjoGna1dvPOY6ltj/pEx59pdgcJfYcynYqMkFIk8bhLJJN9/ndIfX29FTQ== - -"@lerna/has-npm-version@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-4.0.0.tgz#d3fc3292c545eb28bd493b36e6237cf0279f631c" - integrity sha512-LQ3U6XFH8ZmLCsvsgq1zNDqka0Xzjq5ibVN+igAI5ccRWNaUsE/OcmsyMr50xAtNQMYMzmpw5GVLAivT2/YzCg== - dependencies: - "@lerna/child-process" "4.0.0" - semver "^7.3.4" - -"@lerna/import@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/import/-/import-4.0.0.tgz#bde656c4a451fa87ae41733ff8a8da60547c5465" - integrity sha512-FaIhd+4aiBousKNqC7TX1Uhe97eNKf5/SC7c5WZANVWtC7aBWdmswwDt3usrzCNpj6/Wwr9EtEbYROzxKH8ffg== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/validation-error" "4.0.0" - dedent "^0.7.0" - fs-extra "^9.1.0" - p-map-series "^2.1.0" - -"@lerna/info@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/info/-/info-4.0.0.tgz#b9fb0e479d60efe1623603958a831a88b1d7f1fc" - integrity sha512-8Uboa12kaCSZEn4XRfPz5KU9XXoexSPS4oeYGj76s2UQb1O1GdnEyfjyNWoUl1KlJ2i/8nxUskpXIftoFYH0/Q== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/output" "4.0.0" - envinfo "^7.7.4" - -"@lerna/init@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/init/-/init-4.0.0.tgz#dadff67e6dfb981e8ccbe0e6a310e837962f6c7a" - integrity sha512-wY6kygop0BCXupzWj5eLvTUqdR7vIAm0OgyV9WHpMYQGfs1V22jhztt8mtjCloD/O0nEe4tJhdG62XU5aYmPNQ== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/command" "4.0.0" - fs-extra "^9.1.0" - p-map "^4.0.0" - write-json-file "^4.3.0" - -"@lerna/link@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/link/-/link-4.0.0.tgz#c3a38aabd44279d714e90f2451e31b63f0fb65ba" - integrity sha512-KlvPi7XTAcVOByfaLlOeYOfkkDcd+bejpHMCd1KcArcFTwijOwXOVi24DYomIeHvy6HsX/IUquJ4PPUJIeB4+w== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/package-graph" "4.0.0" - "@lerna/symlink-dependencies" "4.0.0" - p-map "^4.0.0" - slash "^3.0.0" - -"@lerna/list@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/list/-/list-4.0.0.tgz#24b4e6995bd73f81c556793fe502b847efd9d1d7" - integrity sha512-L2B5m3P+U4Bif5PultR4TI+KtW+SArwq1i75QZ78mRYxPc0U/piau1DbLOmwrdqr99wzM49t0Dlvl6twd7GHFg== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/listable" "4.0.0" - "@lerna/output" "4.0.0" - -"@lerna/listable@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-4.0.0.tgz#d00d6cb4809b403f2b0374fc521a78e318b01214" - integrity sha512-/rPOSDKsOHs5/PBLINZOkRIX1joOXUXEtyUs5DHLM8q6/RP668x/1lFhw6Dx7/U+L0+tbkpGtZ1Yt0LewCLgeQ== - dependencies: - "@lerna/query-graph" "4.0.0" - chalk "^4.1.0" - columnify "^1.5.4" - -"@lerna/log-packed@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-4.0.0.tgz#95168fe2e26ac6a71e42f4be857519b77e57a09f" - integrity sha512-+dpCiWbdzgMAtpajLToy9PO713IHoE6GV/aizXycAyA07QlqnkpaBNZ8DW84gHdM1j79TWockGJo9PybVhrrZQ== - dependencies: - byte-size "^7.0.0" - columnify "^1.5.4" - has-unicode "^2.0.1" - npmlog "^4.1.2" - -"@lerna/npm-conf@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-4.0.0.tgz#b259fd1e1cee2bf5402b236e770140ff9ade7fd2" - integrity sha512-uS7H02yQNq3oejgjxAxqq/jhwGEE0W0ntr8vM3EfpCW1F/wZruwQw+7bleJQ9vUBjmdXST//tk8mXzr5+JXCfw== - dependencies: - config-chain "^1.1.12" - pify "^5.0.0" - -"@lerna/npm-dist-tag@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-4.0.0.tgz#d1e99b4eccd3414142f0548ad331bf2d53f3257a" - integrity sha512-F20sg28FMYTgXqEQihgoqSfwmq+Id3zT23CnOwD+XQMPSy9IzyLf1fFVH319vXIw6NF6Pgs4JZN2Qty6/CQXGw== - dependencies: - "@lerna/otplease" "4.0.0" - npm-package-arg "^8.1.0" - npm-registry-fetch "^9.0.0" - npmlog "^4.1.2" - -"@lerna/npm-install@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-4.0.0.tgz#31180be3ab3b7d1818a1a0c206aec156b7094c78" - integrity sha512-aKNxq2j3bCH3eXl3Fmu4D54s/YLL9WSwV8W7X2O25r98wzrO38AUN6AB9EtmAx+LV/SP15et7Yueg9vSaanRWg== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/get-npm-exec-opts" "4.0.0" - fs-extra "^9.1.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - signal-exit "^3.0.3" - write-pkg "^4.0.0" - -"@lerna/npm-publish@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-4.0.0.tgz#84eb62e876fe949ae1fd62c60804423dbc2c4472" - integrity sha512-vQb7yAPRo5G5r77DRjHITc9piR9gvEKWrmfCH7wkfBnGWEqu7n8/4bFQ7lhnkujvc8RXOsYpvbMQkNfkYibD/w== - dependencies: - "@lerna/otplease" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - fs-extra "^9.1.0" - libnpmpublish "^4.0.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - pify "^5.0.0" - read-package-json "^3.0.0" - -"@lerna/npm-run-script@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-4.0.0.tgz#dfebf4f4601442e7c0b5214f9fb0d96c9350743b" - integrity sha512-Jmyh9/IwXJjOXqKfIgtxi0bxi1pUeKe5bD3S81tkcy+kyng/GNj9WSqD5ZggoNP2NP//s4CLDAtUYLdP7CU9rA== - dependencies: - "@lerna/child-process" "4.0.0" - "@lerna/get-npm-exec-opts" "4.0.0" - npmlog "^4.1.2" - -"@lerna/otplease@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-4.0.0.tgz#84972eb43448f8a1077435ba1c5e59233b725850" - integrity sha512-Sgzbqdk1GH4psNiT6hk+BhjOfIr/5KhGBk86CEfHNJTk9BK4aZYyJD4lpDbDdMjIV4g03G7pYoqHzH765T4fxw== - dependencies: - "@lerna/prompt" "4.0.0" - -"@lerna/output@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/output/-/output-4.0.0.tgz#b1d72215c0e35483e4f3e9994debc82c621851f2" - integrity sha512-Un1sHtO1AD7buDQrpnaYTi2EG6sLF+KOPEAMxeUYG5qG3khTs2Zgzq5WE3dt2N/bKh7naESt20JjIW6tBELP0w== - dependencies: - npmlog "^4.1.2" - -"@lerna/pack-directory@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-4.0.0.tgz#8b617db95d20792f043aaaa13a9ccc0e04cb4c74" - integrity sha512-NJrmZNmBHS+5aM+T8N6FVbaKFScVqKlQFJNY2k7nsJ/uklNKsLLl6VhTQBPwMTbf6Tf7l6bcKzpy7aePuq9UiQ== - dependencies: - "@lerna/get-packed" "4.0.0" - "@lerna/package" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - npm-packlist "^2.1.4" - npmlog "^4.1.2" - tar "^6.1.0" - temp-write "^4.0.0" - -"@lerna/package-graph@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-4.0.0.tgz#16a00253a8ac810f72041481cb46bcee8d8123dd" - integrity sha512-QED2ZCTkfXMKFoTGoccwUzjHtZMSf3UKX14A4/kYyBms9xfFsesCZ6SLI5YeySEgcul8iuIWfQFZqRw+Qrjraw== - dependencies: - "@lerna/prerelease-id-from-version" "4.0.0" - "@lerna/validation-error" "4.0.0" - npm-package-arg "^8.1.0" - npmlog "^4.1.2" - semver "^7.3.4" - -"@lerna/package@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/package/-/package-4.0.0.tgz#1b4c259c4bcff45c876ee1d591a043aacbc0d6b7" - integrity sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q== - dependencies: - load-json-file "^6.2.0" - npm-package-arg "^8.1.0" - write-pkg "^4.0.0" - -"@lerna/prerelease-id-from-version@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-4.0.0.tgz#c7e0676fcee1950d85630e108eddecdd5b48c916" - integrity sha512-GQqguzETdsYRxOSmdFZ6zDBXDErIETWOqomLERRY54f4p+tk4aJjoVdd9xKwehC9TBfIFvlRbL1V9uQGHh1opg== - dependencies: - semver "^7.3.4" - -"@lerna/profiler@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-4.0.0.tgz#8a53ab874522eae15d178402bff90a14071908e9" - integrity sha512-/BaEbqnVh1LgW/+qz8wCuI+obzi5/vRE8nlhjPzdEzdmWmZXuCKyWSEzAyHOJWw1ntwMiww5dZHhFQABuoFz9Q== - dependencies: - fs-extra "^9.1.0" - npmlog "^4.1.2" - upath "^2.0.1" - -"@lerna/project@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/project/-/project-4.0.0.tgz#ff84893935833533a74deff30c0e64ddb7f0ba6b" - integrity sha512-o0MlVbDkD5qRPkFKlBZsXZjoNTWPyuL58564nSfZJ6JYNmgAptnWPB2dQlAc7HWRZkmnC2fCkEdoU+jioPavbg== - dependencies: - "@lerna/package" "4.0.0" - "@lerna/validation-error" "4.0.0" - cosmiconfig "^7.0.0" - dedent "^0.7.0" - dot-prop "^6.0.1" - glob-parent "^5.1.1" - globby "^11.0.2" - load-json-file "^6.2.0" - npmlog "^4.1.2" - p-map "^4.0.0" - resolve-from "^5.0.0" - write-json-file "^4.3.0" - -"@lerna/prompt@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-4.0.0.tgz#5ec69a803f3f0db0ad9f221dad64664d3daca41b" - integrity sha512-4Ig46oCH1TH5M7YyTt53fT6TuaKMgqUUaqdgxvp6HP6jtdak6+amcsqB8YGz2eQnw/sdxunx84DfI9XpoLj4bQ== - dependencies: - inquirer "^7.3.3" - npmlog "^4.1.2" - -"@lerna/publish@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-4.0.0.tgz#f67011305adeba120066a3b6d984a5bb5fceef65" - integrity sha512-K8jpqjHrChH22qtkytA5GRKIVFEtqBF6JWj1I8dWZtHs4Jywn8yB1jQ3BAMLhqmDJjWJtRck0KXhQQKzDK2UPg== - dependencies: - "@lerna/check-working-tree" "4.0.0" - "@lerna/child-process" "4.0.0" - "@lerna/collect-updates" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/describe-ref" "4.0.0" - "@lerna/log-packed" "4.0.0" - "@lerna/npm-conf" "4.0.0" - "@lerna/npm-dist-tag" "4.0.0" - "@lerna/npm-publish" "4.0.0" - "@lerna/otplease" "4.0.0" - "@lerna/output" "4.0.0" - "@lerna/pack-directory" "4.0.0" - "@lerna/prerelease-id-from-version" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/pulse-till-done" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/validation-error" "4.0.0" - "@lerna/version" "4.0.0" - fs-extra "^9.1.0" - libnpmaccess "^4.0.1" - npm-package-arg "^8.1.0" - npm-registry-fetch "^9.0.0" - npmlog "^4.1.2" - p-map "^4.0.0" - p-pipe "^3.1.0" - pacote "^11.2.6" - semver "^7.3.4" - -"@lerna/pulse-till-done@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-4.0.0.tgz#04bace7d483a8205c187b806bcd8be23d7bb80a3" - integrity sha512-Frb4F7QGckaybRhbF7aosLsJ5e9WuH7h0KUkjlzSByVycxY91UZgaEIVjS2oN9wQLrheLMHl6SiFY0/Pvo0Cxg== - dependencies: - npmlog "^4.1.2" - -"@lerna/query-graph@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-4.0.0.tgz#09dd1c819ac5ee3f38db23931143701f8a6eef63" - integrity sha512-YlP6yI3tM4WbBmL9GCmNDoeQyzcyg1e4W96y/PKMZa5GbyUvkS2+Jc2kwPD+5KcXou3wQZxSPzR3Te5OenaDdg== - dependencies: - "@lerna/package-graph" "4.0.0" - -"@lerna/resolve-symlink@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-4.0.0.tgz#6d006628a210c9b821964657a9e20a8c9a115e14" - integrity sha512-RtX8VEUzqT+uLSCohx8zgmjc6zjyRlh6i/helxtZTMmc4+6O4FS9q5LJas2uGO2wKvBlhcD6siibGt7dIC3xZA== - dependencies: - fs-extra "^9.1.0" - npmlog "^4.1.2" - read-cmd-shim "^2.0.0" - -"@lerna/rimraf-dir@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-4.0.0.tgz#2edf3b62d4eb0ef4e44e430f5844667d551ec25a" - integrity sha512-QNH9ABWk9mcMJh2/muD9iYWBk1oQd40y6oH+f3wwmVGKYU5YJD//+zMiBI13jxZRtwBx0vmBZzkBkK1dR11cBg== - dependencies: - "@lerna/child-process" "4.0.0" - npmlog "^4.1.2" - path-exists "^4.0.0" - rimraf "^3.0.2" - -"@lerna/run-lifecycle@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-4.0.0.tgz#e648a46f9210a9bcd7c391df6844498cb5079334" - integrity sha512-IwxxsajjCQQEJAeAaxF8QdEixfI7eLKNm4GHhXHrgBu185JcwScFZrj9Bs+PFKxwb+gNLR4iI5rpUdY8Y0UdGQ== - dependencies: - "@lerna/npm-conf" "4.0.0" - npm-lifecycle "^3.1.5" - npmlog "^4.1.2" - -"@lerna/run-topologically@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-4.0.0.tgz#af846eeee1a09b0c2be0d1bfb5ef0f7b04bb1827" - integrity sha512-EVZw9hGwo+5yp+VL94+NXRYisqgAlj0jWKWtAIynDCpghRxCE5GMO3xrQLmQgqkpUl9ZxQFpICgYv5DW4DksQA== - dependencies: - "@lerna/query-graph" "4.0.0" - p-queue "^6.6.2" - -"@lerna/run@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/run/-/run-4.0.0.tgz#4bc7fda055a729487897c23579694f6183c91262" - integrity sha512-9giulCOzlMPzcZS/6Eov6pxE9gNTyaXk0Man+iCIdGJNMrCnW7Dme0Z229WWP/UoxDKg71F2tMsVVGDiRd8fFQ== - dependencies: - "@lerna/command" "4.0.0" - "@lerna/filter-options" "4.0.0" - "@lerna/npm-run-script" "4.0.0" - "@lerna/output" "4.0.0" - "@lerna/profiler" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/timer" "4.0.0" - "@lerna/validation-error" "4.0.0" - p-map "^4.0.0" - -"@lerna/symlink-binary@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-4.0.0.tgz#21009f62d53a425f136cb4c1a32c6b2a0cc02d47" - integrity sha512-zualodWC4q1QQc1pkz969hcFeWXOsVYZC5AWVtAPTDfLl+TwM7eG/O6oP+Rr3fFowspxo6b1TQ6sYfDV6HXNWA== - dependencies: - "@lerna/create-symlink" "4.0.0" - "@lerna/package" "4.0.0" - fs-extra "^9.1.0" - p-map "^4.0.0" - -"@lerna/symlink-dependencies@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-4.0.0.tgz#8910eca084ae062642d0490d8972cf2d98e9ebbd" - integrity sha512-BABo0MjeUHNAe2FNGty1eantWp8u83BHSeIMPDxNq0MuW2K3CiQRaeWT3EGPAzXpGt0+hVzBrA6+OT0GPn7Yuw== - dependencies: - "@lerna/create-symlink" "4.0.0" - "@lerna/resolve-symlink" "4.0.0" - "@lerna/symlink-binary" "4.0.0" - fs-extra "^9.1.0" - p-map "^4.0.0" - p-map-series "^2.1.0" - -"@lerna/timer@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-4.0.0.tgz#a52e51bfcd39bfd768988049ace7b15c1fd7a6da" - integrity sha512-WFsnlaE7SdOvjuyd05oKt8Leg3ENHICnvX3uYKKdByA+S3g+TCz38JsNs7OUZVt+ba63nC2nbXDlUnuT2Xbsfg== - -"@lerna/validation-error@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-4.0.0.tgz#af9d62fe8304eaa2eb9a6ba1394f9aa807026d35" - integrity sha512-1rBOM5/koiVWlRi3V6dB863E1YzJS8v41UtsHgMr6gB2ncJ2LsQtMKlJpi3voqcgh41H8UsPXR58RrrpPpufyw== - dependencies: - npmlog "^4.1.2" - -"@lerna/version@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/version/-/version-4.0.0.tgz#532659ec6154d8a8789c5ab53878663e244e3228" - integrity sha512-otUgiqs5W9zGWJZSCCMRV/2Zm2A9q9JwSDS7s/tlKq4mWCYriWo7+wsHEA/nPTMDyYyBO5oyZDj+3X50KDUzeA== - dependencies: - "@lerna/check-working-tree" "4.0.0" - "@lerna/child-process" "4.0.0" - "@lerna/collect-updates" "4.0.0" - "@lerna/command" "4.0.0" - "@lerna/conventional-commits" "4.0.0" - "@lerna/github-client" "4.0.0" - "@lerna/gitlab-client" "4.0.0" - "@lerna/output" "4.0.0" - "@lerna/prerelease-id-from-version" "4.0.0" - "@lerna/prompt" "4.0.0" - "@lerna/run-lifecycle" "4.0.0" - "@lerna/run-topologically" "4.0.0" - "@lerna/validation-error" "4.0.0" - chalk "^4.1.0" - dedent "^0.7.0" - load-json-file "^6.2.0" - minimatch "^3.0.4" - npmlog "^4.1.2" - p-map "^4.0.0" - p-pipe "^3.1.0" - p-reduce "^2.1.0" - p-waterfall "^2.1.1" - semver "^7.3.4" - slash "^3.0.0" - temp-write "^4.0.0" - write-json-file "^4.3.0" - -"@lerna/write-log-file@4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-4.0.0.tgz#18221a38a6a307d6b0a5844dd592ad53fa27091e" - integrity sha512-XRG5BloiArpXRakcnPHmEHJp+4AtnhRtpDIHSghmXD5EichI1uD73J7FgPp30mm2pDRq3FdqB0NbwSEsJ9xFQg== - dependencies: - npmlog "^4.1.2" - write-file-atomic "^3.0.3" - -"@metamask/eth-sig-util@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.0.tgz#11553ba06de0d1352332c1bde28c8edd00e0dcf6" - integrity sha512-LczOjjxY4A7XYloxzyxJIHONELmUxVZncpOLoClpEcTiebiVdM46KRPYXGuULro9oNNR2xdVx3yoKiQjdfWmoA== - 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" - -"@metamask/safe-event-emitter@2.0.0", "@metamask/safe-event-emitter@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz#af577b477c683fad17c619a78208cede06f9605c" - integrity sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q== - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@nomiclabs/hardhat-ethers@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.5.tgz#131b0da1b71680d5a01569f916ae878229d326d3" - integrity sha512-A2gZAGB6kUvLx+kzM92HKuUF33F1FSe90L0TmkXkT2Hh0OKRpvWZURUSU2nghD2yC4DzfEZ3DftfeHGvZ2JTUw== - -"@nomiclabs/hardhat-etherscan@^2.1.1": - version "2.1.8" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-2.1.8.tgz#e206275e96962cd15e5ba9148b44388bc922d8c2" - integrity sha512-0+rj0SsZotVOcTLyDOxnOc3Gulo8upo0rsw/h+gBPcmtj91YqYJNhdARHoBxOhhE8z+5IUQPx+Dii04lXT14PA== - dependencies: - "@ethersproject/abi" "^5.1.2" - "@ethersproject/address" "^5.0.2" - cbor "^5.0.2" - debug "^4.1.1" - fs-extra "^7.0.1" - node-fetch "^2.6.0" - semver "^6.3.0" - -"@nomiclabs/hardhat-ganache@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ganache/-/hardhat-ganache-2.0.1.tgz#d4974dc379cef1892904378de00e12709c0719aa" - integrity sha512-Q3D8iTtsvQVkJd1EzhhYYvXAFY8fF/JEUt6l6jW7tduhFDRCKvyoSMCw+lH/3nBOHsBolr80pF76NHZ2mYCMeQ== - dependencies: - debug "^4.1.1" - ganache-core "^2.7.0" - ts-interface-checker "^0.1.9" - -"@nomiclabs/hardhat-waffle@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.3.tgz#9c538a09c5ed89f68f5fd2dc3f78f16ed1d6e0b1" - integrity sha512-049PHSnI1CZq6+XTbrMbMv5NaL7cednTfPenx02k3cEh8wBMLa6ys++dBETJa6JjfwgA9nBhhHQ173LJv6k2Pg== - dependencies: - "@types/sinon-chai" "^3.2.3" - "@types/web3" "1.0.19" - -"@npmcli/ci-detect@^1.0.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz#18478bbaa900c37bfbd8a2006a6262c62e8b0fe1" - integrity sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q== - -"@npmcli/fs@^1.0.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-1.1.1.tgz#72f719fe935e687c56a4faecf3c03d06ba593257" - integrity sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ== - dependencies: - "@gar/promisify" "^1.0.1" - semver "^7.3.5" - -"@npmcli/git@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.1.0.tgz#2fbd77e147530247d37f325930d457b3ebe894f6" - integrity sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw== - dependencies: - "@npmcli/promise-spawn" "^1.3.2" - lru-cache "^6.0.0" - mkdirp "^1.0.4" - npm-pick-manifest "^6.1.1" - promise-inflight "^1.0.1" - promise-retry "^2.0.1" - semver "^7.3.5" - which "^2.0.2" - -"@npmcli/installed-package-contents@^1.0.6": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" - integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== - dependencies: - npm-bundled "^1.1.1" - npm-normalize-package-bin "^1.0.1" - -"@npmcli/move-file@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" - integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== - dependencies: - mkdirp "^1.0.4" - rimraf "^3.0.2" - -"@npmcli/node-gyp@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz#a912e637418ffc5f2db375e93b85837691a43a33" - integrity sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA== - -"@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274fba180dabc0aea6e38f29274f5" - integrity sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg== - dependencies: - infer-owner "^1.0.4" - -"@npmcli/run-script@^1.8.2": - version "1.8.6" - resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.6.tgz#18314802a6660b0d4baa4c3afe7f1ad39d8c28b7" - integrity sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g== - dependencies: - "@npmcli/node-gyp" "^1.0.2" - "@npmcli/promise-spawn" "^1.3.2" - node-gyp "^7.1.0" - read-package-json-fast "^2.0.1" - -"@octokit/auth-token@^2.4.4": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" - integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== - dependencies: - "@octokit/types" "^6.0.3" - -"@octokit/core@^3.5.1": - version "3.6.0" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.6.0.tgz#3376cb9f3008d9b3d110370d90e0a1fcd5fe6085" - integrity sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q== - dependencies: - "@octokit/auth-token" "^2.4.4" - "@octokit/graphql" "^4.5.8" - "@octokit/request" "^5.6.3" - "@octokit/request-error" "^2.0.5" - "@octokit/types" "^6.0.3" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" - -"@octokit/endpoint@^6.0.1": - version "6.0.12" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" - integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== - dependencies: - "@octokit/types" "^6.0.3" - is-plain-object "^5.0.0" - universal-user-agent "^6.0.0" - -"@octokit/graphql@^4.5.8": - version "4.8.0" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" - integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== - dependencies: - "@octokit/request" "^5.6.0" - "@octokit/types" "^6.0.3" - universal-user-agent "^6.0.0" - -"@octokit/openapi-types@^11.2.0": - version "11.2.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-11.2.0.tgz#b38d7fc3736d52a1e96b230c1ccd4a58a2f400a6" - integrity sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA== - -"@octokit/plugin-enterprise-rest@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" - integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== - -"@octokit/plugin-paginate-rest@^2.16.8": - version "2.17.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz#32e9c7cab2a374421d3d0de239102287d791bce7" - integrity sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw== - dependencies: - "@octokit/types" "^6.34.0" - -"@octokit/plugin-request-log@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" - integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== - -"@octokit/plugin-rest-endpoint-methods@^5.12.0": - version "5.13.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz#8c46109021a3412233f6f50d28786f8e552427ba" - integrity sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA== - dependencies: - "@octokit/types" "^6.34.0" - deprecation "^2.3.1" - -"@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" - integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== - dependencies: - "@octokit/types" "^6.0.3" - deprecation "^2.0.0" - once "^1.4.0" - -"@octokit/request@^5.6.0", "@octokit/request@^5.6.3": - version "5.6.3" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" - integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== - dependencies: - "@octokit/endpoint" "^6.0.1" - "@octokit/request-error" "^2.1.0" - "@octokit/types" "^6.16.1" - is-plain-object "^5.0.0" - node-fetch "^2.6.7" - universal-user-agent "^6.0.0" - -"@octokit/rest@^18.1.0": - version "18.12.0" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881" - integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== - dependencies: - "@octokit/core" "^3.5.1" - "@octokit/plugin-paginate-rest" "^2.16.8" - "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-rest-endpoint-methods" "^5.12.0" - -"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.34.0": - version "6.34.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.34.0.tgz#c6021333334d1ecfb5d370a8798162ddf1ae8218" - integrity sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw== - dependencies: - "@octokit/openapi-types" "^11.2.0" - -"@openzeppelin/contracts@>=4.5.0-solc-0.8", "@openzeppelin/contracts@>=4.5.0-solc-0.8.1": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.5.0.tgz#3fd75d57de172b3743cdfc1206883f56430409cc" - integrity sha512-fdkzKPYMjrRiPK6K4y64e6GzULR7R7RwxSigHS8DDp7aWDeoReqsQI+cxHV1UuhAqX69L1lAaWDxenfP+xiqzA== - -"@pmmmwh/react-refresh-webpack-plugin@0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766" - integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ== - dependencies: - ansi-html "^0.0.7" - error-stack-parser "^2.0.6" - html-entities "^1.2.1" - native-url "^0.2.6" - schema-utils "^2.6.5" - source-map "^0.7.3" - -"@popmotion/easing@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@popmotion/easing/-/easing-1.0.2.tgz#17d925c45b4bf44189e5a38038d149df42d8c0b4" - integrity sha512-IkdW0TNmRnWTeWI7aGQIVDbKXPWHVEYdGgd5ZR4SH/Ty/61p63jCjrPxX1XrR7IGkl08bjhJROStD7j+RKgoIw== - -"@popmotion/popcorn@^0.4.4": - version "0.4.4" - resolved "https://registry.yarnpkg.com/@popmotion/popcorn/-/popcorn-0.4.4.tgz#a5f906fccdff84526e3fcb892712d7d8a98d6adc" - integrity sha512-jYO/8319fKoNLMlY4ZJPiPu8Ea8occYwRZhxpaNn/kZsK4QG2E7XFlXZMJBsTWDw7I1i0uaqyC4zn1nwEezLzg== - dependencies: - "@popmotion/easing" "^1.0.1" - framesync "^4.0.1" - hey-listen "^1.0.8" - style-value-types "^3.1.7" - tslib "^1.10.0" - -"@popperjs/core@^2.9.3": - version "2.11.4" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.4.tgz#d8c7b8db9226d2d7664553a0741ad7d0397ee503" - integrity sha512-q/ytXxO5NKvyT37pmisQAItCFqA7FD/vNb8dgaJy3/630Fsc+Mz9/9f2SziBoIZ30TJooXyTwZmhi1zjXmObYg== - -"@reach/alert@0.13.2": - version "0.13.2" - resolved "https://registry.yarnpkg.com/@reach/alert/-/alert-0.13.2.tgz#71c4a848d51341f1d6d9eaae060975391c224870" - integrity sha512-LDz83AXCrClyq/MWe+0vaZfHp1Ytqn+kgL5VxG7rirUvmluWaj/snxzfNPWn0Ma4K2YENmXXRC/iHt5X95SqIg== - dependencies: - "@reach/utils" "0.13.2" - "@reach/visually-hidden" "0.13.2" - prop-types "^15.7.2" - tslib "^2.1.0" - -"@reach/utils@0.13.2": - version "0.13.2" - resolved "https://registry.yarnpkg.com/@reach/utils/-/utils-0.13.2.tgz#87e8fef8ebfe583fa48250238a1a3ed03189fcc8" - integrity sha512-3ir6cN60zvUrwjOJu7C6jec/samqAeyAB12ZADK+qjnmQPdzSYldrFWwDVV5H0WkhbYXR3uh+eImu13hCetNPQ== - dependencies: - "@types/warning" "^3.0.0" - tslib "^2.1.0" - warning "^4.0.3" - -"@reach/visually-hidden@0.13.2": - version "0.13.2" - resolved "https://registry.yarnpkg.com/@reach/visually-hidden/-/visually-hidden-0.13.2.tgz#ee21de376a7e57e60dc92d95a671073796caa17e" - integrity sha512-sPZwNS0/duOuG0mYwE5DmgEAzW9VhgU3aIt1+mrfT/xiT9Cdncqke+kRBQgU708q/Ttm9tWsoHni03nn/SuPTQ== - dependencies: - prop-types "^15.7.2" - tslib "^2.1.0" - -"@resolver-engine/core@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@resolver-engine/core/-/core-0.3.3.tgz#590f77d85d45bc7ecc4e06c654f41345db6ca967" - integrity sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ== - dependencies: - debug "^3.1.0" - is-url "^1.2.4" - request "^2.85.0" - -"@resolver-engine/fs@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@resolver-engine/fs/-/fs-0.3.3.tgz#fbf83fa0c4f60154a82c817d2fe3f3b0c049a973" - integrity sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ== - dependencies: - "@resolver-engine/core" "^0.3.3" - debug "^3.1.0" - -"@resolver-engine/imports-fs@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@resolver-engine/imports-fs/-/imports-fs-0.3.3.tgz#4085db4b8d3c03feb7a425fbfcf5325c0d1e6c1b" - integrity sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA== - dependencies: - "@resolver-engine/fs" "^0.3.3" - "@resolver-engine/imports" "^0.3.3" - debug "^3.1.0" - -"@resolver-engine/imports@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@resolver-engine/imports/-/imports-0.3.3.tgz#badfb513bb3ff3c1ee9fd56073e3144245588bcc" - integrity sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q== - 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" - -"@rollup/plugin-node-resolve@^7.1.1": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" - integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q== - dependencies: - "@rollup/pluginutils" "^3.0.8" - "@types/resolve" "0.0.8" - builtin-modules "^3.1.0" - is-module "^1.0.0" - resolve "^1.14.2" - -"@rollup/plugin-replace@^2.3.1": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" - integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - magic-string "^0.25.7" - -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@sentry/core@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" - integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== - 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" - -"@sentry/hub@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100" - integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== - dependencies: - "@sentry/types" "5.30.0" - "@sentry/utils" "5.30.0" - tslib "^1.9.3" - -"@sentry/minimal@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b" - integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== - dependencies: - "@sentry/hub" "5.30.0" - "@sentry/types" "5.30.0" - tslib "^1.9.3" - -"@sentry/node@^5.18.1": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.30.0.tgz#4ca479e799b1021285d7fe12ac0858951c11cd48" - integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== - 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" - -"@sentry/tracing@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f" - integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== - 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" - -"@sentry/types@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402" - integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== - -"@sentry/utils@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980" - integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== - dependencies: - "@sentry/types" "5.30.0" - tslib "^1.9.3" - -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - -"@sinonjs/commons@^1.7.0": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" - integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" - integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@solidity-parser/parser@^0.14.0", "@solidity-parser/parser@^0.14.1": - version "0.14.1" - resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.1.tgz#179afb29f4e295a77cc141151f26b3848abc3c46" - integrity sha512-eLjj2L6AuQjBB6s/ibwCAc0DwrR5Ge+ys+wgWo+bviU7fV2nTMQhU63CGaDKXg9iTmMxwhkyoggdIR7ZGRfMgw== - dependencies: - antlr4ts "^0.5.0-alpha.4" - -"@surma/rollup-plugin-off-main-thread@^1.1.1": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58" - integrity sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A== - dependencies: - ejs "^2.6.1" - magic-string "^0.25.0" - -"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" - integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== - -"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" - integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== - -"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" - integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== - -"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" - integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== - -"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" - integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== - -"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" - integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== - -"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" - integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== - -"@svgr/babel-plugin-transform-svg-component@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" - integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== - -"@svgr/babel-preset@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" - integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" - "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" - "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" - "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" - "@svgr/babel-plugin-transform-svg-component" "^5.5.0" - -"@svgr/core@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" - integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== - dependencies: - "@svgr/plugin-jsx" "^5.5.0" - camelcase "^6.2.0" - cosmiconfig "^7.0.0" - -"@svgr/hast-util-to-babel-ast@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" - integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== - dependencies: - "@babel/types" "^7.12.6" - -"@svgr/plugin-jsx@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" - integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== - dependencies: - "@babel/core" "^7.12.3" - "@svgr/babel-preset" "^5.5.0" - "@svgr/hast-util-to-babel-ast" "^5.5.0" - svg-parser "^2.0.2" - -"@svgr/plugin-svgo@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" - integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== - dependencies: - cosmiconfig "^7.0.0" - deepmerge "^4.2.2" - svgo "^1.2.2" - -"@svgr/webpack@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" - integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== - dependencies: - "@babel/core" "^7.12.3" - "@babel/plugin-transform-react-constant-elements" "^7.12.1" - "@babel/preset-env" "^7.12.1" - "@babel/preset-react" "^7.12.5" - "@svgr/core" "^5.5.0" - "@svgr/plugin-jsx" "^5.5.0" - "@svgr/plugin-svgo" "^5.5.0" - loader-utils "^2.0.0" - -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - -"@testing-library/dom@^7.22.3": - version "7.31.2" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.31.2.tgz#df361db38f5212b88555068ab8119f5d841a8c4a" - integrity sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^4.2.0" - aria-query "^4.2.2" - chalk "^4.1.0" - dom-accessibility-api "^0.5.6" - lz-string "^1.4.4" - pretty-format "^26.6.2" - -"@testing-library/jest-dom@^5.9.0": - version "5.16.3" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.3.tgz#b76851a909586113c20486f1679ffb4d8ec27bfa" - integrity sha512-u5DfKj4wfSt6akfndfu1eG06jsdyA/IUrlX2n3pyq5UXgXMhXY+NJb8eNK/7pqPWAhCKsCGWDdDO0zKMKAYkEA== - dependencies: - "@babel/runtime" "^7.9.2" - "@types/testing-library__jest-dom" "^5.9.1" - aria-query "^5.0.0" - chalk "^3.0.0" - css "^3.0.0" - css.escape "^1.5.1" - dom-accessibility-api "^0.5.6" - lodash "^4.17.15" - redent "^3.0.0" - -"@testing-library/react@^10.2.1": - version "10.4.9" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-10.4.9.tgz#9faa29c6a1a217bf8bbb96a28bd29d7a847ca150" - integrity sha512-pHZKkqUy0tmiD81afs8xfiuseXfU/N7rAX3iKjeZYje86t9VaB0LrxYVa+OOsvkrveX5jCK3IjajVn2MbePvqA== - dependencies: - "@babel/runtime" "^7.10.3" - "@testing-library/dom" "^7.22.3" - -"@testing-library/user-event@^12.0.2": - version "12.8.3" - resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-12.8.3.tgz#1aa3ed4b9f79340a1e1836bc7f57c501e838704a" - integrity sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ== - dependencies: - "@babel/runtime" "^7.12.5" - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@truffle/error@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.1.0.tgz#5e9fed79e6cda624c926d314b280a576f8b22a36" - integrity sha512-RbUfp5VreNhsa2Q4YbBjz18rOQI909pG32bghl1hulO7IpvcqTS+C3Ge5cNbiWQ1WGzy1wIeKLW0tmQtHFB7qg== - -"@truffle/interface-adapter@^0.5.12": - version "0.5.12" - resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.5.12.tgz#8cc34e9a5363970bfec1001520ae55fad6a26bfd" - integrity sha512-Qrc5VARnvSILYqZNsAM0xsUHqGqphLXVdIvDnhUA1Xj1xyNz8iboTr8bXorMd+Uspw+PXmsW44BJ/Wioo/jL2A== - dependencies: - bn.js "^5.1.3" - ethers "^4.0.32" - web3 "1.5.3" - -"@truffle/provider@^0.2.24": - version "0.2.48" - resolved "https://registry.yarnpkg.com/@truffle/provider/-/provider-0.2.48.tgz#be3c8567570bbd1ec13fd63a3c312e24da88f9e9" - integrity sha512-jno7/OokETQaHKHZ451+leCV/D2D3xaxmmHIDvP2SLJtSaThCQ6J05+dXvPSDU0OMxfYXL1hzsLQpEVTiDUVnw== - dependencies: - "@truffle/error" "^0.1.0" - "@truffle/interface-adapter" "^0.5.12" - web3 "1.5.3" - -"@tsconfig/node10@^1.0.7": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" - integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== - -"@tsconfig/node12@^1.0.7": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" - integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== - -"@tsconfig/node14@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" - integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== - -"@tsconfig/node16@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" - integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== - -"@typechain/ethers-v5@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-2.0.0.tgz#cd3ca1590240d587ca301f4c029b67bfccd08810" - integrity sha512-0xdCkyGOzdqh4h5JSf+zoWx85IusEjDcPIwNEHP8mrWSnCae4rvrqB+/gtpdNfX7zjlFlZiMeePn2r63EI3Lrw== - dependencies: - ethers "^5.0.2" - -"@typechain/ethers-v5@^8.0.1": - version "8.0.5" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-8.0.5.tgz#d469420e9a73deb7fa076cde9edb45d713dd1b8c" - integrity sha512-ntpj4cS3v4WlDu+hSKSyj9A3o1tKtWC30RX1gobeYymZColeJiUemC1Kgfa0MWGmInm5CKxoHVhEvYVgPOZn1A== - dependencies: - lodash "^4.17.15" - ts-essentials "^7.0.1" - -"@typechain/hardhat@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-3.1.0.tgz#88bd9e9d55e30fbece6fbb34c03ecd40a8b2013a" - integrity sha512-C6Be6l+vTpao19PvMH2CB/lhL1TRLkhdPkvQCF/zqkY1e+0iqY2Bb9Jd3PTt6I8QvMm89ZDerrCJC9927ZHmlg== - dependencies: - fs-extra "^9.1.0" - -"@types/abstract-leveldown@*": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz#f055979a99f7654e84d6b8e6267419e9c4cfff87" - integrity sha512-q5veSX6zjUy/DlDhR4Y4cU0k2Ar+DT2LUraP00T19WLmTO6Se1djepCCaqU6nQrwcJ5Hyo/CWqxTzrrFg8eqbQ== - -"@types/aria-query@^4.2.0": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc" - integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig== - -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": - version "7.1.19" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" - integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" - integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.14.2.tgz#ffcd470bbb3f8bf30481678fb5502278ca833a43" - integrity sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA== - dependencies: - "@babel/types" "^7.3.0" - -"@types/bn.js@*", "@types/bn.js@^5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" - integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== - dependencies: - "@types/node" "*" - -"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": - version "4.11.6" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" - integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== - dependencies: - "@types/node" "*" - -"@types/chai-as-promised@^7.1.3": - version "7.1.5" - resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.5.tgz#6e016811f6c7a64f2eed823191c3a6955094e255" - integrity sha512-jStwss93SITGBwt/niYrkf2C+/1KTeZCZl1LaeezTlqppAKeoQC7jxyqYuP72sxBGKCIbw7oHgbYssIRzT5FCQ== - dependencies: - "@types/chai" "*" - -"@types/chai@*", "@types/chai@^4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.0.tgz#23509ebc1fa32f1b4d50d6a66c4032d5b8eaabdc" - integrity sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw== - -"@types/concat-stream@^1.6.0": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@types/concat-stream/-/concat-stream-1.6.1.tgz#24bcfc101ecf68e886aaedce60dfd74b632a1b74" - integrity sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA== - dependencies: - "@types/node" "*" - -"@types/connect@^3.4.33": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== - dependencies: - "@types/node" "*" - -"@types/eslint@^7.28.2": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.29.0.tgz#e56ddc8e542815272720bb0b4ccc2aff9c3e1c78" - integrity sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*": - version "0.0.51" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" - integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - -"@types/express-serve-static-core@^4.17.9": - version "4.17.28" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8" - integrity sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - -"@types/form-data@0.0.33": - version "0.0.33" - resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-0.0.33.tgz#c9ac85b2a5fd18435b8c85d9ecb50e6d6c893ff8" - integrity sha1-yayFsqX9GENbjIXZ7LUObWyJP/g= - dependencies: - "@types/node" "*" - -"@types/glob@^7.1.1": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/graceful-fs@^4.1.2": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" - integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== - dependencies: - "@types/node" "*" - -"@types/html-minifier-terser@^5.0.0": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz#693b316ad323ea97eed6b38ed1a3cc02b1672b57" - integrity sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w== - -"@types/invariant@^2.2.29": - version "2.2.35" - resolved "https://registry.yarnpkg.com/@types/invariant/-/invariant-2.2.35.tgz#cd3ebf581a6557452735688d8daba6cf0bd5a3be" - integrity sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg== - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" - integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== - dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@*": - version "27.4.1" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.1.tgz#185cbe2926eaaf9662d340cc02e548ce9e11ab6d" - integrity sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw== - dependencies: - jest-matcher-utils "^27.0.0" - pretty-format "^27.0.0" - -"@types/jest@^25.0.0": - version "25.2.3" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.3.tgz#33d27e4c4716caae4eced355097a47ad363fdcaf" - integrity sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw== - dependencies: - jest-diff "^25.2.1" - pretty-format "^25.2.1" - -"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== - -"@types/json-schema@^7.0.9": - version "7.0.10" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.10.tgz#9b05b7896166cd00e9cbd59864853abf65d9ac23" - integrity sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= - -"@types/level-errors@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/level-errors/-/level-errors-3.0.0.tgz#15c1f4915a5ef763b51651b15e90f6dc081b96a8" - integrity sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ== - -"@types/levelup@^4.3.0": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@types/levelup/-/levelup-4.3.3.tgz#4dc2b77db079b1cf855562ad52321aa4241b8ef4" - integrity sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA== - dependencies: - "@types/abstract-leveldown" "*" - "@types/level-errors" "*" - "@types/node" "*" - -"@types/lodash.mergewith@4.6.6": - version "4.6.6" - resolved "https://registry.yarnpkg.com/@types/lodash.mergewith/-/lodash.mergewith-4.6.6.tgz#c4698f5b214a433ff35cb2c75ee6ec7f99d79f10" - integrity sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg== - dependencies: - "@types/lodash" "*" - -"@types/lodash@*", "@types/lodash@^4.14.159": - version "4.14.181" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.181.tgz#d1d3740c379fda17ab175165ba04e2d03389385d" - integrity sha512-n3tyKthHJbkiWhDZs3DkhkCzt2MexYHXlX0td5iMplyfwketaOeKboEVBqzceH7juqvEg3q5oUoBFxSLu7zFag== - -"@types/lru-cache@^5.1.0": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" - integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== - -"@types/minimatch@*", "@types/minimatch@^3.0.3": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== - -"@types/minimist@^1.2.0": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" - integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== - -"@types/mkdirp@^0.5.2": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f" - integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== - dependencies: - "@types/node" "*" - -"@types/mocha@^9.1.0": - version "9.1.0" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.0.tgz#baf17ab2cca3fcce2d322ebc30454bff487efad5" - integrity sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg== - -"@types/node-fetch@^2.5.5": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975" - integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA== - dependencies: - "@types/node" "*" - form-data "^3.0.0" - -"@types/node@*", "@types/node@^17.0.23": - version "17.0.23" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da" - integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw== - -"@types/node@^10.0.3", "@types/node@^10.0.5": - version "10.17.60" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" - integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== - -"@types/node@^12.0.0", "@types/node@^12.12.54": - version "12.20.47" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.47.tgz#ca9237d51f2a2557419688511dab1c8daf475188" - integrity sha512-BzcaRsnFuznzOItW1WpQrDHM7plAa7GIDMZ6b5pnMbkqEtM/6WCOhvZar39oeMQP79gwvFUWjjptE7/KGcNqFg== - -"@types/node@^12.12.6": - version "12.20.37" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.37.tgz#abb38afa9d6e8a2f627a8cb52290b3c80fbe61ed" - integrity sha512-i1KGxqcvJaLQali+WuypQnXwcplhtNtjs66eNsZpp2P2FL/trJJxx/VWsM0YCL2iMoIJrbXje48lvIQAQ4p2ZA== - -"@types/node@^17.0.17": - version "17.0.17" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.17.tgz#a8ddf6e0c2341718d74ee3dc413a13a042c45a0c" - integrity sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw== - -"@types/node@^8.0.0": - version "8.10.66" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" - integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== - -"@types/normalize-package-data@^2.4.0": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" - integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/pbkdf2@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" - integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== - dependencies: - "@types/node" "*" - -"@types/prettier@^2.0.0", "@types/prettier@^2.1.1": - version "2.4.4" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.4.tgz#5d9b63132df54d8909fce1c3f8ca260fdd693e17" - integrity sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA== - -"@types/prop-types@*": - version "15.7.4" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" - integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== - -"@types/q@^1.5.1": - version "1.5.5" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" - integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== - -"@types/qs@*", "@types/qs@^6.2.31": - version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== - -"@types/range-parser@*": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== - -"@types/react-dom@^16.9.0": - version "16.9.14" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.14.tgz#674b8f116645fe5266b40b525777fc6bb8eb3bcd" - integrity sha512-FIX2AVmPTGP30OUJ+0vadeIFJJ07Mh1m+U0rxfgyW34p3rTlXI+nlenvAxNn4BP36YyI9IJ/+UJ7Wu22N1pI7A== - dependencies: - "@types/react" "^16" - -"@types/react@^16", "@types/react@^16.9.0": - version "16.14.24" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.24.tgz#f2c5e9fa78f83f769884b83defcf7924b9eb5c82" - integrity sha512-e7U2WC8XQP/xfR7bwhOhNFZKPTfW1ph+MiqtudKb8tSV8RyCsovQx2sNVtKoOryjxFKpHPPC/yNiGfdeVM5Gyw== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/resolve@0.0.8", "@types/resolve@^0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" - -"@types/scheduler@*": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== - -"@types/secp256k1@^4.0.1": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" - integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== - dependencies: - "@types/node" "*" - -"@types/sinon-chai@^3.2.3": - version "3.2.8" - resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-3.2.8.tgz#5871d09ab50d671d8e6dd72e9073f8e738ac61dc" - integrity sha512-d4ImIQbT/rKMG8+AXpmcan5T2/PNeSjrYhvkwet6z0p8kzYtfgA32xzOBlbU0yqJfq+/0Ml805iFoODO0LP5/g== - dependencies: - "@types/chai" "*" - "@types/sinon" "*" - -"@types/sinon@*": - version "10.0.11" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.11.tgz#8245827b05d3fc57a6601bd35aee1f7ad330fc42" - integrity sha512-dmZsHlBsKUtBpHriNjlK0ndlvEh8dcb9uV9Afsbt89QIyydpC7NcR+nWlAhASfy3GHnxTl4FX/aKE7XZUt/B4g== - dependencies: - "@types/sinonjs__fake-timers" "*" - -"@types/sinonjs__fake-timers@*": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz#bf2e02a3dbd4aecaf95942ecd99b7402e03fad5e" - integrity sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA== - -"@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== - -"@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== - -"@types/tapable@^1", "@types/tapable@^1.0.5": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310" - integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ== - -"@types/testing-library__jest-dom@^5.9.1": - version "5.14.3" - resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.3.tgz#ee6c7ffe9f8595882ee7bda8af33ae7b8789ef17" - integrity sha512-oKZe+Mf4ioWlMuzVBaXQ9WDnEm1+umLx0InILg+yvZVBBDmzV5KfZyLrCvadtWcx8+916jLmHafcmqqffl+iIw== - dependencies: - "@types/jest" "*" - -"@types/uglify-js@*": - version "3.13.1" - resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.1.tgz#5e889e9e81e94245c75b6450600e1c5ea2878aea" - integrity sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ== - dependencies: - source-map "^0.6.1" - -"@types/underscore@*": - version "1.11.4" - resolved "https://registry.yarnpkg.com/@types/underscore/-/underscore-1.11.4.tgz#62e393f8bc4bd8a06154d110c7d042a93751def3" - integrity sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg== - -"@types/warning@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/warning/-/warning-3.0.0.tgz#0d2501268ad8f9962b740d387c4654f5f8e23e52" - integrity sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI= - -"@types/web3@1.0.19": - version "1.0.19" - resolved "https://registry.yarnpkg.com/@types/web3/-/web3-1.0.19.tgz#46b85d91d398ded9ab7c85a5dd57cb33ac558924" - integrity sha512-fhZ9DyvDYDwHZUp5/STa9XW2re0E8GxoioYJ4pEUZ13YHpApSagixj7IAdoYH5uAK+UalGq6Ml8LYzmgRA/q+A== - dependencies: - "@types/bn.js" "*" - "@types/underscore" "*" - -"@types/webpack-sources@*": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" - integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg== - dependencies: - "@types/node" "*" - "@types/source-list-map" "*" - source-map "^0.7.3" - -"@types/webpack@^4.41.8": - version "4.41.32" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.32.tgz#a7bab03b72904070162b2f169415492209e94212" - integrity sha512-cb+0ioil/7oz5//7tZUSwbrSAN/NWHrQylz5cW8G0dWTcF/g+/dSdMlKVZspBYuMAN1+WnwHrkxiRrLcwd0Heg== - dependencies: - "@types/node" "*" - "@types/tapable" "^1" - "@types/uglify-js" "*" - "@types/webpack-sources" "*" - anymatch "^3.0.0" - source-map "^0.6.0" - -"@types/ws@^7.4.4": - version "7.4.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" - integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== - -"@types/yargs@^15.0.0": - version "15.0.14" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" - integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^4.5.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" - integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== - dependencies: - "@typescript-eslint/experimental-utils" "4.33.0" - "@typescript-eslint/scope-manager" "4.33.0" - debug "^4.3.1" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" - regexpp "^3.1.0" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/eslint-plugin@^5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.18.0.tgz#950df411cec65f90d75d6320a03b2c98f6c3af7d" - integrity sha512-tzrmdGMJI/uii9/V6lurMo4/o+dMTKDH82LkNjhJ3adCW22YQydoRs5MwTiqxGF9CSYxPxQ7EYb4jLNlIs+E+A== - dependencies: - "@typescript-eslint/scope-manager" "5.18.0" - "@typescript-eslint/type-utils" "5.18.0" - "@typescript-eslint/utils" "5.18.0" - debug "^4.3.2" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" - regexpp "^3.2.0" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/eslint-plugin@^5.9.1": - version "5.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.16.0.tgz#78f246dd8d1b528fc5bfca99a8a64d4023a3d86d" - integrity sha512-SJoba1edXvQRMmNI505Uo4XmGbxCK9ARQpkvOd00anxzri9RNQk0DDCxD+LIl+jYhkzOJiOMMKYEHnHEODjdCw== - dependencies: - "@typescript-eslint/scope-manager" "5.16.0" - "@typescript-eslint/type-utils" "5.16.0" - "@typescript-eslint/utils" "5.16.0" - debug "^4.3.2" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" - regexpp "^3.2.0" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/experimental-utils@4.33.0", "@typescript-eslint/experimental-utils@^4.0.1": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" - integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== - dependencies: - "@types/json-schema" "^7.0.7" - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/experimental-utils@^3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686" - integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw== - dependencies: - "@types/json-schema" "^7.0.3" - "@typescript-eslint/types" "3.10.1" - "@typescript-eslint/typescript-estree" "3.10.1" - eslint-scope "^5.0.0" - eslint-utils "^2.0.0" - -"@typescript-eslint/parser@^4.5.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" - integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== - dependencies: - "@typescript-eslint/scope-manager" "4.33.0" - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/typescript-estree" "4.33.0" - debug "^4.3.1" - -"@typescript-eslint/parser@^5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.18.0.tgz#2bcd4ff21df33621df33e942ccb21cb897f004c6" - integrity sha512-+08nYfurBzSSPndngnHvFw/fniWYJ5ymOrn/63oMIbgomVQOvIDhBoJmYZ9lwQOCnQV9xHGvf88ze3jFGUYooQ== - dependencies: - "@typescript-eslint/scope-manager" "5.18.0" - "@typescript-eslint/types" "5.18.0" - "@typescript-eslint/typescript-estree" "5.18.0" - debug "^4.3.2" - -"@typescript-eslint/parser@^5.9.1": - version "5.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.16.0.tgz#e4de1bde4b4dad5b6124d3da227347616ed55508" - integrity sha512-fkDq86F0zl8FicnJtdXakFs4lnuebH6ZADDw6CYQv0UZeIjHvmEw87m9/29nk2Dv5Lmdp0zQ3zDQhiMWQf/GbA== - dependencies: - "@typescript-eslint/scope-manager" "5.16.0" - "@typescript-eslint/types" "5.16.0" - "@typescript-eslint/typescript-estree" "5.16.0" - debug "^4.3.2" - -"@typescript-eslint/scope-manager@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" - integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - -"@typescript-eslint/scope-manager@5.16.0": - version "5.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.16.0.tgz#7e7909d64bd0c4d8aef629cdc764b9d3e1d3a69a" - integrity sha512-P+Yab2Hovg8NekLIR/mOElCDPyGgFZKhGoZA901Yax6WR6HVeGLbsqJkZ+Cvk5nts/dAlFKm8PfL43UZnWdpIQ== - dependencies: - "@typescript-eslint/types" "5.16.0" - "@typescript-eslint/visitor-keys" "5.16.0" - -"@typescript-eslint/scope-manager@5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.18.0.tgz#a7d7b49b973ba8cebf2a3710eefd457ef2fb5505" - integrity sha512-C0CZML6NyRDj+ZbMqh9FnPscg2PrzSaVQg3IpTmpe0NURMVBXlghGZgMYqBw07YW73i0MCqSDqv2SbywnCS8jQ== - dependencies: - "@typescript-eslint/types" "5.18.0" - "@typescript-eslint/visitor-keys" "5.18.0" - -"@typescript-eslint/type-utils@5.16.0": - version "5.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.16.0.tgz#b482bdde1d7d7c0c7080f7f2f67ea9580b9e0692" - integrity sha512-SKygICv54CCRl1Vq5ewwQUJV/8padIWvPgCxlWPGO/OgQLCijY9G7lDu6H+mqfQtbzDNlVjzVWQmeqbLMBLEwQ== - dependencies: - "@typescript-eslint/utils" "5.16.0" - debug "^4.3.2" - tsutils "^3.21.0" - -"@typescript-eslint/type-utils@5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.18.0.tgz#62dbfc8478abf36ba94a90ddf10be3cc8e471c74" - integrity sha512-vcn9/6J5D6jtHxpEJrgK8FhaM8r6J1/ZiNu70ZUJN554Y3D9t3iovi6u7JF8l/e7FcBIxeuTEidZDR70UuCIfA== - dependencies: - "@typescript-eslint/utils" "5.18.0" - debug "^4.3.2" - tsutils "^3.21.0" - -"@typescript-eslint/types@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" - integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== - -"@typescript-eslint/types@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" - integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== - -"@typescript-eslint/types@5.16.0": - version "5.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.16.0.tgz#5827b011982950ed350f075eaecb7f47d3c643ee" - integrity sha512-oUorOwLj/3/3p/HFwrp6m/J2VfbLC8gjW5X3awpQJ/bSG+YRGFS4dpsvtQ8T2VNveV+LflQHjlLvB6v0R87z4g== - -"@typescript-eslint/types@5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.18.0.tgz#4f0425d85fdb863071680983853c59a62ce9566e" - integrity sha512-bhV1+XjM+9bHMTmXi46p1Led5NP6iqQcsOxgx7fvk6gGiV48c6IynY0apQb7693twJDsXiVzNXTflhplmaiJaw== - -"@typescript-eslint/typescript-estree@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" - integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w== - dependencies: - "@typescript-eslint/types" "3.10.1" - "@typescript-eslint/visitor-keys" "3.10.1" - debug "^4.1.1" - glob "^7.1.6" - is-glob "^4.0.1" - lodash "^4.17.15" - semver "^7.3.2" - tsutils "^3.17.1" - -"@typescript-eslint/typescript-estree@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" - integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== - dependencies: - "@typescript-eslint/types" "4.33.0" - "@typescript-eslint/visitor-keys" "4.33.0" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@5.16.0": - version "5.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.16.0.tgz#32259459ec62f5feddca66adc695342f30101f61" - integrity sha512-SE4VfbLWUZl9MR+ngLSARptUv2E8brY0luCdgmUevU6arZRY/KxYoLI/3V/yxaURR8tLRN7bmZtJdgmzLHI6pQ== - dependencies: - "@typescript-eslint/types" "5.16.0" - "@typescript-eslint/visitor-keys" "5.16.0" - debug "^4.3.2" - globby "^11.0.4" - is-glob "^4.0.3" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.18.0.tgz#6498e5ee69a32e82b6e18689e2f72e4060986474" - integrity sha512-wa+2VAhOPpZs1bVij9e5gyVu60ReMi/KuOx4LKjGx2Y3XTNUDJgQ+5f77D49pHtqef/klglf+mibuHs9TrPxdQ== - dependencies: - "@typescript-eslint/types" "5.18.0" - "@typescript-eslint/visitor-keys" "5.18.0" - debug "^4.3.2" - globby "^11.0.4" - is-glob "^4.0.3" - semver "^7.3.5" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.16.0": - version "5.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.16.0.tgz#42218b459d6d66418a4eb199a382bdc261650679" - integrity sha512-iYej2ER6AwmejLWMWzJIHy3nPJeGDuCqf8Jnb+jAQVoPpmWzwQOfa9hWVB8GIQE5gsCv/rfN4T+AYb/V06WseQ== - dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.16.0" - "@typescript-eslint/types" "5.16.0" - "@typescript-eslint/typescript-estree" "5.16.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/utils@5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.18.0.tgz#27fc84cf95c1a96def0aae31684cb43a37e76855" - integrity sha512-+hFGWUMMri7OFY26TsOlGa+zgjEy1ssEipxpLjtl4wSll8zy85x0GrUSju/FHdKfVorZPYJLkF3I4XPtnCTewA== - dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.18.0" - "@typescript-eslint/types" "5.18.0" - "@typescript-eslint/typescript-estree" "5.18.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/visitor-keys@3.10.1": - version "3.10.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" - integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ== - dependencies: - eslint-visitor-keys "^1.1.0" - -"@typescript-eslint/visitor-keys@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" - integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== - dependencies: - "@typescript-eslint/types" "4.33.0" - eslint-visitor-keys "^2.0.0" - -"@typescript-eslint/visitor-keys@5.16.0": - version "5.16.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.16.0.tgz#f27dc3b943e6317264c7492e390c6844cd4efbbb" - integrity sha512-jqxO8msp5vZDhikTwq9ubyMHqZ67UIvawohr4qF3KhlpL7gzSjOd+8471H3nh5LyABkaI85laEKKU8SnGUK5/g== - dependencies: - "@typescript-eslint/types" "5.16.0" - eslint-visitor-keys "^3.0.0" - -"@typescript-eslint/visitor-keys@5.18.0": - version "5.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.18.0.tgz#c7c07709823804171d569017f3b031ced7253e60" - integrity sha512-Hf+t+dJsjAKpKSkg3EHvbtEpFFb/1CiOHnvI8bjHgOD4/wAw3gKrA0i94LrbekypiZVanJu3McWJg7rWDMzRTg== - dependencies: - "@typescript-eslint/types" "5.18.0" - eslint-visitor-keys "^3.0.0" - -"@ungap/promise-all-settled@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" - integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== - -"@walletconnect/browser-utils@^1.7.7": - version "1.7.7" - resolved "https://registry.yarnpkg.com/@walletconnect/browser-utils/-/browser-utils-1.7.7.tgz#4ae0db1ddf49be179ea556af842db3b7afce973d" - integrity sha512-6Mt7DSPaG0FKnHhuVzkU1hgtsCpGvl2nfbfRytLpyDY05iWMzMg5uK1DzV+0k4hCt9pVli0JVNt6dh9a6Xm94w== - dependencies: - "@walletconnect/safe-json" "1.0.0" - "@walletconnect/types" "^1.7.7" - "@walletconnect/window-getters" "1.0.0" - "@walletconnect/window-metadata" "1.0.0" - detect-browser "5.2.0" - -"@walletconnect/client@^1.7.7": - version "1.7.7" - resolved "https://registry.yarnpkg.com/@walletconnect/client/-/client-1.7.7.tgz#4570475b0aeed05e53b0c7b01a352a895c0b455b" - integrity sha512-UuDkpXDc1Emx09aGXKz2Fg8omNp5J8ZRgNblnQTb8xnoQ8rgOJSyhbFR37PFIFwVpriZZDAgmy8HlqoGwLQ2ug== - dependencies: - "@walletconnect/core" "^1.7.7" - "@walletconnect/iso-crypto" "^1.7.7" - "@walletconnect/types" "^1.7.7" - "@walletconnect/utils" "^1.7.7" - -"@walletconnect/core@^1.7.7": - version "1.7.7" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-1.7.7.tgz#71d0c71beda8d10c636a4eae8e81e3b7ecefbe86" - integrity sha512-XsF2x4JcBS1V2Nk/Uh38dU7ZlLmW/R5oxHp4+tVgCwTID6nZlo3vUSHBOqM7jgDRblKOHixANollm0r94bM8Cg== - dependencies: - "@walletconnect/socket-transport" "^1.7.7" - "@walletconnect/types" "^1.7.7" - "@walletconnect/utils" "^1.7.7" - -"@walletconnect/crypto@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@walletconnect/crypto/-/crypto-1.0.2.tgz#3fcc2b2cde6f529a19eadd883dc555cd0e861992" - integrity sha512-+OlNtwieUqVcOpFTvLBvH+9J9pntEqH5evpINHfVxff1XIgwV55PpbdvkHu6r9Ib4WQDOFiD8OeeXs1vHw7xKQ== - dependencies: - "@walletconnect/encoding" "^1.0.1" - "@walletconnect/environment" "^1.0.0" - "@walletconnect/randombytes" "^1.0.2" - aes-js "^3.1.2" - hash.js "^1.1.7" - -"@walletconnect/encoding@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@walletconnect/encoding/-/encoding-1.0.1.tgz#93c18ce9478c3d5283dbb88c41eb2864b575269a" - integrity sha512-8opL2rs6N6E3tJfsqwS82aZQDL3gmupWUgmvuZ3CGU7z/InZs3R9jkzH8wmYtpbq0sFK3WkJkQRZFFk4BkrmFA== - dependencies: - is-typedarray "1.0.0" - typedarray-to-buffer "3.1.5" - -"@walletconnect/environment@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/environment/-/environment-1.0.0.tgz#c4545869fa9c389ec88c364e1a5f8178e8ab5034" - integrity sha512-4BwqyWy6KpSvkocSaV7WR3BlZfrxLbJSLkg+j7Gl6pTDE+U55lLhJvQaMuDVazXYxcjBsG09k7UlH7cGiUI5vQ== - -"@walletconnect/http-connection@^1.7.7": - version "1.7.7" - resolved "https://registry.yarnpkg.com/@walletconnect/http-connection/-/http-connection-1.7.7.tgz#77bcce7c4c067e1e745da1a1c6174ff0daa76018" - integrity sha512-MmhVJfBjvjYcZnrJYnDx4VBwpYM6yh7eX4/8szo6sGwzG4E+8V4YBKU2NF6fA6YXpdAyEYayElqXhB0YBEZFJA== - dependencies: - "@walletconnect/types" "^1.7.7" - "@walletconnect/utils" "^1.7.7" - eventemitter3 "4.0.7" - xhr2-cookies "1.1.0" - -"@walletconnect/iso-crypto@^1.7.7": - version "1.7.7" - resolved "https://registry.yarnpkg.com/@walletconnect/iso-crypto/-/iso-crypto-1.7.7.tgz#a7f703f9c2a05aafe5b8cced8941c7732701e579" - integrity sha512-t8RKJZkFtFyWMFrl0jPz/3RAGhM5yext+MLFq3L/KTPxLgMZuT1yFHRUiV7cAN3+LcCmk6Sy/rV1yQPTiB158Q== - dependencies: - "@walletconnect/crypto" "^1.0.2" - "@walletconnect/types" "^1.7.7" - "@walletconnect/utils" "^1.7.7" - -"@walletconnect/jsonrpc-types@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.0.tgz#fa75ad5e8f106a2e33287b1e6833e22ed0225055" - integrity sha512-11QXNq5H1PKZk7bP8SxgmCw3HRaDuPOVE+wObqEvmhc7OWYUZqfuaaMb+OXGRSOHL3sbC+XHfdeCxFTMXSFyng== - dependencies: - keyvaluestorage-interface "^1.0.0" - -"@walletconnect/jsonrpc-utils@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.0.tgz#1a2f668d606e8f0b6e7d8fdebae86001bd037a3f" - integrity sha512-qUHbKUK6sHeHn67qtHZoLoYk5hS6x1arTPjKDRkY93/6Fx+ZmNIpdm1owX3l6aYueyegJ7mz43FpvYHUqJ8xcw== - dependencies: - "@walletconnect/environment" "^1.0.0" - "@walletconnect/jsonrpc-types" "^1.0.0" - -"@walletconnect/mobile-registry@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@walletconnect/mobile-registry/-/mobile-registry-1.4.0.tgz#502cf8ab87330841d794819081e748ebdef7aee5" - integrity sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw== - -"@walletconnect/qrcode-modal@^1.7.7": - version "1.7.7" - resolved "https://registry.yarnpkg.com/@walletconnect/qrcode-modal/-/qrcode-modal-1.7.7.tgz#a7567370bf915a50fb8edc99f6ceb70ce9be2bfc" - integrity sha512-HRzw6g4P8/C4ClJYJShaGfdvjfrTfkXv+eb+IylWGWvC8IQhuiSXCq5+F3t0CXxuZs3ir26abgviEMRFQxGKdA== - dependencies: - "@walletconnect/browser-utils" "^1.7.7" - "@walletconnect/mobile-registry" "^1.4.0" - "@walletconnect/types" "^1.7.7" - copy-to-clipboard "^3.3.1" - preact "10.4.1" - qrcode "1.4.4" - -"@walletconnect/randombytes@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@walletconnect/randombytes/-/randombytes-1.0.2.tgz#95c644251a15e6675f58fbffc9513a01486da49c" - integrity sha512-ivgOtAyqQnN0rLQmOFPemsgYGysd/ooLfaDA/ACQ3cyqlca56t3rZc7pXfqJOIETx/wSyoF5XbwL+BqYodw27A== - dependencies: - "@walletconnect/encoding" "^1.0.1" - "@walletconnect/environment" "^1.0.0" - randombytes "^2.1.0" - -"@walletconnect/safe-json@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.0.tgz#12eeb11d43795199c045fafde97e3c91646683b2" - integrity sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg== - -"@walletconnect/socket-transport@^1.7.7": - version "1.7.7" - resolved "https://registry.yarnpkg.com/@walletconnect/socket-transport/-/socket-transport-1.7.7.tgz#2cf68b95c4c10f257189370d2456d99c9c206a0f" - integrity sha512-RxeFkT+5BqdaZzPtPYIw6+KSVh6Q1NaYqTiAzWWh9RPuvuTajIEsi+fUXizfkpmyi9UTYBvdFXnKcB+eSImpDg== - dependencies: - "@walletconnect/types" "^1.7.7" - "@walletconnect/utils" "^1.7.7" - ws "7.5.3" - -"@walletconnect/types@^1.7.7": - version "1.7.7" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-1.7.7.tgz#71c623b36a93e373370b1772e82fea2d801adf54" - integrity sha512-yXJrLxwLLCXtWgd/e8FjfY9v5DKds12Z7EEPzUrPSq6v7WtXpqate577KwlFQ6UYzioQzIEDE8+98j+0aiZbsw== - -"@walletconnect/utils@^1.7.7": - version "1.7.7" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-1.7.7.tgz#684522fa20ccf9ec2944f0497ca70254cb6d4729" - integrity sha512-slNlnROS4DEusGFx53hshIBylYhzd5JtGF+AJpza+Tc616+u8ozjQ9aKKUaV85bucnv5Q42bTwLYrYrXiydmuw== - dependencies: - "@walletconnect/browser-utils" "^1.7.7" - "@walletconnect/encoding" "^1.0.1" - "@walletconnect/jsonrpc-utils" "^1.0.0" - "@walletconnect/types" "^1.7.7" - bn.js "4.11.8" - js-sha3 "0.8.0" - query-string "6.13.5" - -"@walletconnect/web3-provider@^1.7.5": - version "1.7.7" - resolved "https://registry.yarnpkg.com/@walletconnect/web3-provider/-/web3-provider-1.7.7.tgz#3d2f8d7a0fcdc118615283978c6a7c9f2a852b71" - integrity sha512-hUhDyaMu93e7e82OVCu3KnYOn6m6wQO9YObbhi3PexppCANe/Y9eDrw/37S+7jbjLIx5nS1et2JU+taKR7OSOw== - dependencies: - "@walletconnect/client" "^1.7.7" - "@walletconnect/http-connection" "^1.7.7" - "@walletconnect/qrcode-modal" "^1.7.7" - "@walletconnect/types" "^1.7.7" - "@walletconnect/utils" "^1.7.7" - web3-provider-engine "16.0.1" - -"@walletconnect/window-getters@1.0.0", "@walletconnect/window-getters@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.0.tgz#1053224f77e725dfd611c83931b5f6c98c32bfc8" - integrity sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA== - -"@walletconnect/window-metadata@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.0.tgz#93b1cc685e6b9b202f29c26be550fde97800c4e5" - integrity sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA== - dependencies: - "@walletconnect/window-getters" "^1.0.0" - -"@webassemblyjs/ast@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" - integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== - dependencies: - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - -"@webassemblyjs/floating-point-hex-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" - integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== - -"@webassemblyjs/helper-api-error@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" - integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== - -"@webassemblyjs/helper-buffer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" - integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== - -"@webassemblyjs/helper-code-frame@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" - integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== - dependencies: - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/helper-fsm@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" - integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== - -"@webassemblyjs/helper-module-context@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" - integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== - dependencies: - "@webassemblyjs/ast" "1.9.0" - -"@webassemblyjs/helper-wasm-bytecode@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" - integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== - -"@webassemblyjs/helper-wasm-section@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" - integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - -"@webassemblyjs/ieee754@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" - integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" - integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" - integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== - -"@webassemblyjs/wasm-edit@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" - integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/helper-wasm-section" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-opt" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - "@webassemblyjs/wast-printer" "1.9.0" - -"@webassemblyjs/wasm-gen@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" - integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wasm-opt@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" - integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-buffer" "1.9.0" - "@webassemblyjs/wasm-gen" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - -"@webassemblyjs/wasm-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" - integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-wasm-bytecode" "1.9.0" - "@webassemblyjs/ieee754" "1.9.0" - "@webassemblyjs/leb128" "1.9.0" - "@webassemblyjs/utf8" "1.9.0" - -"@webassemblyjs/wast-parser@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" - integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/floating-point-hex-parser" "1.9.0" - "@webassemblyjs/helper-api-error" "1.9.0" - "@webassemblyjs/helper-code-frame" "1.9.0" - "@webassemblyjs/helper-fsm" "1.9.0" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" - integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/wast-parser" "1.9.0" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -"@yarnpkg/lockfile@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" - integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== - -JSONStream@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea" - integrity sha1-wQI3G27Dp887hHygDCC7D85Mbeo= - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -JSONStream@^1.0.4, JSONStream@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" - integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== - dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -abab@^2.0.3, abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -abbrev@1.0.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU= - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -abstract-leveldown@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-3.0.0.tgz#5cb89f958a44f526779d740d1440e743e0c30a57" - integrity sha512-KUWx9UWGQD12zsmLNj64/pndaz4iJh/Pj7nopgkfDG6RlCcbMZvT6+9l7dchK4idog2Is8VdC/PvNbFuFmalIQ== - dependencies: - xtend "~4.0.0" - -abstract-leveldown@^2.4.1, abstract-leveldown@~2.7.1: - version "2.7.2" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93" - integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== - dependencies: - xtend "~4.0.0" - -abstract-leveldown@^5.0.0, abstract-leveldown@~5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz#f7128e1f86ccabf7d2893077ce5d06d798e386c6" - integrity sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A== - dependencies: - xtend "~4.0.0" - -abstract-leveldown@^6.2.1: - version "6.3.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz#d25221d1e6612f820c35963ba4bd739928f6026a" - integrity sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ== - dependencies: - buffer "^5.5.0" - immediate "^3.2.3" - level-concat-iterator "~2.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" - -abstract-leveldown@~2.6.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz#1c5e8c6a5ef965ae8c35dfb3a8770c476b82c4b8" - integrity sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA== - dependencies: - xtend "~4.0.0" - -abstract-leveldown@~6.2.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz#036543d87e3710f2528e47040bc3261b77a9a8eb" - integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ== - dependencies: - buffer "^5.5.0" - immediate "^3.2.3" - level-concat-iterator "~2.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-jsx@^5.0.0, acorn-jsx@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^6.0.7, acorn@^6.4.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - -acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== - -add-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" - integrity sha1-anmQQ3ynNtXhKI25K9MmbV9csqo= - -address@1.1.2, address@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" - integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== - -adjust-sourcemap-loader@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz#5ae12fb5b7b1c585e80bbb5a63ec163a1a45e61e" - integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw== - dependencies: - loader-utils "^2.0.0" - regex-parser "^2.2.11" - -adm-zip@^0.4.16: - version "0.4.16" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" - integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== - -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" - integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= - -aes-js@^3.1.1, aes-js@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" - integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== - -agent-base@6, agent-base@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -agentkeepalive@^4.1.3: - version "4.2.1" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.2.1.tgz#a7975cbb9f83b367f06c90cc51ff28fe7d499717" - integrity sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA== - dependencies: - debug "^4.1.0" - depd "^1.1.2" - humanize-ms "^1.2.1" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.6.1, ajv@^6.9.1: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - 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" - -ajv@^8.0.1: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" - integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -alphanum-sort@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= - -ansi-colors@3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" - integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== - -ansi-colors@4.1.1, ansi-colors@^4.1.0, ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-colors@^3.0.0, ansi-colors@^3.2.1: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0, ansi-escapes@^4.3.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-html@0.0.7, ansi-html@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - -ansi-regex@^5.0.0, ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -ansi-styles@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3" - integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ== - -antlr4@4.7.1: - version "4.7.1" - resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.7.1.tgz#69984014f096e9e775f53dd9744bf994d8959773" - integrity sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ== - -antlr4ts@^0.5.0-alpha.4: - version "0.5.0-alpha.4" - resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" - integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.1, anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -apisauce@^1.0.1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/apisauce/-/apisauce-1.1.5.tgz#31d41a5cf805e401266cec67faf1a50f4aeae234" - integrity sha512-gKC8qb/bDJsPsnEXLZnXJ7gVx7dh87CEVNeIwv1dvaffnXoh5GHwac5pWR1P2broLiVj/fqFMQvLDDt/RhjiqA== - dependencies: - axios "^0.21.2" - ramda "^0.25.0" - -app-module-path@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" - integrity sha1-ZBqlXft9am8KgUHEucCqULbCTdU= - -aproba@^1.0.3, aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -aproba@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -are-we-there-yet@~1.1.2: - version "1.1.7" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@2.0.1, argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -argparse@^1.0.10, argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -aria-hidden@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.1.3.tgz#bb48de18dc84787a3c6eee113709c473c64ec254" - integrity sha512-RhVWFtKH5BiGMycI72q2RAFMLQi8JP9bLuQXgR5a8Znp7P5KOIADSJeyfI8PCVxLEp067B2HbP5JIiI/PXIZeA== - dependencies: - tslib "^1.0.0" - -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - -aria-query@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.0.0.tgz#210c21aaf469613ee8c9a62c7f86525e058db52c" - integrity sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg== - -arity-n@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" - integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-back@^1.0.3, array-back@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-1.0.4.tgz#644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b" - integrity sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs= - dependencies: - typical "^2.6.0" - -array-back@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-2.0.0.tgz#6877471d51ecc9c9bfa6136fb6c7d5fe69748022" - integrity sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw== - dependencies: - typical "^2.6.1" - -array-back@^3.0.1, array-back@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== - -array-back@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" - integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== - -array-differ@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" - integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-ify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" - integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= - -array-includes@^3.1.3, array-includes@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" - integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - is-string "^1.0.7" - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-uniq@1.0.3, array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -array.prototype.flat@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz#07e0975d84bbc7c48cd1879d609e682598d33e13" - integrity sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - -array.prototype.flatmap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.5.tgz#908dc82d8a406930fdf38598d51e7411d18d4446" - integrity sha512-08u6rVyi1Lj7oqWbS9nUxliETrtIROT4XGTA4D/LWGten6E3ocm7cy9SIrmNHOL5XVbVuckUp3X6Xyg8/zpvHA== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.19.0" - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -asap@^2.0.0, asap@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= - -asmcrypto.js@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/asmcrypto.js/-/asmcrypto.js-2.3.2.tgz#b9f84bd0a1fb82f21f8c29cc284a707ad17bba2e" - integrity sha512-3FgFARf7RupsZETQ1nHnhLUUvpcttcCq1iZCaVAbJZbCZ5VNRrNyvpDyHTOb0KC3llFcsyOT/a99NZcCbeiEsA== - -asn1.js@^5.0.1, asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -assemblyscript@0.19.10: - version "0.19.10" - resolved "https://registry.yarnpkg.com/assemblyscript/-/assemblyscript-0.19.10.tgz#7ede6d99c797a219beb4fa4614c3eab9e6343c8e" - integrity sha512-HavcUBXB3mBTRGJcpvaQjmnmaqKHBGREjSPNsIvnAk2f9dj78y4BkMaSSdvBQYWcDDzsHQjyUC8stICFkD1Odg== - dependencies: - binaryen "101.0.0-nightly.20210723" - long "^4.0.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assert@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" - integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== - dependencies: - es6-object-assign "^1.1.0" - is-nan "^1.2.1" - object-is "^1.0.1" - util "^0.12.0" - -assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" - integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -ast-parents@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/ast-parents/-/ast-parents-0.0.1.tgz#508fd0f05d0c48775d9eccda2e174423261e8dd3" - integrity sha1-UI/Q8F0MSHddnszaLhdEIyYejdM= - -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-eventemitter@^0.2.2, async-eventemitter@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" - integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== - dependencies: - async "^2.4.0" - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async-mutex@^0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" - integrity sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw== - dependencies: - tslib "^2.0.0" - -async@0.9.x, async@~0.9.0: - version "0.9.2" - resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" - integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= - -async@1.x, async@^1.4.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= - -async@2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" - integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== - dependencies: - lodash "^4.17.11" - -async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.1, async@^2.6.2, async@^2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -async@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async/-/async-1.0.0.tgz#f8fc04ca3a13784ade9e1641af98578cfbd647a9" - integrity sha1-+PwEyjoTeErenhZBr5hXjPvWR6k= - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@^9.6.1: - version "9.8.8" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.8.tgz#fd4bd4595385fa6f06599de749a4d5f7a474957a" - integrity sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA== - dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001109" - normalize-range "^0.1.2" - num2fraction "^1.2.2" - picocolors "^0.2.1" - postcss "^7.0.32" - postcss-value-parser "^4.1.0" - -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -axe-core@^4.3.5: - version "4.4.1" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413" - integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw== - -axios@^0.21.1, axios@^0.21.2: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" - -axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== - -b4a@^1.0.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.3.1.tgz#5ead1402bd4a2dcfea35cc83928815d53315ff32" - integrity sha512-ULHjbJGjZcdA5bugDNAAcMA6GWXX/9N10I6AQc14TH+Sr7bMfT+NHuJnOFGPJWLtzYa6Tz+PnFD2D/1bISLLZQ== - -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@^6.0.14, babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-eslint@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" - integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" - -babel-extract-comments@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" - integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== - dependencies: - babylon "^6.18.0" - -babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-jest@^26.6.0, babel-jest@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" - integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== - dependencies: - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/babel__core" "^7.1.7" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^26.6.2" - chalk "^4.0.0" - graceful-fs "^4.2.4" - slash "^3.0.0" - -babel-loader@8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" - integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== - dependencies: - find-cache-dir "^2.1.0" - loader-utils "^1.4.0" - mkdirp "^0.5.3" - pify "^4.0.1" - schema-utils "^2.6.5" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-istanbul@^6.0.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - 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" - -babel-plugin-jest-hoist@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" - integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - -babel-plugin-macros@^2.6.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" - integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== - dependencies: - "@babel/runtime" "^7.7.2" - cosmiconfig "^6.0.0" - resolve "^1.12.0" - -babel-plugin-macros@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" - integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== - dependencies: - "@babel/runtime" "^7.12.5" - cosmiconfig "^7.0.0" - resolve "^1.19.0" - -babel-plugin-named-asset-import@^0.3.7: - version "0.3.8" - resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" - integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== - -babel-plugin-polyfill-corejs2@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" - integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== - dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.3.1" - semver "^6.1.1" - -babel-plugin-polyfill-corejs3@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" - integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" - core-js-compat "^3.21.0" - -babel-plugin-polyfill-regenerator@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" - integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" - -"babel-plugin-styled-components@>= 1.12.0": - version "2.0.6" - resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.6.tgz#6f76c7f7224b7af7edc24a4910351948c691fc90" - integrity sha512-Sk+7o/oa2HfHv3Eh8sxoz75/fFvEdHsXV4grdeHufX0nauCmymlnN0rGhIvfpMQSJMvGutJ85gvCGea4iqmDpg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.0" - "@babel/helper-module-imports" "^7.16.0" - babel-plugin-syntax-jsx "^6.18.0" - lodash "^4.17.11" - picomatch "^2.3.0" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= - -babel-plugin-syntax-jsx@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= - -babel-plugin-syntax-object-rest-spread@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" - integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= - -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= - -babel-plugin-transform-async-to-generator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.23.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-plugin-transform-es2015-classes@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.26.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" - integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-object-rest-spread@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" - integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= - dependencies: - babel-plugin-syntax-object-rest-spread "^6.8.0" - babel-runtime "^6.26.0" - -babel-plugin-transform-react-remove-prop-types@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" - integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== - -babel-plugin-transform-regenerator@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= - dependencies: - regenerator-transform "^0.10.0" - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - 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-preset-env@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" - integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.23.0" - babel-plugin-transform-es2015-classes "^6.23.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.23.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.23.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.23.0" - babel-plugin-transform-es2015-modules-systemjs "^6.23.0" - babel-plugin-transform-es2015-modules-umd "^6.23.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.23.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.23.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - browserslist "^3.2.6" - invariant "^2.2.2" - semver "^5.3.0" - -babel-preset-jest@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" - integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== - dependencies: - babel-plugin-jest-hoist "^26.6.2" - babel-preset-current-node-syntax "^1.0.0" - -babel-preset-react-app@^10.0.0: - version "10.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584" - integrity sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg== - dependencies: - "@babel/core" "^7.16.0" - "@babel/plugin-proposal-class-properties" "^7.16.0" - "@babel/plugin-proposal-decorators" "^7.16.4" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" - "@babel/plugin-proposal-numeric-separator" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.0" - "@babel/plugin-proposal-private-methods" "^7.16.0" - "@babel/plugin-transform-flow-strip-types" "^7.16.0" - "@babel/plugin-transform-react-display-name" "^7.16.0" - "@babel/plugin-transform-runtime" "^7.16.4" - "@babel/preset-env" "^7.16.4" - "@babel/preset-react" "^7.16.0" - "@babel/preset-typescript" "^7.16.0" - "@babel/runtime" "^7.16.3" - babel-plugin-macros "^3.1.0" - babel-plugin-transform-react-remove-prop-types "^0.4.24" - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babelify@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/babelify/-/babelify-7.3.0.tgz#aa56aede7067fd7bd549666ee16dc285087e88e5" - integrity sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU= - dependencies: - babel-core "^6.0.14" - object-assign "^4.0.0" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - -backoff@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" - integrity sha1-9hbtqdPktmuMp/ynn2lXIsX44m8= - dependencies: - precond "0.2" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base-x@^3.0.2, base-x@^3.0.8: - version "3.0.9" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" - integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== - dependencies: - safe-buffer "^5.0.1" - -base64-js@^1.0.2, base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base64url@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" - integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= - dependencies: - tweetnacl "^0.14.3" - -bech32@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" - integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== - -before-after-hook@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" - integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== - -bfj@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2" - integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== - dependencies: - bluebird "^3.5.5" - check-types "^11.1.1" - hoopy "^0.1.4" - tryer "^1.0.1" - -big-integer@^1.6.42, big-integer@^1.6.48: - version "1.6.51" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" - integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -bignumber.js@^9.0.0, bignumber.js@^9.0.1: - version "9.0.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" - integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -binary-install-raw@0.0.13: - version "0.0.13" - resolved "https://registry.yarnpkg.com/binary-install-raw/-/binary-install-raw-0.0.13.tgz#43a13c6980eb9844e2932eb7a91a56254f55b7dd" - integrity sha512-v7ms6N/H7iciuk6QInon3/n2mu7oRX+6knJ9xFPsJ3rQePgAqcR3CRTwUheFd8SLbiq4LL7Z4G/44L9zscdt9A== - dependencies: - axios "^0.21.1" - rimraf "^3.0.2" - tar "^6.1.0" - -binaryen@101.0.0-nightly.20210723: - version "101.0.0-nightly.20210723" - resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-101.0.0-nightly.20210723.tgz#b6bb7f3501341727681a03866c0856500eec3740" - integrity sha512-eioJNqhHlkguVSbblHOtLqlhtC882SOEPKmNFZaDuz1hzQjolxZ+eu3/kaS10n3sGPONsIZsO7R9fR00UyhEUA== - -bind-decorator@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/bind-decorator/-/bind-decorator-1.0.11.tgz#e41bc06a1f65dd9cec476c91c5daf3978488252f" - integrity sha1-5BvAah9l3ZzsR2yRxdrzl4SIJS8= - -bindings@^1.2.1, bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bip39@2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.5.0.tgz#51cbd5179460504a63ea3c000db3f787ca051235" - integrity sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA== - dependencies: - create-hash "^1.1.0" - pbkdf2 "^3.0.9" - randombytes "^2.0.1" - safe-buffer "^5.0.1" - unorm "^1.3.3" - -bip66@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" - integrity sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI= - dependencies: - safe-buffer "^5.0.1" - -bl@^1.0.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" - integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== - dependencies: - readable-stream "^2.3.5" - safe-buffer "^5.1.1" - -bl@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/bl/-/bl-3.0.1.tgz#1cbb439299609e419b5a74d7fce2f8b37d8e5c6f" - integrity sha512-jrCW5ZhfQ/Vt07WX1Ngs+yn9BDqPL/gw28S7s9H6QK/gupnizNzJAss5akW20ISgOrbLTlXOOCTJeNUQqruAWQ== - dependencies: - readable-stream "^3.0.1" - -bl@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -blake-hash@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/blake-hash/-/blake-hash-1.1.1.tgz#b6251600d7812dd5097f96cb341ceae245bf9d12" - integrity sha512-V93H+FEJuXXZi1eEsMtbcBFP9oL5Ept7SLw3cbXYlPC3nocm9Fr4m18ZhbhdJrZVS9J/Z0oNE4L3oDZvmorHNA== - dependencies: - bindings "^1.2.1" - inherits "^2.0.3" - nan "^2.2.1" - -blake-hash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/blake-hash/-/blake-hash-2.0.0.tgz#af184dce641951126d05b7d1c3de3224f538d66e" - integrity sha512-Igj8YowDu1PRkRsxZA7NVkdFNxH5rKv5cpLxQ0CVXSIA77pVYwCPRQJ2sMew/oneUpfuYRyjG6r8SmmmnbZb1w== - dependencies: - node-addon-api "^3.0.0" - node-gyp-build "^4.2.2" - readable-stream "^3.6.0" - -blake2b-wasm@^2.3.0, blake2b-wasm@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/blake2b-wasm/-/blake2b-wasm-2.4.0.tgz#9115649111edbbd87eb24ce7c04b427e4e2be5be" - integrity sha512-S1kwmW2ZhZFFFOghcx73+ZajEfKBqhP82JMssxtLVMxlaPea1p9uoLiUZ5WYyHn0KddwbLc+0vh4wR0KBNoT5w== - dependencies: - b4a "^1.0.1" - nanoassert "^2.0.0" - -blake2b@^2.1.3: - version "2.1.4" - resolved "https://registry.yarnpkg.com/blake2b/-/blake2b-2.1.4.tgz#817d278526ddb4cd673bfb1af16d1ad61e393ba3" - integrity sha512-AyBuuJNI64gIvwx13qiICz6H6hpmjvYS5DGkG6jbXMOT8Z3WUJ3V1X0FlhIoT1b/5JtHE3ki+xjtMvu1nn+t9A== - dependencies: - blake2b-wasm "^2.4.0" - nanoassert "^2.0.0" - -blakejs@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" - integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== - -bluebird@^3.5.0, bluebird@^3.5.2, bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@4.11.6: - version "4.11.6" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" - integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= - -bn.js@4.11.8: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.8.0: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3, bn.js@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - -body-parser@1.19.2, body-parser@^1.16.0: - version "1.19.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" - integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.8.1" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.9.7" - raw-body "2.4.3" - type-is "~1.6.18" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - array-flatten "^2.1.0" - deep-equal "^1.0.1" - dns-equal "^1.0.0" - dns-txt "^2.0.2" - multicast-dns "^6.0.1" - multicast-dns-service-types "^1.1.0" - -boolbase@^1.0.0, boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -borc@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/borc/-/borc-2.1.2.tgz#6ce75e7da5ce711b963755117dd1b187f6f8cf19" - integrity sha512-Sy9eoUi4OiKzq7VovMn246iTo17kzuyHJKomCfpWMlI6RpfN1gk95w7d7gH264nApVLg0HZfcpz62/g4VH1Y4w== - dependencies: - bignumber.js "^9.0.0" - buffer "^5.5.0" - commander "^2.15.0" - ieee754 "^1.1.13" - iso-url "~0.4.7" - json-text-sequence "~0.1.0" - readable-stream "^3.6.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browser-stdout@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - -browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6, browserify-aes@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - 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" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@4.14.2: - version "4.14.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.2.tgz#1b3cec458a1ba87588cc5e9be62f19b6d48813ce" - integrity sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw== - dependencies: - caniuse-lite "^1.0.30001125" - electron-to-chromium "^1.3.564" - escalade "^3.0.2" - node-releases "^1.1.61" - -browserslist@^3.2.6: - version "3.2.8" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" - integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== - dependencies: - caniuse-lite "^1.0.30000844" - electron-to-chromium "^1.3.47" - -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.17.5, browserslist@^4.19.1, browserslist@^4.6.2, browserslist@^4.6.4: - version "4.20.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" - integrity sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA== - dependencies: - caniuse-lite "^1.0.30001317" - electron-to-chromium "^1.4.84" - escalade "^3.1.1" - node-releases "^2.0.2" - picocolors "^1.0.0" - -bs58@^4.0.0, bs58@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" - integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= - dependencies: - base-x "^3.0.2" - -bs58check@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" - integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== - dependencies: - bs58 "^4.0.0" - create-hash "^1.1.0" - safe-buffer "^5.1.2" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -btoa@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" - integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== - -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= - -buffer-from@^1.0.0, buffer-from@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer-to-arraybuffer@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" - integrity sha1-YGSkD6dutDxyOrqe+PbhIW0QURo= - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer-xor@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-2.0.2.tgz#34f7c64f04c777a1f8aac5e661273bb9dd320289" - integrity sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ== - dependencies: - safe-buffer "^5.1.1" - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -buffer@^5.0.5, buffer@^5.2.1, buffer@^5.4.2, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -bufferutil@^4.0.1: - version "4.0.6" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.6.tgz#ebd6c67c7922a0e902f053e5d8be5ec850e48433" - integrity sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw== - dependencies: - node-gyp-build "^4.3.0" - -builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= - -byline@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" - integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= - -byte-size@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-7.0.1.tgz#b1daf3386de7ab9d706b941a748dbfc71130dee3" - integrity sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A== - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -bytewise-core@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/bytewise-core/-/bytewise-core-1.2.3.tgz#3fb410c7e91558eb1ab22a82834577aa6bd61d42" - integrity sha1-P7QQx+kVWOsasiqCg0V3qmvWHUI= - dependencies: - typewise-core "^1.2" - -bytewise@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/bytewise/-/bytewise-1.1.0.tgz#1d13cbff717ae7158094aa881b35d081b387253e" - integrity sha1-HRPL/3F65xWAlKqIGzXQgbOHJT4= - dependencies: - bytewise-core "^1.2.2" - typewise "^1.0.3" - -cacache@^12.0.2: - version "12.0.4" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" - integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cacache@^15.0.5, cacache@^15.2.0: - version "15.3.0" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" - integrity sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ== - 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" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -cachedown@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cachedown/-/cachedown-1.0.0.tgz#d43f036e4510696b31246d7db31ebf0f7ac32d15" - integrity sha1-1D8DbkUQaWsxJG19sx6/D3rDLRU= - dependencies: - abstract-leveldown "^2.4.1" - lru-cache "^3.2.0" - -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -caller-callsite@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= - dependencies: - callsites "^2.0.0" - -caller-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= - dependencies: - caller-callsite "^2.0.0" - -callsites@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase-keys@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" - integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== - dependencies: - camelcase "^5.3.1" - map-obj "^4.0.0" - quick-lru "^4.0.1" - -camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= - -camelcase@^6.0.0, camelcase@^6.1.0, camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -camelize@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" - integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001317: - version "1.0.30001323" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001323.tgz#a451ff80dec7033016843f532efda18f02eec011" - integrity sha512-e4BF2RlCVELKx8+RmklSEIVub1TWrmdhvA5kEUueummz1XyySW0DVk+3x9HyhU9MuWTa2BhqLgEuEmUwASAdCA== - -caniuse-lite@^1.0.30000844: - version "1.0.30001320" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001320.tgz#8397391bec389b8ccce328636499b7284ee13285" - integrity sha512-MWPzG54AGdo3nWx7zHZTefseM5Y1ccM7hlQKHRqJkPozUaw3hNbBTMmLn16GG2FUzjR13Cr3NPfhIieX5PzXDA== - -capture-exit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" - integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== - dependencies: - rsvp "^4.8.4" - -case-sensitive-paths-webpack-plugin@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" - integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== - -caseless@^0.12.0, caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -cbor@^5.0.2: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cbor/-/cbor-5.2.0.tgz#4cca67783ccd6de7b50ab4ed62636712f287a67c" - integrity sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A== - dependencies: - bignumber.js "^9.0.1" - nofilter "^1.0.4" - -chai-as-promised@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0" - integrity sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA== - dependencies: - check-error "^1.0.2" - -chai@^4.2.0, chai@^4.3.6: - version "4.3.6" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c" - integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q== - dependencies: - assertion-error "^1.1.0" - check-error "^1.0.2" - deep-eql "^3.0.1" - get-func-name "^2.0.0" - loupe "^2.3.1" - pathval "^1.1.1" - type-detect "^4.0.5" - -chakra-ui-steps@^1.6.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/chakra-ui-steps/-/chakra-ui-steps-1.7.2.tgz#1a6a757fd977aeabb3ba4447222f4534d8f499e9" - integrity sha512-2D+t2G2OzALaEN6ugeiLcB/hD9jdylWi8JouTQeGmWI9Y+ub2aC0lHI29m5OvwHzyPKTevbl+fgHLYvLDVCiHg== - -chalk@2.4.2, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -charcodes@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/charcodes/-/charcodes-0.2.0.tgz#5208d327e6cc05f99eb80ffc814707572d1f14e4" - integrity sha512-Y4kiDb+AM4Ecy58YkuZrrSRJBDQdQ2L+NyS1vHHFtNtUjgutcZfx3yp1dAONI/oPaPmyGfCLx5CxL+zauIMyKQ== - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -"charenc@>= 0.0.1": - version "0.0.2" - resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" - integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= - -check-error@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" - integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= - -check-types@^11.1.1: - version "11.1.2" - resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f" - integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ== - -checkpoint-store@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/checkpoint-store/-/checkpoint-store-1.1.0.tgz#04e4cb516b91433893581e6d4601a78e9552ea06" - integrity sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY= - dependencies: - functional-red-black-tree "^1.0.1" - -chokidar@3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" - integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - 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" - optionalDependencies: - fsevents "~2.1.1" - -chokidar@3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.5.0" - optionalDependencies: - fsevents "~2.3.1" - -chokidar@3.5.3, chokidar@^3.0.2, chokidar@^3.4.0, chokidar@^3.4.1: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.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" - optionalDependencies: - fsevents "~2.3.2" - -chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chownr@^1.0.1, chownr@^1.1.1, chownr@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -cids@^0.7.1, cids@~0.7.0, cids@~0.7.1: - version "0.7.5" - resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" - integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== - dependencies: - buffer "^5.5.0" - class-is "^1.1.0" - multibase "~0.6.0" - multicodec "^1.0.0" - multihashes "~0.4.15" - -cids@~0.8.0: - version "0.8.3" - resolved "https://registry.yarnpkg.com/cids/-/cids-0.8.3.tgz#aaf48ac8ed857c3d37dad94d8db1d8c9407b92db" - integrity sha512-yoXTbV3llpm+EBGWKeL9xKtksPE/s6DPoDSY4fn8I8TEW1zehWXPSB0pwAXVDlLaOlrw+sNynj995uD9abmPhA== - dependencies: - buffer "^5.6.0" - class-is "^1.1.0" - multibase "^1.0.0" - multicodec "^1.0.1" - multihashes "^1.0.1" - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -circom@0.5.33: - version "0.5.33" - resolved "https://registry.yarnpkg.com/circom/-/circom-0.5.33.tgz#6943d5799adf5388989bfbb3ef8f502fb1b4f662" - integrity sha512-UdL8fr6GckhQ4VoWjIvuYwCHneJe8z/AyJpDxgKLyuaX51ijd4gBP6jlwHDbQJsha2aU2GR9qgDsxd0jfari1Q== - dependencies: - chai "^4.2.0" - circom_runtime "0.1.8" - fastfile "0.0.18" - ffiasm "0.1.1" - ffjavascript "0.2.22" - ffwasm "0.0.7" - fnv-plus "^1.3.1" - r1csfile "0.0.16" - tmp-promise "^2.0.2" - wasmbuilder "0.0.10" - -circom@0.5.45: - version "0.5.45" - resolved "https://registry.yarnpkg.com/circom/-/circom-0.5.45.tgz#82931882c5d38022ccb8be9c4a6314ea94bc511e" - integrity sha512-5Ixp6UjwrhBWnnFBO/mTns+eeEDOpi5UoN4znAUWy5rklCUWYt2Ezl9QVUswBXjMP5kpfEtGUY2XSsYRAp6uMg== - dependencies: - chai "^4.2.0" - circom_runtime "0.1.12" - fastfile "0.0.18" - ffiasm "0.1.1" - ffjavascript "0.2.22" - ffwasm "0.0.7" - fnv-plus "^1.3.1" - r1csfile "0.0.16" - tmp-promise "^2.0.2" - wasmbuilder "0.0.10" - -circom_runtime@0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/circom_runtime/-/circom_runtime-0.1.12.tgz#e1a302c6fe8cec390f035c2e7a8496cfa7cfb4a2" - integrity sha512-R+QT9HS9w71cmGmWIn+PSyD3aHyR5JZBiVvxOjCfn12wwnpuFwBjdMG7he+v8h/oQD1mDRAu2KrBeL4mAt5s4A== - dependencies: - ffjavascript "0.2.34" - fnv-plus "^1.3.1" - -circom_runtime@0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/circom_runtime/-/circom_runtime-0.1.13.tgz#90f86f35d989c48d4c27595b94664ea6918fbede" - integrity sha512-vmv19/0p5OTe5uCI7PWqPtB5vPoYWjczqKYnabaC5HOxX99R4K1MuNqEXsNEAoEfZrmfAQd7vXLcATN9NVnsPA== - dependencies: - ffjavascript "0.2.35" - fnv-plus "^1.3.1" - -circom_runtime@0.1.14: - version "0.1.14" - resolved "https://registry.yarnpkg.com/circom_runtime/-/circom_runtime-0.1.14.tgz#c9a4d9a277d0bb76ec8635f853f588299990eca7" - integrity sha512-MLbHHZVkYuWyZiYErLmT5y0qbTRXDD1NhaDyLhQNF0JCb6brx8r/VJDevwne7sT1re7qHpHCQAL5rhqByQ7obQ== - dependencies: - ffjavascript "0.2.39" - fnv-plus "^1.3.1" - -circom_runtime@0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/circom_runtime/-/circom_runtime-0.1.8.tgz#d967a1618fe5290849f9c0bbffb6b97b95c0f1c8" - integrity sha512-5ZmzCyidkNPb1zZsJGRXTuWcJ6kW6+gRBtHgf2tFqTh5dUyWVVPH0Zg7AsU2ijPr1AmYZUlme0yORUZK5HrjOA== - dependencies: - ffjavascript "0.2.10" - fnv-plus "^1.3.1" - -circomlib@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/circomlib/-/circomlib-0.5.1.tgz#97927e240e48028bdb8bdedd179f233de9fa7131" - integrity sha512-faPGgzJWhp5SCWSPYtWfnteaCS1UVhEomdLEF+QbbTy4kF4sAij5+G1z4EzC67q4sp8VYSTv7czH8z08U4haeA== - dependencies: - blake-hash "^1.1.0" - blake2b "^2.1.3" - circom "0.5.33" - ffjavascript "0.1.0" - web3-utils "^1.3.0" - -circomlib@0.5.2, "circomlib@https://github.com/weijiekoh/circomlib.git#24ed08eee0bb613b8c0135d66c1013bd9f78d50a": - version "0.5.2" - resolved "https://github.com/weijiekoh/circomlib.git#24ed08eee0bb613b8c0135d66c1013bd9f78d50a" - dependencies: - blake-hash "^1.1.0" - blake2b "^2.1.3" - circom "0.5.45" - ffjavascript "0.1.0" - web3-utils "^1.3.0" - -circomlib@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/circomlib/-/circomlib-2.0.3.tgz#88816e22f269ba491f47c825a2e238d14fd0e877" - integrity sha512-OeG1YBcqS8mnsOI1WAZePbyAVBMf398sSQfXetpPAb2HC0+1r9Q6kN/qQaHkJZ77BZmXn5dUqQTa5g6d5BDS3Q== - -"circomlib@https://github.com/weijiekoh/circomlib.git#ac85e82c1914d47789e2032fb11ceb2cfdd38a2b": - version "1.0.0" - resolved "https://github.com/weijiekoh/circomlib.git#ac85e82c1914d47789e2032fb11ceb2cfdd38a2b" - -circomlibjs@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/circomlibjs/-/circomlibjs-0.0.8.tgz#c2d1130d2d99fbb22f3d40ac19f347d768eace76" - integrity sha512-oZFYapLO0mfiA+i2GU/V7bRNEEPjVcwV4M444nU5lNsdSJpqLwD57m9zxTD5m/KeY7WQ3lEAC9NNKEPQHu7s1w== - dependencies: - blake-hash "^2.0.0" - blake2b "^2.1.3" - ffjavascript "^0.2.38" - web3 "^1.6.0" - web3-utils "^1.6.0" - -cjs-module-lexer@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" - integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== - -class-is@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" - integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-css@^4.2.3: - version "4.2.4" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.4.tgz#733bf46eba4e607c6891ea57c24a989356831178" - integrity sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A== - dependencies: - source-map "~0.6.0" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= - dependencies: - restore-cursor "^2.0.0" - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.2.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== - -cli-table3@^0.5.0, cli-table3@~0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" - integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== - dependencies: - object-assign "^4.1.0" - string-width "^2.1.1" - optionalDependencies: - colors "^1.1.2" - -cli-table3@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.1.tgz#36ce9b7af4847f288d3cdd081fbd09bf7bd237b8" - integrity sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA== - dependencies: - string-width "^4.2.0" - optionalDependencies: - colors "1.4.0" - -cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== - dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" - -cli-truncate@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" - integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== - dependencies: - slice-ansi "^5.0.0" - string-width "^5.0.0" - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -clone-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= - dependencies: - mimic-response "^1.0.0" - -clone@2.1.2, clone@^2.0.0, clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -clsx@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" - integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== - -cmd-shim@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-4.1.0.tgz#b3a904a6743e9fede4148c6f3800bf2a08135bdd" - integrity sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw== - dependencies: - mkdirp-infer-owner "^2.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -coa@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" - integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== - dependencies: - "@types/q" "^1.5.1" - chalk "^2.4.1" - q "^1.1.2" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0, color-convert@^1.9.3: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.6.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.0.tgz#63b6ebd1bec11999d1df3a79a7569451ac2be8aa" - integrity sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" - integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== - dependencies: - color-convert "^1.9.3" - color-string "^1.6.0" - -colorette@^2.0.16: - version "2.0.16" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" - integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== - -colors@1.0.x: - version "1.0.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= - -colors@1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" - integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== - -colors@1.4.0, colors@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -columnify@^1.5.4: - version "1.6.0" - resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" - integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== - dependencies: - strip-ansi "^6.0.1" - wcwidth "^1.0.0" - -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -command-exists@^1.2.8: - version "1.2.9" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" - integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== - -command-line-args@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-4.0.7.tgz#f8d1916ecb90e9e121eda6428e41300bfb64cc46" - integrity sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA== - dependencies: - array-back "^2.0.0" - find-replace "^1.0.3" - typical "^2.6.1" - -command-line-args@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" - integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== - dependencies: - array-back "^3.1.0" - find-replace "^3.0.0" - lodash.camelcase "^4.3.0" - typical "^4.0.0" - -command-line-usage@^6.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.1.tgz#c908e28686108917758a49f45efb4f02f76bc03f" - integrity sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA== - dependencies: - array-back "^4.0.1" - chalk "^2.4.2" - table-layout "^1.0.1" - typical "^5.2.0" - -commander@2.18.0: - version "2.18.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" - integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== - -commander@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" - integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== - -commander@^2.15.0, commander@^2.20.0, commander@^2.20.3: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -commander@^8.1.0, commander@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" - integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== - -common-tags@^1.8.0: - version "1.8.2" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" - integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -compare-func@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" - integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== - dependencies: - array-ify "^1.0.0" - dot-prop "^5.1.0" - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compose-function@3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" - integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= - dependencies: - arity-n "^1.0.4" - -compressible@~2.0.16: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -compute-scroll-into-view@1.0.14: - version "1.0.14" - resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.14.tgz#80e3ebb25d6aa89f42e533956cb4b16a04cfe759" - integrity sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0, concat-stream@^1.5.1, concat-stream@^1.6.0, concat-stream@^1.6.2, concat-stream@~1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -concat-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" - integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.0.2" - typedarray "^0.0.6" - -"concat-stream@github:hugomrdias/concat-stream#feat/smaller": - version "2.0.0" - resolved "https://codeload.github.com/hugomrdias/concat-stream/tar.gz/057bc7b5d6d8df26c8cf00a3f151b6721a0a8034" - dependencies: - inherits "^2.0.3" - readable-stream "^3.0.2" - -config-chain@^1.1.12: - version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -confusing-browser-globals@^1.0.10: - version "1.0.11" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" - integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== - -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-hash@^2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" - integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== - dependencies: - cids "^0.7.1" - multicodec "^0.5.5" - multihashes "^0.4.15" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -conventional-changelog-angular@^5.0.12: - version "5.0.13" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz#896885d63b914a70d4934b59d2fe7bde1832b28c" - integrity sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA== - dependencies: - compare-func "^2.0.0" - q "^1.5.1" - -conventional-changelog-core@^4.2.2: - version "4.2.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz#e50d047e8ebacf63fac3dc67bf918177001e1e9f" - integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== - dependencies: - add-stream "^1.0.0" - conventional-changelog-writer "^5.0.0" - conventional-commits-parser "^3.2.0" - dateformat "^3.0.0" - get-pkg-repo "^4.0.0" - git-raw-commits "^2.0.8" - git-remote-origin-url "^2.0.0" - git-semver-tags "^4.1.1" - lodash "^4.17.15" - normalize-package-data "^3.0.0" - q "^1.5.1" - read-pkg "^3.0.0" - read-pkg-up "^3.0.0" - through2 "^4.0.0" - -conventional-changelog-preset-loader@^2.3.4: - version "2.3.4" - resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" - integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== - -conventional-changelog-writer@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz#e0757072f045fe03d91da6343c843029e702f359" - integrity sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ== - dependencies: - conventional-commits-filter "^2.0.7" - dateformat "^3.0.0" - handlebars "^4.7.7" - json-stringify-safe "^5.0.1" - lodash "^4.17.15" - meow "^8.0.0" - semver "^6.0.0" - split "^1.0.0" - through2 "^4.0.0" - -conventional-commits-filter@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" - integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== - dependencies: - lodash.ismatch "^4.4.0" - modify-values "^1.0.0" - -conventional-commits-parser@^3.2.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" - integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== - dependencies: - JSONStream "^1.0.4" - is-text-path "^1.0.1" - lodash "^4.17.15" - meow "^8.0.0" - split2 "^3.0.0" - through2 "^4.0.0" - -conventional-recommended-bump@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz#cfa623285d1de554012f2ffde70d9c8a22231f55" - integrity sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw== - dependencies: - concat-stream "^2.0.0" - conventional-changelog-preset-loader "^2.3.4" - conventional-commits-filter "^2.0.7" - conventional-commits-parser "^3.2.0" - git-raw-commits "^2.0.8" - git-semver-tags "^4.1.1" - meow "^8.0.0" - q "^1.5.1" - -convert-source-map@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -convert-source-map@^0.3.3: - version "0.3.5" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" - integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= - -convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.2, cookie@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - -cookiejar@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" - integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - aproba "^1.1.1" - fs-write-stream-atomic "^1.0.8" - iferr "^0.1.5" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.0" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -copy-to-clipboard@3.3.1, copy-to-clipboard@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae" - integrity sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw== - dependencies: - toggle-selection "^1.0.6" - -core-js-compat@^3.20.2, core-js-compat@^3.21.0: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.1.tgz#cac369f67c8d134ff8f9bd1623e3bc2c42068c82" - integrity sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g== - dependencies: - browserslist "^4.19.1" - semver "7.0.0" - -core-js-pure@^3.0.1, core-js-pure@^3.20.2: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.21.1.tgz#8c4d1e78839f5f46208de7230cebfb72bc3bdb51" - integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ== - -core-js@^2.4.0, core-js@^2.5.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - -core-js@^3.6.5: - version "3.21.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.21.1.tgz#f2e0ddc1fc43da6f904706e8e955bc19d06a0d94" - integrity sha512-FRq5b/VMrWlrmCzwRrpDYNxyHP9BcAZC+xHJaqTgIE5091ZV1NTmyh0sGOg5XqpnHvR0svdy0sv1gWA1zmhxig== - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cors@^2.8.1: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - -cosmiconfig-typescript-loader@^1.0.0: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.6.tgz#6d879cece8063b15ec8a3258f55a8e94893c7cca" - integrity sha512-2nEotziYJWtNtoTjKbchj9QrdTT6DBxCvqjNKoDKARw+e2yZmTQCa07uRrykLIZuvSgp69YXLH89UHc0WhdMfQ== - dependencies: - cosmiconfig "^7" - ts-node "^10.6.0" - -cosmiconfig@6.0.0, cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - -cosmiconfig@^5.0.0, cosmiconfig@^5.0.7: - version "5.2.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" - integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== - dependencies: - import-fresh "^2.0.0" - is-directory "^0.3.1" - js-yaml "^3.13.1" - parse-json "^4.0.0" - -cosmiconfig@^7, cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -crc-32@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.1.tgz#436d2bcaad27bcb6bd073a2587139d3024a16460" - integrity sha512-Dn/xm/1vFFgs3nfrpEVScHoIslO9NZRITWGz/1E/St6u4xw99vfZzVkW0OSnzx2h9egej9xwMCEut6sqwokM/w== - dependencies: - exit-on-epipe "~1.0.1" - printj "~1.3.1" - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - 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" - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-fetch@^2.1.0, cross-fetch@^2.1.1: - version "2.2.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.5.tgz#afaf5729f3b6c78d89c9296115c9f142541a5705" - integrity sha512-xqYAhQb4NhCJSRym03dwxpP1bYXpK3y7UN83Bo2WFi3x1Zmzn0SL/6xGoPr+gpt4WmNrgCCX3HPysvOwFOW36w== - dependencies: - node-fetch "2.6.1" - whatwg-fetch "2.0.4" - -cross-fetch@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" - integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== - dependencies: - node-fetch "2.6.7" - -cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -"crypt@>= 0.0.1": - version "0.0.2" - resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" - integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= - -crypto-browserify@3.12.0, crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -crypto-random-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" - integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= - -css-blank-pseudo@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" - integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== - dependencies: - postcss "^7.0.5" - -css-box-model@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/css-box-model/-/css-box-model-1.2.1.tgz#59951d3b81fd6b2074a62d49444415b0d2b4d7c1" - integrity sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw== - dependencies: - tiny-invariant "^1.0.6" - -css-color-keywords@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" - integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= - -css-color-names@0.0.4, css-color-names@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - -css-declaration-sorter@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" - integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== - dependencies: - postcss "^7.0.1" - timsort "^0.3.0" - -css-has-pseudo@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" - integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^5.0.0-rc.4" - -css-loader@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e" - integrity sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg== - dependencies: - camelcase "^6.0.0" - cssesc "^3.0.0" - icss-utils "^4.1.1" - loader-utils "^2.0.0" - postcss "^7.0.32" - postcss-modules-extract-imports "^2.0.0" - postcss-modules-local-by-default "^3.0.3" - postcss-modules-scope "^2.2.0" - postcss-modules-values "^3.0.0" - postcss-value-parser "^4.1.0" - schema-utils "^2.7.1" - semver "^7.3.2" - -css-prefers-color-scheme@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" - integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== - dependencies: - postcss "^7.0.5" - -css-select-base-adapter@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" - integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== - -css-select@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== - dependencies: - boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" - -css-to-react-native@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" - integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== - dependencies: - camelize "^1.0.0" - css-color-keywords "^1.0.0" - postcss-value-parser "^4.0.2" - -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - -css-tree@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^3.2.1: - version "3.4.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" - integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== - -css-what@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.0.1.tgz#3be33be55b9f302f710ba3a9c3abc1e2a63fc7eb" - integrity sha512-z93ZGFLNc6yaoXAmVhqoSIb+BduplteCt1fepvwhBUQK6MNE4g6fgjpuZKJKp0esUe+vXWlIkwZZjNWoOKw0ZA== - -css.escape@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" - integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= - -css@^2.0.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== - dependencies: - inherits "^2.0.3" - source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" - -css@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" - integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== - dependencies: - inherits "^2.0.4" - source-map "^0.6.1" - source-map-resolve "^0.6.0" - -cssdb@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" - integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== - -cssesc@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" - integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz#920622b1fc1e95a34e8838203f1397a504f2d3ff" - integrity sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ== - dependencies: - css-declaration-sorter "^4.0.1" - cssnano-util-raw-cache "^4.0.1" - postcss "^7.0.0" - postcss-calc "^7.0.1" - postcss-colormin "^4.0.3" - postcss-convert-values "^4.0.1" - postcss-discard-comments "^4.0.2" - postcss-discard-duplicates "^4.0.2" - postcss-discard-empty "^4.0.1" - postcss-discard-overridden "^4.0.1" - postcss-merge-longhand "^4.0.11" - postcss-merge-rules "^4.0.3" - postcss-minify-font-values "^4.0.2" - postcss-minify-gradients "^4.0.2" - postcss-minify-params "^4.0.2" - postcss-minify-selectors "^4.0.2" - postcss-normalize-charset "^4.0.1" - postcss-normalize-display-values "^4.0.2" - postcss-normalize-positions "^4.0.2" - postcss-normalize-repeat-style "^4.0.2" - postcss-normalize-string "^4.0.2" - postcss-normalize-timing-functions "^4.0.2" - postcss-normalize-unicode "^4.0.1" - postcss-normalize-url "^4.0.1" - postcss-normalize-whitespace "^4.0.2" - postcss-ordered-values "^4.1.2" - postcss-reduce-initial "^4.0.3" - postcss-reduce-transforms "^4.0.2" - postcss-svgo "^4.0.3" - postcss-unique-selectors "^4.0.1" - -cssnano-util-get-arguments@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" - integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= - -cssnano-util-get-match@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" - integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= - -cssnano-util-raw-cache@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" - integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== - dependencies: - postcss "^7.0.0" - -cssnano-util-same-parent@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" - integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== - -cssnano@^4.1.10: - version "4.1.11" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.11.tgz#c7b5f5b81da269cb1fd982cb960c1200910c9a99" - integrity sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g== - dependencies: - cosmiconfig "^5.0.0" - cssnano-preset-default "^4.0.8" - is-resolvable "^1.0.0" - postcss "^7.0.0" - -csso@^4.0.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -csstype@3.0.9: - version "3.0.9" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.9.tgz#6410af31b26bd0520933d02cbc64fce9ce3fbf0b" - integrity sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw== - -csstype@^3.0.2: - version "3.0.11" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" - integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw== - -cycle@1.0.x: - version "1.0.3" - resolved "https://registry.yarnpkg.com/cycle/-/cycle-1.0.3.tgz#21e80b2be8580f98b468f379430662b046c34ad2" - integrity sha1-IegLK+hYD5i0aPN5QwZisEbDStI= - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -damerau-levenshtein@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" - integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== - -dargs@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" - integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= - dependencies: - assert-plus "^1.0.0" - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -dateformat@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" - integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== - -death@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318" - integrity sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg= - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - -debug@4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - -debug@^3.1.0, debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debuglog@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" - integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= - -decamelize-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decamelize@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" - integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== - -decimal.js@^10.2.1: - version "10.3.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" - integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -decompress-response@^3.2.0, decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= - dependencies: - mimic-response "^1.0.0" - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= - -deep-eql@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" - integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== - dependencies: - type-detect "^4.0.0" - -deep-equal@^1.0.1, deep-equal@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -deferred-leveldown@~1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz#3acd2e0b75d1669924bc0a4b642851131173e1eb" - integrity sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA== - dependencies: - abstract-leveldown "~2.6.0" - -deferred-leveldown@~4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz#0b0570087827bf480a23494b398f04c128c19a20" - integrity sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww== - dependencies: - abstract-leveldown "~5.0.0" - inherits "^2.0.3" - -deferred-leveldown@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz#27a997ad95408b61161aa69bd489b86c71b78058" - integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw== - dependencies: - abstract-leveldown "~6.2.1" - inherits "^2.0.3" - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -defined@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -delay@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" - integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -delete-empty@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/delete-empty/-/delete-empty-3.0.0.tgz#f8040f2669f26fa7060bc2304e9859c593b685e8" - integrity sha512-ZUyiwo76W+DYnKsL3Kim6M/UOavPdBJgDYWOmuQhYaZvJH0AXAHbUNyEDtRbBra8wqqr686+63/0azfEk1ebUQ== - dependencies: - ansi-colors "^4.1.0" - minimist "^1.2.0" - path-starts-with "^2.0.0" - rimraf "^2.6.2" - -delimit-stream@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/delimit-stream/-/delimit-stream-0.1.0.tgz#9b8319477c0e5f8aeb3ce357ae305fc25ea1cd2b" - integrity sha1-m4MZR3wOX4rrPONXrjBfwl6hzSs= - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -depd@^1.1.2, depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -deprecation@^2.0.0, deprecation@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" - integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-browser@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.2.0.tgz#c9cd5afa96a6a19fda0bbe9e9be48a6b6e1e9c97" - integrity sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA== - -detect-browser@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" - integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= - dependencies: - repeating "^2.0.0" - -detect-indent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" - integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= - -detect-indent@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" - integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -detect-node-es@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" - integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== - -detect-node@^2.0.4: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -detect-port-alt@1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" - integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== - dependencies: - address "^1.0.1" - debug "^2.6.0" - -detect-port@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1" - integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ== - dependencies: - address "^1.0.1" - debug "^2.6.0" - -dezalgo@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" - integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= - dependencies: - asap "^2.0.0" - wrappy "1" - -diff-sequences@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" - integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== - -diff-sequences@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" - integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== - -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== - -diff@3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" - integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== - -diff@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dijkstrajs@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.2.tgz#2e48c0d3b825462afe75ab4ad5e829c8ece36257" - integrity sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - -dns-packet@^1.3.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" - integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= - dependencies: - buffer-indexof "^1.0.0" - -docker-compose@^0.23.2: - version "0.23.17" - resolved "https://registry.yarnpkg.com/docker-compose/-/docker-compose-0.23.17.tgz#8816bef82562d9417dc8c790aa4871350f93a2ba" - integrity sha512-YJV18YoYIcxOdJKeFcCFihE6F4M2NExWM/d4S1ITcS9samHKnNUihz9kjggr0dNtsrbpFNc7/Yzd19DWs+m1xg== - dependencies: - yaml "^1.10.2" - -docker-modem@^1.0.8: - version "1.0.9" - resolved "https://registry.yarnpkg.com/docker-modem/-/docker-modem-1.0.9.tgz#a1f13e50e6afb6cf3431b2d5e7aac589db6aaba8" - integrity sha512-lVjqCSCIAUDZPAZIeyM125HXfNvOmYYInciphNrLrylUtKyW66meAjSPXWchKVzoIYZx69TPnAepVSSkeawoIw== - dependencies: - JSONStream "1.3.2" - debug "^3.2.6" - readable-stream "~1.0.26-4" - split-ca "^1.0.0" - -dockerode@^2.5.8: - version "2.5.8" - resolved "https://registry.yarnpkg.com/dockerode/-/dockerode-2.5.8.tgz#1b661e36e1e4f860e25f56e0deabe9f87f1d0acc" - integrity sha512-+7iOUYBeDTScmOmQqpUYQaE7F4vvIt6+gIZNHWhqAQEI887tiPFB9OvXI/HzQYqfUNvukMK+9myLW63oTJPZpw== - dependencies: - concat-stream "~1.6.2" - docker-modem "^1.0.8" - tar-fs "~1.16.3" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-accessibility-api@^0.5.6: - version "0.5.13" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.13.tgz#102ee5f25eacce09bdf1cfa5a298f86da473be4b" - integrity sha512-R305kwb5CcMDIpSHUnLyIAp7SrSPBx6F0VfQFB3M75xVMHhXJJIdePYgbPPh1o57vCHNu5QztokWUPsLjWzFqw== - -dom-converter@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -dom-serializer@^1.0.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -dom-walk@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== - -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - -domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^2.5.2, domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dot-prop@^5.1.0, dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -dot-prop@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" - integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== - dependencies: - is-obj "^2.0.0" - -dotenv-expand@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== - -dotenv@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" - integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== - -dotenv@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== - -dotignore@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" - integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== - dependencies: - minimatch "^3.0.4" - -drbg.js@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" - integrity sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs= - dependencies: - browserify-aes "^1.0.6" - create-hash "^1.1.2" - create-hmac "^1.1.4" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - -duplexer@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -ejs@^2.6.1: - version "2.7.4" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" - integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== - -ejs@^3.0.1, ejs@^3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" - integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== - dependencies: - jake "^10.6.1" - -electron-to-chromium@^1.3.47: - version "1.4.92" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.92.tgz#88996e9aceb3a500710fd439abfa89b6cc1ac56c" - integrity sha512-YAVbvQIcDE/IJ/vzDMjD484/hsRbFPW2qXJPaYTfOhtligmfYEYOep+5QojpaEU9kq6bMvNeC2aG7arYvTHYsA== - -electron-to-chromium@^1.3.564, electron-to-chromium@^1.4.84: - version "1.4.103" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.103.tgz#abfe376a4d70fa1e1b4b353b95df5d6dfd05da3a" - integrity sha512-c/uKWR1Z/W30Wy/sx3dkZoj4BijbXX85QKWu9jJfjho3LBAXNEGAEW3oWiGb+dotA6C6BzCTxL2/aLes7jlUeg== - -elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - 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" - -emittery@^0.7.1: - version "0.7.2" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" - integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -emojis-list@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" - integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -encoding-down@5.0.4, encoding-down@~5.0.0: - version "5.0.4" - resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-5.0.4.tgz#1e477da8e9e9d0f7c8293d320044f8b2cd8e9614" - integrity sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw== - dependencies: - abstract-leveldown "^5.0.0" - inherits "^2.0.3" - level-codec "^9.0.0" - level-errors "^2.0.0" - xtend "^4.0.1" - -encoding-down@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-6.3.0.tgz#b1c4eb0e1728c146ecaef8e32963c549e76d082b" - integrity sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw== - dependencies: - abstract-leveldown "^6.2.1" - inherits "^2.0.3" - level-codec "^9.0.0" - level-errors "^2.0.0" - -encoding@^0.1.11, encoding@^0.1.12: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -enquirer@2.3.4: - version "2.3.4" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.4.tgz#c608f2e1134c7f68c1c9ee056de13f9b31076de9" - integrity sha512-pkYrrDZumL2VS6VBGDhqbajCM2xpkUNLuKfGPjfKaSIBKYopQbqEFyrOkRMIb2HDR/rO1kGhEt/5twBwtzKBXw== - dependencies: - ansi-colors "^3.2.1" - -enquirer@^2.3.0, enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -env-paths@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - -envinfo@^7.7.4: - version "7.8.1" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" - integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== - -err-code@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-1.1.2.tgz#06e0116d3028f6aef4806849eb0ea6a748ae6960" - integrity sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA= - -err-code@^2.0.0, err-code@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" - integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== - -errno@^0.1.3, errno@~0.1.1, errno@~0.1.7: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.2.0, error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -error-stack-parser@^2.0.6: - version "2.0.7" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.7.tgz#b0c6e2ce27d0495cf78ad98715e0cad1219abb57" - integrity sha512-chLOW0ZGRf4s8raLrDxa5sdkvPec5YdvwbFnqJme4rk0rFajP8mPtrDL1+I+CwrQDCjswDA5sREX7jYQDQs9vA== - dependencies: - stackframe "^1.1.1" - -es-abstract@^1.17.2, es-abstract@^1.19.0: - version "1.19.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.2.tgz#8f7b696d8f15b167ae3640b4060670f3d054143f" - integrity sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" - is-string "^1.0.7" - is-weakref "^1.0.2" - object-inspect "^1.12.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-abstract@^1.18.5, es-abstract@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" - integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-symbols "^1.0.2" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.1" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.1" - is-string "^1.0.7" - is-weakref "^1.0.1" - object-inspect "^1.11.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es5-ext@^0.10.35, es5-ext@^0.10.50: - version "0.10.59" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.59.tgz#71038939730eb6f4f165f1421308fb60be363bc6" - integrity sha512-cOgyhW0tIJyQY1Kfw6Kr0viu9ZlUctVchRMZ7R0HiH3dxTSp5zJDLecwxUqPUrGKMsgBI1wd1FL+d9Jxfi4cLw== - dependencies: - es6-iterator "^2.0.3" - es6-symbol "^3.1.3" - next-tick "^1.1.0" - -es6-iterator@2.0.3, es6-iterator@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-object-assign@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" - integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= - -es6-promise@^4.0.3: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - -es6-promisify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" - integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM= - dependencies: - es6-promise "^4.0.3" - -es6-symbol@^3.1.1, es6-symbol@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -escalade@^3.0.2, escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@1.8.x: - version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" - integrity sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg= - dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.2.0" - -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@^8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" - integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== - -eslint-config-react-app@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz#ccff9fc8e36b322902844cbd79197982be355a0e" - integrity sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A== - dependencies: - confusing-browser-globals "^1.0.10" - -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== - dependencies: - debug "^3.2.7" - resolve "^1.20.0" - -eslint-module-utils@^2.7.2: - version "2.7.3" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" - integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== - dependencies: - debug "^3.2.7" - find-up "^2.1.0" - -eslint-plugin-flowtype@^5.2.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.10.0.tgz#7764cc63940f215bf3f0bd2d9a1293b2b9b2b4bb" - integrity sha512-vcz32f+7TP+kvTUyMXZmCnNujBQZDNmcqPImw8b9PZ+16w1Qdm6ryRuYZYVaG9xRqqmAPr2Cs9FAX5gN+x/bjw== - dependencies: - lodash "^4.17.15" - string-natural-compare "^3.0.1" - -eslint-plugin-import@^2.22.1: - version "2.25.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1" - integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA== - dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.2" - has "^1.0.3" - is-core-module "^2.8.0" - is-glob "^4.0.3" - minimatch "^3.0.4" - object.values "^1.1.5" - resolve "^1.20.0" - tsconfig-paths "^3.12.0" - -eslint-plugin-jest@^24.1.0: - version "24.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.7.0.tgz#206ac0833841e59e375170b15f8d0955219c4889" - integrity sha512-wUxdF2bAZiYSKBclsUMrYHH6WxiBreNjyDxbRv345TIvPeoCEgPNEn3Sa+ZrSqsf1Dl9SqqSREXMHExlMMu1DA== - dependencies: - "@typescript-eslint/experimental-utils" "^4.0.1" - -eslint-plugin-jsx-a11y@^6.3.1: - version "6.5.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8" - integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g== - dependencies: - "@babel/runtime" "^7.16.3" - aria-query "^4.2.2" - array-includes "^3.1.4" - ast-types-flow "^0.0.7" - axe-core "^4.3.5" - axobject-query "^2.2.0" - damerau-levenshtein "^1.0.7" - emoji-regex "^9.2.2" - has "^1.0.3" - jsx-ast-utils "^3.2.1" - language-tags "^1.0.5" - minimatch "^3.0.4" - -eslint-plugin-react-hooks@^4.2.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.4.0.tgz#71c39e528764c848d8253e1aa2c7024ed505f6c4" - integrity sha512-U3RVIfdzJaeKDQKEJbz5p3NW8/L80PCATJAfuojwbaEL+gBjfGdhUcGde+WGUW46Q5sr/NgxevsIiDtNXrvZaQ== - -eslint-plugin-react@^7.21.5: - version "7.29.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz#4717de5227f55f3801a5fd51a16a4fa22b5914d2" - integrity sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ== - dependencies: - array-includes "^3.1.4" - array.prototype.flatmap "^1.2.5" - doctrine "^2.1.0" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.5" - object.fromentries "^2.0.5" - object.hasown "^1.1.0" - object.values "^1.1.5" - prop-types "^15.8.1" - resolve "^2.0.0-next.3" - semver "^6.3.0" - string.prototype.matchall "^4.0.6" - -eslint-plugin-testing-library@^3.9.2: - version "3.10.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.2.tgz#609ec2b0369da7cf2e6d9edff5da153cc31d87bd" - integrity sha512-WAmOCt7EbF1XM8XfbCKAEzAPnShkNSwcIsAD2jHdsMUT9mZJPjLCG7pMzbcC8kK366NOuGip8HKLDC+Xk4yIdA== - dependencies: - "@typescript-eslint/experimental-utils" "^3.10.1" - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-scope@^5.0.0, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-utils@^1.3.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^2.0.0, eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint-webpack-plugin@^2.5.2: - version "2.6.0" - resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.6.0.tgz#3bd4ada4e539cb1f6687d2f619073dbb509361cd" - integrity sha512-V+LPY/T3kur5QO3u+1s34VDTcRxjXWPUGM4hlmTb5DwVD0OQz631yGTxJZf4SpAqAjdbBVe978S8BJeHpAdOhQ== - dependencies: - "@types/eslint" "^7.28.2" - arrify "^2.0.1" - jest-worker "^27.3.1" - micromatch "^4.0.4" - normalize-path "^3.0.0" - schema-utils "^3.1.1" - -eslint@^5.6.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" - integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.9.1" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.1" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.7.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^6.2.2" - js-yaml "^3.13.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.11" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" - table "^5.2.3" - text-table "^0.2.0" - -eslint@^7.11.0: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== - dependencies: - "@babel/code-frame" "7.12.11" - "@eslint/eslintrc" "^0.4.3" - "@humanwhocodes/config-array" "^0.5.0" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^6.0.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -eslint@^8.13.0: - version "8.13.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.13.0.tgz#6fcea43b6811e655410f5626cfcf328016badcd7" - integrity sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ== - dependencies: - "@eslint/eslintrc" "^1.2.1" - "@humanwhocodes/config-array" "^0.9.2" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.6.0" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -eslint@^8.2.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.11.0.tgz#88b91cfba1356fc10bb9eb592958457dfe09fb37" - integrity sha512-/KRpd9mIRg2raGxHRGwW9ZywYNAClZrHjdueHcrVDuO3a6bj83eoTirCCk0M0yPwOjWYKHwRVRid+xK4F/GHgA== - dependencies: - "@eslint/eslintrc" "^1.2.1" - "@humanwhocodes/config-array" "^0.9.2" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.6.0" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" - integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== - dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" - -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" - -espree@^9.3.1: - version "9.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd" - integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ== - dependencies: - acorn "^8.7.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^3.3.0" - -esprima@2.7.x, esprima@^2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.0.1, esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.1.0, esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q= - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eth-block-tracker@4.4.3, eth-block-tracker@^4.4.2: - version "4.4.3" - resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz#766a0a0eb4a52c867a28328e9ae21353812cf626" - integrity sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw== - dependencies: - "@babel/plugin-transform-runtime" "^7.5.5" - "@babel/runtime" "^7.5.5" - eth-query "^2.1.0" - json-rpc-random-id "^1.0.1" - pify "^3.0.0" - safe-event-emitter "^1.0.1" - -eth-block-tracker@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-3.0.1.tgz#95cd5e763c7293e0b1b2790a2a39ac2ac188a5e1" - integrity sha512-WUVxWLuhMmsfenfZvFO5sbl1qFY2IqUlw/FPVmjjdElpqLsZtSG+wPe9Dz7W/sB6e80HgFKknOmKk2eNlznHug== - dependencies: - eth-query "^2.1.0" - ethereumjs-tx "^1.3.3" - ethereumjs-util "^5.1.3" - ethjs-util "^0.1.3" - json-rpc-engine "^3.6.0" - pify "^2.3.0" - tape "^4.6.3" - -eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" - integrity sha1-IprEbsqG1S4MmR58sq74P/D2i88= - dependencies: - idna-uts46-hx "^2.3.1" - js-sha3 "^0.5.7" - -eth-gas-reporter@^0.2.24: - version "0.2.24" - resolved "https://registry.yarnpkg.com/eth-gas-reporter/-/eth-gas-reporter-0.2.24.tgz#768721fec7de02b566e4ebfd123466d275d7035c" - integrity sha512-RbXLC2bnuPHzIMU/rnLXXlb6oiHEEKu7rq2UrAX/0mfo0Lzrr/kb9QTjWjfz8eNvc+uu6J8AuBwI++b+MLNI2w== - dependencies: - "@ethersproject/abi" "^5.0.0-beta.146" - "@solidity-parser/parser" "^0.14.0" - cli-table3 "^0.5.0" - colors "1.4.0" - ethereumjs-util "6.2.0" - 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" - -eth-json-rpc-filters@4.2.2, eth-json-rpc-filters@^4.2.1: - version "4.2.2" - resolved "https://registry.yarnpkg.com/eth-json-rpc-filters/-/eth-json-rpc-filters-4.2.2.tgz#eb35e1dfe9357ace8a8908e7daee80b2cd60a10d" - integrity sha512-DGtqpLU7bBg63wPMWg1sCpkKCf57dJ+hj/k3zF26anXMzkmtSBDExL8IhUu7LUd34f0Zsce3PYNO2vV2GaTzaw== - dependencies: - "@metamask/safe-event-emitter" "^2.0.0" - async-mutex "^0.2.6" - eth-json-rpc-middleware "^6.0.0" - eth-query "^2.1.2" - json-rpc-engine "^6.1.0" - pify "^5.0.0" - -eth-json-rpc-infura@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz#26702a821067862b72d979c016fd611502c6057f" - integrity sha512-W7zR4DZvyTn23Bxc0EWsq4XGDdD63+XPUCEhV2zQvQGavDVC4ZpFDK4k99qN7bd7/fjj37+rxmuBOBeIqCA5Mw== - dependencies: - cross-fetch "^2.1.1" - eth-json-rpc-middleware "^1.5.0" - json-rpc-engine "^3.4.0" - json-rpc-error "^2.0.0" - -eth-json-rpc-infura@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-5.1.0.tgz#e6da7dc47402ce64c54e7018170d89433c4e8fb6" - integrity sha512-THzLye3PHUSGn1EXMhg6WTLW9uim7LQZKeKaeYsS9+wOBcamRiCQVGHa6D2/4P0oS0vSaxsBnU/J6qvn0MPdow== - dependencies: - eth-json-rpc-middleware "^6.0.0" - eth-rpc-errors "^3.0.0" - json-rpc-engine "^5.3.0" - node-fetch "^2.6.0" - -eth-json-rpc-middleware@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-1.6.0.tgz#5c9d4c28f745ccb01630f0300ba945f4bef9593f" - integrity sha512-tDVCTlrUvdqHKqivYMjtFZsdD7TtpNLBCfKAcOpaVs7orBMS/A8HWro6dIzNtTZIR05FAbJ3bioFOnZpuCew9Q== - dependencies: - async "^2.5.0" - eth-query "^2.1.2" - eth-tx-summary "^3.1.2" - ethereumjs-block "^1.6.0" - ethereumjs-tx "^1.3.3" - ethereumjs-util "^5.1.2" - ethereumjs-vm "^2.1.0" - fetch-ponyfill "^4.0.0" - json-rpc-engine "^3.6.0" - json-rpc-error "^2.0.0" - json-stable-stringify "^1.0.1" - promise-to-callback "^1.0.0" - tape "^4.6.3" - -eth-json-rpc-middleware@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-6.0.0.tgz#4fe16928b34231a2537856f08a5ebbc3d0c31175" - integrity sha512-qqBfLU2Uq1Ou15Wox1s+NX05S9OcAEL4JZ04VZox2NS0U+RtCMjSxzXhLFWekdShUPZ+P8ax3zCO2xcPrp6XJQ== - dependencies: - btoa "^1.2.1" - clone "^2.1.1" - eth-query "^2.1.2" - eth-rpc-errors "^3.0.0" - eth-sig-util "^1.4.2" - ethereumjs-util "^5.1.2" - json-rpc-engine "^5.3.0" - json-stable-stringify "^1.0.1" - node-fetch "^2.6.1" - pify "^3.0.0" - safe-event-emitter "^1.0.1" - -eth-lib@0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" - integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - xhr-request-promise "^0.1.2" - -eth-lib@^0.1.26: - version "0.1.29" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" - integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== - 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" - -eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" - integrity sha1-1nQdkAAQa1FRDHLbktY2VFam2l4= - dependencies: - json-rpc-random-id "^1.0.0" - xtend "^4.0.1" - -eth-rpc-errors@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.2.tgz#11bc164e25237a679061ac05b7da7537b673d3b7" - integrity sha512-n+Re6Gu8XGyfFy1it0AwbD1x0MUzspQs0D5UiPs1fFPCr6WAwZM+vbIhXheBFrpgosqN9bs5PqlB4Q61U/QytQ== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-rpc-errors@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz#d7b22653c70dbf9defd4ef490fd08fe70608ca10" - integrity sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-rpc-errors@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.3.tgz#6ddb6190a4bf360afda82790bb7d9d5e724f423a" - integrity sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-sig-util@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-3.0.0.tgz#75133b3d7c20a5731af0690c385e184ab942b97e" - integrity sha512-4eFkMOhpGbTxBQ3AMzVf0haUX2uTur7DpWiHzWyTURa28BVJJtOkcb9Ok5TV0YvEPG61DODPW7ZUATbJTslioQ== - dependencies: - buffer "^5.2.1" - elliptic "^6.4.0" - ethereumjs-abi "0.6.5" - ethereumjs-util "^5.1.1" - tweetnacl "^1.0.0" - tweetnacl-util "^0.15.0" - -eth-sig-util@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-1.4.2.tgz#8d958202c7edbaae839707fba6f09ff327606210" - integrity sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA= - dependencies: - ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" - ethereumjs-util "^5.1.1" - -eth-tx-summary@^3.1.2: - version "3.2.4" - resolved "https://registry.yarnpkg.com/eth-tx-summary/-/eth-tx-summary-3.2.4.tgz#e10eb95eb57cdfe549bf29f97f1e4f1db679035c" - integrity sha512-NtlDnaVZah146Rm8HMRUNMgIwG/ED4jiqk0TME9zFheMl1jOp6jL1m0NKGjJwehXQ6ZKCPr16MTr+qspKpEXNg== - dependencies: - async "^2.1.2" - clone "^2.0.0" - concat-stream "^1.5.1" - end-of-stream "^1.1.0" - eth-query "^2.0.2" - ethereumjs-block "^1.4.1" - ethereumjs-tx "^1.1.1" - ethereumjs-util "^5.0.1" - ethereumjs-vm "^2.6.0" - through2 "^2.0.3" - -ethashjs@~0.0.7: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ethashjs/-/ethashjs-0.0.8.tgz#227442f1bdee409a548fb04136e24c874f3aa6f9" - integrity sha512-/MSbf/r2/Ld8o0l15AymjOTlPqpN8Cr4ByUEA9GtR4x0yAh3TdtDzEg29zMjXCNPI7u6E5fOQdj/Cf9Tc7oVNw== - dependencies: - async "^2.1.2" - buffer-xor "^2.0.1" - ethereumjs-util "^7.0.2" - miller-rabin "^4.0.0" - -ethereum-bloom-filters@^1.0.6: - version "1.0.10" - resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" - integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== - dependencies: - js-sha3 "^0.8.0" - -ethereum-common@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.2.0.tgz#13bf966131cce1eeade62a1b434249bb4cb120ca" - integrity sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA== - -ethereum-common@^0.0.18: - version "0.0.18" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" - integrity sha1-L9w1dvIykDNYl26znaeDIT/5Uj8= - -ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" - integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== - 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" - -ethereum-waffle@^3.4.0: - version "3.4.4" - resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.4.4.tgz#1378b72040697857b7f5e8f473ca8f97a37b5840" - integrity sha512-PA9+jCjw4WC3Oc5ocSMBj5sXvueWQeAbvCA+hUlb6oFgwwKyq5ka3bWQ7QZcjzIX+TdFkxP4IbFmoY2D8Dkj9Q== - dependencies: - "@ethereum-waffle/chai" "^3.4.4" - "@ethereum-waffle/compiler" "^3.4.4" - "@ethereum-waffle/mock-contract" "^3.4.4" - "@ethereum-waffle/provider" "^3.4.4" - ethers "^5.0.1" - -ethereumjs-abi@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz#5a637ef16ab43473fa72a29ad90871405b3f5241" - integrity sha1-WmN+8Wq0NHP6cqKa2QhxQFs/UkE= - dependencies: - bn.js "^4.10.0" - ethereumjs-util "^4.3.0" - -ethereumjs-abi@0.6.8, ethereumjs-abi@^0.6.8: - version "0.6.8" - resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" - integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== - dependencies: - bn.js "^4.11.8" - ethereumjs-util "^6.0.0" - -"ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": - version "0.6.8" - resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#ee3994657fa7a427238e6ba92a84d0b529bbcde0" - dependencies: - bn.js "^4.11.8" - ethereumjs-util "^6.0.0" - -ethereumjs-account@3.0.0, ethereumjs-account@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz#728f060c8e0c6e87f1e987f751d3da25422570a9" - integrity sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA== - dependencies: - ethereumjs-util "^6.0.0" - rlp "^2.2.1" - safe-buffer "^5.1.1" - -ethereumjs-account@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz#eeafc62de544cb07b0ee44b10f572c9c49e00a84" - integrity sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA== - dependencies: - ethereumjs-util "^5.0.0" - rlp "^2.0.0" - safe-buffer "^5.1.1" - -ethereumjs-block@2.2.2, ethereumjs-block@^2.2.2, ethereumjs-block@~2.2.0, ethereumjs-block@~2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz#c7654be7e22df489fda206139ecd63e2e9c04965" - integrity sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg== - dependencies: - async "^2.0.1" - ethereumjs-common "^1.5.0" - ethereumjs-tx "^2.1.1" - ethereumjs-util "^5.0.0" - merkle-patricia-tree "^2.1.2" - -ethereumjs-block@^1.2.2, ethereumjs-block@^1.4.1, ethereumjs-block@^1.6.0: - version "1.7.1" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz#78b88e6cc56de29a6b4884ee75379b6860333c3f" - integrity sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg== - dependencies: - async "^2.0.1" - ethereum-common "0.2.0" - ethereumjs-tx "^1.2.2" - ethereumjs-util "^5.0.0" - merkle-patricia-tree "^2.1.2" - -ethereumjs-blockchain@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.4.tgz#30f2228dc35f6dcf94423692a6902604ae34960f" - integrity sha512-zCxaRMUOzzjvX78DTGiKjA+4h2/sF0OYL1QuPux0DHpyq8XiNoF5GYHtb++GUxVlMsMfZV7AVyzbtgcRdIcEPQ== - dependencies: - async "^2.6.1" - ethashjs "~0.0.7" - ethereumjs-block "~2.2.2" - ethereumjs-common "^1.5.0" - ethereumjs-util "^6.1.0" - flow-stoplight "^1.0.0" - level-mem "^3.0.1" - lru-cache "^5.1.1" - rlp "^2.2.2" - semaphore "^1.1.0" - -ethereumjs-common@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz#d3e82fc7c47c0cef95047f431a99485abc9bb1cd" - integrity sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ== - -ethereumjs-common@^1.1.0, ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" - integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== - -ethereumjs-tx@2.1.2, ethereumjs-tx@^2.1.1, ethereumjs-tx@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" - integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== - dependencies: - ethereumjs-common "^1.5.0" - ethereumjs-util "^6.0.0" - -ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" - integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== - dependencies: - ethereum-common "^0.0.18" - ethereumjs-util "^5.0.0" - -ethereumjs-util@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz#23ec79b2488a7d041242f01e25f24e5ad0357960" - integrity sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ== - dependencies: - "@types/bn.js" "^4.11.3" - bn.js "^4.11.0" - create-hash "^1.1.2" - ethjs-util "0.1.6" - keccak "^2.0.0" - rlp "^2.2.3" - secp256k1 "^3.0.1" - -ethereumjs-util@6.2.1, ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0, ethereumjs-util@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" - integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== - 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" - -ethereumjs-util@^4.3.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-4.5.1.tgz#f4bf9b3b515a484e3cc8781d61d9d980f7c83bd0" - integrity sha512-WrckOZ7uBnei4+AKimpuF1B3Fv25OmoRgmYCpGsP7u8PFxXAmAgiJSYT2kRWnt6fVIlKaQlZvuwXp7PIrmn3/w== - dependencies: - bn.js "^4.8.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - rlp "^2.0.0" - -ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5, ethereumjs-util@^5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz#a833f0e5fca7e5b361384dc76301a721f537bf65" - integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== - dependencies: - bn.js "^4.11.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - ethjs-util "^0.1.3" - rlp "^2.0.0" - safe-buffer "^5.1.1" - -ethereumjs-util@^7.0.10, ethereumjs-util@^7.0.2, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.3, ethereumjs-util@^7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz#a6885bcdd92045b06f596c7626c3e89ab3312458" - integrity sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A== - 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" - -ethereumjs-vm@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz#e885e861424e373dbc556278f7259ff3fca5edab" - integrity sha512-X6qqZbsY33p5FTuZqCnQ4+lo957iUJMM6Mpa6bL4UW0dxM6WmDSHuI4j/zOp1E2TDKImBGCJA9QPfc08PaNubA== - dependencies: - async "^2.1.2" - async-eventemitter "^0.2.2" - core-js-pure "^3.0.1" - ethereumjs-account "^3.0.0" - ethereumjs-block "^2.2.2" - ethereumjs-blockchain "^4.0.3" - ethereumjs-common "^1.5.0" - ethereumjs-tx "^2.1.2" - ethereumjs-util "^6.2.0" - fake-merkle-patricia-tree "^1.0.1" - functional-red-black-tree "^1.0.1" - merkle-patricia-tree "^2.3.2" - rustbn.js "~0.2.0" - safe-buffer "^5.1.1" - util.promisify "^1.0.0" - -ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz#76243ed8de031b408793ac33907fb3407fe400c6" - integrity sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw== - dependencies: - async "^2.1.2" - async-eventemitter "^0.2.2" - ethereumjs-account "^2.0.3" - ethereumjs-block "~2.2.0" - ethereumjs-common "^1.1.0" - ethereumjs-util "^6.0.0" - fake-merkle-patricia-tree "^1.0.1" - functional-red-black-tree "^1.0.1" - merkle-patricia-tree "^2.3.2" - rustbn.js "~0.2.0" - safe-buffer "^5.1.1" - -ethereumjs-wallet@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.5.tgz#685e9091645cee230ad125c007658833991ed474" - integrity sha512-MDwjwB9VQVnpp/Dc1XzA6J1a3wgHQ4hSvA1uWNatdpOrtCbPVuQSKSyRnjLvS0a+KKMw2pvQ9Ybqpb3+eW8oNA== - dependencies: - aes-js "^3.1.1" - bs58check "^2.1.2" - ethereum-cryptography "^0.1.3" - ethereumjs-util "^6.0.0" - randombytes "^2.0.6" - safe-buffer "^5.1.2" - scryptsy "^1.2.1" - utf8 "^3.0.0" - uuid "^3.3.2" - -ethers@^4.0.32, ethers@^4.0.40: - version "4.0.49" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.49.tgz#0eb0e9161a0c8b4761be547396bbe2fb121a8894" - integrity sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg== - 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" - -ethers@^5.0.0, ethers@^5.0.1, ethers@^5.0.2, ethers@^5.0.32, ethers@^5.5.1, ethers@^5.5.2: - version "5.6.1" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.1.tgz#a56cd67f1595b745dc3dde0ccf2b5de53a41a6d0" - integrity sha512-qtl/2W+dwmUa5Z3JqwsbV3JEBZZHNARe5K/A2ePcNAuhJYnEKIgGOT/O9ouPwBijSqVoQnmQMzi5D48LFNOY2A== - dependencies: - "@ethersproject/abi" "5.6.0" - "@ethersproject/abstract-provider" "5.6.0" - "@ethersproject/abstract-signer" "5.6.0" - "@ethersproject/address" "5.6.0" - "@ethersproject/base64" "5.6.0" - "@ethersproject/basex" "5.6.0" - "@ethersproject/bignumber" "5.6.0" - "@ethersproject/bytes" "5.6.0" - "@ethersproject/constants" "5.6.0" - "@ethersproject/contracts" "5.6.0" - "@ethersproject/hash" "5.6.0" - "@ethersproject/hdnode" "5.6.0" - "@ethersproject/json-wallets" "5.6.0" - "@ethersproject/keccak256" "5.6.0" - "@ethersproject/logger" "5.6.0" - "@ethersproject/networks" "5.6.0" - "@ethersproject/pbkdf2" "5.6.0" - "@ethersproject/properties" "5.6.0" - "@ethersproject/providers" "5.6.1" - "@ethersproject/random" "5.6.0" - "@ethersproject/rlp" "5.6.0" - "@ethersproject/sha2" "5.6.0" - "@ethersproject/signing-key" "5.6.0" - "@ethersproject/solidity" "5.6.0" - "@ethersproject/strings" "5.6.0" - "@ethersproject/transactions" "5.6.0" - "@ethersproject/units" "5.6.0" - "@ethersproject/wallet" "5.6.0" - "@ethersproject/web" "5.6.0" - "@ethersproject/wordlists" "5.6.0" - -ethers@^5.4.7, ethers@^5.6.1: - version "5.6.2" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.2.tgz#e75bac7f038c5e0fdde667dba62fc223924143a2" - integrity sha512-EzGCbns24/Yluu7+ToWnMca3SXJ1Jk1BvWB7CCmVNxyOeM4LLvw2OLuIHhlkhQk1dtOcj9UMsdkxUh8RiG1dxQ== - dependencies: - "@ethersproject/abi" "5.6.0" - "@ethersproject/abstract-provider" "5.6.0" - "@ethersproject/abstract-signer" "5.6.0" - "@ethersproject/address" "5.6.0" - "@ethersproject/base64" "5.6.0" - "@ethersproject/basex" "5.6.0" - "@ethersproject/bignumber" "5.6.0" - "@ethersproject/bytes" "5.6.1" - "@ethersproject/constants" "5.6.0" - "@ethersproject/contracts" "5.6.0" - "@ethersproject/hash" "5.6.0" - "@ethersproject/hdnode" "5.6.0" - "@ethersproject/json-wallets" "5.6.0" - "@ethersproject/keccak256" "5.6.0" - "@ethersproject/logger" "5.6.0" - "@ethersproject/networks" "5.6.1" - "@ethersproject/pbkdf2" "5.6.0" - "@ethersproject/properties" "5.6.0" - "@ethersproject/providers" "5.6.2" - "@ethersproject/random" "5.6.0" - "@ethersproject/rlp" "5.6.0" - "@ethersproject/sha2" "5.6.0" - "@ethersproject/signing-key" "5.6.0" - "@ethersproject/solidity" "5.6.0" - "@ethersproject/strings" "5.6.0" - "@ethersproject/transactions" "5.6.0" - "@ethersproject/units" "5.6.0" - "@ethersproject/wallet" "5.6.0" - "@ethersproject/web" "5.6.0" - "@ethersproject/wordlists" "5.6.0" - -ethjs-unit@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" - integrity sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk= - dependencies: - bn.js "4.11.6" - number-to-bn "1.7.0" - -ethjs-util@0.1.6, ethjs-util@^0.1.3, ethjs-util@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" - integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== - dependencies: - is-hex-prefixed "1.0.0" - strip-hex-prefix "1.0.0" - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -eventemitter3@4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" - integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== - -eventemitter3@4.0.7, eventemitter3@^4.0.0, eventemitter3@^4.0.4: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.0.0, events@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -eventsource@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.0.tgz#00e8ca7c92109e94b0ddf32dac677d841028cfaf" - integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== - dependencies: - original "^1.0.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -exec-sh@^0.3.2: - version "0.3.6" - resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" - integrity sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w== - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^3.0.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" - integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - p-finally "^2.0.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -execa@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -execa@^5.0.0, execa@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - 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" - -exit-on-epipe@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" - integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expect@^26.6.0, expect@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" - integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== - dependencies: - "@jest/types" "^26.6.2" - ansi-styles "^4.0.0" - jest-get-type "^26.3.0" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - -explain-error@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/explain-error/-/explain-error-1.0.4.tgz#a793d3ac0cad4c6ab571e9968fbbab6cb2532929" - integrity sha1-p5PTrAytTGq1cemWj7urbLJTKSk= - -express@^4.14.0, express@^4.17.1: - version "4.17.3" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1" - integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.19.2" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.4.2" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.9.7" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.17.2" - serve-static "1.14.2" - setprototypeof "1.2.0" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -ext@^1.1.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" - integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== - dependencies: - type "^2.5.0" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - -eyes@0.1.x, eyes@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" - integrity sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A= - -fake-merkle-patricia-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz#4b8c3acfb520afadf9860b1f14cd8ce3402cddd3" - integrity sha1-S4w6z7Ugr635hgsfFM2M40As3dM= - dependencies: - checkpoint-store "^1.1.0" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - -fast-glob@^3.0.3, fast-glob@^3.1.1, fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fast-safe-stringify@^2.0.6: - version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== - -fastfile@0.0.18: - version "0.0.18" - resolved "https://registry.yarnpkg.com/fastfile/-/fastfile-0.0.18.tgz#2b69bbbfd2fcccc9bc8099c27de1379b89756a4b" - integrity sha512-q03PTKc+wptis4WmuFOwPNQx2p5myFUrl/dMgRlW9mymc1Egyc14JPHgiGnWK+sJ0+dBl2Vwtfh5GfSQltYOpw== - -fastfile@0.0.19: - version "0.0.19" - resolved "https://registry.yarnpkg.com/fastfile/-/fastfile-0.0.19.tgz#02cef9ade123b0a74adb794f4a1abcfa5719fd46" - integrity sha512-tz9nWR5KYb6eR2odFQ7oxqEkx8F3YQZ6NBJoJR92YEG3DqYOqyxMck8PKvTVNKx3uwvOqGnLXNScnqpdHRdHGQ== - -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== - dependencies: - reusify "^1.0.4" - -faye-websocket@^0.11.3, faye-websocket@^0.11.4: - version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" - integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== - dependencies: - websocket-driver ">=0.5.1" - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -fetch-ponyfill@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz#ae3ce5f732c645eab87e4ae8793414709b239893" - integrity sha1-rjzl9zLGReq4fkroeTQUcJsjmJM= - dependencies: - node-fetch "~1.7.1" - -ffiasm@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ffiasm/-/ffiasm-0.1.1.tgz#34ca6a00a875b5a926f66fd46e79530194e9c312" - integrity sha512-irMMHiR9JJ7BVBrAhtliUawxVdPYSdyl81taUYJ4C1mJ0iw2ueThE/qtr0J8B83tsIY8HJvh0lg5F+6ClK4xpA== - dependencies: - big-integer "^1.6.48" - ejs "^3.0.1" - yargs "^15.3.1" - -ffiasm@0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/ffiasm/-/ffiasm-0.1.3.tgz#9d636448e31ce676c0e6684102d4d44bcf58c71f" - integrity sha512-/+rZrpKO98W5BSqy2E6vxVaNh63MnRPA+1H7ufmpOrbZjG2pIEPCYbn5g7q2AXaX+75IMKasi4IOFrwPkxJXVg== - dependencies: - big-integer "^1.6.48" - ejs "^3.0.1" - yargs "^15.3.1" - -ffjavascript@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.1.0.tgz#456256c259654cc1ce864c6762b0e76ee1714100" - integrity sha512-dmKlUasSfvUcxBm8nCSKl2x7EFJsXA7OVP8XLFA03T2+6mAc3IiVLC2ambEVOcMOhyhl0vJfVZjM9f9d38D1rw== - dependencies: - big-integer "^1.6.48" - -ffjavascript@0.2.10: - version "0.2.10" - resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.2.10.tgz#b0bf88d69be0b51e0bd28e1966c4a6fb29a86682" - integrity sha512-GQI6gHYYG5/iD4Kt3VzezzK7fARJzP0zkc82V/+JAdjfeKBXhDSo5rpKFuK3cDcrdW0Fu2emuYNMEAuFqhEQvQ== - dependencies: - big-integer "^1.6.48" - wasmcurves "0.0.5" - worker-threads "^1.0.0" - -ffjavascript@0.2.22: - version "0.2.22" - resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.2.22.tgz#101f33db330b0f6a0c10dec22ebf5725618a8a7d" - integrity sha512-EsVqap2Txm17bKW0z/jXCX3M7rQ++nQUAJY8alWDpyhjRj90xjl6GLeVSKZQ8rOFDQ/SFFXcEB8w9X8Boxid+w== - dependencies: - big-integer "^1.6.48" - wasmcurves "0.0.12" - worker-threads "^1.0.0" - -ffjavascript@0.2.34: - version "0.2.34" - resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.2.34.tgz#e0607d1635ad06e8519268af475bc90deac60fbd" - integrity sha512-fq/qfJluC4spiOD1lp5jfckZVnS0o0kI5eKXVLw7UKwIwbNr+NBMBveBVcidSfMizF87T6wb7NBtLSdckQiAnQ== - dependencies: - big-integer "^1.6.48" - mocha "^8.2.1" - wasmcurves "0.0.14" - worker-threads "^1.0.0" - -ffjavascript@0.2.35: - version "0.2.35" - resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.2.35.tgz#9166d95173b1c0a743b455bb03a72b581922a42e" - integrity sha512-xnC51tWbi0ah4SH+02jEfJyO+P+NiZWnxQrLDLtBYY1Dv3QM5ydxzd+gxnLEfWdT8i1bMM5pIh5P25l6fNCaVQ== - dependencies: - big-integer "^1.6.48" - wasmcurves "0.0.14" - web-worker "^1.0.0" - -ffjavascript@0.2.37: - version "0.2.37" - resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.2.37.tgz#13b93c0104013f99d8959e159430d6aa76bd9a6c" - integrity sha512-wWOkQB07d6eKFRMMtryTVsWrMsR4ImdikhEuu6ZcFYaxufJaBKUiQHYxsPzZEScPa+okkHzf1/2YVPU7xUIHMQ== - dependencies: - big-integer "^1.6.48" - wasmcurves "0.0.14" - web-worker "^1.0.0" - -ffjavascript@0.2.39: - version "0.2.39" - resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.2.39.tgz#15acd07e0b4cfb323b9a84446a9bea5ca103f591" - integrity sha512-9ewb5keKHL1owKTxCK7sDuA34SPJxnznWqdJgwBW51moCvg+wf9L0W5mcxm8qMUxt2OE/KjBQUKmYLaKyNNrPw== - dependencies: - big-integer "^1.6.48" - wasmcurves "0.0.14" - web-worker "^1.0.0" - -ffjavascript@^0.2.30, ffjavascript@^0.2.38, ffjavascript@^0.2.39: - version "0.2.51" - resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.2.51.tgz#5d714686e3a5bde96dc57be84babc61911283629" - integrity sha512-qshvFIjU6cWMQOtKwpU4JZOKfKHfN8TFJ0Tst1Bd/V8AfgzAUScqA+zRT6sLGdV9zlumLsMgrLzGVRK4kf6RQA== - dependencies: - big-integer "^1.6.48" - wasmbuilder "^0.0.12" - wasmcurves "0.1.0" - web-worker "^1.2.0" - -ffwasm@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ffwasm/-/ffwasm-0.0.7.tgz#23bb9a3537ecc87c0f24fcfb3a9ddd0e86855fff" - integrity sha512-17cTLzv7HHAKqZbX8MvHxjSrR0yDdn1sh4TVsTbAvO9e6klhFicnyoVXc/sCuViV/M8g65sCmVrAmoPCZp1YkQ== - dependencies: - big-integer "^1.6.48" - wasmbuilder "0.0.10" - -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -file-loader@6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.1.1.tgz#a6f29dfb3f5933a1c350b2dbaa20ac5be0539baa" - integrity sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw== - dependencies: - loader-utils "^2.0.0" - schema-utils "^3.0.0" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filelist@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b" - integrity sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ== - dependencies: - minimatch "^3.0.4" - -filesize@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00" - integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -filter-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" - integrity sha1-mzERErxsYSehbgFsbF1/GeCAXFs= - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-cache-dir@^3.0.0, find-cache-dir@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-replace@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-1.0.3.tgz#b88e7364d2d9c959559f388c66670d6130441fa0" - integrity sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A= - dependencies: - array-back "^1.0.4" - test-value "^2.1.0" - -find-replace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" - integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== - dependencies: - array-back "^3.0.1" - -find-root@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" - integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== - -find-up@3.0.0, find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-yarn-workspace-root@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db" - integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q== - dependencies: - fs-extra "^4.0.3" - micromatch "^3.1.4" - -find-yarn-workspace-root@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" - integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== - dependencies: - micromatch "^4.0.2" - -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flat@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.1.tgz#a392059cc382881ff98642f5da4dde0a959f309b" - integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA== - dependencies: - is-buffer "~2.0.3" - -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -flatmap@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/flatmap/-/flatmap-0.0.3.tgz#1f18a4d938152d495965f9c958d923ab2dd669b4" - integrity sha1-Hxik2TgVLUlZZfnJWNkjqy3WabQ= - -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - -flatted@^3.1.0: - version "3.2.5" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" - integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== - -flatten@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" - integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== - -flow-stoplight@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/flow-stoplight/-/flow-stoplight-1.0.0.tgz#4a292c5bcff8b39fa6cc0cb1a853d86f27eeff7b" - integrity sha1-SiksW8/4s5+mzAyxqFPYbyfu/3s= - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -fnv-plus@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/fnv-plus/-/fnv-plus-1.3.1.tgz#c34cb4572565434acb08ba257e4044ce2b006d67" - integrity sha512-Gz1EvfOneuFfk4yG458dJ3TLJ7gV19q3OM/vVvvHf7eT02Hm1DleB4edsia6ahbKgAYxO9gvyQ1ioWZR+a00Yw== - -focus-lock@^0.9.1: - version "0.9.2" - resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.9.2.tgz#9d30918aaa99b1b97677731053d017f82a540d5b" - integrity sha512-YtHxjX7a0IC0ZACL5wsX8QdncXofWpGPNoVMuI/nZUrPGp6LmNI6+D5j0pPj+v8Kw5EpweA+T5yImK0rnWf7oQ== - dependencies: - tslib "^2.0.3" - -follow-redirects@^1.0.0, follow-redirects@^1.12.1, follow-redirects@^1.14.0: - version "1.14.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" - integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== - -for-each@^0.3.3, for-each@~0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= - -fork-ts-checker-webpack-plugin@4.1.6: - version "4.1.6" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5" - integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== - dependencies: - "@babel/code-frame" "^7.5.5" - chalk "^2.4.1" - micromatch "^3.1.10" - minimatch "^3.0.4" - semver "^5.6.0" - tapable "^1.0.0" - worker-rpc "^0.1.0" - -form-data@^2.2.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" - integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fp-ts@1.19.3: - version "1.19.3" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" - integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== - -fp-ts@^1.0.0: - version "1.19.5" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" - integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -framer-motion@^4.0.0: - version "4.1.17" - resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-4.1.17.tgz#4029469252a62ea599902e5a92b537120cc89721" - integrity sha512-thx1wvKzblzbs0XaK2X0G1JuwIdARcoNOW7VVwjO8BUltzXPyONGAElLu6CiCScsOQRI7FIk/45YTFtJw5Yozw== - dependencies: - framesync "5.3.0" - hey-listen "^1.0.8" - popmotion "9.3.6" - style-value-types "4.1.4" - tslib "^2.1.0" - optionalDependencies: - "@emotion/is-prop-valid" "^0.8.2" - -framesync@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/framesync/-/framesync-5.3.0.tgz#0ecfc955e8f5a6ddc8fdb0cc024070947e1a0d9b" - integrity sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA== - dependencies: - tslib "^2.1.0" - -framesync@^4.0.0, framesync@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/framesync/-/framesync-4.1.0.tgz#69a8db3ca432dc70d6a76ba882684a1497ef068a" - integrity sha512-MmgZ4wCoeVxNbx2xp5hN/zPDCbLSKiDt4BbbslK7j/pM2lg5S0vhTNv1v8BCVb99JPIo6hXBFdwzU7Q4qcAaoQ== - dependencies: - hey-listen "^1.0.5" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - -fs-extra@8.1.0, fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" - integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A= - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - -fs-extra@^4.0.2, fs-extra@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^7.0.0, fs-extra@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^9.0.0, fs-extra@^9.0.1, fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-jetpack@^2.2.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/fs-jetpack/-/fs-jetpack-2.4.0.tgz#6080c4ab464a019d37a404baeb47f32af8835026" - integrity sha512-S/o9Dd7K9A7gicVU32eT8G0kHcmSu0rCVdP79P0MWInKFb8XpTc8Syhoo66k9no+HDshtlh4pUJTws8X+8fdFQ== - dependencies: - minimatch "^3.0.2" - rimraf "^2.6.3" - -fs-minipass@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - -fs-minipass@^2.0.0, fs-minipass@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs-readdir-recursive@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" - integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@^2.1.2, fsevents@^2.1.3, fsevents@~2.3.1, fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -fsevents@~2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -ganache-core@^2.13.2, ganache-core@^2.7.0: - version "2.13.2" - resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.13.2.tgz#27e6fc5417c10e6e76e2e646671869d7665814a3" - integrity sha512-tIF5cR+ANQz0+3pHWxHjIwHqFXcVo0Mb+kcsNhglNFALcYo49aQpnS9dqHartqPfMFjiHh/qFoD3mYK0d/qGgw== - dependencies: - abstract-leveldown "3.0.0" - async "2.6.2" - bip39 "2.5.0" - cachedown "1.0.0" - clone "2.1.2" - debug "3.2.6" - encoding-down "5.0.4" - eth-sig-util "3.0.0" - ethereumjs-abi "0.6.8" - ethereumjs-account "3.0.0" - ethereumjs-block "2.2.2" - ethereumjs-common "1.5.0" - ethereumjs-tx "2.1.2" - ethereumjs-util "6.2.1" - ethereumjs-vm "4.2.0" - heap "0.2.6" - keccak "3.0.1" - level-sublevel "6.6.4" - levelup "3.1.1" - lodash "4.17.20" - lru-cache "5.1.1" - merkle-patricia-tree "3.0.0" - patch-package "6.2.2" - seedrandom "3.0.1" - source-map-support "0.5.12" - tmp "0.1.0" - web3-provider-engine "14.2.1" - websocket "1.0.32" - optionalDependencies: - ethereumjs-wallet "0.6.5" - web3 "1.2.11" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - -get-caller-file@^2.0.1, get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-func-name@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" - integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-nonce@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" - integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== - -get-own-enumerable-property-symbols@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" - integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-pkg-repo@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" - integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== - dependencies: - "@hutson/parse-repository-url" "^3.0.0" - hosted-git-info "^4.0.0" - through2 "^2.0.0" - yargs "^16.2.0" - -get-port@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" - integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= - -get-port@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" - integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= - -get-stream@^4.0.0, get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0, get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= - dependencies: - assert-plus "^1.0.0" - -ghost-testrpc@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz#c4de9557b1d1ae7b2d20bbe474a91378ca90ce92" - integrity sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ== - dependencies: - chalk "^2.4.2" - node-emoji "^1.10.0" - -git-raw-commits@^2.0.8: - version "2.0.11" - resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" - integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== - dependencies: - dargs "^7.0.0" - lodash "^4.17.15" - meow "^8.0.0" - split2 "^3.0.0" - through2 "^4.0.0" - -git-remote-origin-url@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" - integrity sha1-UoJlna4hBxRaERJhEq0yFuxfpl8= - dependencies: - gitconfiglocal "^1.0.0" - pify "^2.3.0" - -git-semver-tags@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780" - integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== - dependencies: - meow "^8.0.0" - semver "^6.0.0" - -git-up@^4.0.0: - version "4.0.5" - resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.5.tgz#e7bb70981a37ea2fb8fe049669800a1f9a01d759" - integrity sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA== - dependencies: - is-ssh "^1.3.0" - parse-url "^6.0.0" - -git-url-parse@^11.4.4: - version "11.6.0" - resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.6.0.tgz#c634b8de7faa66498a2b88932df31702c67df605" - integrity sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g== - dependencies: - git-up "^4.0.0" - -gitconfiglocal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" - integrity sha1-QdBF84UaXqiPA/JMocYXgRRGS5s= - dependencies: - ini "^1.3.2" - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - 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" - -glob@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - 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" - -glob@7.2.0, glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - 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" - -glob@^5.0.15: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-modules@2.0.0, global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -global@~4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" - integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== - dependencies: - min-document "^2.19.0" - process "^0.11.10" - -globals@^11.1.0, globals@^11.7.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.6.0, globals@^13.9.0: - version "13.13.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.13.0.tgz#ac32261060d8070e2719dd6998406e27d2b5727b" - integrity sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A== - dependencies: - type-fest "^0.20.2" - -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - -globby@11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" - integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^10.0.1: - version "10.0.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" - integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.0.3" - glob "^7.1.3" - ignore "^5.1.1" - merge2 "^1.2.3" - slash "^3.0.0" - -globby@^11.0.2, globby@^11.0.3, globby@^11.0.4: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - array-union "^1.0.1" - glob "^7.0.3" - object-assign "^4.0.1" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -"gluegun@https://github.com/edgeandnode/gluegun#v4.3.1-pin-colors-dep": - version "4.3.1" - resolved "https://github.com/edgeandnode/gluegun#b34b9003d7bf556836da41b57ef36eb21570620a" - dependencies: - apisauce "^1.0.1" - app-module-path "^2.2.0" - cli-table3 "~0.5.0" - colors "1.3.3" - cosmiconfig "6.0.0" - cross-spawn "^7.0.0" - ejs "^2.6.1" - enquirer "2.3.4" - execa "^3.0.0" - fs-jetpack "^2.2.2" - lodash.camelcase "^4.3.0" - lodash.kebabcase "^4.1.1" - lodash.lowercase "^4.3.0" - lodash.lowerfirst "^4.3.1" - lodash.pad "^4.5.1" - lodash.padend "^4.6.1" - lodash.padstart "^4.6.1" - lodash.repeat "^4.1.0" - lodash.snakecase "^4.1.1" - lodash.startcase "^4.4.0" - lodash.trim "^4.5.1" - lodash.trimend "^4.5.1" - lodash.trimstart "^4.5.1" - lodash.uppercase "^4.3.0" - lodash.upperfirst "^4.3.1" - ora "^4.0.0" - pluralize "^8.0.0" - ramdasauce "^2.1.0" - semver "^7.0.0" - which "^2.0.0" - yargs-parser "^16.1.0" - -got@9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -got@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" - integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== - dependencies: - decompress-response "^3.2.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-plain-obj "^1.1.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - isurl "^1.0.0-alpha5" - lowercase-keys "^1.0.0" - p-cancelable "^0.3.0" - p-timeout "^1.1.1" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - url-parse-lax "^1.0.0" - url-to-options "^1.0.1" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4: - version "4.2.9" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" - integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== - -graphql@^15.5.0: - version "15.8.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38" - integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== - -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== - -growly@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= - -gzip-size@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" - integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== - dependencies: - duplexer "^0.1.1" - pify "^4.0.1" - -handle-thing@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" - integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== - -handlebars@^4.0.1, handlebars@^4.7.7: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -hard-rejection@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== - -hardhat-abi-exporter@^2.2.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/hardhat-abi-exporter/-/hardhat-abi-exporter-2.8.0.tgz#e7ed6216c16acf84158909d856577f0a8832ec55" - integrity sha512-HQwd9Agr2O5znUg9Dzicw8grsXacoMSQsS5ZhBBNyaxKeVbvxL1Ubm9ss8sSVGr74511a8qiR2Ljm/lsLS9Mew== - dependencies: - "@ethersproject/abi" "^5.5.0" - delete-empty "^3.0.0" - -hardhat-artifactor@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/hardhat-artifactor/-/hardhat-artifactor-0.2.0.tgz#940c82500653a2623ed89f7dd24dc3bd76de6bb9" - integrity sha512-034c0Ye3PjnPbBz6Adz7bNZ7T4LdPTSkjnzsBxToJKiqU4f4CwowFOqwSS0RqO2t9A7w/aWR49pLwbNzpVuDgQ== - -hardhat-contract-sizer@^2.0.3: - version "2.5.1" - resolved "https://registry.yarnpkg.com/hardhat-contract-sizer/-/hardhat-contract-sizer-2.5.1.tgz#cb0b8dd32593b7a28c8d96ecde04841292bbd603" - integrity sha512-28yRb73e30aBVaZOOHTlHZFIdIasA/iFunIehrUviIJTubvdQjtSiQUo2wexHFtt71mQeMPP8qjw2sdbgatDnQ== - dependencies: - chalk "^4.0.0" - cli-table3 "^0.6.0" - -hardhat-gas-reporter@^1.0.4: - version "1.0.8" - resolved "https://registry.yarnpkg.com/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.8.tgz#93ce271358cd748d9c4185dbb9d1d5525ec145e0" - integrity sha512-1G5thPnnhcwLHsFnl759f2tgElvuwdkzxlI65fC9PwxYMEe9cmjkVAAWTf3/3y8uP6ZSPiUiOW8PgZnykmZe0g== - dependencies: - array-uniq "1.0.3" - eth-gas-reporter "^0.2.24" - sha1 "^1.1.1" - -hardhat@^2.0.11, hardhat@^2.8.2: - version "2.9.1" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.9.1.tgz#f69f82bb4d98e28744584779483caa7c5cfbde8b" - integrity sha512-q0AkYXV7R26RzyAkHGQRhhQjk508pseVvH3wSwZwwPUbvA+tjl0vMIrD4aFQDonRXkrnXX4+5KglozzjSd0//Q== - dependencies: - "@ethereumjs/block" "^3.6.0" - "@ethereumjs/blockchain" "^5.5.0" - "@ethereumjs/common" "^2.6.0" - "@ethereumjs/tx" "^3.4.0" - "@ethereumjs/vm" "^5.6.0" - "@ethersproject/abi" "^5.1.2" - "@metamask/eth-sig-util" "^4.0.0" - "@sentry/node" "^5.18.1" - "@solidity-parser/parser" "^0.14.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 "^0.1.2" - ethereumjs-abi "^0.6.8" - ethereumjs-util "^7.1.3" - find-up "^2.1.0" - fp-ts "1.19.3" - fs-extra "^7.0.1" - glob "^7.1.3" - immutable "^4.0.0-rc.12" - io-ts "1.10.4" - lodash "^4.17.11" - merkle-patricia-tree "^4.2.2" - mnemonist "^0.38.0" - mocha "^9.2.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 "^4.14.1" - uuid "^8.3.2" - ws "^7.4.6" - -harmony-reflect@^1.4.6: - version "1.6.2" - resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" - integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbol-support-x@^1.4.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" - integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== - -has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-to-string-tag-x@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" - integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== - dependencies: - has-symbol-support-x "^1.4.1" - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-unicode@^2.0.0, has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.0, has@^1.0.3, has@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" - integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.0" - -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -he@1.2.0, he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -heap@0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" - integrity sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw= - -hex-color-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" - integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== - -hey-listen@^1.0.5, hey-listen@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68" - integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== - -hi-base32@~0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/hi-base32/-/hi-base32-0.5.1.tgz#1279f2ddae2673219ea5870c2121d2a33132857e" - integrity sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA== - -history@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/history/-/history-5.3.0.tgz#1548abaa245ba47992f063a0783db91ef201c73b" - integrity sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ== - dependencies: - "@babel/runtime" "^7.7.6" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - -hoopy@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" - integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== - -hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hosted-git-info@^4.0.0, hosted-git-info@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== - dependencies: - lru-cache "^6.0.0" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -hsl-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" - integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= - -hsla-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" - integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= - -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - -html-entities@^1.2.1, html-entities@^1.3.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" - integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -html-minifier-terser@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" - integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== - dependencies: - camel-case "^4.1.1" - clean-css "^4.2.3" - commander "^4.1.1" - he "^1.2.0" - param-case "^3.0.3" - relateurl "^0.2.7" - terser "^4.6.3" - -html-webpack-plugin@4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz#625097650886b97ea5dae331c320e3238f6c121c" - integrity sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw== - dependencies: - "@types/html-minifier-terser" "^5.0.0" - "@types/tapable" "^1.0.5" - "@types/webpack" "^4.41.8" - html-minifier-terser "^5.0.1" - loader-utils "^1.2.3" - lodash "^4.17.15" - pretty-error "^2.1.1" - tapable "^1.1.3" - util.promisify "1.0.0" - -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - -http-basic@^8.1.1: - version "8.1.3" - resolved "https://registry.yarnpkg.com/http-basic/-/http-basic-8.1.3.tgz#a7cabee7526869b9b710136970805b1004261bbf" - integrity sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw== - dependencies: - caseless "^0.12.0" - concat-stream "^1.6.2" - http-response-object "^3.0.1" - parse-cache-control "^1.0.1" - -http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" - integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.1" - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-https@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" - integrity sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs= - -http-parser-js@>=0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.6.tgz#2e02406ab2df8af8a7abfba62e0da01c62b95afd" - integrity sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA== - -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -http-proxy-middleware@0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - -http-proxy@^1.17.0: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -http-response-object@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-3.0.2.tgz#7f435bb210454e4360d074ef1f989d5ea8aa9810" - integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== - dependencies: - "@types/node" "^10.0.3" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -humanize-ms@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" - integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= - dependencies: - ms "^2.0.0" - -husky@^7.0.0: - version "7.0.4" - resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" - integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== - -iconv-lite@0.4.24, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -icss-utils@^4.0.0, icss-utils@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" - integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== - dependencies: - postcss "^7.0.14" - -identity-obj-proxy@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" - integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= - dependencies: - harmony-reflect "^1.4.6" - -idna-uts46-hx@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" - integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== - dependencies: - punycode "2.1.0" - -ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -ignore-walk@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" - integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== - dependencies: - minimatch "^3.0.4" - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.1.1, ignore@^5.1.4, ignore@^5.1.8, ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== - -immediate@^3.2.3: - version "3.3.0" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" - integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== - -immediate@~3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" - integrity sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw= - -immer@8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656" - integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA== - -immutable@^3.8.2: - version "3.8.2" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" - integrity sha1-wkOZUUVbs5kT2vKBN28VMOEErfM= - -immutable@^4.0.0-rc.12: - version "4.0.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" - integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== - -import-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" - integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= - dependencies: - import-from "^2.1.0" - -import-fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= - dependencies: - caller-path "^2.0.0" - resolve-from "^3.0.0" - -import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-from@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" - integrity sha1-M1238qev/VOqpHHUuAId7ja387E= - dependencies: - resolve-from "^3.0.0" - -import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -infer-owner@^1.0.3, infer-owner@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.2, ini@^1.3.4, ini@^1.3.5: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -init-package-json@^2.0.2: - version "2.0.5" - resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-2.0.5.tgz#78b85f3c36014db42d8f32117252504f68022646" - integrity sha512-u1uGAtEFu3VA6HNl/yUWw57jmKEMx8SKOxHhxjGnOFUiIlFnohKDFg4ZrPpv9wWqk44nDxGJAtqjdQFm+9XXQA== - dependencies: - npm-package-arg "^8.1.5" - promzard "^0.3.0" - read "~1.0.1" - read-package-json "^4.1.1" - semver "^7.3.5" - validate-npm-package-license "^3.0.4" - validate-npm-package-name "^3.0.0" - -inquirer@^6.2.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - -inquirer@^7.3.3: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.19" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.6.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -invariant@^2.2.2, invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= - -io-ts@1.10.4: - version "1.10.4" - resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" - integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== - dependencies: - fp-ts "^1.0.0" - -ip-regex@^2.0.0, ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip-regex@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" - integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipaddr.js@1.9.1, ipaddr.js@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -ipfs-block@~0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/ipfs-block/-/ipfs-block-0.8.1.tgz#05e1068832775e8f1c2da5b64106cc837fd2acb9" - integrity sha512-0FaCpmij+jZBoUYhjoB5ptjdl9QzvrdRIoBmUU5JiBnK2GA+4YM/ifklaB8ePRhA/rRzhd+KYBjvMFMAL4NrVQ== - dependencies: - cids "~0.7.0" - class-is "^1.1.0" - -ipfs-http-client@^34.0.0: - version "34.0.0" - resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-34.0.0.tgz#8804d06a11c22306332a8ffa0949b6f672a0c9c8" - integrity sha512-4RCkk8ix4Dqn6sxqFVwuXWCZ1eLFPsVaj6Ijvu1fs9VYgxgVudsW9PWwarlr4mw1xUCmPWYyXnEbGgzBrfMy0Q== - dependencies: - abort-controller "^3.0.0" - async "^2.6.1" - bignumber.js "^9.0.0" - bl "^3.0.0" - bs58 "^4.0.1" - buffer "^5.4.2" - cids "~0.7.1" - concat-stream "github:hugomrdias/concat-stream#feat/smaller" - debug "^4.1.0" - detect-node "^2.0.4" - end-of-stream "^1.4.1" - err-code "^2.0.0" - explain-error "^1.0.4" - flatmap "0.0.3" - glob "^7.1.3" - ipfs-block "~0.8.1" - ipfs-utils "~0.0.3" - ipld-dag-cbor "~0.15.0" - ipld-dag-pb "~0.17.3" - ipld-raw "^4.0.0" - is-ipfs "~0.6.1" - is-pull-stream "0.0.0" - is-stream "^2.0.0" - iso-stream-http "~0.1.2" - iso-url "~0.4.6" - iterable-ndjson "^1.1.0" - just-kebab-case "^1.1.0" - just-map-keys "^1.1.0" - kind-of "^6.0.2" - ky "^0.11.2" - ky-universal "^0.2.2" - lru-cache "^5.1.1" - multiaddr "^6.0.6" - multibase "~0.6.0" - multicodec "~0.5.1" - multihashes "~0.4.14" - ndjson "github:hugomrdias/ndjson#feat/readable-stream3" - once "^1.4.0" - peer-id "~0.12.3" - peer-info "~0.15.1" - promise-nodeify "^3.0.1" - promisify-es6 "^1.0.3" - pull-defer "~0.2.3" - pull-stream "^3.6.9" - pull-to-stream "~0.1.1" - pump "^3.0.0" - qs "^6.5.2" - readable-stream "^3.1.1" - stream-to-pull-stream "^1.7.2" - tar-stream "^2.0.1" - through2 "^3.0.1" - -ipfs-utils@~0.0.3: - version "0.0.4" - resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-0.0.4.tgz#946114cfeb6afb4454b4ccb10d2327cd323b0cce" - integrity sha512-7cZf6aGj2FG3XJWhCNwn4mS93Q0GEWjtBZvEHqzgI43U2qzNDCyzfS1pei1Y5F+tw/zDJ5U4XG0G9reJxR53Ig== - dependencies: - buffer "^5.2.1" - is-buffer "^2.0.3" - is-electron "^2.2.0" - is-pull-stream "0.0.0" - is-stream "^2.0.0" - kind-of "^6.0.2" - readable-stream "^3.4.0" - -ipld-dag-cbor@~0.15.0: - version "0.15.3" - resolved "https://registry.yarnpkg.com/ipld-dag-cbor/-/ipld-dag-cbor-0.15.3.tgz#283afdb81d5b07db8e4fff7a10ef5e517e87f299" - integrity sha512-m23nG7ZyoVFnkK55/bLAErc7EfiMgaEQlqHWDTGzPI+O5r6bPfp+qbL5zTVSIT8tpbHmu174dwerVtLoVgeVyA== - dependencies: - borc "^2.1.2" - buffer "^5.5.0" - cids "~0.8.0" - is-circular "^1.0.2" - multicodec "^1.0.0" - multihashing-async "~0.8.0" - -ipld-dag-pb@~0.17.3: - version "0.17.4" - resolved "https://registry.yarnpkg.com/ipld-dag-pb/-/ipld-dag-pb-0.17.4.tgz#080841cfdd014d996f8da7f3a522ec8b1f6b6494" - integrity sha512-YwCxETEMuXVspOKOhjIOHJvKvB/OZfCDkpSFiYBQN2/JQjM9y/RFCYzIQGm0wg7dCFLrhvfjAZLTSaKs65jzWA== - dependencies: - cids "~0.7.0" - class-is "^1.1.0" - multicodec "~0.5.1" - multihashing-async "~0.7.0" - protons "^1.0.1" - stable "~0.1.8" - -ipld-raw@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/ipld-raw/-/ipld-raw-4.0.1.tgz#49a6f58cdfece5a4d581925b19ee19255be2a29d" - integrity sha512-WjIdtZ06jJEar8zh+BHB84tE6ZdbS/XNa7+XCArOYfmeJ/c01T9VQpeMwdJQYn5c3s5UvvCu7y4VIi3vk2g1bA== - dependencies: - cids "~0.7.0" - multicodec "^1.0.0" - multihashing-async "~0.8.0" - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-buffer@^2.0.3, is-buffer@~2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-circular@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-circular/-/is-circular-1.0.2.tgz#2e0ab4e9835f4c6b0ea2b9855a84acd501b8366c" - integrity sha512-YttjnrswnUYRVJvxCvu8z+PGMUSzC2JttP0OEXezlAEdp3EXzhf7IZ3j0gRAybJBQupedIZFhY61Tga6E0qASA== - -is-color-stop@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" - integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= - dependencies: - css-color-names "^0.0.4" - hex-color-regex "^1.1.0" - hsl-regex "^1.0.0" - hsla-regex "^1.0.0" - rgb-regex "^1.0.1" - rgba-regex "^1.0.0" - -is-core-module@^2.0.0, is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.8.0, is-core-module@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" - integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-directory@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= - -is-docker@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-electron@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.1.tgz#751b1dd8a74907422faa5c35aaa0cf66d98086e9" - integrity sha512-r8EEQQsqT+Gn0aXFx7lTFygYQhILLCB+wn0WCDL5LZRINeLH/Rvw1j2oKodELLXYNImQ3CRlVsY8wW4cGOsyuw== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - -is-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" - integrity sha1-lUPV3nvPWwiiLsiiC65uKG1RDYw= - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-fullwidth-code-point@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" - integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== - -is-function@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" - integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-generator-function@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-hex-prefixed@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" - integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-ip@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-2.0.0.tgz#68eea07e8a0a0a94c2d080dd674c731ab2a461ab" - integrity sha1-aO6gfooKCpTC0IDdZ0xzGrKkYas= - dependencies: - ip-regex "^2.0.0" - -is-ip@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" - integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== - dependencies: - ip-regex "^4.0.0" - -is-ipfs@~0.6.1: - version "0.6.3" - resolved "https://registry.yarnpkg.com/is-ipfs/-/is-ipfs-0.6.3.tgz#82a5350e0a42d01441c40b369f8791e91404c497" - integrity sha512-HyRot1dvLcxImtDqPxAaY1miO6WsiP/z7Yxpg2qpaLWv5UdhAPtLvHJ4kMLM0w8GSl8AFsVF23PHe1LzuWrUlQ== - dependencies: - bs58 "^4.0.1" - cids "~0.7.0" - mafmt "^7.0.0" - multiaddr "^7.2.1" - multibase "~0.6.0" - multihashes "~0.4.13" - -is-lambda@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" - integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU= - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= - -is-nan@^1.2.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" - integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - -is-negative-zero@^2.0.1, is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" - integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== - -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-obj@^2.0.0, is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-promise@~1, is-promise@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-1.0.1.tgz#31573761c057e33c2e91aab9e96da08cefbe76e5" - integrity sha1-MVc3YcBX4zwukaq56W2gjO++duU= - -is-pull-stream@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/is-pull-stream/-/is-pull-stream-0.0.0.tgz#a3bc3d1c6d3055151c46bde6f399efed21440ca9" - integrity sha1-o7w9HG0wVRUcRr3m85nv7SFEDKk= - -is-regex@^1.0.4, is-regex@^1.1.4, is-regex@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-regexp@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" - integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= - -is-resolvable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-retry-allowed@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== - -is-root@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" - integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== - -is-shared-array-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" - integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== - -is-ssh@^1.3.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.3.tgz#7f133285ccd7f2c2c7fc897b771b53d95a2b2c7e" - integrity sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ== - dependencies: - protocols "^1.1.0" - -is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-text-path@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" - integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= - dependencies: - text-extensions "^1.0.0" - -is-typed-array@^1.1.3, is-typed-array@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.8.tgz#cbaa6585dc7db43318bc5b89523ea384a6f65e79" - integrity sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-abstract "^1.18.5" - foreach "^2.0.5" - has-tostringtag "^1.0.0" - -is-typedarray@1.0.0, is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-url@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" - integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= - -is-weakref@^1.0.1, is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -is-wsl@^2.1.1, is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isarray@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -iso-random-stream@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/iso-random-stream/-/iso-random-stream-1.1.2.tgz#c703da2c518db573277c5678cc43c5298283d64c" - integrity sha512-7y0tsBBgQs544iTYjyrMp5xvgrbYR8b+plQq1Bryp+03p0LssrxC9C1M0oHv4QESDt7d95c74XvMk/yawKqX+A== - dependencies: - buffer "^6.0.3" - readable-stream "^3.4.0" - -iso-stream-http@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/iso-stream-http/-/iso-stream-http-0.1.2.tgz#b3dfea4c9f23ff26d078d40c539cfc0dfebacd37" - integrity sha512-oHEDNOysIMTNypbg2f1SlydqRBvjl4ZbSE9+0awVxnkx3K2stGTFwB/kpVqnB6UEfF8QD36kAjDwZvqyXBLMnQ== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^3.1.1" - -iso-url@~0.4.6, iso-url@~0.4.7: - version "0.4.7" - resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-0.4.7.tgz#de7e48120dae46921079fe78f325ac9e9217a385" - integrity sha512-27fFRDnPAMnHGLq36bWTpKET+eiXct3ENlCcdcMdk+mjXrb2kw3mhBUg1B7ewAC0kVzlOPhADzQgz1SE6Tglog== - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isomorphic-ws@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" - integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== - -isstream@0.1.x, isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== - -istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== - dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-instrument@^5.0.4: - version "5.1.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" - integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== - 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" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.0.2: - version "3.1.4" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" - integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -isurl@^1.0.0-alpha5: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" - integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== - dependencies: - has-to-string-tag-x "^1.2.0" - is-object "^1.0.1" - -iterable-ndjson@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/iterable-ndjson/-/iterable-ndjson-1.1.0.tgz#36f7e8a5bb04fd087d384f29e44fc4280fc014fc" - integrity sha512-OOp1Lb0o3k5MkXHx1YaIY5Z0ELosZfTnBaas9f8opJVcZGBIONA2zY/6CYE+LKkqrSDooIneZbrBGgOZnHPkrg== - dependencies: - string_decoder "^1.2.0" - -jake@^10.6.1: - version "10.8.4" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.4.tgz#f6a8b7bf90c6306f768aa82bb7b98bf4ca15e84a" - integrity sha512-MtWeTkl1qGsWUtbl/Jsca/8xSoK3x0UmS82sNbjqxxG/de/M/3b1DntdjHgPMC50enlTNwXOCRqPXLLt5cCfZA== - dependencies: - async "0.9.x" - chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" - -jayson@^3.0.2: - version "3.6.6" - resolved "https://registry.yarnpkg.com/jayson/-/jayson-3.6.6.tgz#189984f624e398f831bd2be8e8c80eb3abf764a1" - integrity sha512-f71uvrAWTtrwoww6MKcl9phQTC+56AopLyEenWvKVAIMz+q0oVGj6tenLZ7Z6UiPBkJtKLj4kt0tACllFQruGQ== - dependencies: - "@types/connect" "^3.4.33" - "@types/express-serve-static-core" "^4.17.9" - "@types/lodash" "^4.14.159" - "@types/node" "^12.12.54" - "@types/ws" "^7.4.4" - JSONStream "^1.3.5" - commander "^2.20.3" - delay "^5.0.0" - es6-promisify "^5.0.0" - eyes "^0.1.8" - isomorphic-ws "^4.0.1" - json-stringify-safe "^5.0.1" - lodash "^4.17.20" - uuid "^8.3.2" - ws "^7.4.5" - -jest-changed-files@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" - integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== - dependencies: - "@jest/types" "^26.6.2" - execa "^4.0.0" - throat "^5.0.0" - -jest-circus@26.6.0: - version "26.6.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-26.6.0.tgz#7d9647b2e7f921181869faae1f90a2629fd70705" - integrity sha512-L2/Y9szN6FJPWFK8kzWXwfp+FOR7xq0cUL4lIsdbIdwz3Vh6P1nrpcqOleSzr28zOtSHQNV9Z7Tl+KkuK7t5Ng== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.6.0" - "@jest/test-result" "^26.6.0" - "@jest/types" "^26.6.0" - "@types/babel__traverse" "^7.0.4" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - expect "^26.6.0" - is-generator-fn "^2.0.0" - jest-each "^26.6.0" - jest-matcher-utils "^26.6.0" - jest-message-util "^26.6.0" - jest-runner "^26.6.0" - jest-runtime "^26.6.0" - jest-snapshot "^26.6.0" - jest-util "^26.6.0" - pretty-format "^26.6.0" - stack-utils "^2.0.2" - throat "^5.0.0" - -jest-cli@^26.6.0: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" - integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== - dependencies: - "@jest/core" "^26.6.3" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.4" - import-local "^3.0.2" - is-ci "^2.0.0" - jest-config "^26.6.3" - jest-util "^26.6.2" - jest-validate "^26.6.2" - prompts "^2.0.1" - yargs "^15.4.1" - -jest-config@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" - integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== - dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^26.6.3" - "@jest/types" "^26.6.2" - babel-jest "^26.6.3" - chalk "^4.0.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - jest-environment-jsdom "^26.6.2" - jest-environment-node "^26.6.2" - jest-get-type "^26.3.0" - jest-jasmine2 "^26.6.3" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - micromatch "^4.0.2" - pretty-format "^26.6.2" - -jest-diff@^25.2.1: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" - integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== - dependencies: - chalk "^3.0.0" - diff-sequences "^25.2.6" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" - -jest-diff@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" - integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== - dependencies: - chalk "^4.0.0" - diff-sequences "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-diff@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-docblock@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" - integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== - dependencies: - detect-newline "^3.0.0" - -jest-each@^26.6.0, jest-each@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" - integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== - dependencies: - "@jest/types" "^26.6.2" - chalk "^4.0.0" - jest-get-type "^26.3.0" - jest-util "^26.6.2" - pretty-format "^26.6.2" - -jest-environment-jsdom@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" - integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - jsdom "^16.4.0" - -jest-environment-node@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" - integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== - dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - -jest-get-type@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" - integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== - -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" - integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== - -jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== - -jest-haste-map@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" - integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== - dependencies: - "@jest/types" "^26.6.2" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^26.0.0" - jest-serializer "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" - micromatch "^4.0.2" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.1.2" - -jest-jasmine2@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" - integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^26.6.2" - is-generator-fn "^2.0.0" - jest-each "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - pretty-format "^26.6.2" - throat "^5.0.0" - -jest-leak-detector@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" - integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== - dependencies: - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-matcher-utils@^26.6.0, jest-matcher-utils@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" - integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== - dependencies: - chalk "^4.0.0" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-matcher-utils@^27.0.0: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" - integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== - dependencies: - chalk "^4.0.0" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-message-util@^26.6.0, jest-message-util@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" - integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.6.2" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.2" - pretty-format "^26.6.2" - slash "^3.0.0" - stack-utils "^2.0.2" - -jest-mock@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" - integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - -jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - -jest-regex-util@^26.0.0: - version "26.0.0" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" - integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== - -jest-resolve-dependencies@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" - integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== - dependencies: - "@jest/types" "^26.6.2" - jest-regex-util "^26.0.0" - jest-snapshot "^26.6.2" - -jest-resolve@26.6.0: - version "26.6.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.0.tgz#070fe7159af87b03e50f52ea5e17ee95bbee40e1" - integrity sha512-tRAz2bwraHufNp+CCmAD8ciyCpXCs1NQxB5EJAmtCFy6BN81loFEGWKzYu26Y62lAJJe4X4jg36Kf+NsQyiStQ== - dependencies: - "@jest/types" "^26.6.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.2" - jest-util "^26.6.0" - read-pkg-up "^7.0.1" - resolve "^1.17.0" - slash "^3.0.0" - -jest-resolve@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" - integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== - dependencies: - "@jest/types" "^26.6.2" - chalk "^4.0.0" - graceful-fs "^4.2.4" - jest-pnp-resolver "^1.2.2" - jest-util "^26.6.2" - read-pkg-up "^7.0.1" - resolve "^1.18.1" - slash "^3.0.0" - -jest-runner@^26.6.0, jest-runner@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" - integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== - dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.7.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-docblock "^26.0.0" - jest-haste-map "^26.6.2" - jest-leak-detector "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - jest-runtime "^26.6.3" - jest-util "^26.6.2" - jest-worker "^26.6.2" - source-map-support "^0.5.6" - throat "^5.0.0" - -jest-runtime@^26.6.0, jest-runtime@^26.6.3: - version "26.6.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" - integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== - dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/globals" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - cjs-module-lexer "^0.6.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - slash "^3.0.0" - strip-bom "^4.0.0" - yargs "^15.4.1" - -jest-serializer@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" - integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.4" - -jest-snapshot@^26.6.0, jest-snapshot@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" - integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== - dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^26.6.2" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.0.0" - chalk "^4.0.0" - expect "^26.6.2" - graceful-fs "^4.2.4" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - jest-haste-map "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - natural-compare "^1.4.0" - pretty-format "^26.6.2" - semver "^7.3.2" - -jest-util@^26.6.0, jest-util@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" - integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== - dependencies: - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^2.0.0" - micromatch "^4.0.2" - -jest-validate@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" - integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== - dependencies: - "@jest/types" "^26.6.2" - camelcase "^6.0.0" - chalk "^4.0.0" - jest-get-type "^26.3.0" - leven "^3.1.0" - pretty-format "^26.6.2" - -jest-watch-typeahead@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.6.1.tgz#45221b86bb6710b7e97baaa1640ae24a07785e63" - integrity sha512-ITVnHhj3Jd/QkqQcTqZfRgjfyRhDFM/auzgVo2RKvSwi18YMvh0WvXDJFoFED6c7jd/5jxtu4kSOb9PTu2cPVg== - dependencies: - ansi-escapes "^4.3.1" - chalk "^4.0.0" - jest-regex-util "^26.0.0" - jest-watcher "^26.3.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - -jest-watcher@^26.3.0, jest-watcher@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" - integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== - dependencies: - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^26.6.2" - string-length "^4.0.1" - -jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== - dependencies: - merge-stream "^2.0.0" - supports-color "^6.1.0" - -jest-worker@^26.5.0, jest-worker@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest-worker@^27.3.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@26.6.0: - version "26.6.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.0.tgz#546b25a1d8c888569dbbe93cae131748086a4a25" - integrity sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA== - dependencies: - "@jest/core" "^26.6.0" - import-local "^3.0.2" - jest-cli "^26.6.0" - -js-sha256@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/js-sha256/-/js-sha256-0.9.0.tgz#0b89ac166583e91ef9123644bd3c5334ce9d0966" - integrity sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA== - -js-sha3@0.5.7, js-sha3@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" - integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= - -js-sha3@0.8.0, js-sha3@^0.8.0, js-sha3@~0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - -js-yaml@3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" - integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== - dependencies: - argparse "^2.0.1" - -js-yaml@4.1.0, js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= - -jsdom@^16.4.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.6" - xml-name-validator "^3.0.0" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= - -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-rpc-engine@6.1.0, json-rpc-engine@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz#bf5ff7d029e1c1bf20cb6c0e9f348dcd8be5a393" - integrity sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ== - dependencies: - "@metamask/safe-event-emitter" "^2.0.0" - eth-rpc-errors "^4.0.2" - -json-rpc-engine@^3.4.0, json-rpc-engine@^3.6.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-3.8.0.tgz#9d4ff447241792e1d0a232f6ef927302bb0c62a9" - integrity sha512-6QNcvm2gFuuK4TKU1uwfH0Qd/cOSb9c1lls0gbnIhciktIUQJwz6NQNAW4B1KiGPenv7IKu97V222Yo1bNhGuA== - dependencies: - async "^2.0.1" - babel-preset-env "^1.7.0" - babelify "^7.3.0" - json-rpc-error "^2.0.0" - promise-to-callback "^1.0.0" - safe-event-emitter "^1.0.1" - -json-rpc-engine@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz#75758609d849e1dba1e09021ae473f3ab63161e5" - integrity sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g== - dependencies: - eth-rpc-errors "^3.0.0" - safe-event-emitter "^1.0.1" - -json-rpc-error@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/json-rpc-error/-/json-rpc-error-2.0.0.tgz#a7af9c202838b5e905c7250e547f1aff77258a02" - integrity sha1-p6+cICg4tekFxyUOVH8a/3cligI= - dependencies: - inherits "^2.0.1" - -json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" - integrity sha1-uknZat7RRE27jaPSA3SKy7zeyMg= - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-schema@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -json-text-sequence@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/json-text-sequence/-/json-text-sequence-0.1.1.tgz#a72f217dc4afc4629fff5feb304dc1bd51a2f3d2" - integrity sha1-py8hfcSvxGKf/1/rME3BvVGi89I= - dependencies: - delimit-stream "0.1.0" - -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.2: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= - -jsonparse@^1.2.0, jsonparse@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" - integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= - -jsonschema@^1.2.4: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.0.tgz#1afa34c4bc22190d8e42271ec17ac8b3404f87b2" - integrity sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw== - -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" - integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== - dependencies: - array-includes "^3.1.3" - object.assign "^4.1.2" - -just-kebab-case@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/just-kebab-case/-/just-kebab-case-1.1.0.tgz#ebe854fde84b0afa4e597fcd870b12eb3c026755" - integrity sha512-QkuwuBMQ9BQHMUEkAtIA4INLrkmnnveqlFB1oFi09gbU0wBdZo6tTnyxNWMR84zHxBuwK7GLAwqN8nrvVxOLTA== - -just-map-keys@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/just-map-keys/-/just-map-keys-1.2.1.tgz#ef6e16133b7d34329962dfae9101d581abb1b143" - integrity sha512-Dmyz1Cy2SWM+PpqDPB1kdDglyexdzMthnAsvOIE9w4OPj8NDRuY1mh20x/JfG5w6fCGw9F0WmcofJhYZ4MiuyA== - -keccak@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" - integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -keccak@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-2.1.0.tgz#734ea53f2edcfd0f42cdb8d5f4c358fef052752b" - integrity sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q== - dependencies: - bindings "^1.5.0" - inherits "^2.0.4" - nan "^2.14.0" - safe-buffer "^5.2.0" - -keccak@^3.0.0, keccak@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" - integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - readable-stream "^3.6.0" - -keypair@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/keypair/-/keypair-1.0.4.tgz#a749a45f388593f3950f18b3757d32a93bd8ce83" - integrity sha512-zwhgOhhniaL7oxMgUMKKw5219PWWABMO+dgMnzJOQ2/5L3XJtTJGhW2PEXlxXj9zaccdReZJZ83+4NPhVfNVDg== - -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - -keyvaluestorage-interface@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" - integrity sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g== - -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -klaw-sync@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" - integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== - dependencies: - graceful-fs "^4.1.11" - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= - optionalDependencies: - graceful-fs "^4.1.9" - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -klona@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" - integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ== - -ky-universal@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/ky-universal/-/ky-universal-0.2.2.tgz#7a36e1a75641a98f878157463513965f799f5bfe" - integrity sha512-fb32o/fKy/ux2ALWa9HU2hvGtfOq7/vn2nH0FpVE+jwNzyTeORlAbj3Fiw+WLMbUlmVqZIWupnLZ2USHvqwZHw== - dependencies: - abort-controller "^3.0.0" - node-fetch "^2.3.0" - -ky@^0.11.2: - version "0.11.2" - resolved "https://registry.yarnpkg.com/ky/-/ky-0.11.2.tgz#4ffe6621d9d9ab61bf0f5500542e3a96d1ba0815" - integrity sha512-5Aou5BWue5/mkPqIRqzSWW+0Hkl403pr/2AIrCKYw7cVl/Xoe8Xe4KLBO0PRjbz7GnRe1/8wW1KhqQNFFE7/GQ== - -language-subtag-registry@~0.3.2: - version "0.3.21" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" - integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== - -language-tags@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" - integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= - dependencies: - language-subtag-registry "~0.3.2" - -last-call-webpack-plugin@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" - integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== - dependencies: - lodash "^4.17.5" - webpack-sources "^1.1.0" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= - dependencies: - invert-kv "^1.0.0" - -lerna@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-4.0.0.tgz#b139d685d50ea0ca1be87713a7c2f44a5b678e9e" - integrity sha512-DD/i1znurfOmNJb0OBw66NmNqiM8kF6uIrzrJ0wGE3VNdzeOhz9ziWLYiRaZDGGwgbcjOo6eIfcx9O5Qynz+kg== - dependencies: - "@lerna/add" "4.0.0" - "@lerna/bootstrap" "4.0.0" - "@lerna/changed" "4.0.0" - "@lerna/clean" "4.0.0" - "@lerna/cli" "4.0.0" - "@lerna/create" "4.0.0" - "@lerna/diff" "4.0.0" - "@lerna/exec" "4.0.0" - "@lerna/import" "4.0.0" - "@lerna/info" "4.0.0" - "@lerna/init" "4.0.0" - "@lerna/link" "4.0.0" - "@lerna/list" "4.0.0" - "@lerna/publish" "4.0.0" - "@lerna/run" "4.0.0" - "@lerna/version" "4.0.0" - import-local "^3.0.2" - npmlog "^4.1.2" - -level-codec@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc" - integrity sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ== - dependencies: - buffer "^5.6.0" - -level-codec@~7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-7.0.1.tgz#341f22f907ce0f16763f24bddd681e395a0fb8a7" - integrity sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ== - -level-concat-iterator@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz#1d1009cf108340252cb38c51f9727311193e6263" - integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw== - -level-errors@^1.0.3: - version "1.1.2" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.1.2.tgz#4399c2f3d3ab87d0625f7e3676e2d807deff404d" - integrity sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w== - dependencies: - errno "~0.1.1" - -level-errors@^2.0.0, level-errors@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.1.tgz#2132a677bf4e679ce029f517c2f17432800c05c8" - integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw== - dependencies: - errno "~0.1.1" - -level-errors@~1.0.3: - version "1.0.5" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.0.5.tgz#83dbfb12f0b8a2516bdc9a31c4876038e227b859" - integrity sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig== - dependencies: - errno "~0.1.1" - -level-iterator-stream@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-2.0.3.tgz#ccfff7c046dcf47955ae9a86f46dfa06a31688b4" - integrity sha512-I6Heg70nfF+e5Y3/qfthJFexhRw/Gi3bIymCoXAlijZdAcLaPuWSJs3KXyTYf23ID6g0o2QF62Yh+grOXY3Rig== - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.5" - xtend "^4.0.0" - -level-iterator-stream@~1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed" - integrity sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0= - dependencies: - inherits "^2.0.1" - level-errors "^1.0.3" - readable-stream "^1.0.33" - xtend "^4.0.0" - -level-iterator-stream@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz#2c98a4f8820d87cdacab3132506815419077c730" - integrity sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g== - dependencies: - inherits "^2.0.1" - readable-stream "^2.3.6" - xtend "^4.0.0" - -level-iterator-stream@~4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz#7ceba69b713b0d7e22fcc0d1f128ccdc8a24f79c" - integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q== - dependencies: - inherits "^2.0.4" - readable-stream "^3.4.0" - xtend "^4.0.2" - -level-mem@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/level-mem/-/level-mem-3.0.1.tgz#7ce8cf256eac40f716eb6489654726247f5a89e5" - integrity sha512-LbtfK9+3Ug1UmvvhR2DqLqXiPW1OJ5jEh0a3m9ZgAipiwpSxGj/qaVVy54RG5vAQN1nCuXqjvprCuKSCxcJHBg== - dependencies: - level-packager "~4.0.0" - memdown "~3.0.0" - -level-mem@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/level-mem/-/level-mem-5.0.1.tgz#c345126b74f5b8aa376dc77d36813a177ef8251d" - integrity sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg== - dependencies: - level-packager "^5.0.3" - memdown "^5.0.0" - -level-packager@^5.0.3: - version "5.1.1" - resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-5.1.1.tgz#323ec842d6babe7336f70299c14df2e329c18939" - integrity sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ== - dependencies: - encoding-down "^6.3.0" - levelup "^4.3.2" - -level-packager@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-4.0.1.tgz#7e7d3016af005be0869bc5fa8de93d2a7f56ffe6" - integrity sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q== - dependencies: - encoding-down "~5.0.0" - levelup "^3.0.0" - -level-post@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/level-post/-/level-post-1.0.7.tgz#19ccca9441a7cc527879a0635000f06d5e8f27d0" - integrity sha512-PWYqG4Q00asOrLhX7BejSajByB4EmG2GaKHfj3h5UmmZ2duciXLPGYWIjBzLECFWUGOZWlm5B20h/n3Gs3HKew== - dependencies: - ltgt "^2.1.2" - -level-sublevel@6.6.4: - version "6.6.4" - resolved "https://registry.yarnpkg.com/level-sublevel/-/level-sublevel-6.6.4.tgz#f7844ae893919cd9d69ae19d7159499afd5352ba" - integrity sha512-pcCrTUOiO48+Kp6F1+UAzF/OtWqLcQVTVF39HLdZ3RO8XBoXt+XVPKZO1vVr1aUoxHZA9OtD2e1v7G+3S5KFDA== - dependencies: - bytewise "~1.1.0" - level-codec "^9.0.0" - level-errors "^2.0.0" - level-iterator-stream "^2.0.3" - ltgt "~2.1.1" - pull-defer "^0.2.2" - pull-level "^2.0.3" - pull-stream "^3.6.8" - typewiselite "~1.0.0" - xtend "~4.0.0" - -level-supports@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-1.0.1.tgz#2f530a596834c7301622521988e2c36bb77d122d" - integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg== - dependencies: - xtend "^4.0.2" - -level-ws@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-0.0.0.tgz#372e512177924a00424b0b43aef2bb42496d228b" - integrity sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos= - dependencies: - readable-stream "~1.0.15" - xtend "~2.1.1" - -level-ws@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-1.0.0.tgz#19a22d2d4ac57b18cc7c6ecc4bd23d899d8f603b" - integrity sha512-RXEfCmkd6WWFlArh3X8ONvQPm8jNpfA0s/36M4QzLqrLEIt1iJE9WBHLZ5vZJK6haMjJPJGJCQWfjMNnRcq/9Q== - dependencies: - inherits "^2.0.3" - readable-stream "^2.2.8" - xtend "^4.0.1" - -level-ws@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-2.0.0.tgz#207a07bcd0164a0ec5d62c304b4615c54436d339" - integrity sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA== - dependencies: - inherits "^2.0.3" - readable-stream "^3.1.0" - xtend "^4.0.1" - -levelup@3.1.1, levelup@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-3.1.1.tgz#c2c0b3be2b4dc316647c53b42e2f559e232d2189" - integrity sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg== - dependencies: - deferred-leveldown "~4.0.0" - level-errors "~2.0.0" - level-iterator-stream "~3.0.0" - xtend "~4.0.0" - -levelup@^1.2.1: - version "1.3.9" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.9.tgz#2dbcae845b2bb2b6bea84df334c475533bbd82ab" - integrity sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ== - dependencies: - deferred-leveldown "~1.2.1" - level-codec "~7.0.0" - level-errors "~1.0.3" - level-iterator-stream "~1.3.0" - prr "~1.0.1" - semver "~5.4.1" - xtend "~4.0.0" - -levelup@^4.3.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-4.4.0.tgz#f89da3a228c38deb49c48f88a70fb71f01cafed6" - integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ== - 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" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -libnpmaccess@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-4.0.3.tgz#dfb0e5b0a53c315a2610d300e46b4ddeb66e7eec" - integrity sha512-sPeTSNImksm8O2b6/pf3ikv4N567ERYEpeKRPSmqlNt1dTZbvgpJIzg5vAhXHpw2ISBsELFRelk0jEahj1c6nQ== - dependencies: - aproba "^2.0.0" - minipass "^3.1.1" - npm-package-arg "^8.1.2" - npm-registry-fetch "^11.0.0" - -libnpmpublish@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-4.0.2.tgz#be77e8bf5956131bcb45e3caa6b96a842dec0794" - integrity sha512-+AD7A2zbVeGRCFI2aO//oUmapCwy7GHqPXFJh3qpToSRNU+tXKJ2YFUgjt04LPPAf2dlEH95s6EhIHM1J7bmOw== - dependencies: - normalize-package-data "^3.0.2" - npm-package-arg "^8.1.2" - npm-registry-fetch "^11.0.0" - semver "^7.1.3" - ssri "^8.0.1" - -libp2p-crypto-secp256k1@~0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/libp2p-crypto-secp256k1/-/libp2p-crypto-secp256k1-0.3.1.tgz#4cbeb857f5cfe5fefb1253e6b2994420c0ca166e" - integrity sha512-evrfK/CeUSd/lcELUdDruyPBvxDmLairth75S32OLl3H+++2m2fV24JEtxzdFS9JH3xEFw0h6JFO8DBa1bP9dA== - dependencies: - async "^2.6.2" - bs58 "^4.0.1" - multihashing-async "~0.6.0" - nodeify "^1.0.1" - safe-buffer "^5.1.2" - secp256k1 "^3.6.2" - -libp2p-crypto@~0.16.1: - version "0.16.4" - resolved "https://registry.yarnpkg.com/libp2p-crypto/-/libp2p-crypto-0.16.4.tgz#fb1a4ba39d56789303947784b5b0d6cefce12fdc" - integrity sha512-II8HxKc9jbmQp34pprlluNxsBCWJDjHRPYJzuRy7ragztNip9Zb7uJ4lCje6gGzz4DNAcHkAUn+GqCIK1592iA== - dependencies: - asmcrypto.js "^2.3.2" - asn1.js "^5.0.1" - async "^2.6.1" - bn.js "^4.11.8" - browserify-aes "^1.2.0" - bs58 "^4.0.1" - iso-random-stream "^1.1.0" - keypair "^1.0.1" - libp2p-crypto-secp256k1 "~0.3.0" - multihashing-async "~0.5.1" - node-forge "^0.10.0" - pem-jwk "^2.0.0" - protons "^1.0.1" - rsa-pem-to-jwk "^1.1.3" - tweetnacl "^1.0.0" - ursa-optional "~0.10.0" - -lilconfig@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082" - integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA== - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -lint-staged@^12.3.7: - version "12.3.7" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.3.7.tgz#ad0e2014302f704f9cf2c0ebdb97ac63d0f17be0" - integrity sha512-/S4D726e2GIsDVWIk1XGvheCaDm1SJRQp8efamZFWJxQMVEbOwSysp7xb49Oo73KYCdy97mIWinhlxcoNqIfIQ== - dependencies: - cli-truncate "^3.1.0" - colorette "^2.0.16" - commander "^8.3.0" - debug "^4.3.3" - execa "^5.1.1" - lilconfig "2.0.4" - listr2 "^4.0.1" - micromatch "^4.0.4" - normalize-path "^3.0.0" - object-inspect "^1.12.0" - pidtree "^0.5.0" - string-argv "^0.3.1" - supports-color "^9.2.1" - yaml "^1.10.2" - -listr2@^4.0.1: - version "4.0.5" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.5.tgz#9dcc50221583e8b4c71c43f9c7dfd0ef546b75d5" - integrity sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA== - dependencies: - cli-truncate "^2.1.0" - colorette "^2.0.16" - log-update "^4.0.0" - p-map "^4.0.0" - rfdc "^1.3.0" - rxjs "^7.5.5" - through "^2.3.8" - wrap-ansi "^7.0.0" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -load-json-file@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" - integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== - dependencies: - graceful-fs "^4.1.15" - parse-json "^5.0.0" - strip-bom "^4.0.0" - type-fest "^0.6.0" - -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -loader-utils@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" - integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^1.0.1" - -loader-utils@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" - integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= - -lodash.assign@^4.0.3, lodash.assign@^4.0.6: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - -lodash.ismatch@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" - integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= - -lodash.kebabcase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" - integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= - -lodash.lowercase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.lowercase/-/lodash.lowercase-4.3.0.tgz#46515aced4acb0b7093133333af068e4c3b14e9d" - integrity sha1-RlFaztSssLcJMTMzOvBo5MOxTp0= - -lodash.lowerfirst@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/lodash.lowerfirst/-/lodash.lowerfirst-4.3.1.tgz#de3c7b12e02c6524a0059c2f6cb7c5c52655a13d" - integrity sha1-3jx7EuAsZSSgBZwvbLfFxSZVoT0= - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.mergewith@4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" - integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== - -lodash.pad@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" - integrity sha1-QzCUmoM6fI2iLMIPaibE1Z3runA= - -lodash.padend@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padend/-/lodash.padend-4.6.1.tgz#53ccba047d06e158d311f45da625f4e49e6f166e" - integrity sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4= - -lodash.padstart@^4.6.1: - version "4.6.1" - resolved "https://registry.yarnpkg.com/lodash.padstart/-/lodash.padstart-4.6.1.tgz#d2e3eebff0d9d39ad50f5cbd1b52a7bce6bb611b" - integrity sha1-0uPuv/DZ05rVD1y9G1KnvOa7YRs= - -lodash.repeat@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/lodash.repeat/-/lodash.repeat-4.1.0.tgz#fc7de8131d8c8ac07e4b49f74ffe829d1f2bec44" - integrity sha1-/H3oEx2MisB+S0n3T/6CnR8r7EQ= - -lodash.snakecase@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" - integrity sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40= - -lodash.startcase@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" - integrity sha1-lDbjTtJgk+1/+uGTYUQ1CRXZrdg= - -lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - -lodash.trim@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.trim/-/lodash.trim-4.5.1.tgz#36425e7ee90be4aa5e27bcebb85b7d11ea47aa57" - integrity sha1-NkJefukL5KpeJ7zruFt9EepHqlc= - -lodash.trimend@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.trimend/-/lodash.trimend-4.5.1.tgz#12804437286b98cad8996b79414e11300114082f" - integrity sha1-EoBENyhrmMrYmWt5QU4RMAEUCC8= - -lodash.trimstart@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/lodash.trimstart/-/lodash.trimstart-4.5.1.tgz#8ff4dec532d82486af59573c39445914e944a7f1" - integrity sha1-j/TexTLYJIavWVc8OURZFOlEp/E= - -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -lodash.uppercase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.uppercase/-/lodash.uppercase-4.3.0.tgz#c404abfd1469f93931f9bb24cf6cc7d57059bc73" - integrity sha1-xASr/RRp+Tkx+bskz2zH1XBZvHM= - -lodash.upperfirst@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" - integrity sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984= - -lodash@4.17.20: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== - -"lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.7.0: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@3.0.0, log-symbols@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== - dependencies: - chalk "^2.4.2" - -log-symbols@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" - integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== - dependencies: - chalk "^4.0.0" - -log-symbols@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -log-update@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== - dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" - -loglevel@^1.6.8: - version "1.8.0" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.0.tgz#e7ec73a57e1e7b419cb6c6ac06bf050b67356114" - integrity sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA== - -logplease@^1.2.15: - version "1.2.15" - resolved "https://registry.yarnpkg.com/logplease/-/logplease-1.2.15.tgz#3da442e93751a5992cc19010a826b08d0293c48a" - integrity sha512-jLlHnlsPSJjpwUfcNyUxXCl33AYg2cHhIf9QhGL2T4iPT0XPB+xP1LRKFPgIg1M/sg9kAJvy94w9CzBNrfnstA== - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -looper@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/looper/-/looper-2.0.0.tgz#66cd0c774af3d4fedac53794f742db56da8f09ec" - integrity sha1-Zs0Md0rz1P7axTeU90LbVtqPCew= - -looper@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/looper/-/looper-3.0.0.tgz#2efa54c3b1cbaba9b94aee2e5914b0be57fbb749" - integrity sha1-LvpUw7HLq6m5Su4uWRSwvlf7t0k= - -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -loupe@^2.3.1: - version "2.3.4" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.4.tgz#7e0b9bffc76f148f9be769cb1321d3dcf3cb25f3" - integrity sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ== - dependencies: - get-func-name "^2.0.0" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lru-cache@5.1.1, lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" - integrity sha1-cXibO39Tmb7IVl3aOKow0qCX7+4= - dependencies: - pseudomap "^1.0.1" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -lru_map@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" - integrity sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0= - -ltgt@^2.1.2, ltgt@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" - integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU= - -ltgt@~2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.1.3.tgz#10851a06d9964b971178441c23c9e52698eece34" - integrity sha1-EIUaBtmWS5cReEQcI8nlJpjuzjQ= - -lz-string@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" - integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= - -mafmt@^6.0.2: - version "6.0.10" - resolved "https://registry.yarnpkg.com/mafmt/-/mafmt-6.0.10.tgz#3ad251c78f14f8164e66f70fd3265662da41113a" - integrity sha512-FjHDnew6dW9lUu3eYwP0FvvJl9uvNbqfoJM+c1WJcSyutNEIlyu6v3f/rlPnD1cnmue38IjuHlhBdIh3btAiyw== - dependencies: - multiaddr "^6.1.0" - -mafmt@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/mafmt/-/mafmt-7.1.0.tgz#4126f6d0eded070ace7dbbb6fb04977412d380b5" - integrity sha512-vpeo9S+hepT3k2h5iFxzEHvvR0GPBx9uKaErmnRzYNcaKb03DgOArjEMlgG4a9LcuZZ89a3I8xbeto487n26eA== - dependencies: - multiaddr "^7.3.0" - -magic-string@^0.25.0, magic-string@^0.25.7: - version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== - dependencies: - sourcemap-codec "^1.4.8" - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.0, make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -make-fetch-happen@^8.0.9: - version "8.0.14" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz#aaba73ae0ab5586ad8eaa68bd83332669393e222" - integrity sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ== - dependencies: - agentkeepalive "^4.1.3" - cacache "^15.0.5" - 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" - promise-retry "^2.0.1" - socks-proxy-agent "^5.0.0" - ssri "^8.0.0" - -make-fetch-happen@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz#53085a09e7971433e6765f7971bf63f4e05cb968" - integrity sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg== - 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" - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= - -map-obj@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" - integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -markdown-table@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" - integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== - -mcl-wasm@^0.7.1: - version "0.7.9" - resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f" - integrity sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ== - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -mdn-data@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" - integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -memdown@^1.0.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" - integrity sha1-tOThkhdGZP+65BNhqlAPMRnv4hU= - dependencies: - abstract-leveldown "~2.7.1" - functional-red-black-tree "^1.0.1" - immediate "^3.2.3" - inherits "~2.0.1" - ltgt "~2.2.0" - safe-buffer "~5.1.1" - -memdown@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-5.1.0.tgz#608e91a9f10f37f5b5fe767667a8674129a833cb" - integrity sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw== - 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" - -memdown@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-3.0.0.tgz#93aca055d743b20efc37492e9e399784f2958309" - integrity sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA== - dependencies: - abstract-leveldown "~5.0.0" - functional-red-black-tree "~1.0.1" - immediate "~3.2.3" - inherits "~2.0.1" - ltgt "~2.2.0" - safe-buffer "~5.1.1" - -memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memorystream@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= - -meow@^8.0.0: - version "8.1.2" - resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" - integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== - dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -merkle-patricia-tree@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-3.0.0.tgz#448d85415565df72febc33ca362b8b614f5a58f8" - integrity sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ== - dependencies: - async "^2.6.1" - ethereumjs-util "^5.2.0" - level-mem "^3.0.1" - level-ws "^1.0.0" - readable-stream "^3.0.6" - rlp "^2.0.0" - semaphore ">=1.0.1" - -merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a" - integrity sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g== - dependencies: - async "^1.4.2" - ethereumjs-util "^5.0.0" - level-ws "0.0.0" - levelup "^1.2.1" - memdown "^1.0.0" - readable-stream "^2.0.0" - rlp "^2.0.0" - semaphore ">=1.0.1" - -merkle-patricia-tree@^4.2.2, merkle-patricia-tree@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-4.2.4.tgz#ff988d045e2bf3dfa2239f7fabe2d59618d57413" - integrity sha512-eHbf/BG6eGNsqqfbLED9rIqbsF4+sykEaBn6OLNs71tjclbMcMOk1tEPmJKcNcNCLkvbpY/lwyOlizWsqPNo8w== - 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" - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -microevent.ts@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" - integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== - -micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@^2.1.16, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.4.4: - version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= - dependencies: - dom-walk "^0.1.0" - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -mini-css-extract-plugin@0.11.3: - version "0.11.3" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz#15b0910a7f32e62ffde4a7430cfefbd700724ea6" - integrity sha512-n9BA8LonkOkW1/zn+IbLPQmovsL0wMb9yx75fMJQZf2X1Zoec9yTZtyMePcyu19wPkmFbzZZA6fLTotpFhQsOA== - dependencies: - loader-utils "^1.1.0" - normalize-url "1.9.1" - schema-utils "^1.0.0" - webpack-sources "^1.1.0" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimatch@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" - integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== - dependencies: - brace-expansion "^1.1.7" - -minimist-options@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" - integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" - -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.5: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -minipass-collect@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" - integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== - dependencies: - minipass "^3.0.0" - -minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.4.1.tgz#d75e0091daac1b0ffd7e9d41629faff7d0c1f1b6" - integrity sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw== - dependencies: - minipass "^3.1.0" - minipass-sized "^1.0.3" - minizlib "^2.0.0" - optionalDependencies: - encoding "^0.1.12" - -minipass-flush@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" - integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== - dependencies: - minipass "^3.0.0" - -minipass-json-stream@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" - integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== - dependencies: - jsonparse "^1.3.1" - minipass "^3.0.0" - -minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" - integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== - dependencies: - minipass "^3.0.0" - -minipass-sized@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" - integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== - dependencies: - minipass "^3.0.0" - -minipass@^2.6.0, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: - version "3.1.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" - integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== - dependencies: - yallist "^4.0.0" - -minizlib@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - -minizlib@^2.0.0, minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp-infer-owner@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" - integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== - dependencies: - chownr "^2.0.0" - infer-owner "^1.0.4" - mkdirp "^1.0.3" - -mkdirp-promise@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" - integrity sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE= - dependencies: - mkdirp "*" - -mkdirp@*, mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mkdirp@0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mkdirp@0.5.x, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mnemonist@^0.38.0: - version "0.38.5" - resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" - integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== - dependencies: - obliterator "^2.0.0" - -mocha@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.2.0.tgz#01cc227b00d875ab1eed03a75106689cfed5a604" - integrity sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ== - 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" - -mocha@^8.2.1: - version "8.4.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.4.0.tgz#677be88bf15980a3cae03a73e10a0fc3997f0cff" - integrity sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ== - dependencies: - "@ungap/promise-all-settled" "1.1.2" - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.1" - debug "4.3.1" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.1.6" - growl "1.10.5" - he "1.2.0" - js-yaml "4.0.0" - log-symbols "4.0.0" - minimatch "3.0.4" - ms "2.1.3" - nanoid "3.1.20" - serialize-javascript "5.0.1" - strip-json-comments "3.1.1" - supports-color "8.1.1" - which "2.0.2" - wide-align "1.1.3" - workerpool "6.1.0" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" - -mocha@^9.2.0: - version "9.2.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" - integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== - dependencies: - "@ungap/promise-all-settled" "1.1.2" - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.3" - debug "4.3.3" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.2.0" - growl "1.10.5" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "4.2.1" - ms "2.1.3" - nanoid "3.3.1" - serialize-javascript "6.0.0" - strip-json-comments "3.1.1" - supports-color "8.1.1" - which "2.0.2" - workerpool "6.2.0" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" - -mock-fs@^4.1.0: - version "4.14.0" - resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" - integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== - -modify-values@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" - integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== - -module-alias@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/module-alias/-/module-alias-2.2.2.tgz#151cdcecc24e25739ff0aa6e51e1c5716974c0e0" - integrity sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q== - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3, ms@^2.0.0, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multiaddr@^6.0.3, multiaddr@^6.0.6, multiaddr@^6.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-6.1.1.tgz#9aae57b3e399089b9896d9455afa8f6b117dff06" - integrity sha512-Q1Ika0F9MNhMtCs62Ue+GWIJtRFEhZ3Xz8wH7/MZDVZTWhil1/H2bEGN02kUees3hkI3q1oHSjmXYDM0gxaFjQ== - dependencies: - bs58 "^4.0.1" - class-is "^1.1.0" - hi-base32 "~0.5.0" - ip "^1.1.5" - is-ip "^2.0.0" - varint "^5.0.0" - -multiaddr@^7.2.1, multiaddr@^7.3.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-7.5.0.tgz#976c88e256e512263445ab03b3b68c003d5f485e" - integrity sha512-GvhHsIGDULh06jyb6ev+VfREH9evJCFIRnh3jUt9iEZ6XDbyoisZRFEI9bMvK/AiR6y66y6P+eoBw9mBYMhMvw== - dependencies: - buffer "^5.5.0" - cids "~0.8.0" - class-is "^1.1.0" - is-ip "^3.1.0" - multibase "^0.7.0" - varint "^5.0.0" - -multibase@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" - integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multibase@^1.0.0, multibase@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-1.0.1.tgz#4adbe1de0be8a1ab0274328b653c3f1903476724" - integrity sha512-KcCxpBVY8fdVKu4dJMAahq4F/2Z/9xqEjIiR7PiMe7LRGeorFn2NLmicN6nLBCqQvft6MG2Lc9X5P0IdyvnxEw== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multibase@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" - integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -multicodec@^0.5.5, multicodec@~0.5.1: - version "0.5.7" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" - integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== - dependencies: - varint "^5.0.0" - -multicodec@^1.0.0, multicodec@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" - integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== - dependencies: - buffer "^5.6.0" - varint "^5.0.0" - -multihashes@^0.4.15, multihashes@~0.4.13, multihashes@~0.4.14, multihashes@~0.4.15: - version "0.4.21" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" - integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== - dependencies: - buffer "^5.5.0" - multibase "^0.7.0" - varint "^5.0.0" - -multihashes@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-1.0.1.tgz#a89415d68283cf6287c6e219e304e75ce7fb73fe" - integrity sha512-S27Tepg4i8atNiFaU5ZOm3+gl3KQlUanLs/jWcBxQHFttgq+5x1OgbQmf2d8axJ/48zYGBd/wT9d723USMFduw== - dependencies: - buffer "^5.6.0" - multibase "^1.0.1" - varint "^5.0.0" - -multihashing-async@~0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.5.2.tgz#4af40e0dde2f1dbb12a7c6b265181437ac26b9de" - integrity sha512-mmyG6M/FKxrpBh9xQDUvuJ7BbqT93ZeEeH5X6LeMYKoYshYLr9BDdCsvDtZvn+Egf+/Xi+aOznrWL4vp3s+p0Q== - dependencies: - blakejs "^1.1.0" - js-sha3 "~0.8.0" - multihashes "~0.4.13" - murmurhash3js "^3.0.1" - nodeify "^1.0.1" - -multihashing-async@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.6.0.tgz#c1fc6696a624b9bf39b160b0c4c4e7ba3f394453" - integrity sha512-Qv8pgg99Lewc191A5nlXy0bSd2amfqlafNJZmarU6Sj7MZVjpR94SCxQjf4DwPtgWZkiLqsjUQBXA2RSq+hYyA== - dependencies: - blakejs "^1.1.0" - js-sha3 "~0.8.0" - multihashes "~0.4.13" - murmurhash3js "^3.0.1" - nodeify "^1.0.1" - -multihashing-async@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.7.0.tgz#3234fb98295be84386b85bfd20377d3e5be20d6b" - integrity sha512-SCbfl3f+DzJh+/5piukga9ofIOxwfT05t8R4jfzZIJ88YE9zU9+l3K2X+XB19MYyxqvyK9UJRNWbmQpZqQlbRA== - dependencies: - blakejs "^1.1.0" - buffer "^5.2.1" - err-code "^1.1.2" - js-sha3 "~0.8.0" - multihashes "~0.4.13" - murmurhash3js-revisited "^3.0.0" - -multihashing-async@~0.8.0: - version "0.8.2" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-0.8.2.tgz#3d5da05df27d83be923f6d04143a0954ff87f27f" - integrity sha512-2lKa1autuCy8x7KIEj9aVNbAb3aIMRFYIwN7mq/zD4pxgNIVgGlm+f6GKY4880EOF2Y3GktHYssRy7TAJQ2DyQ== - dependencies: - blakejs "^1.1.0" - buffer "^5.4.3" - err-code "^2.0.0" - js-sha3 "^0.8.0" - multihashes "^1.0.1" - murmurhash3js-revisited "^3.0.0" - -multimatch@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" - integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== - dependencies: - "@types/minimatch" "^3.0.3" - array-differ "^3.0.0" - array-union "^2.1.0" - arrify "^2.0.1" - minimatch "^3.0.4" - -murmurhash3js-revisited@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" - integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== - -murmurhash3js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/murmurhash3js/-/murmurhash3js-3.0.1.tgz#3e983e5b47c2a06f43a713174e7e435ca044b998" - integrity sha1-Ppg+W0fCoG9DpxMXTn5DXKBEuZg= - -mustache@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" - integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - -mute-stream@0.0.8, mute-stream@~0.0.4: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -nan@^2.12.1, nan@^2.14.0, nan@^2.14.2, nan@^2.2.1: - version "2.15.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" - integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== - -nano-json-stream-parser@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" - integrity sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18= - -nanoassert@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/nanoassert/-/nanoassert-2.0.0.tgz#a05f86de6c7a51618038a620f88878ed1e490c09" - integrity sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA== - -nanoid@3.1.20: - version "3.1.20" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" - integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== - -nanoid@3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" - integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== - -nanoid@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.2.tgz#c89622fafb4381cd221421c69ec58547a1eec557" - integrity sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -native-url@^0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae" - integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA== - dependencies: - querystring "^0.2.0" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -"ndjson@github:hugomrdias/ndjson#feat/readable-stream3": - version "1.5.0" - resolved "https://codeload.github.com/hugomrdias/ndjson/tar.gz/4db16da6b42e5b39bf300c3a7cde62abb3fa3a11" - dependencies: - json-stringify-safe "^5.0.1" - minimist "^1.2.0" - split2 "^3.1.0" - through2 "^3.0.0" - -negotiator@0.6.3, negotiator@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1, neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -next-tick@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" - integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-addon-api@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" - integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== - -node-emoji@^1.10.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" - integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== - dependencies: - lodash "^4.17.21" - -node-environment-flags@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" - integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== - dependencies: - object.getownpropertydescriptors "^2.0.3" - semver "^5.7.0" - -node-fetch@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -node-fetch@2.6.7, node-fetch@^2.3.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-fetch@~1.7.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" - integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== - dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" - -node-forge@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" - integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== - -node-gyp-build@^4.2.0, node-gyp-build@^4.2.2, node-gyp-build@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3" - integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q== - -node-gyp@^5.0.2: - version "5.1.1" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e" - integrity sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.2" - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.1.2" - request "^2.88.0" - rimraf "^2.6.3" - semver "^5.7.1" - tar "^4.4.12" - which "^1.3.1" - -node-gyp@^7.1.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" - integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== - dependencies: - env-paths "^2.2.0" - glob "^7.1.4" - graceful-fs "^4.2.3" - nopt "^5.0.0" - npmlog "^4.1.2" - request "^2.88.2" - rimraf "^3.0.2" - semver "^7.3.2" - tar "^6.0.2" - which "^2.0.2" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -node-notifier@^8.0.0: - version "8.0.2" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" - integrity sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg== - dependencies: - growly "^1.3.0" - is-wsl "^2.2.0" - semver "^7.3.2" - shellwords "^0.1.1" - uuid "^8.3.0" - which "^2.0.2" - -node-releases@^1.1.61: - version "1.1.77" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.77.tgz#50b0cfede855dd374e7585bf228ff34e57c1c32e" - integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== - -node-releases@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" - integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== - -nodeify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/nodeify/-/nodeify-1.0.1.tgz#64ab69a7bdbaf03ce107b4f0335c87c0b9e91b1d" - integrity sha1-ZKtpp7268DzhB7TwM1yHwLnpGx0= - dependencies: - is-promise "~1.0.0" - promise "~1.3.0" - -nofilter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-1.0.4.tgz#78d6f4b6a613e7ced8b015cec534625f7667006e" - integrity sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA== - -nopt@3.x: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= - dependencies: - abbrev "1" - -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - -normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^3.0.0, normalize-package-data@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== - dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -normalize-url@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -normalize-url@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== - -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== - -normalize-url@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - -npm-bundled@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" - integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-install-checks@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" - integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== - dependencies: - semver "^7.1.1" - -npm-lifecycle@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309" - integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g== - dependencies: - byline "^5.0.0" - graceful-fs "^4.1.15" - node-gyp "^5.0.2" - resolve-from "^4.0.0" - slide "^1.1.6" - uid-number "0.0.6" - umask "^1.1.0" - which "^1.3.1" - -npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-package-arg@^8.1.2, npm-package-arg@^8.1.5: - version "8.1.5" - resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.5.tgz#3369b2d5fe8fdc674baa7f1786514ddc15466e44" - integrity sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q== - dependencies: - hosted-git-info "^4.0.1" - semver "^7.3.4" - validate-npm-package-name "^3.0.0" - -npm-packlist@^2.1.4: - version "2.2.2" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.2.2.tgz#076b97293fa620f632833186a7a8f65aaa6148c8" - integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg== - dependencies: - glob "^7.1.6" - ignore-walk "^3.0.3" - npm-bundled "^1.1.1" - npm-normalize-package-bin "^1.0.1" - -npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" - integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== - dependencies: - npm-install-checks "^4.0.0" - npm-normalize-package-bin "^1.0.1" - npm-package-arg "^8.1.2" - semver "^7.3.4" - -npm-registry-fetch@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz#68c1bb810c46542760d62a6a965f85a702d43a76" - integrity sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA== - dependencies: - make-fetch-happen "^9.0.1" - minipass "^3.1.3" - minipass-fetch "^1.3.0" - minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" - -npm-registry-fetch@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz#86f3feb4ce00313bc0b8f1f8f69daae6face1661" - integrity sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA== - dependencies: - "@npmcli/ci-detect" "^1.0.0" - lru-cache "^6.0.0" - make-fetch-happen "^8.0.9" - minipass "^3.1.3" - minipass-fetch "^1.3.0" - minipass-json-stream "^1.0.1" - minizlib "^2.0.0" - npm-package-arg "^8.0.0" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.0, npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -nth-check@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" - integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== - dependencies: - boolbase "^1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -number-to-bn@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" - integrity sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA= - dependencies: - bn.js "4.11.6" - strip-hex-prefix "1.0.0" - -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" - integrity sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo= - -object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.11.0, object-inspect@^1.12.0, object-inspect@^1.9.0, object-inspect@~1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" - integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== - -object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-keys@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" - integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.assign@^4.1.0, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.entries@^1.1.0, object.entries@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" - integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.fromentries@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" - integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0, object.getownpropertydescriptors@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" - integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.hasown@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5" - integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -object.values@^1.1.0, object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -obliterator@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.2.tgz#25f50dc92e1181371b9d8209d11890f1a3c2fc21" - integrity sha512-g0TrA7SbUggROhDPK8cEu/qpItwH2LSKcNl4tlfBNT54XY+nOsqrs0Q68h1V9b3HOSpIWv15jb1lax2hAggdIg== - -oboe@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" - integrity sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY= - dependencies: - http-https "^1.0.0" - -oboe@2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" - integrity sha1-VVQoTFQ6ImbXo48X4HOCH73jk80= - dependencies: - http-https "^1.0.0" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= - dependencies: - mimic-fn "^1.0.0" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^7.0.2, open@^7.4.2: - version "7.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -optimisedmt@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/optimisedmt/-/optimisedmt-0.0.7.tgz#ef1dac1e5d84c27b19bcdbec16eb4a213fa86f75" - integrity sha512-yVlKMmP/egqiAtg12KFZxqKx35STm+RB5kSSvo9q0B0sIx/7HbWj7fJcFLUFtWzbYp2IvdOhx31s4IC7RmU5pQ== - dependencies: - assert "^2.0.0" - circomlibjs "0.0.8" - ffjavascript "^0.2.39" - -optimist@~0.3.5: - version "0.3.7" - resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9" - integrity sha1-yQlBrVnkJzMokjB00s8ufLxuwNk= - dependencies: - wordwrap "~0.0.2" - -optimize-css-assets-webpack-plugin@5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90" - integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A== - dependencies: - cssnano "^4.1.10" - last-call-webpack-plugin "^3.0.0" - -optionator@^0.8.1, optionator@^0.8.2: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -ora@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-4.1.1.tgz#566cc0348a15c36f5f0e979612842e02ba9dddbc" - integrity sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A== - dependencies: - chalk "^3.0.0" - cli-cursor "^3.1.0" - cli-spinners "^2.2.0" - is-interactive "^1.0.0" - log-symbols "^3.0.0" - mute-stream "0.0.8" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= - dependencies: - lcid "^1.0.0" - -os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-cancelable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" - integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -p-each-series@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" - integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-map-series@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" - integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-pipe@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" - integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== - -p-queue@^6.6.2: - version "6.6.2" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" - integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== - dependencies: - eventemitter3 "^4.0.4" - p-timeout "^3.2.0" - -p-reduce@^2.0.0, p-reduce@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" - integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== - -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== - dependencies: - retry "^0.12.0" - -p-timeout@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" - integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= - dependencies: - p-finally "^1.0.0" - -p-timeout@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== - dependencies: - p-finally "^1.0.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -p-waterfall@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" - integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== - dependencies: - p-reduce "^2.0.0" - -pacote@^11.2.6: - version "11.3.5" - resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.5.tgz#73cf1fc3772b533f575e39efa96c50be8c3dc9d2" - integrity sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg== - dependencies: - "@npmcli/git" "^2.1.0" - "@npmcli/installed-package-contents" "^1.0.6" - "@npmcli/promise-spawn" "^1.2.0" - "@npmcli/run-script" "^1.8.2" - cacache "^15.0.5" - chownr "^2.0.0" - fs-minipass "^2.1.0" - infer-owner "^1.0.4" - minipass "^3.1.3" - mkdirp "^1.0.3" - npm-package-arg "^8.0.1" - npm-packlist "^2.1.4" - npm-pick-manifest "^6.0.0" - npm-registry-fetch "^11.0.0" - promise-retry "^2.0.1" - read-package-json-fast "^2.0.1" - rimraf "^3.0.2" - ssri "^8.0.1" - tar "^6.1.0" - -pako@~1.0.5: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@^3.0.3: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-cache-control@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" - integrity sha1-juqz5U+laSD+Fro493+iGqzC104= - -parse-headers@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" - integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - 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" - -parse-path@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf" - integrity sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA== - dependencies: - is-ssh "^1.3.0" - protocols "^1.4.0" - qs "^6.9.4" - query-string "^6.13.8" - -parse-url@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-6.0.0.tgz#f5dd262a7de9ec00914939220410b66cff09107d" - integrity sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw== - dependencies: - is-ssh "^1.3.0" - normalize-url "^6.1.0" - parse-path "^4.0.0" - protocols "^1.4.0" - -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -patch-package@6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.2.2.tgz#71d170d650c65c26556f0d0fbbb48d92b6cc5f39" - integrity sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg== - dependencies: - "@yarnpkg/lockfile" "^1.1.0" - chalk "^2.4.2" - cross-spawn "^6.0.5" - find-yarn-workspace-root "^1.2.1" - fs-extra "^7.0.1" - is-ci "^2.0.0" - klaw-sync "^6.0.0" - minimist "^1.2.0" - rimraf "^2.6.3" - semver "^5.6.0" - slash "^2.0.0" - tmp "^0.0.33" - -patch-package@^6.2.2: - version "6.4.7" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.4.7.tgz#2282d53c397909a0d9ef92dae3fdeb558382b148" - integrity sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ== - dependencies: - "@yarnpkg/lockfile" "^1.1.0" - chalk "^2.4.2" - cross-spawn "^6.0.5" - find-yarn-workspace-root "^2.0.0" - fs-extra "^7.0.1" - is-ci "^2.0.0" - klaw-sync "^6.0.0" - minimist "^1.2.0" - open "^7.4.2" - rimraf "^2.6.3" - semver "^5.6.0" - slash "^2.0.0" - tmp "^0.0.33" - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-browserify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" - integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6, path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-starts-with@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-starts-with/-/path-starts-with-2.0.0.tgz#ffd6d51926cd497022b44d392196033d5451892f" - integrity sha512-3UHTHbJz5+NLkPafFR+2ycJOjoc4WV2e9qCZCnm71zHiWaFrm1XniLVTkZXvaRgxr1xFh9JsTdicpH2yM03nLA== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pathval@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" - integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== - -pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - 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" - -peer-id@~0.12.2, peer-id@~0.12.3: - version "0.12.5" - resolved "https://registry.yarnpkg.com/peer-id/-/peer-id-0.12.5.tgz#b22a1edc5b4aaaa2bb830b265ba69429823e5179" - integrity sha512-3xVWrtIvNm9/OPzaQBgXDrfWNx63AftgFQkvqO6YSZy7sP3Fuadwwbn54F/VO9AnpyW/26i0WRQz9FScivXrmw== - dependencies: - async "^2.6.3" - class-is "^1.1.0" - libp2p-crypto "~0.16.1" - multihashes "~0.4.15" - -peer-info@~0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/peer-info/-/peer-info-0.15.1.tgz#21254a7c516d0dd046b150120b9aaf1b9ad02146" - integrity sha512-Y91Q2tZRC0CpSTPd1UebhGqniOrOAk/aj60uYUcWJXCoLTAnGu+4LJGoiay8ayudS6ice7l3SKhgL/cS62QacA== - dependencies: - mafmt "^6.0.2" - multiaddr "^6.0.3" - peer-id "~0.12.2" - unique-by "^1.0.0" - -pem-jwk@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pem-jwk/-/pem-jwk-2.0.0.tgz#1c5bb264612fc391340907f5c1de60c06d22f085" - integrity sha512-rFxu7rVoHgQ5H9YsP50dDWf0rHjreVA2z0yPiWr5WdH/UHb29hKtF7h6l8vNd1cbYR1t0QL+JKhW55a2ZV4KtA== - dependencies: - asn1.js "^5.0.1" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= - -picocolors@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" - integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pidtree@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.5.0.tgz#ad5fbc1de78b8a5f99d6fbdd4f6e4eee21d1aca1" - integrity sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA== - -pify@^2.0.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" - integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pirates@^4.0.1: - version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.1.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkg-up@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - -pkginfo@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.1.tgz#b5418ef0439de5425fc4995042dced14fb2a84ff" - integrity sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8= - -pluralize@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== - -pngjs@^3.3.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" - integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== - -pnp-webpack-plugin@1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" - integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== - dependencies: - ts-pnp "^1.1.6" - -polished@^4.1.3: - version "4.1.4" - resolved "https://registry.yarnpkg.com/polished/-/polished-4.1.4.tgz#640293ba834109614961a700fdacbb6599fb12d0" - integrity sha512-Nq5Mbza+Auo7N3sQb1QMFaQiDO+4UexWuSGR7Cjb4Sw11SZIJcrrFtiZ+L0jT9MBsUsxDboHVASbCLbE1rnECg== - dependencies: - "@babel/runtime" "^7.16.7" - -popmotion-pose@^3.4.10: - version "3.4.11" - resolved "https://registry.yarnpkg.com/popmotion-pose/-/popmotion-pose-3.4.11.tgz#be9d89dda2051566ff28ecd9fafea2ea4af74436" - integrity sha512-KjaevePyC1+Q3ylIcBO3YMhCouE1a/3bvtBXThrwz44fw1yXCUQagPJGkGirXI/J1xF+w3Lx3bpkkgwArizpEQ== - dependencies: - "@popmotion/easing" "^1.0.1" - hey-listen "^1.0.5" - popmotion "^8.7.1" - pose-core "^2.1.1" - style-value-types "^3.0.6" - ts-essentials "^1.0.3" - tslib "^1.10.0" - -popmotion@9.3.6: - version "9.3.6" - resolved "https://registry.yarnpkg.com/popmotion/-/popmotion-9.3.6.tgz#b5236fa28f242aff3871b9e23721f093133248d1" - integrity sha512-ZTbXiu6zIggXzIliMi8LGxXBF5ST+wkpXGEjeTUDUOCdSQ356hij/xjeUdv0F8zCQNeqB1+PR5/BB+gC+QLAPw== - dependencies: - framesync "5.3.0" - hey-listen "^1.0.8" - style-value-types "4.1.4" - tslib "^2.1.0" - -popmotion@^8.7.1: - version "8.7.6" - resolved "https://registry.yarnpkg.com/popmotion/-/popmotion-8.7.6.tgz#0f6aa461bdcbcdbf24cb70afb054e91cb39eccb3" - integrity sha512-gzU0mRAik8FIEOP4Nk5yqYptJIvHLoq/IRU+rANmKjDZ7tynAivYQ9cIJAxVaoS9h0zfXvN0cFBAg93ncmHHkA== - dependencies: - "@popmotion/easing" "^1.0.1" - "@popmotion/popcorn" "^0.4.4" - framesync "^4.0.0" - hey-listen "^1.0.5" - style-value-types "^3.1.7" - stylefire "^7.0.1" - tslib "^1.10.0" - -portfinder@^1.0.26: - version "1.0.28" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" - integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.5" - -pose-core@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pose-core/-/pose-core-2.1.1.tgz#53d9f961c73d73f5017f58e955bf7b5a52a1ccc9" - integrity sha512-fV1sDfu80debHmKerikypqGoORMEUHVwGh/BlWnqUSmmzQGYIg8neDrdwe66hFeRO+adr2qS4ZERSu/ZVjOiSQ== - dependencies: - "@types/invariant" "^2.2.29" - "@types/node" "^10.0.5" - hey-listen "^1.0.5" - rollup-plugin-typescript2 "^0.25.2" - tslib "^1.10.0" - typescript "^3.7.2" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-attribute-case-insensitive@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" - integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^6.0.2" - -postcss-browser-comments@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" - integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== - dependencies: - postcss "^7" - -postcss-calc@^7.0.1: - version "7.0.5" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" - integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== - dependencies: - postcss "^7.0.27" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.0.2" - -postcss-color-functional-notation@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" - integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-color-gray@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" - integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.5" - postcss-values-parser "^2.0.0" - -postcss-color-hex-alpha@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" - integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== - dependencies: - postcss "^7.0.14" - postcss-values-parser "^2.0.1" - -postcss-color-mod-function@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" - integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-color-rebeccapurple@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" - integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-colormin@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" - integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== - dependencies: - browserslist "^4.0.0" - color "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-convert-values@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" - integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-custom-media@^7.0.8: - version "7.0.8" - resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" - integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== - dependencies: - postcss "^7.0.14" - -postcss-custom-properties@^8.0.11: - version "8.0.11" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" - integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== - dependencies: - postcss "^7.0.17" - postcss-values-parser "^2.0.1" - -postcss-custom-selectors@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" - integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-dir-pseudo-class@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" - integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-discard-comments@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" - integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== - dependencies: - postcss "^7.0.0" - -postcss-discard-duplicates@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" - integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== - dependencies: - postcss "^7.0.0" - -postcss-discard-empty@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" - integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== - dependencies: - postcss "^7.0.0" - -postcss-discard-overridden@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" - integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== - dependencies: - postcss "^7.0.0" - -postcss-double-position-gradients@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" - integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== - dependencies: - postcss "^7.0.5" - postcss-values-parser "^2.0.0" - -postcss-env-function@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" - integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-flexbugs-fixes@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" - integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== - dependencies: - postcss "^7.0.26" - -postcss-focus-visible@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" - integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== - dependencies: - postcss "^7.0.2" - -postcss-focus-within@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" - integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== - dependencies: - postcss "^7.0.2" - -postcss-font-variant@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" - integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== - dependencies: - postcss "^7.0.2" - -postcss-gap-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" - integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== - dependencies: - postcss "^7.0.2" - -postcss-image-set-function@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" - integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-initial@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.4.tgz#9d32069a10531fe2ecafa0b6ac750ee0bc7efc53" - integrity sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg== - dependencies: - postcss "^7.0.2" - -postcss-lab-function@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" - integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== - dependencies: - "@csstools/convert-colors" "^1.4.0" - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-load-config@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" - integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== - dependencies: - cosmiconfig "^5.0.0" - import-cwd "^2.0.0" - -postcss-loader@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" - integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== - dependencies: - loader-utils "^1.1.0" - postcss "^7.0.0" - postcss-load-config "^2.0.0" - schema-utils "^1.0.0" - -postcss-logical@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" - integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== - dependencies: - postcss "^7.0.2" - -postcss-media-minmax@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" - integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== - dependencies: - postcss "^7.0.2" - -postcss-merge-longhand@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" - integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== - dependencies: - css-color-names "0.0.4" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - stylehacks "^4.0.0" - -postcss-merge-rules@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" - integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - cssnano-util-same-parent "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - vendors "^1.0.0" - -postcss-minify-font-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" - integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-gradients@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" - integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - is-color-stop "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-minify-params@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" - integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== - dependencies: - alphanum-sort "^1.0.0" - browserslist "^4.0.0" - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - uniqs "^2.0.0" - -postcss-minify-selectors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" - integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== - dependencies: - alphanum-sort "^1.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -postcss-modules-extract-imports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" - integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== - dependencies: - postcss "^7.0.5" - -postcss-modules-local-by-default@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" - integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== - dependencies: - icss-utils "^4.1.1" - postcss "^7.0.32" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" - integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== - dependencies: - postcss "^7.0.6" - postcss-selector-parser "^6.0.0" - -postcss-modules-values@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" - integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== - dependencies: - icss-utils "^4.0.0" - postcss "^7.0.6" - -postcss-nesting@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" - integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== - dependencies: - postcss "^7.0.2" - -postcss-normalize-charset@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" - integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== - dependencies: - postcss "^7.0.0" - -postcss-normalize-display-values@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" - integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-positions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" - integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== - dependencies: - cssnano-util-get-arguments "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-repeat-style@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" - integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== - dependencies: - cssnano-util-get-arguments "^4.0.0" - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-string@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" - integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== - dependencies: - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-timing-functions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" - integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== - dependencies: - cssnano-util-get-match "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-unicode@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" - integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-url@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" - integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^3.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize-whitespace@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" - integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-normalize@8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" - integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== - dependencies: - "@csstools/normalize.css" "^10.1.0" - browserslist "^4.6.2" - postcss "^7.0.17" - postcss-browser-comments "^3.0.0" - sanitize.css "^10.0.0" - -postcss-ordered-values@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" - integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== - dependencies: - cssnano-util-get-arguments "^4.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-overflow-shorthand@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" - integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== - dependencies: - postcss "^7.0.2" - -postcss-page-break@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" - integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== - dependencies: - postcss "^7.0.2" - -postcss-place@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" - integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== - dependencies: - postcss "^7.0.2" - postcss-values-parser "^2.0.0" - -postcss-preset-env@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" - integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== - dependencies: - autoprefixer "^9.6.1" - browserslist "^4.6.4" - caniuse-lite "^1.0.30000981" - css-blank-pseudo "^0.1.4" - css-has-pseudo "^0.10.0" - css-prefers-color-scheme "^3.1.1" - cssdb "^4.4.0" - postcss "^7.0.17" - postcss-attribute-case-insensitive "^4.0.1" - postcss-color-functional-notation "^2.0.1" - postcss-color-gray "^5.0.0" - postcss-color-hex-alpha "^5.0.3" - postcss-color-mod-function "^3.0.3" - postcss-color-rebeccapurple "^4.0.1" - postcss-custom-media "^7.0.8" - postcss-custom-properties "^8.0.11" - postcss-custom-selectors "^5.1.2" - postcss-dir-pseudo-class "^5.0.0" - postcss-double-position-gradients "^1.0.0" - postcss-env-function "^2.0.2" - postcss-focus-visible "^4.0.0" - postcss-focus-within "^3.0.0" - postcss-font-variant "^4.0.0" - postcss-gap-properties "^2.0.0" - postcss-image-set-function "^3.0.1" - postcss-initial "^3.0.0" - postcss-lab-function "^2.0.1" - postcss-logical "^3.0.0" - postcss-media-minmax "^4.0.0" - postcss-nesting "^7.0.0" - postcss-overflow-shorthand "^2.0.0" - postcss-page-break "^2.0.0" - postcss-place "^4.0.1" - postcss-pseudo-class-any-link "^6.0.0" - postcss-replace-overflow-wrap "^3.0.0" - postcss-selector-matches "^4.0.0" - postcss-selector-not "^4.0.0" - -postcss-pseudo-class-any-link@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" - integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== - dependencies: - postcss "^7.0.2" - postcss-selector-parser "^5.0.0-rc.3" - -postcss-reduce-initial@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" - integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== - dependencies: - browserslist "^4.0.0" - caniuse-api "^3.0.0" - has "^1.0.0" - postcss "^7.0.0" - -postcss-reduce-transforms@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" - integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== - dependencies: - cssnano-util-get-match "^4.0.0" - has "^1.0.0" - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - -postcss-replace-overflow-wrap@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" - integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== - dependencies: - postcss "^7.0.2" - -postcss-safe-parser@5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-5.0.2.tgz#459dd27df6bc2ba64608824ba39e45dacf5e852d" - integrity sha512-jDUfCPJbKOABhwpUKcqCVbbXiloe/QXMcbJ6Iipf3sDIihEzTqRCeMBfRaOHxhBuTYqtASrI1KJWxzztZU4qUQ== - dependencies: - postcss "^8.1.0" - -postcss-selector-matches@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" - integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== - dependencies: - balanced-match "^1.0.0" - postcss "^7.0.2" - -postcss-selector-not@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" - integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== - dependencies: - balanced-match "^1.0.0" - postcss "^7.0.2" - -postcss-selector-parser@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" - integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== - dependencies: - dot-prop "^5.2.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" - integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== - dependencies: - cssesc "^2.0.0" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: - version "6.0.10" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-svgo@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz#343a2cdbac9505d416243d496f724f38894c941e" - integrity sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw== - dependencies: - postcss "^7.0.0" - postcss-value-parser "^3.0.0" - svgo "^1.0.0" - -postcss-unique-selectors@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" - integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== - dependencies: - alphanum-sort "^1.0.0" - postcss "^7.0.0" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" - integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss@7.0.36: - version "7.0.36" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.36.tgz#056f8cffa939662a8f5905950c07d5285644dfcb" - integrity sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.39" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" - integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== - dependencies: - picocolors "^0.2.1" - source-map "^0.6.1" - -postcss@^8.1.0: - version "8.4.12" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905" - integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg== - dependencies: - nanoid "^3.3.1" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -postinstall-postinstall@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" - integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== - -preact@10.4.1: - version "10.4.1" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.4.1.tgz#9b3ba020547673a231c6cf16f0fbaef0e8863431" - integrity sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q== - -preact@^10.5.9: - version "10.7.0" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.7.0.tgz#3bd424677a894c8199f66a881df283b44bea0eeb" - integrity sha512-9MEURwzNMKpAil/t6+wabDIJI6oG6GnwypYxiJDvQnW+fHDTt51PYuLZ1QUM31hFr7sDaj9qTaShAF9VIxuxGQ== - -precond@0.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" - integrity sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw= - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prepend-http@^1.0.0, prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - -prettier@^1.13.5, prettier@^1.14.3: - version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== - -prettier@^2.1.2: - version "2.6.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.0.tgz#12f8f504c4d8ddb76475f441337542fa799207d4" - integrity sha512-m2FgJibYrBGGgQXNzfd0PuDGShJgRavjUoRCw1mZERIWVSXF0iLzLm+aOqTAbLnC3n6JzUhAA8uZnFVghHJ86A== - -prettier@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" - integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== - -pretty-bytes@^5.3.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - -pretty-error@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" - integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== - dependencies: - lodash "^4.17.20" - renderkid "^2.0.4" - -pretty-format@^25.2.1, pretty-format@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" - integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== - dependencies: - "@jest/types" "^25.5.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - -pretty-format@^26.6.0, pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" - integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - -pretty-format@^27.0.0, pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -printj@~1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/printj/-/printj-1.3.1.tgz#9af6b1d55647a1587ac44f4c1654a4b95b8e12cb" - integrity sha512-GA3TdL8szPK4AQ2YnOe/b+Y1jUFwmmGMMK/qbY7VcE3Z7FU8JstbKiKRzO6CIiAKPhTO8m01NoQ0V5f3jc4OGg== - -private@^0.1.6, private@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -promise-nodeify@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/promise-nodeify/-/promise-nodeify-3.0.1.tgz#f0f5d9720ee9ec71dd2bfa92667be504c10229c2" - integrity sha512-ghsSuzZXJX8iO7WVec2z7GI+Xk/EyiD+JZK7AZKhUqYfpLa/Zs4ylUD+CwwnKlG6G3HnkUPMAi6PO7zeqGKssg== - -promise-retry@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" - integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== - dependencies: - err-code "^2.0.2" - retry "^0.12.0" - -promise-to-callback@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" - integrity sha1-XSp0kBC/tn2WNZj805YHRqaP7vc= - dependencies: - is-fn "^1.0.0" - set-immediate-shim "^1.0.1" - -promise@^8.0.0, promise@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" - integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== - dependencies: - asap "~2.0.6" - -promise@~1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-1.3.0.tgz#e5cc9a4c8278e4664ffedc01c7da84842b040175" - integrity sha1-5cyaTIJ45GZP/twBx9qEhCsEAXU= - dependencies: - is-promise "~1" - -promisify-es6@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/promisify-es6/-/promisify-es6-1.0.3.tgz#b012668c4df3c965ce13daac2b3a4d1726a96346" - integrity sha512-N9iVG+CGJsI4b4ZGazjwLnxErD2d9Pe4DPvvXSxYA9tFNu8ymXME4Qs5HIQ0LMJpNM7zj+m0NlNnNeqFpKzqnA== - -prompt-async@^0.9.9: - version "0.9.9" - resolved "https://registry.yarnpkg.com/prompt-async/-/prompt-async-0.9.9.tgz#6fb90053480eec4d06368d6e7fa434736b61193b" - integrity sha512-XHpcP55ME/MRHvvKTGYSayMMpWY7M2dEx5g6WdfHabkO4+BrJIWeZh4+qJG4lRgebr5ovT+Cnv98qfmXqQ3RXA== - dependencies: - prompt "^1.0.0" - -prompt@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/prompt/-/prompt-1.2.2.tgz#b624fcf53aa6c8c5637e009c193ef69eee45dbe0" - integrity sha512-XNXhNv3PUHJDcDkISpCwSJxtw9Bor4FZnlMUDW64N/KCPdxhfVlpD5+YUXI/Z8a9QWmOhs9KSiVtR8nzPS0BYA== - dependencies: - "@colors/colors" "1.5.0" - async "~0.9.0" - read "1.0.x" - revalidator "0.1.x" - winston "2.x" - -prompts@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" - integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -prompts@^2.0.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -promzard@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" - integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4= - dependencies: - read "1" - -prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= - -protocol-buffers-schema@^3.3.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03" - integrity sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw== - -protocols@^1.1.0, protocols@^1.4.0: - version "1.4.8" - resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" - integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg== - -protons@^1.0.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/protons/-/protons-1.2.1.tgz#5f1e0db8b2139469cd1c3b4e332a4c2d95d0a218" - integrity sha512-2oqDyc/SN+tNcJf8XxrXhYL7sQn2/OMl8mSdD7NVGsWjMEmAbks4eDVnCyf0vAoRbBWyWTEXWk4D8XfuKVl3zg== - dependencies: - buffer "^5.5.0" - protocol-buffers-schema "^3.3.1" - signed-varint "^2.0.1" - varint "^5.0.0" - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -pseudomap@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -psl@^1.1.28, psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pull-cat@^1.1.9: - version "1.1.11" - resolved "https://registry.yarnpkg.com/pull-cat/-/pull-cat-1.1.11.tgz#b642dd1255da376a706b6db4fa962f5fdb74c31b" - integrity sha1-tkLdElXaN2pwa220+pYvX9t0wxs= - -pull-defer@^0.2.2, pull-defer@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/pull-defer/-/pull-defer-0.2.3.tgz#4ee09c6d9e227bede9938db80391c3dac489d113" - integrity sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA== - -pull-level@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pull-level/-/pull-level-2.0.4.tgz#4822e61757c10bdcc7cf4a03af04c92734c9afac" - integrity sha512-fW6pljDeUThpq5KXwKbRG3X7Ogk3vc75d5OQU/TvXXui65ykm+Bn+fiktg+MOx2jJ85cd+sheufPL+rw9QSVZg== - dependencies: - level-post "^1.0.7" - pull-cat "^1.1.9" - pull-live "^1.0.1" - pull-pushable "^2.0.0" - pull-stream "^3.4.0" - pull-window "^2.1.4" - stream-to-pull-stream "^1.7.1" - -pull-live@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/pull-live/-/pull-live-1.0.1.tgz#a4ecee01e330155e9124bbbcf4761f21b38f51f5" - integrity sha1-pOzuAeMwFV6RJLu89HYfIbOPUfU= - dependencies: - pull-cat "^1.1.9" - pull-stream "^3.4.0" - -pull-pushable@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/pull-pushable/-/pull-pushable-2.2.0.tgz#5f2f3aed47ad86919f01b12a2e99d6f1bd776581" - integrity sha1-Xy867UethpGfAbEqLpnW8b13ZYE= - -pull-stream@^3.2.3, pull-stream@^3.4.0, pull-stream@^3.6.8, pull-stream@^3.6.9: - version "3.6.14" - resolved "https://registry.yarnpkg.com/pull-stream/-/pull-stream-3.6.14.tgz#529dbd5b86131f4a5ed636fdf7f6af00781357ee" - integrity sha512-KIqdvpqHHaTUA2mCYcLG1ibEbu/LCKoJZsBWyv9lSYtPkJPBq8m3Hxa103xHi6D2thj5YXa0TqK3L3GUkwgnew== - -pull-to-stream@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pull-to-stream/-/pull-to-stream-0.1.1.tgz#fa2058528528e3542b81d6f17cbc42288508ff37" - integrity sha512-thZkMv6F9PILt9zdvpI2gxs19mkDrlixYKX6cOBxAW16i1NZH+yLAmF4r8QfJ69zuQh27e01JZP9y27tsH021w== - dependencies: - readable-stream "^3.1.1" - -pull-window@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/pull-window/-/pull-window-2.1.4.tgz#fc3b86feebd1920c7ae297691e23f705f88552f0" - integrity sha1-/DuG/uvRkgx64pdpHiP3BfiFUvA= - dependencies: - looper "^2.0.0" - -pump@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" - integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" - integrity sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -q@^1.1.2, q@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qaci-circuits@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/qaci-circuits/-/qaci-circuits-1.1.8.tgz#a0088a8ba5607dc80cc4dd3526d49429b8e0637c" - integrity sha512-vOK+Z5kQPbx4sicmGNM12WZM+4iohvV5xakdyGQcKqAgf/VkND6QjkTMlzrHUf+l/JWcOL2BjXZYM4F7Et50rQ== - dependencies: - argparse "^1.0.10" - circomlib "https://github.com/weijiekoh/circomlib.git#ac85e82c1914d47789e2032fb11ceb2cfdd38a2b" - shelljs "^0.8.3" - snarkjs "0.4.10" - tmp "^0.2.1" - -qaci-cli@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/qaci-cli/-/qaci-cli-1.1.8.tgz#26f836580f38fce4c8dce40d547d767849f0e5a6" - integrity sha512-efGSUwwIGBG+UfVHeX62z7cQm131MeARhfi54+anDAFZOtY8nhL0ebXdvgYAQX3NsG62vV4Cx+ZgC9OMu6lYpw== - dependencies: - "@nomiclabs/hardhat-ethers" "^2.0.2" - argparse "^1.0.10" - circom "0.5.45" - circom_runtime "0.1.13" - circomlib "0.5.2" - ethers "^5.0.0" - ffiasm "0.1.3" - hardhat "^2.0.11" - js-yaml "4.0.0" - prompt-async "^0.9.9" - qaci-circuits "^1.1.8" - qaci-common "^1.0.7" - qaci-contracts "^1.1.8" - qaci-core "^1.1.8" - qaci-crypto "^1.1.0" - qaci-domainobjs "^1.1.0" - shelljs "^0.8.4" - snarkjs "0.4.10" - source-map-support "^0.5.19" - web3 "^1.3.4" - xmlhttprequest "1.8.0" - zkey-manager "^0.1.1" - -qaci-common@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/qaci-common/-/qaci-common-1.0.7.tgz#3f1da8c90841ae82938442ba3002f79380cd874c" - integrity sha512-iwWAlfP8z/rRH2NBZMFC1FTrr3xsrid+9E0W5rrqRhGWKdfDI4GqZgw7RlxeNNSatIhLadTuN+bjaFiuBzJz1g== - -qaci-contracts@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/qaci-contracts/-/qaci-contracts-1.1.8.tgz#765bb2e535e76ac3b99373d33783c652c32aaeea" - integrity sha512-mJZgzNeUuIXTXdWRvZ8Z7O69V9xUkwSnO89pwdBIjamjx3ZjzmDax88CmpH1PH5IvAhv3U63uZjfaPNpV/XUiQ== - dependencies: - "@nomiclabs/hardhat-ethers" "^2.0.2" - "@openzeppelin/contracts" ">=4.5.0-solc-0.8" - argparse "^1.0.10" - circomlib "0.5.1" - hardhat "^2.0.11" - hardhat-artifactor "^0.2.0" - hardhat-contract-sizer "^2.0.3" - module-alias "^2.2.2" - -qaci-core@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/qaci-core/-/qaci-core-1.1.8.tgz#55bbab2fb2358ce8829e55128e6dd7ec2a857175" - integrity sha512-XdC83+9tnb1oD2cRjbclYheq3rPielntrRCiwlblGJ4rRphlgXfGjr5quUau0zGs4KxlC1dWAN8YHn46y5dg8Q== - dependencies: - module-alias "^2.2.2" - qaci-crypto "^1.1.0" - qaci-domainobjs "^1.1.0" - -qaci-crypto@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/qaci-crypto/-/qaci-crypto-1.1.0.tgz#3b7f5c946d8733e0bfe6c4d74a3e8e7d91a18921" - integrity sha512-OOb5ObhhOM1Mgyi236v+x3vH44TN5/7SiKwfJSyoJj0wmw0XFoqQMoll/enua2Dp1S3V/uCBEKsSefKfjlrm1Q== - dependencies: - blake-hash "^1.1.0" - circomlib "https://github.com/weijiekoh/circomlib.git#24ed08eee0bb613b8c0135d66c1013bd9f78d50a" - ethers "^5.0.32" - ffjavascript "0.2.35" - optimisedmt "^0.0.7" - -qaci-domainobjs@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/qaci-domainobjs/-/qaci-domainobjs-1.1.0.tgz#929f39d973524e2b1c50580a2da8d6fd823e1887" - integrity sha512-VA+lW3Qr3cHmwkpTYg3ylrckbeBqSRTkevG/g+rezGMeQLDqCK5LFMkNoWG3GnwqZ4SDhdHdJIRlKCazEwK17w== - dependencies: - base64url "^3.0.1" - -qrcode@1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.4.4.tgz#f0c43568a7e7510a55efc3b88d9602f71963ea83" - integrity sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q== - dependencies: - buffer "^5.4.3" - buffer-alloc "^1.2.0" - buffer-from "^1.1.1" - dijkstrajs "^1.0.1" - isarray "^2.0.1" - pngjs "^3.3.0" - yargs "^13.2.4" - -qs@6.9.7: - version "6.9.7" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" - integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== - -qs@^6.4.0, qs@^6.5.2, qs@^6.7.0, qs@^6.9.4: - version "6.10.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== - dependencies: - side-channel "^1.0.4" - -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -query-string@6.13.5: - version "6.13.5" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.5.tgz#99e95e2fb7021db90a6f373f990c0c814b3812d8" - integrity sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q== - dependencies: - decode-uri-component "^0.2.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== - dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -query-string@^6.13.8: - version "6.14.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" - integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== - dependencies: - decode-uri-component "^0.2.0" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystring@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" - integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -quick-lru@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" - integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== - -r1csfile@0.0.16: - version "0.0.16" - resolved "https://registry.yarnpkg.com/r1csfile/-/r1csfile-0.0.16.tgz#53c66a79b50eebc2d15a1048e39d548ce9da7ccd" - integrity sha512-A2jRVWzGgmXeG2lVAc0H4suJmzt50it5UvBnycJgBCpMXM3tH/M6RguP7nvs6suY/yYnkN6jX6iTScSiDUF3FA== - dependencies: - "@iden3/bigarray" "0.0.2" - fastfile "0.0.18" - ffjavascript "0.2.22" - -r1csfile@0.0.32: - version "0.0.32" - resolved "https://registry.yarnpkg.com/r1csfile/-/r1csfile-0.0.32.tgz#64a6c63ff76b737b3ee22bcedb2bb9a033cbeb1a" - integrity sha512-DkRXeOg0iRmfhgIuWICvdkOiLHpyb7+AcUd/WHpqBJEUp27pe7wKXBR4Jr3TPYCT4sTV9a/F3bovyAC4wystnQ== - dependencies: - "@iden3/bigarray" "0.0.2" - "@iden3/binfileutils" "0.0.8" - fastfile "0.0.19" - ffjavascript "0.2.35" - -r1csfile@0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/r1csfile/-/r1csfile-0.0.33.tgz#88c36f383ba5d4ee8f8b0e22006c2f40894a12c6" - integrity sha512-aSZa/Vy6avJ146MOewUNRYdDLJCDINZ7aqSt0Zhw4uVrd4TijOz6gBfmckr7tPILaT3RNp7THVpUzeW0++OlJw== - dependencies: - "@iden3/bigarray" "0.0.2" - "@iden3/binfileutils" "0.0.8" - fastfile "0.0.19" - ffjavascript "0.2.39" - -raf@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" - integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== - dependencies: - performance-now "^2.1.0" - -ramda@^0.24.1: - version "0.24.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.24.1.tgz#c3b7755197f35b8dc3502228262c4c91ddb6b857" - integrity sha1-w7d1UZfzW43DUCIoJixMkd22uFc= - -ramda@^0.25.0: - version "0.25.0" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.25.0.tgz#8fdf68231cffa90bc2f9460390a0cb74a29b29a9" - integrity sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ== - -ramdasauce@^2.1.0: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ramdasauce/-/ramdasauce-2.1.3.tgz#acb45ecc7e4fc4d6f39e19989b4a16dff383e9c2" - integrity sha512-Ml3CPim4SKwmg5g9UI77lnRSeKr/kQw7YhQ6rfdMcBYy6DMlwmkEwQqjygJ3OhxPR+NfFfpjKl3Tf8GXckaqqg== - dependencies: - ramda "^0.24.1" - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" - integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== - dependencies: - bytes "3.1.2" - http-errors "1.8.1" - iconv-lite "0.4.24" - unpipe "1.0.0" - -raw-body@^2.4.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -react-app-polyfill@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-2.0.0.tgz#a0bea50f078b8a082970a9d853dc34b6dcc6a3cf" - integrity sha512-0sF4ny9v/B7s6aoehwze9vJNWcmCemAUYBVasscVr92+UYiEqDXOxfKjXN685mDaMRNF3WdhHQs76oTODMocFA== - dependencies: - core-js "^3.6.5" - object-assign "^4.1.1" - promise "^8.1.0" - raf "^3.4.1" - regenerator-runtime "^0.13.7" - whatwg-fetch "^3.4.1" - -react-clientside-effect@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/react-clientside-effect/-/react-clientside-effect-1.2.5.tgz#e2c4dc3c9ee109f642fac4f5b6e9bf5bcd2219a3" - integrity sha512-2bL8qFW1TGBHozGGbVeyvnggRpMjibeZM2536AKNENLECutp2yfs44IL8Hmpn8qjFQ2K7A9PnYf3vc7aQq/cPA== - dependencies: - "@babel/runtime" "^7.12.13" - -react-dev-utils@^11.0.3: - version "11.0.4" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-11.0.4.tgz#a7ccb60257a1ca2e0efe7a83e38e6700d17aa37a" - integrity sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A== - dependencies: - "@babel/code-frame" "7.10.4" - address "1.1.2" - browserslist "4.14.2" - chalk "2.4.2" - cross-spawn "7.0.3" - detect-port-alt "1.1.6" - escape-string-regexp "2.0.0" - filesize "6.1.0" - find-up "4.1.0" - fork-ts-checker-webpack-plugin "4.1.6" - global-modules "2.0.0" - globby "11.0.1" - gzip-size "5.1.1" - immer "8.0.1" - is-root "2.1.0" - loader-utils "2.0.0" - open "^7.0.2" - pkg-up "3.1.0" - prompts "2.4.0" - react-error-overlay "^6.0.9" - recursive-readdir "2.2.2" - shell-quote "1.7.2" - strip-ansi "6.0.0" - text-table "0.2.0" - -react-dom@^16.8.6: - version "16.14.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89" - integrity sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - scheduler "^0.19.1" - -react-dom@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" - integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler "^0.20.2" - -react-error-overlay@^6.0.9: - version "6.0.10" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.10.tgz#0fe26db4fa85d9dbb8624729580e90e7159a59a6" - integrity sha512-mKR90fX7Pm5seCOfz8q9F+66VCc1PGsWSBxKbITjfKVQHMNF2zudxHnMdJiB1fRCb+XsbQV9sO9DCkgsMQgBIA== - -react-fast-compare@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" - integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== - -react-focus-lock@2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.5.2.tgz#f1e4db5e25cd8789351f2bd5ebe91e9dcb9c2922" - integrity sha512-WzpdOnEqjf+/A3EH9opMZWauag7gV0BxFl+EY4ElA4qFqYsUsBLnmo2sELbN5OC30S16GAWMy16B9DLPpdJKAQ== - dependencies: - "@babel/runtime" "^7.0.0" - focus-lock "^0.9.1" - prop-types "^15.6.2" - react-clientside-effect "^1.2.5" - use-callback-ref "^1.2.5" - use-sidecar "^1.0.5" - -react-icons@^3.0.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-3.11.0.tgz#2ca2903dfab8268ca18ebd8cc2e879921ec3b254" - integrity sha512-JRgiI/vdF6uyBgyZhVyYJUZAop95Sy4XDe/jmT3R/bKliFWpO/uZBwvSjWEdxwzec7SYbEPNPck0Kff2tUGM2Q== - dependencies: - camelcase "^5.0.0" - -react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -react-pose-text@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/react-pose-text/-/react-pose-text-3.1.0.tgz#625471d503a56773715dc6ad79a5f7ef86f2a0ec" - integrity sha512-UekE51x+33Nry4+Wout6zAUpTyEKFizdSSkvm1+FGV29Z95hheyzsYrk5DjXLxjk7BKm8AqUrl1/NikzGHGR7g== - dependencies: - hey-listen "^1.0.5" - -react-pose@^4.0.10: - version "4.0.10" - resolved "https://registry.yarnpkg.com/react-pose/-/react-pose-4.0.10.tgz#fde1c6c388ec210f7099dfe2b8dd2f89a75db7d0" - integrity sha512-OKc5oqKw+nL9FvIokxn8MmaAmkNsWv64hLX9xWWcMWXSgEo745hzYUqDn2viMJ97mf76oPy6Vc+BS4k6Kwj78g== - dependencies: - "@emotion/is-prop-valid" "^0.7.3" - hey-listen "^1.0.5" - popmotion-pose "^3.4.10" - tslib "^1.10.0" - -react-refresh@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" - integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== - -react-remove-scroll-bar@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.2.0.tgz#d4d545a7df024f75d67e151499a6ab5ac97c8cdd" - integrity sha512-UU9ZBP1wdMR8qoUs7owiVcpaPwsQxUDC2lypP6mmixaGlARZa7ZIBx1jcuObLdhMOvCsnZcvetOho0wzPa9PYg== - dependencies: - react-style-singleton "^2.1.0" - tslib "^1.0.0" - -react-remove-scroll@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.4.1.tgz#e0af6126621083a5064591d367291a81b2d107f5" - integrity sha512-K7XZySEzOHMTq7dDwcHsZA6Y7/1uX5RsWhRXVYv8rdh+y9Qz2nMwl9RX/Mwnj/j7JstCGmxyfyC0zbVGXYh3mA== - dependencies: - react-remove-scroll-bar "^2.1.0" - react-style-singleton "^2.1.0" - tslib "^1.0.0" - use-callback-ref "^1.2.3" - use-sidecar "^1.0.1" - -react-router-dom@^6.0.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.2.2.tgz#f1a2c88365593c76b9612ae80154a13fcb72e442" - integrity sha512-AtYEsAST7bDD4dLSQHDnk/qxWLJdad5t1HFa1qJyUrCeGgEuCSw0VB/27ARbF9Fi/W5598ujvJOm3ujUCVzuYQ== - dependencies: - history "^5.2.0" - react-router "6.2.2" - -react-router@6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.2.2.tgz#495e683a0c04461eeb3d705fe445d6cf42f0c249" - integrity sha512-/MbxyLzd7Q7amp4gDOGaYvXwhEojkJD5BtExkuKmj39VEE0m3l/zipf6h2WIB2jyAO0lI6NGETh4RDcktRm4AQ== - dependencies: - history "^5.2.0" - -react-scripts@4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-4.0.3.tgz#b1cafed7c3fa603e7628ba0f187787964cb5d345" - integrity sha512-S5eO4vjUzUisvkIPB7jVsKtuH2HhWcASREYWHAQ1FP5HyCv3xgn+wpILAEWkmy+A+tTNbSZClhxjT3qz6g4L1A== - dependencies: - "@babel/core" "7.12.3" - "@pmmmwh/react-refresh-webpack-plugin" "0.4.3" - "@svgr/webpack" "5.5.0" - "@typescript-eslint/eslint-plugin" "^4.5.0" - "@typescript-eslint/parser" "^4.5.0" - babel-eslint "^10.1.0" - babel-jest "^26.6.0" - babel-loader "8.1.0" - babel-plugin-named-asset-import "^0.3.7" - babel-preset-react-app "^10.0.0" - bfj "^7.0.2" - camelcase "^6.1.0" - case-sensitive-paths-webpack-plugin "2.3.0" - css-loader "4.3.0" - dotenv "8.2.0" - dotenv-expand "5.1.0" - eslint "^7.11.0" - eslint-config-react-app "^6.0.0" - eslint-plugin-flowtype "^5.2.0" - eslint-plugin-import "^2.22.1" - eslint-plugin-jest "^24.1.0" - eslint-plugin-jsx-a11y "^6.3.1" - eslint-plugin-react "^7.21.5" - eslint-plugin-react-hooks "^4.2.0" - eslint-plugin-testing-library "^3.9.2" - eslint-webpack-plugin "^2.5.2" - file-loader "6.1.1" - fs-extra "^9.0.1" - html-webpack-plugin "4.5.0" - identity-obj-proxy "3.0.0" - jest "26.6.0" - jest-circus "26.6.0" - jest-resolve "26.6.0" - jest-watch-typeahead "0.6.1" - mini-css-extract-plugin "0.11.3" - optimize-css-assets-webpack-plugin "5.0.4" - pnp-webpack-plugin "1.6.4" - postcss-flexbugs-fixes "4.2.1" - postcss-loader "3.0.0" - postcss-normalize "8.0.1" - postcss-preset-env "6.7.0" - postcss-safe-parser "5.0.2" - prompts "2.4.0" - react-app-polyfill "^2.0.0" - react-dev-utils "^11.0.3" - react-refresh "^0.8.3" - resolve "1.18.1" - resolve-url-loader "^3.1.2" - sass-loader "^10.0.5" - semver "7.3.2" - style-loader "1.3.0" - terser-webpack-plugin "4.2.3" - ts-pnp "1.2.0" - url-loader "4.1.1" - webpack "4.44.2" - webpack-dev-server "3.11.1" - webpack-manifest-plugin "2.2.0" - workbox-webpack-plugin "5.1.4" - optionalDependencies: - fsevents "^2.1.3" - -react-spinners@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/react-spinners/-/react-spinners-0.11.0.tgz#186fd150cc9f7ab1436227f70d5d113b47e9e43d" - integrity sha512-rDZc0ABWn/M1OryboGsWVmIPg8uYWl0L35jPUhr40+Yg+syVPjeHwvnB7XWaRpaKus3M0cG9BiJA+ZB0dAwWyw== - dependencies: - "@emotion/react" "^11.1.4" - -react-style-singleton@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.1.1.tgz#ce7f90b67618be2b6b94902a30aaea152ce52e66" - integrity sha512-jNRp07Jza6CBqdRKNgGhT3u9umWvils1xsuMOjZlghBDH2MU0PL2WZor4PGYjXpnRCa9DQSlHMs/xnABWOwYbA== - dependencies: - get-nonce "^1.0.0" - invariant "^2.2.4" - tslib "^1.0.0" - -react@^16.8.6: - version "16.14.0" - resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" - integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - prop-types "^15.6.2" - -react@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" - integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -read-cmd-shim@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz#4a50a71d6f0965364938e9038476f7eede3928d9" - integrity sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw== - -read-package-json-fast@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" - integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== - dependencies: - json-parse-even-better-errors "^2.3.0" - npm-normalize-package-bin "^1.0.1" - -read-package-json@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a" - integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA== - dependencies: - glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" - normalize-package-data "^2.0.0" - npm-normalize-package-bin "^1.0.0" - -read-package-json@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-3.0.1.tgz#c7108f0b9390257b08c21e3004d2404c806744b9" - integrity sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng== - dependencies: - glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" - normalize-package-data "^3.0.0" - npm-normalize-package-bin "^1.0.0" - -read-package-json@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-4.1.2.tgz#b444d047de7c75d4a160cb056d00c0693c1df703" - integrity sha512-Dqer4pqzamDE2O4M55xp1qZMuLPqi4ldk2ya648FOMHRjwMzFhuxVrG04wd0c38IsvkVdr3vgHI6z+QTPdAjrQ== - dependencies: - glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" - normalize-package-data "^3.0.0" - npm-normalize-package-bin "^1.0.0" - -read-package-tree@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" - integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== - dependencies: - read-package-json "^2.0.0" - readdir-scoped-modules "^1.0.0" - util-promisify "^2.1.0" - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -read@1, read@1.0.x, read@~1.0.1: - version "1.0.7" - resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" - integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= - dependencies: - mute-stream "~0.0.4" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - 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" - -"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.1, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.0, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@^1.0.33: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@~1.0.15, readable-stream@~1.0.26-4: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readdir-scoped-modules@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" - integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== - dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - graceful-fs "^4.1.2" - once "^1.3.0" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -readdirp@~3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" - integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== - dependencies: - picomatch "^2.0.4" - -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== - dependencies: - picomatch "^2.2.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -readline@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/readline/-/readline-1.3.0.tgz#c580d77ef2cfc8752b132498060dc9793a7ac01c" - integrity sha1-xYDXfvLPyHUrEySYBg3JeTp6wBw= - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= - dependencies: - resolve "^1.1.6" - -recursive-readdir@2.2.2, recursive-readdir@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" - integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== - dependencies: - minimatch "3.0.4" - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - -reduce-flatten@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" - integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== - -regenerate-unicode-properties@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" - integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.2.1, regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== - -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" - integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - -regenerator-transform@^0.14.2: - version "0.14.5" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" - integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regex-parser@^2.2.11: - version "2.2.11" - resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" - integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== - -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" - integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpp@^3.1.0, regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regexpu-core@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" - integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^10.0.1" - regjsgen "^0.6.0" - regjsparser "^0.8.2" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= - -regjsgen@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" - integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= - dependencies: - jsesc "~0.5.0" - -regjsparser@^0.8.2: - version "0.8.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" - integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== - dependencies: - jsesc "~0.5.0" - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -renderkid@^2.0.4: - version "2.0.7" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.7.tgz#464f276a6bdcee606f4a15993f9b29fc74ca8609" - integrity sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ== - dependencies: - css-select "^4.1.3" - dom-converter "^0.2.0" - htmlparser2 "^6.1.0" - lodash "^4.17.21" - strip-ansi "^3.0.1" - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - -req-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/req-cwd/-/req-cwd-2.0.0.tgz#d4082b4d44598036640fb73ddea01ed53db49ebc" - integrity sha1-1AgrTURZgDZkD7c93qAe1T20nrw= - dependencies: - req-from "^2.0.0" - -req-from@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/req-from/-/req-from-2.0.0.tgz#d74188e47f93796f4aa71df6ee35ae689f3e0e70" - integrity sha1-10GI5H+TeW9Kpx327jWuaJ8+DnA= - dependencies: - resolve-from "^3.0.0" - -request-promise-core@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" - integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== - dependencies: - lodash "^4.17.19" - -request-promise-native@^1.0.5: - version "1.0.9" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" - integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== - dependencies: - request-promise-core "1.1.4" - stealthy-require "^1.1.1" - tough-cookie "^2.3.3" - -request@^2.79.0, request@^2.85.0, request@^2.88.0, request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - 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" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-from-string@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" - integrity sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg= - -require-from-string@^2.0.0, require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-url-loader@^3.1.2: - version "3.1.4" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.4.tgz#3c16caebe0b9faea9c7cc252fa49d2353c412320" - integrity sha512-D3sQ04o0eeQEySLrcz4DsX3saHfsr8/N6tfhblxgZKXxMT2Louargg12oGNfoTRLV09GXhVUe5/qgA5vdgNigg== - dependencies: - adjust-sourcemap-loader "3.0.0" - camelcase "5.3.1" - compose-function "3.0.3" - convert-source-map "1.7.0" - es6-iterator "2.0.3" - loader-utils "1.2.3" - postcss "7.0.36" - rework "1.0.1" - rework-visit "1.0.0" - source-map "0.6.1" - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@1.1.x: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -resolve@1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" - integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== - dependencies: - path-parse "^1.0.6" - -resolve@1.17.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - -resolve@1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" - integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== - dependencies: - is-core-module "^2.0.0" - path-parse "^1.0.6" - -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.8.1, resolve@~1.22.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" - integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== - dependencies: - is-core-module "^2.8.1" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^2.0.0-next.3: - version "2.0.0-next.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" - integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= - dependencies: - lowercase-keys "^1.0.0" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -resumer@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" - integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= - dependencies: - through "~2.3.4" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -revalidator@0.1.x: - version "0.1.8" - resolved "https://registry.yarnpkg.com/revalidator/-/revalidator-0.1.8.tgz#fece61bfa0c1b52a206bd6b18198184bdd523a3b" - integrity sha1-/s5hv6DBtSoga9axgZgYS91SOjs= - -rework-visit@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" - integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= - -rework@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" - integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= - dependencies: - convert-source-map "^0.3.3" - css "^2.0.0" - -rfdc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" - integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== - -rgb-regex@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" - integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= - -rgba-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" - integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= - -rimraf@2.6.3: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4: - version "2.2.7" - resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" - integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== - dependencies: - bn.js "^5.2.0" - -rollup-plugin-babel@^4.3.3: - version "4.4.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" - integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - rollup-pluginutils "^2.8.1" - -rollup-plugin-terser@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz#8c650062c22a8426c64268548957463bf981b413" - integrity sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w== - dependencies: - "@babel/code-frame" "^7.5.5" - jest-worker "^24.9.0" - rollup-pluginutils "^2.8.2" - serialize-javascript "^4.0.0" - terser "^4.6.2" - -rollup-plugin-typescript2@^0.25.2: - version "0.25.3" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.25.3.tgz#a5fb2f0f85488789334ce540abe6c7011cbdf40f" - integrity sha512-ADkSaidKBovJmf5VBnZBZe+WzaZwofuvYdzGAKTN/J4hN7QJCFYAq7IrH9caxlru6T5qhX41PNFS1S4HqhsGQg== - dependencies: - find-cache-dir "^3.0.0" - fs-extra "8.1.0" - resolve "1.12.0" - rollup-pluginutils "2.8.1" - tslib "1.10.0" - -rollup-pluginutils@2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.1.tgz#8fa6dd0697344938ef26c2c09d2488ce9e33ce97" - integrity sha512-J5oAoysWar6GuZo0s+3bZ6sVZAC0pfqKz68De7ZgDi5z63jOVZn1uJL/+z1jeKHNbGII8kAyHF5q8LnxSX5lQg== - dependencies: - estree-walker "^0.6.1" - -rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@^1.31.1: - version "1.32.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" - integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== - dependencies: - "@types/estree" "*" - "@types/node" "*" - acorn "^7.1.0" - -rsa-pem-to-jwk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/rsa-pem-to-jwk/-/rsa-pem-to-jwk-1.1.3.tgz#245e76bdb7e7234cfee7ca032d31b54c38fab98e" - integrity sha1-JF52vbfnI0z+58oDLTG1TDj6uY4= - dependencies: - object-assign "^2.0.0" - rsa-unpack "0.0.6" - -rsa-unpack@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/rsa-unpack/-/rsa-unpack-0.0.6.tgz#f50ebd56a628378e631f297161026ce9ab4eddba" - integrity sha1-9Q69VqYoN45jHylxYQJs6atO3bo= - dependencies: - optimist "~0.3.5" - -rsvp@^4.8.4: - version "4.8.5" - resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" - integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== - -run-async@^2.2.0, run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - -rustbn.js@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" - integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== - -rxjs@^6.4.0, rxjs@^6.6.0, rxjs@^6.6.3: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -rxjs@^7.5.5: - version "7.5.5" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" - integrity sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw== - dependencies: - tslib "^2.1.0" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-event-emitter@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz#5b692ef22329ed8f69fdce607e50ca734f6f20af" - integrity sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg== - dependencies: - events "^3.0.0" - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sane@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" - integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== - dependencies: - "@cnakazawa/watch" "^1.0.3" - anymatch "^2.0.0" - capture-exit "^2.0.0" - exec-sh "^0.3.2" - execa "^1.0.0" - fb-watchman "^2.0.0" - micromatch "^3.1.4" - minimist "^1.1.1" - walker "~1.0.5" - -sanitize.css@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" - integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== - -sass-loader@^10.0.5: - version "10.2.1" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.2.1.tgz#17e51df313f1a7a203889ce8ff91be362651276e" - integrity sha512-RRvWl+3K2LSMezIsd008ErK4rk6CulIMSwrcc2aZvjymUgKo/vjXGp1rSWmfTUX7bblEOz8tst4wBwWtCGBqKA== - dependencies: - klona "^2.0.4" - loader-utils "^2.0.0" - neo-async "^2.6.2" - schema-utils "^3.0.0" - semver "^7.3.2" - -sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - -sc-istanbul@^0.4.5: - version "0.4.6" - resolved "https://registry.yarnpkg.com/sc-istanbul/-/sc-istanbul-0.4.6.tgz#cf6784355ff2076f92d70d59047d71c13703e839" - integrity sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g== - dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - glob "^5.0.15" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" - -scheduler@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" - integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -scheduler@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" - integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -schema-utils@^2.6.5, schema-utils@^2.7.0, schema-utils@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" - -schema-utils@^3.0.0, schema-utils@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" - integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -scrypt-js@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" - integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== - -scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -scryptsy@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-1.2.1.tgz#a3225fa4b2524f802700761e2855bdf3b2d92163" - integrity sha1-oyJfpLJST4AnAHYeKFW987LZIWM= - dependencies: - pbkdf2 "^3.0.3" - -secp256k1@^3.0.1, secp256k1@^3.6.2: - version "3.8.0" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" - integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== - dependencies: - bindings "^1.5.0" - bip66 "^1.1.5" - bn.js "^4.11.8" - create-hash "^1.2.0" - drbg.js "^1.0.1" - elliptic "^6.5.2" - nan "^2.14.0" - safe-buffer "^5.1.2" - -secp256k1@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" - integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== - dependencies: - elliptic "^6.5.4" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -seedrandom@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.1.tgz#eb3dde015bcf55df05a233514e5df44ef9dce083" - integrity sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg== - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^1.10.8: - version "1.10.14" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.14.tgz#ee51d84d9dcecc61e07e4aba34f229ab525c1574" - integrity sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA== - dependencies: - node-forge "^0.10.0" - -semaphore-async-await@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz#857bef5e3644601ca4b9570b87e9df5ca12974fa" - integrity sha1-hXvvXjZEYBykuVcLh+nfXKEpdPo= - -semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" - integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== - -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== - -semver@7.3.5, semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@~5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" - integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== - -send@0.17.2: - version "0.17.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" - integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "1.8.1" - mime "1.6.0" - ms "2.1.3" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-javascript@5.0.1, serialize-javascript@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" - integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.14.2: - version "1.14.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" - integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.2" - -servify@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" - integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== - dependencies: - body-parser "^1.16.0" - cors "^2.8.1" - express "^4.14.0" - request "^2.79.0" - xhr "^2.3.3" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" - integrity sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48= - -setimmediate@^1.0.4, setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -sha1@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/sha1/-/sha1-1.1.1.tgz#addaa7a93168f393f19eb2b15091618e2700f848" - integrity sha1-rdqnqTFo85PxnrKxUJFhjicA+Eg= - dependencies: - charenc ">= 0.0.1" - crypt ">= 0.0.1" - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shallowequal@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" - integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" - integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== - -shelljs@^0.8.3, shelljs@^0.8.4, shelljs@^0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -shellwords@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" - integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== - -shx@^0.3.3: - version "0.3.4" - resolved "https://registry.yarnpkg.com/shx/-/shx-0.3.4.tgz#74289230b4b663979167f94e1935901406e40f02" - integrity sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g== - dependencies: - minimist "^1.2.3" - shelljs "^0.8.5" - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signed-varint@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/signed-varint/-/signed-varint-2.0.1.tgz#50a9989da7c98c2c61dad119bc97470ef8528129" - integrity sha1-UKmYnafJjCxh2tEZvJdHDvhSgSk= - dependencies: - varint "~5.0.0" - -simple-concat@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== - -simple-get@^2.7.0: - version "2.8.2" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.2.tgz#5708fb0919d440657326cd5fe7d2599d07705019" - integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw== - dependencies: - decompress-response "^3.3.0" - once "^1.3.1" - simple-concat "^1.0.0" - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= - dependencies: - is-arrayish "^0.3.1" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -slice-ansi@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" - integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== - dependencies: - ansi-styles "^6.0.0" - is-fullwidth-code-point "^4.0.0" - -slide@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= - -smart-buffer@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" - integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -snarkjs@0.4.10: - version "0.4.10" - resolved "https://registry.yarnpkg.com/snarkjs/-/snarkjs-0.4.10.tgz#5a8048e691af8f3e6016014ba2cb0e916f508be1" - integrity sha512-YWgxso7CGcSfkyDGraVjPuBJtq6GEsZ16YBJj2eD0TFum2D5BxnawvyTo4p/7UpctAT0r05DoHo80zgaWnbIKA== - 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" - -snarkjs@0.4.7: - version "0.4.7" - resolved "https://registry.yarnpkg.com/snarkjs/-/snarkjs-0.4.7.tgz#d4f8e854896705ec746ca91742b076333efb7083" - integrity sha512-gehpEKZwhBZEYPLokfBqtHIxaHHy50LYDI4xFVopNEwICInHPIbG4nJ0nJ1vgqz+bv824UFQC84XnQ0C/mPjag== - dependencies: - "@iden3/binfileutils" "0.0.8" - blake2b-wasm "^2.3.0" - circom_runtime "0.1.13" - ejs "^3.1.6" - fastfile "0.0.19" - ffjavascript "0.2.37" - js-sha3 "^0.8.0" - logplease "^1.2.15" - r1csfile "0.0.32" - readline "^1.3.0" - -sockjs-client@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.6.0.tgz#e0277b8974558edcb557eafc7d3027ef6128d865" - integrity sha512-qVHJlyfdHFht3eBFZdKEXKTlb7I4IV41xnVNo8yUKA1UHcPJwgW2SvTq9LhnjjCywSkSK7c/e4nghU0GOoMCRQ== - dependencies: - debug "^3.2.7" - eventsource "^1.1.0" - faye-websocket "^0.11.4" - inherits "^2.0.4" - url-parse "^1.5.10" - -sockjs@^0.3.21: - version "0.3.24" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" - integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== - dependencies: - faye-websocket "^0.11.3" - uuid "^8.3.2" - websocket-driver "^0.7.4" - -socks-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" - integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== - dependencies: - agent-base "^6.0.2" - debug "4" - socks "^2.3.3" - -socks-proxy-agent@^6.0.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz#e664e8f1aaf4e1fb3df945f09e3d94f911137f87" - integrity sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew== - dependencies: - agent-base "^6.0.2" - debug "^4.3.1" - socks "^2.6.1" - -socks@^2.3.3, socks@^2.6.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a" - integrity sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA== - dependencies: - ip "^1.1.5" - smart-buffer "^4.2.0" - -"solc-0.8.1@npm:solc@^0.8.1": - version "0.8.13" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.8.13.tgz#bafc7fcc11a627e2281e489076b80497123bb704" - integrity sha512-C0yTN+rjEOGO6uVOXI8+EKa75SFMuZpQ2tryex4QxWIg0HRWZvCHKfVPuLZ5wx06Sb6GBp6uQA5yqQyXZnXOJw== - 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" - -solc@0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" - integrity sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA== - 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" - -solc@^0.4.20: - version "0.4.26" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.26.tgz#5390a62a99f40806b86258c737c1cf653cc35cb5" - integrity sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA== - dependencies: - fs-extra "^0.30.0" - memorystream "^0.3.1" - require-from-string "^1.1.0" - semver "^5.3.0" - yargs "^4.7.1" - -solc@^0.6.3: - version "0.6.12" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.6.12.tgz#48ac854e0c729361b22a7483645077f58cba080e" - integrity sha512-Lm0Ql2G9Qc7yPP2Ba+WNmzw2jwsrd3u4PobHYlSOxaut3TtUbj9+5ZrT6f4DUpNPEoBaFUOEg9Op9C0mk7ge9g== - dependencies: - command-exists "^1.2.8" - commander "3.0.2" - 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" - -solhint@^3.3.6: - version "3.3.7" - resolved "https://registry.yarnpkg.com/solhint/-/solhint-3.3.7.tgz#b5da4fedf7a0fee954cb613b6c55a5a2b0063aa7" - integrity sha512-NjjjVmXI3ehKkb3aNtRJWw55SUVJ8HMKKodwe0HnejA+k0d2kmhw7jvpa+MCTbcEgt8IWSwx0Hu6aCo/iYOZzQ== - dependencies: - "@solidity-parser/parser" "^0.14.1" - ajv "^6.6.1" - antlr4 "4.7.1" - ast-parents "0.0.1" - chalk "^2.4.2" - commander "2.18.0" - cosmiconfig "^5.0.7" - eslint "^5.6.0" - fast-diff "^1.1.2" - glob "^7.1.3" - ignore "^4.0.6" - js-yaml "^3.12.0" - lodash "^4.17.11" - semver "^6.3.0" - optionalDependencies: - prettier "^1.14.3" - -solidity-coverage@^0.7.17: - version "0.7.20" - resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.7.20.tgz#246e9b0dd62f698bb8ddeecdcc46cab26c48b637" - integrity sha512-edOXTugUYdqxrtEnIn4vgrGjLPxdexcL0WD8LzAvVA3d1dwgcfRO3k8xQR02ZQnOnWMBi8Cqs0F+kAQQp3JW8g== - dependencies: - "@solidity-parser/parser" "^0.14.0" - "@truffle/provider" "^0.2.24" - chalk "^2.4.2" - death "^1.1.0" - detect-port "^1.3.0" - fs-extra "^8.1.0" - ghost-testrpc "^0.0.2" - global-modules "^2.0.0" - globby "^10.0.1" - jsonschema "^1.2.4" - lodash "^4.17.15" - node-emoji "^1.10.0" - pify "^4.0.1" - recursive-readdir "^2.2.2" - sc-istanbul "^0.4.5" - semver "^7.3.4" - shelljs "^0.8.3" - web3-utils "^1.3.0" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" - -sort-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" - integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= - dependencies: - is-plain-obj "^1.0.0" - -sort-keys@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-4.2.0.tgz#6b7638cee42c506fff8c1cecde7376d21315be18" - integrity sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg== - dependencies: - is-plain-obj "^2.0.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-resolve@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" - integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - -source-map-support@0.5.12: - version "0.5.12" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" - integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== - dependencies: - source-map "^0.5.6" - -source-map-support@^0.5.13, source-map-support@^0.5.19, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.7.3, source-map@~0.7.2: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - integrity sha1-2rc/vPwrqBm03gO9b26qSBZLP50= - dependencies: - amdefine ">=0.0.4" - -sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.11" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" - integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" - integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -split-ca@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split-ca/-/split-ca-1.0.1.tgz#6c83aff3692fa61256e0cd197e05e9de157691a6" - integrity sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY= - -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -split2@^3.0.0, split2@^3.1.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" - integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== - dependencies: - readable-stream "^3.0.0" - -split@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" - integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== - dependencies: - through "2" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - 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" - -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - -ssri@^8.0.0, ssri@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" - integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== - dependencies: - minipass "^3.1.1" - -stable@^0.1.8, stable@~0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stack-trace@0.0.x: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= - -stack-utils@^2.0.2: - version "2.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" - integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== - dependencies: - escape-string-regexp "^2.0.0" - -stackframe@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.1.tgz#1033a3473ee67f08e2f2fc8eba6aef4f845124e1" - integrity sha512-h88QkzREN/hy8eRdyNhhsO7RSJ5oyTqxxmmn0dzBIMUclZsjpfmrsg81vp8mjjAs2vAZ72nyWxRUwSwmh0e4xg== - -stacktrace-parser@^0.1.10: - version "0.1.10" - resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" - integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== - dependencies: - type-fest "^0.7.1" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -stealthy-require@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" - integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-browserify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" - integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== - dependencies: - inherits "~2.0.4" - readable-stream "^3.5.0" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -stream-to-pull-stream@^1.7.1, stream-to-pull-stream@^1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz#4161aa2d2eb9964de60bfa1af7feaf917e874ece" - integrity sha512-6sNyqJpr5dIOQdgNy/xcDWwDuzAsAwVzhzrWlAPAQ7Lkjx/rv0wgvxEyKwTq6FmNd5rjTrELt/CLmaSw7crMGg== - dependencies: - looper "^3.0.0" - pull-stream "^3.2.3" - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= - -string-argv@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" - integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== - -string-format@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" - integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-natural-compare@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" - integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string.prototype.matchall@^4.0.6: - version "4.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" - integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.1" - side-channel "^1.0.4" - -string.prototype.trim@~1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz#a587bcc8bfad8cb9829a577f5de30dd170c1682c" - integrity sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -string_decoder@^1.0.0, string_decoder@^1.1.1, string_decoder@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringify-object@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" - integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== - dependencies: - get-own-enumerable-property-symbols "^3.0.0" - is-obj "^1.0.1" - is-regexp "^1.0.0" - -strip-ansi@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" - integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== - dependencies: - ansi-regex "^6.0.1" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= - dependencies: - is-utf8 "^0.2.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-comments@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" - integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== - dependencies: - babel-extract-comments "^1.0.0" - babel-plugin-transform-object-rest-spread "^6.26.0" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-hex-prefix@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" - integrity sha1-DF8VX+8RUTczd96du1iNoFUA428= - dependencies: - is-hex-prefixed "1.0.0" - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@2.0.1, strip-json-comments@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strong-log-transformer@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" - integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== - dependencies: - duplexer "^0.1.1" - minimist "^1.2.0" - through "^2.3.4" - -style-loader@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" - integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== - dependencies: - loader-utils "^2.0.0" - schema-utils "^2.7.0" - -style-value-types@4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/style-value-types/-/style-value-types-4.1.4.tgz#80f37cb4fb024d6394087403dfb275e8bb627e75" - integrity sha512-LCJL6tB+vPSUoxgUBt9juXIlNJHtBMy8jkXzUJSBzeHWdBu6lhzHqCvLVkXFGsFIlNa2ln1sQHya/gzaFmB2Lg== - dependencies: - hey-listen "^1.0.8" - tslib "^2.1.0" - -style-value-types@^3.0.6, style-value-types@^3.1.7: - version "3.2.0" - resolved "https://registry.yarnpkg.com/style-value-types/-/style-value-types-3.2.0.tgz#eb89cab1340823fa7876f3e289d29d99c92111bb" - integrity sha512-ih0mGsrYYmVvdDi++/66O6BaQPRPRMQHoZevNNdMMcPlP/cH28Rnfsqf1UEba/Bwfuw9T8BmIMwbGdzsPwQKrQ== - dependencies: - hey-listen "^1.0.8" - tslib "^1.10.0" - -styled-components@^5.3.3: - version "5.3.5" - resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.5.tgz#a750a398d01f1ca73af16a241dec3da6deae5ec4" - integrity sha512-ndETJ9RKaaL6q41B69WudeqLzOpY1A/ET/glXkNZ2T7dPjPqpPCXXQjDFYZWwNnE5co0wX+gTCqx9mfxTmSIPg== - dependencies: - "@babel/helper-module-imports" "^7.0.0" - "@babel/traverse" "^7.4.5" - "@emotion/is-prop-valid" "^1.1.0" - "@emotion/stylis" "^0.8.4" - "@emotion/unitless" "^0.7.4" - babel-plugin-styled-components ">= 1.12.0" - css-to-react-native "^3.0.0" - hoist-non-react-statics "^3.0.0" - shallowequal "^1.1.0" - supports-color "^5.5.0" - -stylefire@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/stylefire/-/stylefire-7.0.3.tgz#9120ecbb084111788e0ddaa04074799750f20d1d" - integrity sha512-Q0l7NSeFz/OkX+o6/7Zg3VZxSAZeQzQpYomWmIpOehFM/rJNMSLVX5fgg6Q48ut2ETNKwdhm97mPNU643EBCoQ== - dependencies: - "@popmotion/popcorn" "^0.4.4" - framesync "^4.0.0" - hey-listen "^1.0.8" - style-value-types "^3.1.7" - tslib "^1.10.0" - -stylehacks@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" - integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== - dependencies: - browserslist "^4.0.0" - postcss "^7.0.0" - postcss-selector-parser "^3.0.0" - -stylis@4.0.13: - version "4.0.13" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91" - integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag== - -supports-color@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" - integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== - dependencies: - has-flag "^3.0.0" - -supports-color@8.1.1, supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^3.1.0: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= - dependencies: - has-flag "^1.0.0" - -supports-color@^5.3.0, supports-color@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^9.2.1: - version "9.2.2" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.2.2.tgz#502acaf82f2b7ee78eb7c83dcac0f89694e5a7bb" - integrity sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA== - -supports-hyperlinks@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -svg-parser@^2.0.2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" - integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== - -svgo@^1.0.0, svgo@^1.2.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" - integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== - dependencies: - chalk "^2.4.1" - coa "^2.0.2" - css-select "^2.0.0" - css-select-base-adapter "^0.1.1" - css-tree "1.0.0-alpha.37" - csso "^4.0.2" - js-yaml "^3.13.1" - mkdirp "~0.5.1" - object.values "^1.1.0" - sax "~1.2.4" - stable "^0.1.8" - unquote "~1.1.1" - util.promisify "~1.0.0" - -swarm-js@^0.1.40: - version "0.1.40" - resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.40.tgz#b1bc7b6dcc76061f6c772203e004c11997e06b99" - integrity sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA== - dependencies: - bluebird "^3.5.0" - buffer "^5.0.5" - eth-lib "^0.1.26" - fs-extra "^4.0.2" - got "^7.1.0" - 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" - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -sync-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/sync-request/-/sync-request-6.1.0.tgz#e96217565b5e50bbffe179868ba75532fb597e68" - integrity sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw== - dependencies: - http-response-object "^3.0.1" - sync-rpc "^1.2.1" - then-request "^6.0.0" - -sync-rpc@^1.2.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/sync-rpc/-/sync-rpc-1.3.6.tgz#b2e8b2550a12ccbc71df8644810529deb68665a7" - integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== - dependencies: - get-port "^3.1.0" - -table-layout@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" - integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== - dependencies: - array-back "^4.0.1" - deep-extend "~0.6.0" - typical "^5.2.0" - wordwrapjs "^4.0.0" - -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -table@^6.0.9: - version "6.8.0" - resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" - integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== - 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" - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -tape@^4.6.3: - version "4.15.0" - resolved "https://registry.yarnpkg.com/tape/-/tape-4.15.0.tgz#1b8a9563b4bc7e51302216c137732fb2ce6d1a99" - integrity sha512-SfRmG2I8QGGgJE/MCiLH8c11L5XxyUXxwK9xLRD0uiK5fehRkkSZGmR6Y1pxOt8vJ19m3sY+POTQpiaVv45/LQ== - dependencies: - call-bind "~1.0.2" - deep-equal "~1.1.1" - defined "~1.0.0" - dotignore "~0.1.2" - for-each "~0.3.3" - glob "~7.2.0" - has "~1.0.3" - inherits "~2.0.4" - is-regex "~1.1.4" - minimist "~1.2.5" - object-inspect "~1.12.0" - resolve "~1.22.0" - resumer "~0.0.0" - string.prototype.trim "~1.2.5" - through "~2.3.8" - -tar-fs@~1.16.3: - version "1.16.3" - resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509" - integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw== - dependencies: - chownr "^1.0.1" - mkdirp "^0.5.1" - pump "^1.0.0" - tar-stream "^1.1.2" - -tar-stream@^1.1.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" - integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== - dependencies: - bl "^1.0.0" - buffer-alloc "^1.2.0" - end-of-stream "^1.0.0" - fs-constants "^1.0.0" - readable-stream "^2.3.0" - to-buffer "^1.1.1" - xtend "^4.0.0" - -tar-stream@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" - integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== - dependencies: - bl "^4.0.3" - end-of-stream "^1.4.1" - fs-constants "^1.0.0" - inherits "^2.0.3" - readable-stream "^3.1.1" - -tar@^4.0.2, tar@^4.4.12: - version "4.4.19" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" - integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== - 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" - -tar@^6.0.2, tar@^6.1.0: - version "6.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -temp-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" - integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= - -temp-write@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-4.0.0.tgz#cd2e0825fc826ae72d201dc26eef3bf7e6fc9320" - integrity sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw== - dependencies: - graceful-fs "^4.1.15" - is-stream "^2.0.0" - make-dir "^3.0.0" - temp-dir "^1.0.0" - uuid "^3.3.2" - -tempy@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" - integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== - dependencies: - temp-dir "^1.0.0" - type-fest "^0.3.1" - unique-string "^1.0.0" - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -terser-webpack-plugin@4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" - integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== - dependencies: - cacache "^15.0.5" - find-cache-dir "^3.3.1" - jest-worker "^26.5.0" - p-limit "^3.0.2" - schema-utils "^3.0.0" - serialize-javascript "^5.0.1" - source-map "^0.6.1" - terser "^5.3.4" - webpack-sources "^1.4.3" - -terser-webpack-plugin@^1.4.3: - version "1.4.5" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" - integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^4.0.0" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2, terser@^4.6.2, terser@^4.6.3: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -terser@^5.3.4: - version "5.12.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.12.1.tgz#4cf2ebed1f5bceef5c83b9f60104ac4a78b49e9c" - integrity sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ== - dependencies: - acorn "^8.5.0" - commander "^2.20.0" - source-map "~0.7.2" - source-map-support "~0.5.20" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -test-value@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/test-value/-/test-value-2.1.0.tgz#11da6ff670f3471a73b625ca4f3fdcf7bb748291" - integrity sha1-Edpv9nDzRxpztiXKTz/c97t0gpE= - dependencies: - array-back "^1.0.3" - typical "^2.6.0" - -testrpc@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/testrpc/-/testrpc-0.0.1.tgz#83e2195b1f5873aec7be1af8cbe6dcf39edb7aed" - integrity sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA== - -text-extensions@^1.0.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" - integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== - -text-table@0.2.0, text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -then-request@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/then-request/-/then-request-6.0.2.tgz#ec18dd8b5ca43aaee5cb92f7e4c1630e950d4f0c" - integrity sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA== - 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" - -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" - integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== - -through2@^2.0.0, through2@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through2@^3.0.0, through2@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.2.tgz#99f88931cfc761ec7678b41d5d7336b5b6a07bf4" - integrity sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ== - dependencies: - inherits "^2.0.4" - readable-stream "2 || 3" - -through2@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" - integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== - dependencies: - readable-stream "3" - -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8, through@~2.3.4, through@~2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timed-out@^4.0.0, timed-out@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= - -timers-browserify@^2.0.4: - version "2.0.12" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" - integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== - dependencies: - setimmediate "^1.0.4" - -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - -tiny-invariant@^1.0.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.2.0.tgz#a1141f86b672a9148c72e978a19a73b9b94a15a9" - integrity sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg== - -tmp-promise@^2.0.2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-2.1.1.tgz#eb97c038995af74efbfe8156f5e07fdd0c935539" - integrity sha512-Z048AOz/w9b6lCbJUpevIJpRpUztENl8zdv1bmAKVHimfqRFl92ROkmT9rp7TVBnrEw2gtMTol/2Cp2S2kJa4Q== - dependencies: - tmp "0.1.0" - -tmp-promise@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" - integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== - dependencies: - tmp "^0.2.0" - -tmp@0.0.33, tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmp@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" - integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== - dependencies: - rimraf "^2.6.3" - -tmp@^0.2.0, tmp@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" - integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== - dependencies: - rimraf "^3.0.0" - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-buffer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" - integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== - -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toggle-selection@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" - integrity sha1-bkWxJj8gF/oKzH2J14sVuL932jI= - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -tough-cookie@^2.3.3, tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= - -trim-newlines@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" - integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= - -"true-case-path@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" - integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== - -tryer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" - integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== - -ts-command-line-args@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.2.1.tgz#fd6913e542099012c0ffb2496126a8f38305c7d6" - integrity sha512-mnK68QA86FYzQYTSA/rxIjT/8EpKsvQw9QkawPic8I8t0gjAOw3Oa509NIRoaY1FmH7hdrncMp7t7o+vYoceNQ== - dependencies: - chalk "^4.1.0" - command-line-args "^5.1.1" - command-line-usage "^6.1.0" - string-format "^2.0.0" - -ts-essentials@^1.0.0, ts-essentials@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" - integrity sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ== - -ts-essentials@^6.0.3: - version "6.0.7" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-6.0.7.tgz#5f4880911b7581a873783740ce8b94da163d18a6" - integrity sha512-2E4HIIj4tQJlIHuATRHayv0EfMGK3ris/GRk1E3CFnsZzeNV+hUmelbaTZHLtXaZppM5oLhHRtO04gINC4Jusw== - -ts-essentials@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" - integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== - -ts-generator@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ts-generator/-/ts-generator-0.1.1.tgz#af46f2fb88a6db1f9785977e9590e7bcd79220ab" - integrity sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ== - dependencies: - "@types/mkdirp" "^0.5.2" - "@types/prettier" "^2.1.1" - "@types/resolve" "^0.0.8" - chalk "^2.4.1" - glob "^7.1.2" - mkdirp "^0.5.1" - prettier "^2.1.2" - resolve "^1.8.1" - ts-essentials "^1.0.0" - -ts-interface-checker@^0.1.9: - version "0.1.13" - resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" - integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== - -ts-node@^10.4.0, ts-node@^10.6.0: - version "10.7.0" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.7.0.tgz#35d503d0fab3e2baa672a0e94f4b40653c2463f5" - integrity sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A== - dependencies: - "@cspotcode/source-map-support" "0.7.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.0" - yn "3.1.1" - -ts-pnp@1.2.0, ts-pnp@^1.1.6: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" - integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== - -tsconfig-paths@^3.12.0: - version "3.14.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" - integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" - integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== - -tslib@^1.0.0, tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== - -tsort@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" - integrity sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y= - -tsutils@^3.17.1, tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= - dependencies: - safe-buffer "^5.0.1" - -tweetnacl-util@^0.15.0, tweetnacl-util@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" - integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= - -tweetnacl@^1.0.0, tweetnacl@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.18.0: - version "0.18.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" - integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" - integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== - -type-fest@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" - integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" - integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.6.0.tgz#3ca6099af5981d36ca86b78442973694278a219f" - integrity sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ== - -typechain@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-3.0.0.tgz#d5a47700831f238e43f7429b987b4bb54849b92e" - integrity sha512-ft4KVmiN3zH4JUFu2WJBrwfHeDf772Tt2d8bssDTo/YcckKW2D+OwFrHXRC6hJvO3mHjFQTihoMV6fJOi0Hngg== - dependencies: - command-line-args "^4.0.7" - debug "^4.1.1" - fs-extra "^7.0.0" - js-sha3 "^0.8.0" - lodash "^4.17.15" - ts-essentials "^6.0.3" - ts-generator "^0.1.1" - -typechain@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-6.1.0.tgz#462a35f555accf870689d1ba5698749108d0ce81" - integrity sha512-GGfkK0p3fUgz8kYxjSS4nKcWXE0Lo+teHTetghousIK5njbNoYNDlwn91QIyD181L3fVqlTvBE0a/q3AZmjNfw== - dependencies: - "@types/prettier" "^2.1.1" - debug "^4.1.1" - fs-extra "^7.0.0" - glob "^7.1.6" - js-sha3 "^0.8.0" - lodash "^4.17.15" - mkdirp "^1.0.4" - prettier "^2.1.2" - ts-command-line-args "^2.2.0" - ts-essentials "^7.0.1" - -typedarray-to-buffer@3.1.5, typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -typescript@^3.7.2: - version "3.9.10" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" - integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== - -typescript@^4.3.5, typescript@^4.6.3: - version "4.6.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" - integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== - -typescript@^4.5.5: - version "4.6.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.2.tgz#fe12d2727b708f4eef40f51598b3398baa9611d4" - integrity sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg== - -typewise-core@^1.2, typewise-core@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/typewise-core/-/typewise-core-1.2.0.tgz#97eb91805c7f55d2f941748fa50d315d991ef195" - integrity sha1-l+uRgFx/VdL5QXSPpQ0xXZke8ZU= - -typewise@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/typewise/-/typewise-1.0.3.tgz#1067936540af97937cc5dcf9922486e9fa284651" - integrity sha1-EGeTZUCvl5N8xdz5kiSG6fooRlE= - dependencies: - typewise-core "^1.2.0" - -typewiselite@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typewiselite/-/typewiselite-1.0.0.tgz#c8882fa1bb1092c06005a97f34ef5c8508e3664e" - integrity sha1-yIgvobsQksBgBal/NO9chQjjZk4= - -typical@^2.6.0, typical@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d" - integrity sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0= - -typical@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" - integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== - -typical@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" - integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== - -uglify-js@^3.1.4: - version "3.15.3" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.15.3.tgz#9aa82ca22419ba4c0137642ba0df800cb06e0471" - integrity sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg== - -uid-number@0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" - integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= - -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== - -umask@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" - integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= - -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== - dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" - which-boxed-primitive "^1.0.2" - -underscore@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" - integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== - -undici@^4.14.1: - version "4.16.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-4.16.0.tgz#469bb87b3b918818d3d7843d91a1d08da357d5ff" - integrity sha512-tkZSECUYi+/T1i4u+4+lwZmQgLXd4BLGlrc7KZPcLIW7Jpq99+Xpc30ONv7nS6F5UNOxp/HBZSSL9MafUrvJbw== - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" - integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" - integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - -unique-by@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-by/-/unique-by-1.0.0.tgz#5220c86ba7bc572fb713ad74651470cb644212bd" - integrity sha1-UiDIa6e8Vy+3E610ZRRwy2RCEr0= - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unique-string@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" - integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= - dependencies: - crypto-random-string "^1.0.0" - -universal-user-agent@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" - integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== - -universalify@^0.1.0, universalify@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unorm@^1.3.3: - version "1.6.0" - resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" - integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unquote@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1, upath@^1.1.2, upath@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -upath@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" - integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-loader@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" - integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== - dependencies: - loader-utils "^2.0.0" - mime-types "^2.1.27" - schema-utils "^3.0.0" - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= - dependencies: - prepend-http "^1.0.1" - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= - dependencies: - prepend-http "^2.0.0" - -url-parse@^1.4.3, url-parse@^1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url-set-query@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" - integrity sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk= - -url-to-options@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" - integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -ursa-optional@~0.10.0: - version "0.10.2" - resolved "https://registry.yarnpkg.com/ursa-optional/-/ursa-optional-0.10.2.tgz#bd74e7d60289c22ac2a69a3c8dea5eb2817f9681" - integrity sha512-TKdwuLboBn7M34RcvVTuQyhvrA8gYKapuVdm0nBP0mnBc7oECOfUQZrY91cefL3/nm64ZyrejSRrhTVdX7NG/A== - dependencies: - bindings "^1.5.0" - nan "^2.14.2" - -use-callback-ref@^1.2.3, use-callback-ref@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.2.5.tgz#6115ed242cfbaed5915499c0a9842ca2912f38a5" - integrity sha512-gN3vgMISAgacF7sqsLPByqoePooY3n2emTH59Ur5d/M8eg4WTWu1xp8i8DHjohftIyEx0S08RiYxbffr4j8Peg== - -use-sidecar@^1.0.1, use-sidecar@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.0.5.tgz#ffff2a17c1df42e348624b699ba6e5c220527f2b" - integrity sha512-k9jnrjYNwN6xYLj1iaGhonDghfvmeTmYjAiGvOr7clwKfPjMXJf4/HOr7oT5tJwYafgp2tG2l3eZEOfoELiMcA== - dependencies: - detect-node-es "^1.1.0" - tslib "^1.9.3" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -utf-8-validate@^5.0.2: - version "5.0.9" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.9.tgz#ba16a822fbeedff1a58918f2a6a6b36387493ea3" - integrity sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q== - dependencies: - node-gyp-build "^4.3.0" - -utf8@3.0.0, utf8@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" - integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util-promisify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" - integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM= - dependencies: - object.getownpropertydescriptors "^2.0.3" - -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util.promisify@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" - integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - for-each "^0.3.3" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.1" - -util.promisify@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.2" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -util@^0.12.0: - version "0.12.4" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" - integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== - dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" - safe-buffer "^5.1.2" - which-typed-array "^1.1.2" - -utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" - integrity sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w= - -uuid@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^8.3.0, uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-compile-cache-lib@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.0.tgz#0582bcb1c74f3a2ee46487ceecf372e46bce53e8" - integrity sha512-mpSYqfsFvASnSn5qMiwrr4VKfumbPyONLCOPmsR3A6pTY/r0+tSaVbgPWSAIuzbk3lCTa+FForeTiO+wBQGkjA== - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -v8-to-istanbul@^7.0.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" - integrity sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -validate-npm-package-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= - dependencies: - builtins "^1.0.3" - -varint@^5.0.0, varint@~5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" - integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== - -vary@^1, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -vendors@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" - integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walker@^1.0.7, walker@~1.0.5: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -warning@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" - integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== - dependencies: - loose-envify "^1.0.0" - -wasmbuilder@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/wasmbuilder/-/wasmbuilder-0.0.10.tgz#b8298b2095ef9979d32f3881d1feef1705ec868a" - integrity sha512-zQSvZ7d74d9OvN+mCN6ucNne4QS5/cBBYTHldX0Oe+u9gStY21orapvuX1ajisA7RVIpuFhYg+ZgdySsPfeh0A== - dependencies: - big-integer "^1.6.48" - -wasmbuilder@^0.0.12: - version "0.0.12" - resolved "https://registry.yarnpkg.com/wasmbuilder/-/wasmbuilder-0.0.12.tgz#a60cb25d6d11f314fe5ab3f4ee041ccb493cb78a" - integrity sha512-dTMpBgrnLOXrN58i2zakn2ScynsBhq9LfyQIsPz4CyxRF9k1GAORniuqn3xmE9NnI1l7g3iiVCkoB2Cl0/oG8w== - dependencies: - big-integer "^1.6.48" - -wasmcurves@0.0.12: - version "0.0.12" - resolved "https://registry.yarnpkg.com/wasmcurves/-/wasmcurves-0.0.12.tgz#1496e2219ac07f9a420f527803ae13b1d7a89246" - integrity sha512-1Jl9mkatyHSNj80ILjf85SZUNuZQBCkTjJlhzqHnZQXUmIimCIWkugaVaYNjozLs1Gun4h/keZe1MBeBN0sRpg== - dependencies: - big-integer "^1.6.42" - blakejs "^1.1.0" - -wasmcurves@0.0.14: - version "0.0.14" - resolved "https://registry.yarnpkg.com/wasmcurves/-/wasmcurves-0.0.14.tgz#cbe0f19650d9554937154afdbed66b305bd2a348" - integrity sha512-G1iMkxlRaQSdqQ1JrwHcU+awLmwyH6kFKfT8g9obd8MWe+u5oSdFXrODB0zmSI5aGGvJPG+4cAmqCGYv9R+7qg== - dependencies: - big-integer "^1.6.42" - blakejs "^1.1.0" - -wasmcurves@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/wasmcurves/-/wasmcurves-0.0.5.tgz#d0b58e803c0b1c09c966b7dc0fad6dd405d18547" - integrity sha512-BmI4GXLjLawGg2YkvHa8zRsnWec+d1uwoxE+Iov8cqOpDL7GA5XO2pk2yuDbXHMzwIug2exnKot3baRZ86R0pA== - dependencies: - big-integer "^1.6.42" - blakejs "^1.1.0" - -wasmcurves@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/wasmcurves/-/wasmcurves-0.1.0.tgz#0bc3f9d465367fcd8243395cb0094a05577e5609" - integrity sha512-kIlcgbVUAv2uQ6lGsepGz/m5V40+Z6rvTBkqCYn3Y2+OcXst+UaP4filJYLh/xDxjJl62FFjZZeAnpeli1Y5/Q== - dependencies: - big-integer "^1.6.42" - blakejs "^1.1.0" - -watchpack-chokidar2@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" - integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== - dependencies: - chokidar "^2.1.8" - -watchpack@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" - integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== - dependencies: - graceful-fs "^4.1.2" - neo-async "^2.5.0" - optionalDependencies: - chokidar "^3.4.1" - watchpack-chokidar2 "^2.0.1" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -wcwidth@^1.0.0, wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - -web-vitals@^0.2.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-0.2.4.tgz#ec3df43c834a207fd7cdefd732b2987896e08511" - integrity sha512-6BjspCO9VriYy12z356nL6JBS0GYeEcA457YyRzD+dD6XYCQ75NKhcOHUMHentOE7OcVCIXXDvOm0jKFfQG2Gg== - -web-worker@^1.0.0, web-worker@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.2.0.tgz#5d85a04a7fbc1e7db58f66595d7a3ac7c9c180da" - integrity sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA== - -web3-bzz@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.11.tgz#41bc19a77444bd5365744596d778b811880f707f" - integrity sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg== - dependencies: - "@types/node" "^12.12.6" - got "9.6.0" - swarm-js "^0.1.40" - underscore "1.9.1" - -web3-bzz@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.5.3.tgz#e36456905ce051138f9c3ce3623cbc73da088c2b" - integrity sha512-SlIkAqG0eS6cBS9Q2eBOTI1XFzqh83RqGJWnyrNZMDxUwsTVHL+zNnaPShVPvrWQA1Ub5b0bx1Kc5+qJVxsTJg== - dependencies: - "@types/node" "^12.12.6" - got "9.6.0" - swarm-js "^0.1.40" - -web3-bzz@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.7.1.tgz#ea1e7d27050eca089bc5d71b7f7688d20b68a25d" - integrity sha512-sVeUSINx4a4pfdnT+3ahdRdpDPvZDf4ZT/eBF5XtqGWq1mhGTl8XaQAk15zafKVm6Onq28vN8abgB/l+TrG8kA== - dependencies: - "@types/node" "^12.12.6" - got "9.6.0" - swarm-js "^0.1.40" - -web3-core-helpers@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz#84c681ed0b942c0203f3b324a245a127e8c67a99" - integrity sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A== - dependencies: - underscore "1.9.1" - web3-eth-iban "1.2.11" - web3-utils "1.2.11" - -web3-core-helpers@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.5.3.tgz#099030235c477aadf39a94199ef40092151d563c" - integrity sha512-Ip1IjB3S8vN7Kf1PPjK41U5gskmMk6IJQlxIVuS8/1U7n/o0jC8krqtpRwiMfAgYyw3TXwBFtxSRTvJtnLyXZw== - dependencies: - web3-eth-iban "1.5.3" - web3-utils "1.5.3" - -web3-core-helpers@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.7.1.tgz#6dc34eff6ad31149db6c7cc2babbf574a09970cd" - integrity sha512-xn7Sx+s4CyukOJdlW8bBBDnUCWndr+OCJAlUe/dN2wXiyaGRiCWRhuQZrFjbxLeBt1fYFH7uWyYHhYU6muOHgw== - dependencies: - web3-eth-iban "1.7.1" - web3-utils "1.7.1" - -web3-core-method@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.11.tgz#f880137d1507a0124912bf052534f168b8d8fbb6" - integrity sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw== - dependencies: - "@ethersproject/transactions" "^5.0.0-beta.135" - underscore "1.9.1" - web3-core-helpers "1.2.11" - web3-core-promievent "1.2.11" - web3-core-subscriptions "1.2.11" - web3-utils "1.2.11" - -web3-core-method@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.5.3.tgz#6cff97ed19fe4ea2e9183d6f703823a079f5132c" - integrity sha512-8wJrwQ2qD9ibWieF9oHXwrJsUGrv3XAtEkNeyvyNMpktNTIjxJ2jaFGQUuLiyUrMubD18XXgLk4JS6PJU4Loeg== - dependencies: - "@ethereumjs/common" "^2.4.0" - "@ethersproject/transactions" "^5.0.0-beta.135" - web3-core-helpers "1.5.3" - web3-core-promievent "1.5.3" - web3-core-subscriptions "1.5.3" - web3-utils "1.5.3" - -web3-core-method@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.7.1.tgz#912c87d0f107d3f823932cf8a716852e3250e557" - integrity sha512-383wu5FMcEphBFl5jCjk502JnEg3ugHj7MQrsX7DY76pg5N5/dEzxeEMIJFCN6kr5Iq32NINOG3VuJIyjxpsEg== - dependencies: - "@ethersproject/transactions" "^5.0.0-beta.135" - web3-core-helpers "1.7.1" - web3-core-promievent "1.7.1" - web3-core-subscriptions "1.7.1" - web3-utils "1.7.1" - -web3-core-promievent@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz#51fe97ca0ddec2f99bf8c3306a7a8e4b094ea3cf" - integrity sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA== - dependencies: - eventemitter3 "4.0.4" - -web3-core-promievent@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.5.3.tgz#3f11833c3dc6495577c274350b61144e0a4dba01" - integrity sha512-CFfgqvk3Vk6PIAxtLLuX+pOMozxkKCY+/GdGr7weMh033mDXEPvwyVjoSRO1PqIKj668/hMGQsVoIgbyxkJ9Mg== - dependencies: - eventemitter3 "4.0.4" - -web3-core-promievent@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.7.1.tgz#7f78ec100a696954d0c882dac619fec28b2efc96" - integrity sha512-Vd+CVnpPejrnevIdxhCkzMEywqgVbhHk/AmXXceYpmwA6sX41c5a65TqXv1i3FWRJAz/dW7oKz9NAzRIBAO/kA== - dependencies: - eventemitter3 "4.0.4" - -web3-core-requestmanager@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz#fe6eb603fbaee18530293a91f8cf26d8ae28c45a" - integrity sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.11" - web3-providers-http "1.2.11" - web3-providers-ipc "1.2.11" - web3-providers-ws "1.2.11" - -web3-core-requestmanager@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.5.3.tgz#b339525815fd40e3a2a81813c864ddc413f7b6f7" - integrity sha512-9k/Bze2rs8ONix5IZR+hYdMNQv+ark2Ek2kVcrFgWO+LdLgZui/rn8FikPunjE+ub7x7pJaKCgVRbYFXjo3ZWg== - dependencies: - util "^0.12.0" - web3-core-helpers "1.5.3" - web3-providers-http "1.5.3" - web3-providers-ipc "1.5.3" - web3-providers-ws "1.5.3" - -web3-core-requestmanager@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.7.1.tgz#5cd7507276ca449538fe11cb4f363de8507502e5" - integrity sha512-/EHVTiMShpZKiq0Jka0Vgguxi3vxq1DAHKxg42miqHdUsz4/cDWay2wGALDR2x3ofDB9kqp7pb66HsvQImQeag== - dependencies: - util "^0.12.0" - web3-core-helpers "1.7.1" - web3-providers-http "1.7.1" - web3-providers-ipc "1.7.1" - web3-providers-ws "1.7.1" - -web3-core-subscriptions@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz#beca908fbfcb050c16f45f3f0f4c205e8505accd" - integrity sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg== - dependencies: - eventemitter3 "4.0.4" - underscore "1.9.1" - web3-core-helpers "1.2.11" - -web3-core-subscriptions@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.5.3.tgz#d7d69c4caad65074212028656e9dc56ca5c2159d" - integrity sha512-L2m9vG1iRN6thvmv/HQwO2YLhOQlmZU8dpLG6GSo9FBN14Uch868Swk0dYVr3rFSYjZ/GETevSXU+O+vhCummA== - dependencies: - eventemitter3 "4.0.4" - web3-core-helpers "1.5.3" - -web3-core-subscriptions@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.7.1.tgz#f7c834ee3544f4a5641a989304f61fde6a523e0b" - integrity sha512-NZBsvSe4J+Wt16xCf4KEtBbxA9TOwSVr8KWfUQ0tC2KMdDYdzNswl0Q9P58xaVuNlJ3/BH+uDFZJJ5E61BSA1Q== - dependencies: - eventemitter3 "4.0.4" - web3-core-helpers "1.7.1" - -web3-core@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.11.tgz#1043cacc1becb80638453cc5b2a14be9050288a7" - integrity sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ== - dependencies: - "@types/bn.js" "^4.11.5" - "@types/node" "^12.12.6" - bignumber.js "^9.0.0" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-core-requestmanager "1.2.11" - web3-utils "1.2.11" - -web3-core@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.5.3.tgz#59f8728b27c8305b349051326aa262b9b7e907bf" - integrity sha512-ACTbu8COCu+0eUNmd9pG7Q9EVsNkAg2w3Y7SqhDr+zjTgbSHZV01jXKlapm9z+G3AN/BziV3zGwudClJ4u4xXQ== - dependencies: - "@types/bn.js" "^4.11.5" - "@types/node" "^12.12.6" - bignumber.js "^9.0.0" - web3-core-helpers "1.5.3" - web3-core-method "1.5.3" - web3-core-requestmanager "1.5.3" - web3-utils "1.5.3" - -web3-core@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.7.1.tgz#ef9b7f03909387b9ab783f34cdc5ebcb50248368" - integrity sha512-HOyDPj+4cNyeNPwgSeUkhtS0F+Pxc2obcm4oRYPW5ku6jnTO34pjaij0us+zoY3QEusR8FfAKVK1kFPZnS7Dzw== - dependencies: - "@types/bn.js" "^4.11.5" - "@types/node" "^12.12.6" - bignumber.js "^9.0.0" - web3-core-helpers "1.7.1" - web3-core-method "1.7.1" - web3-core-requestmanager "1.7.1" - web3-utils "1.7.1" - -web3-eth-abi@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz#a887494e5d447c2926d557a3834edd66e17af9b0" - integrity sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg== - dependencies: - "@ethersproject/abi" "5.0.0-beta.153" - underscore "1.9.1" - web3-utils "1.2.11" - -web3-eth-abi@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.5.3.tgz#5aea9394d797f99ca0d9bd40c3417eb07241c96c" - integrity sha512-i/qhuFsoNrnV130CSRYX/z4SlCfSQ4mHntti5yTmmQpt70xZKYZ57BsU0R29ueSQ9/P+aQrL2t2rqkQkAloUxg== - dependencies: - "@ethersproject/abi" "5.0.7" - web3-utils "1.5.3" - -web3-eth-abi@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.7.1.tgz#6632003220a4defee4de8215dc703e43147382ea" - integrity sha512-8BVBOoFX1oheXk+t+uERBibDaVZ5dxdcefpbFTWcBs7cdm0tP8CD1ZTCLi5Xo+1bolVHNH2dMSf/nEAssq5pUA== - dependencies: - "@ethersproject/abi" "5.0.7" - web3-utils "1.7.1" - -web3-eth-accounts@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz#a9e3044da442d31903a7ce035a86d8fa33f90520" - integrity sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw== - dependencies: - crypto-browserify "3.12.0" - eth-lib "0.2.8" - ethereumjs-common "^1.3.2" - ethereumjs-tx "^2.1.1" - scrypt-js "^3.0.1" - underscore "1.9.1" - uuid "3.3.2" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-utils "1.2.11" - -web3-eth-accounts@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.5.3.tgz#076c816ff4d68c9dffebdc7fd2bfaddcfc163d77" - integrity sha512-pdGhXgeBaEJENMvRT6W9cmji3Zz/46ugFSvmnLLw79qi5EH7XJhKISNVb41eWCrs4am5GhI67GLx5d2s2a72iw== - dependencies: - "@ethereumjs/common" "^2.3.0" - "@ethereumjs/tx" "^3.2.1" - crypto-browserify "3.12.0" - eth-lib "0.2.8" - ethereumjs-util "^7.0.10" - scrypt-js "^3.0.1" - uuid "3.3.2" - web3-core "1.5.3" - web3-core-helpers "1.5.3" - web3-core-method "1.5.3" - web3-utils "1.5.3" - -web3-eth-accounts@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.7.1.tgz#f938060d08f4b641bebe743809b0018fd4e4ba51" - integrity sha512-3xGQ2bkTQc7LFoqGWxp5cQDrKndlX05s7m0rAFVoyZZODMqrdSGjMPMqmWqHzJRUswNEMc+oelqSnGBubqhguQ== - dependencies: - "@ethereumjs/common" "^2.5.0" - "@ethereumjs/tx" "^3.3.2" - crypto-browserify "3.12.0" - eth-lib "0.2.8" - ethereumjs-util "^7.0.10" - scrypt-js "^3.0.1" - uuid "3.3.2" - web3-core "1.7.1" - web3-core-helpers "1.7.1" - web3-core-method "1.7.1" - web3-utils "1.7.1" - -web3-eth-contract@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz#917065902bc27ce89da9a1da26e62ef663663b90" - integrity sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow== - dependencies: - "@types/bn.js" "^4.11.5" - underscore "1.9.1" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-core-promievent "1.2.11" - web3-core-subscriptions "1.2.11" - web3-eth-abi "1.2.11" - web3-utils "1.2.11" - -web3-eth-contract@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.5.3.tgz#12b03a4a16ce583a945f874bea2ff2fb4c5b81ad" - integrity sha512-Gdlt1L6cdHe83k7SdV6xhqCytVtOZkjD0kY/15x441AuuJ4JLubCHuqu69k2Dr3tWifHYVys/vG8QE/W16syGg== - dependencies: - "@types/bn.js" "^4.11.5" - web3-core "1.5.3" - web3-core-helpers "1.5.3" - web3-core-method "1.5.3" - web3-core-promievent "1.5.3" - web3-core-subscriptions "1.5.3" - web3-eth-abi "1.5.3" - web3-utils "1.5.3" - -web3-eth-contract@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.7.1.tgz#3f5147e5f1441ae388c985ba95023d02503378ae" - integrity sha512-HpnbkPYkVK3lOyos2SaUjCleKfbF0SP3yjw7l551rAAi5sIz/vwlEzdPWd0IHL7ouxXbO0tDn7jzWBRcD3sTbA== - dependencies: - "@types/bn.js" "^4.11.5" - web3-core "1.7.1" - web3-core-helpers "1.7.1" - web3-core-method "1.7.1" - web3-core-promievent "1.7.1" - web3-core-subscriptions "1.7.1" - web3-eth-abi "1.7.1" - web3-utils "1.7.1" - -web3-eth-ens@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz#26d4d7f16d6cbcfff918e39832b939edc3162532" - integrity sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA== - dependencies: - content-hash "^2.5.2" - eth-ens-namehash "2.0.8" - underscore "1.9.1" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-promievent "1.2.11" - web3-eth-abi "1.2.11" - web3-eth-contract "1.2.11" - web3-utils "1.2.11" - -web3-eth-ens@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.5.3.tgz#ef6eee1ddf32b1ff9536fc7c599a74f2656bafe1" - integrity sha512-QmGFFtTGElg0E+3xfCIFhiUF+1imFi9eg/cdsRMUZU4F1+MZCC/ee+IAelYLfNTGsEslCqfAusliKOT9DdGGnw== - dependencies: - content-hash "^2.5.2" - eth-ens-namehash "2.0.8" - web3-core "1.5.3" - web3-core-helpers "1.5.3" - web3-core-promievent "1.5.3" - web3-eth-abi "1.5.3" - web3-eth-contract "1.5.3" - web3-utils "1.5.3" - -web3-eth-ens@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.7.1.tgz#18ddb22e14e50108f9515c9d17f14560d69ff397" - integrity sha512-DVCF76i9wM93DrPQwLrYiCw/UzxFuofBsuxTVugrnbm0SzucajLLNftp3ITK0c4/lV3x9oo5ER/wD6RRMHQnvw== - dependencies: - content-hash "^2.5.2" - eth-ens-namehash "2.0.8" - web3-core "1.7.1" - web3-core-helpers "1.7.1" - web3-core-promievent "1.7.1" - web3-eth-abi "1.7.1" - web3-eth-contract "1.7.1" - web3-utils "1.7.1" - -web3-eth-iban@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz#f5f73298305bc7392e2f188bf38a7362b42144ef" - integrity sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ== - dependencies: - bn.js "^4.11.9" - web3-utils "1.2.11" - -web3-eth-iban@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.5.3.tgz#91b1475893a877b10eac1de5cce6eb379fb81b5d" - integrity sha512-vMzmGqolYZvRHwP9P4Nf6G8uYM5aTLlQu2a34vz78p0KlDC+eV1th3+90Qeaupa28EG7OO0IT1F0BejiIauOPw== - dependencies: - bn.js "^4.11.9" - web3-utils "1.5.3" - -web3-eth-iban@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.7.1.tgz#2148dff256392491df36b175e393b03c6874cd31" - integrity sha512-XG4I3QXuKB/udRwZdNEhdYdGKjkhfb/uH477oFVMLBqNimU/Cw8yXUI5qwFKvBHM+hMQWfzPDuSDEDKC2uuiMg== - dependencies: - bn.js "^4.11.9" - web3-utils "1.7.1" - -web3-eth-personal@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz#a38b3942a1d87a62070ce0622a941553c3d5aa70" - integrity sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw== - dependencies: - "@types/node" "^12.12.6" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-net "1.2.11" - web3-utils "1.2.11" - -web3-eth-personal@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.5.3.tgz#4ebe09e9a77dd49d23d93b36b36cfbf4a6dae713" - integrity sha512-JzibJafR7ak/Icas8uvos3BmUNrZw1vShuNR5Cxjo+vteOC8XMqz1Vr7RH65B4bmlfb3bm9xLxetUHO894+Sew== - dependencies: - "@types/node" "^12.12.6" - web3-core "1.5.3" - web3-core-helpers "1.5.3" - web3-core-method "1.5.3" - web3-net "1.5.3" - web3-utils "1.5.3" - -web3-eth-personal@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.7.1.tgz#38635f94223f951422105e5fcb7f7ba767a3ee9f" - integrity sha512-02H6nFBNfNmFjMGZL6xcDi0r7tUhxrUP91FTFdoLyR94eIJDadPp4rpXfG7MVES873i1PReh4ep5pSCHbc3+Pg== - dependencies: - "@types/node" "^12.12.6" - web3-core "1.7.1" - web3-core-helpers "1.7.1" - web3-core-method "1.7.1" - web3-net "1.7.1" - web3-utils "1.7.1" - -web3-eth@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.11.tgz#4c81fcb6285b8caf544058fba3ae802968fdc793" - integrity sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ== - dependencies: - underscore "1.9.1" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-core-subscriptions "1.2.11" - web3-eth-abi "1.2.11" - web3-eth-accounts "1.2.11" - web3-eth-contract "1.2.11" - web3-eth-ens "1.2.11" - web3-eth-iban "1.2.11" - web3-eth-personal "1.2.11" - web3-net "1.2.11" - web3-utils "1.2.11" - -web3-eth@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.5.3.tgz#d7d1ac7198f816ab8a2088c01e0bf1eda45862fe" - integrity sha512-saFurA1L23Bd7MEf7cBli6/jRdMhD4X/NaMiO2mdMMCXlPujoudlIJf+VWpRWJpsbDFdu7XJ2WHkmBYT5R3p1Q== - dependencies: - web3-core "1.5.3" - web3-core-helpers "1.5.3" - web3-core-method "1.5.3" - web3-core-subscriptions "1.5.3" - web3-eth-abi "1.5.3" - web3-eth-accounts "1.5.3" - web3-eth-contract "1.5.3" - web3-eth-ens "1.5.3" - web3-eth-iban "1.5.3" - web3-eth-personal "1.5.3" - web3-net "1.5.3" - web3-utils "1.5.3" - -web3-eth@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.7.1.tgz#721599865f675b43877f5a18babfb7ae087449f7" - integrity sha512-Uz3gO4CjTJ+hMyJZAd2eiv2Ur1uurpN7sTMATWKXYR/SgG+SZgncnk/9d8t23hyu4lyi2GiVL1AqVqptpRElxg== - dependencies: - web3-core "1.7.1" - web3-core-helpers "1.7.1" - web3-core-method "1.7.1" - web3-core-subscriptions "1.7.1" - web3-eth-abi "1.7.1" - web3-eth-accounts "1.7.1" - web3-eth-contract "1.7.1" - web3-eth-ens "1.7.1" - web3-eth-iban "1.7.1" - web3-eth-personal "1.7.1" - web3-net "1.7.1" - web3-utils "1.7.1" - -web3-net@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.11.tgz#eda68ef25e5cdb64c96c39085cdb74669aabbe1b" - integrity sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg== - dependencies: - web3-core "1.2.11" - web3-core-method "1.2.11" - web3-utils "1.2.11" - -web3-net@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.5.3.tgz#545fee49b8e213b0c55cbe74ffd0295766057463" - integrity sha512-0W/xHIPvgVXPSdLu0iZYnpcrgNnhzHMC888uMlGP5+qMCt8VuflUZHy7tYXae9Mzsg1kxaJAS5lHVNyeNw4CoQ== - dependencies: - web3-core "1.5.3" - web3-core-method "1.5.3" - web3-utils "1.5.3" - -web3-net@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.7.1.tgz#c75ff7ccabb949cf15e9098505516eb1ed8e37de" - integrity sha512-8yPNp2gvjInWnU7DCoj4pIPNhxzUjrxKlODsyyXF8j0q3Z2VZuQp+c63gL++r2Prg4fS8t141/HcJw4aMu5sVA== - dependencies: - web3-core "1.7.1" - web3-core-method "1.7.1" - web3-utils "1.7.1" - -web3-provider-engine@14.2.1: - version "14.2.1" - resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-14.2.1.tgz#ef351578797bf170e08d529cb5b02f8751329b95" - integrity sha512-iSv31h2qXkr9vrL6UZDm4leZMc32SjWJFGOp/D92JXfcEboCqraZyuExDkpxKw8ziTufXieNM7LSXNHzszYdJw== - dependencies: - async "^2.5.0" - backoff "^2.5.0" - clone "^2.0.0" - cross-fetch "^2.1.0" - eth-block-tracker "^3.0.0" - eth-json-rpc-infura "^3.1.0" - eth-sig-util "^1.4.2" - ethereumjs-block "^1.2.2" - ethereumjs-tx "^1.2.0" - ethereumjs-util "^5.1.5" - ethereumjs-vm "^2.3.4" - json-rpc-error "^2.0.0" - json-stable-stringify "^1.0.1" - promise-to-callback "^1.0.0" - readable-stream "^2.2.9" - request "^2.85.0" - semaphore "^1.0.3" - ws "^5.1.1" - xhr "^2.2.0" - xtend "^4.0.1" - -web3-provider-engine@16.0.1: - version "16.0.1" - resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-16.0.1.tgz#2600a39ede364cdc0a1fc773bf40a94f2177e605" - integrity sha512-/Eglt2aocXMBiDj7Se/lyZnNDaHBaoJlaUfbP5HkLJQC/HlGbR+3/W+dINirlJDhh7b54DzgykqY7ksaU5QgTg== - dependencies: - async "^2.5.0" - backoff "^2.5.0" - clone "^2.0.0" - cross-fetch "^2.1.0" - eth-block-tracker "^4.4.2" - eth-json-rpc-filters "^4.2.1" - eth-json-rpc-infura "^5.1.0" - eth-json-rpc-middleware "^6.0.0" - eth-rpc-errors "^3.0.0" - eth-sig-util "^1.4.2" - ethereumjs-block "^1.2.2" - ethereumjs-tx "^1.2.0" - ethereumjs-util "^5.1.5" - ethereumjs-vm "^2.3.4" - json-stable-stringify "^1.0.1" - promise-to-callback "^1.0.0" - readable-stream "^2.2.9" - request "^2.85.0" - semaphore "^1.0.3" - ws "^5.1.1" - xhr "^2.2.0" - xtend "^4.0.1" - -web3-providers-http@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.11.tgz#1cd03442c61670572d40e4dcdf1faff8bd91e7c6" - integrity sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA== - dependencies: - web3-core-helpers "1.2.11" - xhr2-cookies "1.1.0" - -web3-providers-http@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.5.3.tgz#74f170fc3d79eb7941d9fbc34e2a067d61ced0b2" - integrity sha512-5DpUyWGHtDAr2RYmBu34Fu+4gJuBAuNx2POeiJIooUtJ+Mu6pIx4XkONWH6V+Ez87tZAVAsFOkJRTYuzMr3rPw== - dependencies: - web3-core-helpers "1.5.3" - xhr2-cookies "1.1.0" - -web3-providers-http@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.7.1.tgz#3e00e013f013766aade28da29247daa1a937e759" - integrity sha512-dmiO6G4dgAa3yv+2VD5TduKNckgfR97VI9YKXVleWdcpBoKXe2jofhdvtafd42fpIoaKiYsErxQNcOC5gI/7Vg== - dependencies: - web3-core-helpers "1.7.1" - xhr2-cookies "1.1.0" - -web3-providers-ipc@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz#d16d6c9be1be6e0b4f4536c4acc16b0f4f27ef21" - integrity sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ== - dependencies: - oboe "2.1.4" - underscore "1.9.1" - web3-core-helpers "1.2.11" - -web3-providers-ipc@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.5.3.tgz#4bd7f5e445c2f3c2595fce0929c72bb879320a3f" - integrity sha512-JmeAptugVpmXI39LGxUSAymx0NOFdgpuI1hGQfIhbEAcd4sv7fhfd5D+ZU4oLHbRI8IFr4qfGU0uhR8BXhDzlg== - dependencies: - oboe "2.1.5" - web3-core-helpers "1.5.3" - -web3-providers-ipc@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.7.1.tgz#cde879a2ba57b1deac2e1030de90d185b793dd50" - integrity sha512-uNgLIFynwnd5M9ZC0lBvRQU5iLtU75hgaPpc7ZYYR+kjSk2jr2BkEAQhFVJ8dlqisrVmmqoAPXOEU0flYZZgNQ== - dependencies: - oboe "2.1.5" - web3-core-helpers "1.7.1" - -web3-providers-ws@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz#a1dfd6d9778d840561d9ec13dd453046451a96bb" - integrity sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg== - dependencies: - eventemitter3 "4.0.4" - underscore "1.9.1" - web3-core-helpers "1.2.11" - websocket "^1.0.31" - -web3-providers-ws@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.5.3.tgz#eec6cfb32bb928a4106de506f13a49070a21eabf" - integrity sha512-6DhTw4Q7nm5CFYEUHOJM0gAb3xFx+9gWpVveg3YxJ/ybR1BUvEWo3bLgIJJtX56cYX0WyY6DS35a7f0LOI1kVg== - dependencies: - eventemitter3 "4.0.4" - web3-core-helpers "1.5.3" - websocket "^1.0.32" - -web3-providers-ws@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.7.1.tgz#b6b3919ce155eff29b21bc3f205a098299a8c1b2" - integrity sha512-Uj0n5hdrh0ESkMnTQBsEUS2u6Unqdc7Pe4Zl+iZFb7Yn9cIGsPJBl7/YOP4137EtD5ueXAv+MKwzcelpVhFiFg== - dependencies: - eventemitter3 "4.0.4" - web3-core-helpers "1.7.1" - websocket "^1.0.32" - -web3-shh@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.11.tgz#f5d086f9621c9a47e98d438010385b5f059fd88f" - integrity sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg== - dependencies: - web3-core "1.2.11" - web3-core-method "1.2.11" - web3-core-subscriptions "1.2.11" - web3-net "1.2.11" - -web3-shh@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.5.3.tgz#3c04aa4cda9ba0b746d7225262401160f8e38b13" - integrity sha512-COfEXfsqoV/BkcsNLRxQqnWc1Teb8/9GxdGag5GtPC5gQC/vsN+7hYVJUwNxY9LtJPKYTij2DHHnx6UkITng+Q== - dependencies: - web3-core "1.5.3" - web3-core-method "1.5.3" - web3-core-subscriptions "1.5.3" - web3-net "1.5.3" - -web3-shh@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.7.1.tgz#c6a0fc67321dd585085e3e3be8f2c1c8d61636ef" - integrity sha512-NO+jpEjo8kYX6c7GiaAm57Sx93PLYkWYUCWlZmUOW7URdUcux8VVluvTWklGPvdM9H1WfDrol91DjuSW+ykyqg== - dependencies: - web3-core "1.7.1" - web3-core-method "1.7.1" - web3-core-subscriptions "1.7.1" - web3-net "1.7.1" - -web3-utils@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.11.tgz#af1942aead3fb166ae851a985bed8ef2c2d95a82" - integrity sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ== - dependencies: - bn.js "^4.11.9" - eth-lib "0.2.8" - ethereum-bloom-filters "^1.0.6" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" - underscore "1.9.1" - utf8 "3.0.0" - -web3-utils@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.5.3.tgz#e914c9320cd663b2a09a5cb920ede574043eb437" - integrity sha512-56nRgA+Ad9SEyCv39g36rTcr5fpsd4L9LgV3FK0aB66nAMazLAA6Qz4lH5XrUKPDyBIPGJIR+kJsyRtwcu2q1Q== - dependencies: - bn.js "^4.11.9" - eth-lib "0.2.8" - ethereum-bloom-filters "^1.0.6" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" - utf8 "3.0.0" - -web3-utils@1.7.1, web3-utils@^1.0.0-beta.31, web3-utils@^1.3.0, web3-utils@^1.6.0: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.1.tgz#77d8bacaf426c66027d8aa4864d77f0ed211aacd" - integrity sha512-fef0EsqMGJUgiHPdX+KN9okVWshbIumyJPmR+btnD1HgvoXijKEkuKBv0OmUqjbeqmLKP2/N9EiXKJel5+E1Dw== - dependencies: - bn.js "^4.11.9" - 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" - -web3@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.11.tgz#50f458b2e8b11aa37302071c170ed61cff332975" - integrity sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ== - dependencies: - web3-bzz "1.2.11" - web3-core "1.2.11" - web3-eth "1.2.11" - web3-eth-personal "1.2.11" - web3-net "1.2.11" - web3-shh "1.2.11" - web3-utils "1.2.11" - -web3@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.5.3.tgz#11882679453c645bf33620fbc255a243343075aa" - integrity sha512-eyBg/1K44flfv0hPjXfKvNwcUfIVDI4NX48qHQe6wd7C8nPSdbWqo9vLy6ksZIt9NLa90HjI8HsGYgnMSUxn6w== - dependencies: - web3-bzz "1.5.3" - web3-core "1.5.3" - web3-eth "1.5.3" - web3-eth-personal "1.5.3" - web3-net "1.5.3" - web3-shh "1.5.3" - web3-utils "1.5.3" - -web3@^1.3.4, web3@^1.6.0: - version "1.7.1" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.7.1.tgz#4d01371a2c0c07dba089f8009dabd2b11821c5e8" - integrity sha512-RKVdyZ5FuVEykj62C1o2tc0teJciSOh61jpVB9yb344dBHO3ZV4XPPP24s/PPqIMXmVFN00g2GD9M/v1SoHO/A== - dependencies: - web3-bzz "1.7.1" - web3-core "1.7.1" - web3-eth "1.7.1" - web3-eth-personal "1.7.1" - web3-net "1.7.1" - web3-shh "1.7.1" - web3-utils "1.7.1" - -web3modal@^1.9.5: - version "1.9.5" - resolved "https://registry.yarnpkg.com/web3modal/-/web3modal-1.9.5.tgz#a1d6351a11358b376af5772f79f3dcdba6c38d1b" - integrity sha512-L5ME6zgoaCDa+T66skW9WpxGOJX6vU9v+7aLacoQJhU3AMTk784ionpX+Pg4UdhdM+UQW+odge32GkwEX11czQ== - dependencies: - detect-browser "^5.1.0" - prop-types "^15.7.2" - react "^16.8.6" - react-dom "^16.8.6" - styled-components "^5.3.3" - tslib "^1.10.0" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -webpack-dev-middleware@^3.7.2: - version "3.7.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" - integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@3.11.1: - version "3.11.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz#c74028bf5ba8885aaf230e48a20e8936ab8511f0" - integrity sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ== - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.3.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.8" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.26" - schema-utils "^1.0.0" - selfsigned "^1.10.8" - semver "^6.3.0" - serve-index "^1.9.1" - sockjs "^0.3.21" - sockjs-client "^1.5.0" - spdy "^4.0.2" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "^13.3.2" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-manifest-plugin@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" - integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== - dependencies: - fs-extra "^7.0.0" - lodash ">=3.5 <5" - object.entries "^1.1.0" - tapable "^1.0.0" - -webpack-merge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== - dependencies: - lodash "^4.17.15" - -webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@4.44.2: - version "4.44.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" - integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== - dependencies: - "@webassemblyjs/ast" "1.9.0" - "@webassemblyjs/helper-module-context" "1.9.0" - "@webassemblyjs/wasm-edit" "1.9.0" - "@webassemblyjs/wasm-parser" "1.9.0" - acorn "^6.4.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.3.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.3" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.7.4" - webpack-sources "^1.4.1" - -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" - integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== - dependencies: - http-parser-js ">=0.5.1" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -websocket@1.0.32: - version "1.0.32" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" - integrity sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q== - 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" - -websocket@^1.0.31, websocket@^1.0.32: - version "1.0.34" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" - integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== - 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" - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-fetch@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" - integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== - -whatwg-fetch@^3.4.1: - version "3.6.2" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" - integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -whatwg-url@^8.0.0, whatwg-url@^8.4.0, whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - 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" - -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which-typed-array@^1.1.2: - version "1.1.7" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.7.tgz#2761799b9a22d4b8660b3c1b40abaa7739691793" - integrity sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-abstract "^1.18.5" - foreach "^2.0.5" - has-tostringtag "^1.0.0" - is-typed-array "^1.1.7" - -which@1.3.1, which@^1.1.1, which@^1.2.9, which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -which@2.0.2, which@^2.0.0, which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -wide-align@^1.1.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -window-size@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" - integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= - -winston@2.x: - version "2.4.5" - resolved "https://registry.yarnpkg.com/winston/-/winston-2.4.5.tgz#f2e431d56154c4ea765545fc1003bd340c95b59a" - integrity sha512-TWoamHt5yYvsMarGlGEQE59SbJHqGsZV8/lwC+iCcGeAe0vUaOh+Lv6SYM17ouzC/a/LB1/hz/7sxFBtlu1l4A== - dependencies: - async "~1.0.0" - colors "1.0.x" - cycle "1.0.x" - eyes "0.1.x" - isstream "0.1.x" - stack-trace "0.0.x" - -word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - -wordwrapjs@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" - integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== - dependencies: - reduce-flatten "^2.0.0" - typical "^5.2.0" - -workbox-background-sync@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz#5ae0bbd455f4e9c319e8d827c055bb86c894fd12" - integrity sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA== - dependencies: - workbox-core "^5.1.4" - -workbox-broadcast-update@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz#0eeb89170ddca7f6914fa3523fb14462891f2cfc" - integrity sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA== - dependencies: - workbox-core "^5.1.4" - -workbox-build@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-5.1.4.tgz#23d17ed5c32060c363030c8823b39d0eabf4c8c7" - integrity sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow== - dependencies: - "@babel/core" "^7.8.4" - "@babel/preset-env" "^7.8.4" - "@babel/runtime" "^7.8.4" - "@hapi/joi" "^15.1.0" - "@rollup/plugin-node-resolve" "^7.1.1" - "@rollup/plugin-replace" "^2.3.1" - "@surma/rollup-plugin-off-main-thread" "^1.1.1" - common-tags "^1.8.0" - fast-json-stable-stringify "^2.1.0" - fs-extra "^8.1.0" - glob "^7.1.6" - lodash.template "^4.5.0" - pretty-bytes "^5.3.0" - rollup "^1.31.1" - rollup-plugin-babel "^4.3.3" - rollup-plugin-terser "^5.3.1" - source-map "^0.7.3" - source-map-url "^0.4.0" - stringify-object "^3.3.0" - strip-comments "^1.0.2" - tempy "^0.3.0" - upath "^1.2.0" - workbox-background-sync "^5.1.4" - workbox-broadcast-update "^5.1.4" - workbox-cacheable-response "^5.1.4" - workbox-core "^5.1.4" - workbox-expiration "^5.1.4" - workbox-google-analytics "^5.1.4" - workbox-navigation-preload "^5.1.4" - workbox-precaching "^5.1.4" - workbox-range-requests "^5.1.4" - workbox-routing "^5.1.4" - workbox-strategies "^5.1.4" - workbox-streams "^5.1.4" - workbox-sw "^5.1.4" - workbox-window "^5.1.4" - -workbox-cacheable-response@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz#9ff26e1366214bdd05cf5a43da9305b274078a54" - integrity sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA== - dependencies: - workbox-core "^5.1.4" - -workbox-core@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-5.1.4.tgz#8bbfb2362ecdff30e25d123c82c79ac65d9264f4" - integrity sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg== - -workbox-expiration@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-5.1.4.tgz#92b5df461e8126114943a3b15c55e4ecb920b163" - integrity sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ== - dependencies: - workbox-core "^5.1.4" - -workbox-google-analytics@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz#b3376806b1ac7d7df8418304d379707195fa8517" - integrity sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA== - dependencies: - workbox-background-sync "^5.1.4" - workbox-core "^5.1.4" - workbox-routing "^5.1.4" - workbox-strategies "^5.1.4" - -workbox-navigation-preload@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz#30d1b720d26a05efc5fa11503e5cc1ed5a78902a" - integrity sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ== - dependencies: - workbox-core "^5.1.4" - -workbox-precaching@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-5.1.4.tgz#874f7ebdd750dd3e04249efae9a1b3f48285fe6b" - integrity sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA== - dependencies: - workbox-core "^5.1.4" - -workbox-range-requests@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz#7066a12c121df65bf76fdf2b0868016aa2bab859" - integrity sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw== - dependencies: - workbox-core "^5.1.4" - -workbox-routing@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-5.1.4.tgz#3e8cd86bd3b6573488d1a2ce7385e547b547e970" - integrity sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw== - dependencies: - workbox-core "^5.1.4" - -workbox-strategies@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-5.1.4.tgz#96b1418ccdfde5354612914964074d466c52d08c" - integrity sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA== - dependencies: - workbox-core "^5.1.4" - workbox-routing "^5.1.4" - -workbox-streams@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-5.1.4.tgz#05754e5e3667bdc078df2c9315b3f41210d8cac0" - integrity sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw== - dependencies: - workbox-core "^5.1.4" - workbox-routing "^5.1.4" - -workbox-sw@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-5.1.4.tgz#2bb34c9f7381f90d84cef644816d45150011d3db" - integrity sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA== - -workbox-webpack-plugin@5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.4.tgz#7bfe8c16e40fe9ed8937080ac7ae9c8bde01e79c" - integrity sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ== - dependencies: - "@babel/runtime" "^7.5.5" - fast-json-stable-stringify "^2.0.0" - source-map-url "^0.4.0" - upath "^1.1.2" - webpack-sources "^1.3.0" - workbox-build "^5.1.4" - -workbox-window@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-5.1.4.tgz#2740f7dea7f93b99326179a62f1cc0ca2c93c863" - integrity sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw== - dependencies: - workbox-core "^5.1.4" - -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -worker-rpc@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" - integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== - dependencies: - microevent.ts "~0.1.1" - -worker-threads@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/worker-threads/-/worker-threads-1.0.0.tgz#2b49ea7c9692ba737d9148f2c9b2be65e14e3470" - integrity sha512-vK6Hhvph8oLxocEJIlc3YfGAZhm210uGzjZsXSu+JYLAQ/s/w4Tqgl60JrdH58hW8NSGP4m3bp8a92qPXgX05w== - -workerpool@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b" - integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg== - -workerpool@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" - integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^2.4.2: - version "2.4.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" - integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - signal-exit "^3.0.2" - -write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -write-json-file@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" - integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== - dependencies: - detect-indent "^5.0.0" - graceful-fs "^4.1.15" - make-dir "^2.1.0" - pify "^4.0.1" - sort-keys "^2.0.0" - write-file-atomic "^2.4.2" - -write-json-file@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-4.3.0.tgz#908493d6fd23225344af324016e4ca8f702dd12d" - integrity sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ== - dependencies: - detect-indent "^6.0.0" - graceful-fs "^4.1.15" - is-plain-obj "^2.0.0" - make-dir "^3.0.0" - sort-keys "^4.0.0" - write-file-atomic "^3.0.0" - -write-pkg@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" - integrity sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== - dependencies: - sort-keys "^2.0.0" - type-fest "^0.4.1" - write-json-file "^3.2.0" - -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - -ws@7.4.6: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== - -ws@7.5.3: - version "7.5.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" - integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== - -ws@^3.0.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" - -ws@^5.1.1: - version "5.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" - integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== - dependencies: - async-limiter "~1.0.0" - -ws@^6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" - integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== - dependencies: - async-limiter "~1.0.0" - -ws@^7.4.5, ws@^7.4.6: - version "7.5.7" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" - integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== - -xhr-request-promise@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" - integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== - dependencies: - xhr-request "^1.1.0" - -xhr-request@^1.0.1, xhr-request@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" - integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== - 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" - -xhr2-cookies@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" - integrity sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg= - dependencies: - cookiejar "^2.1.1" - -xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: - version "2.6.0" - resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" - integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== - dependencies: - global "~4.4.0" - is-function "^1.0.1" - parse-headers "^2.0.0" - xtend "^4.0.0" - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xmlhttprequest@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" - integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= - -xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -xtend@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= - dependencies: - object-keys "~0.4.0" - -y18n@^3.2.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" - integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yaeti@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" - integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= - -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.0, yaml@^1.10.2, yaml@^1.5.1, yaml@^1.7.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@13.1.2, yargs-parser@^13.1.2: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@20.2.4: - version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - -yargs-parser@^16.1.0: - version "16.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" - integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" - integrity sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ= - dependencies: - camelcase "^3.0.0" - lodash.assign "^4.0.6" - -yargs-parser@^20.2.2, yargs-parser@^20.2.3: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-unparser@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" - integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== - dependencies: - flat "^4.1.0" - lodash "^4.17.15" - yargs "^13.3.0" - -yargs-unparser@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" - integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== - dependencies: - camelcase "^6.0.0" - decamelize "^4.0.0" - flat "^5.0.2" - is-plain-obj "^2.1.0" - -yargs@13.3.2, yargs@^13.2.4, yargs@^13.3.0, yargs@^13.3.2: - version "13.3.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" - integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== - 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" - -yargs@16.2.0, yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - 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" - -yargs@^15.3.1, yargs@^15.4.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - 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" - -yargs@^4.7.1: - version "4.8.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" - integrity sha1-wMQpJMpKqmsObaFznfshZDn53cA= - dependencies: - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - lodash.assign "^4.0.3" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.1" - which-module "^1.0.0" - window-size "^0.2.0" - y18n "^3.2.1" - yargs-parser "^2.4.1" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -zkey-manager@^0.1.1, zkey-manager@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/zkey-manager/-/zkey-manager-0.1.2.tgz#0e0ec8da4c6c8fa8ba8f501386a55b42e048fdf4" - integrity sha512-Ig+QQrS8IZYkLgbdrbdCgji+1NeEatzWoIqH1G0OoF9+cNrf/qFOFr1hq2k52wVcUudCboqGKDpPbl3KRpnpVw== - dependencies: - argparse "2.0.1" - circomlib "^2.0.0" - js-yaml "4.0.0" - shelljs "^0.8.4" - snarkjs "0.4.7"